sc-report
Skill1 starsChanged 5 months agoMITView on GitHub
Stage 6 (final) of the ProofHound smart-contract audit pipeline. Assembles the human-readable audit report from the stage-5 verdicts — confirmed, PoC-backed findings only in the main body, severity-ranked (impact x likelihood), each with description, exploit path, proof-of-concept reference, the invariant it breaks, and a remediation. Transparent appendices carry open items (needs-info), investigated-and-dismissed hypotheses (with the refuting PoC), pending verification, and an invariant-coverage table. Produces .audit/report/report.md and report.json. Run last, after sc-verify.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
After sc-verify; the orchestrator (sc-audit) calls this last.
- Distinctive: line 57
Keep every PoC reference and the proof excerpt — they are the report's backbone.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
sc-report — Report Assembly (Pipeline Stage 6, Final)
Turns verified results into a report an auditor would sign. The editorial rule is the whole point: only PoC-backed confirmed findings appear as findings. Everything uncertain is demoted to a clearly labeled appendix. A report that claims only what it proved — and shows what it ruled out — is what earns trust and keeps the false-positive rate visibly near zero.
When to Use
- After
sc-verify; the orchestrator (sc-audit) calls this last. - User says: "write the report", "summarize the findings", "produce the audit doc".
Announce
Begin with: "I'm using the sc-report skill to assemble the final audit report..."
Workflow
1. Assemble (deterministic)
python skills/sc-report/scripts/assemble_report.py <audit_dir> --name "<Protocol>"Reads verify/*.json verdicts, hypotheses/*.json, project-map.json, and the
manifest; computes a final severity for each confirmed finding; and writes:
.audit/report/report.json— structured report..audit/report/report.md— a complete draft (executive summary, scope, findings, appendices A–D).
2. Severity = impact × likelihood
The script applies the matrix (see reference.md). impact comes from the target
invariant's criticality / the hypothesis severity_hint; likelihood from the
verification — a confirmed PoC is high-likelihood, so confirmed severity tracks
impact. Sanity-check each: does the assigned severity match the real-world blast
radius? Adjust in report.json and re-render if a finding is mis-weighted.
3. Polish the prose (LLM)
The draft's numbers and structure are correct; improve the writing:
- Executive summary: 3–6 sentences a protocol lead can act on — what was reviewed, what's confirmed and how bad, what needs their input. Lead with risk, not process.
- Each finding: make the description and exploit path read clearly for a developer; ensure the recommendation is specific to THIS code (not the generic template), referencing the exact function and fix.
- Open items: phrase as concrete questions for the team. Keep every PoC reference and the proof excerpt — they are the report's backbone.
4. Verify the proof links resolve
For each confirmed finding, confirm the prosecutor.artifact path exists
(verify/poc/H-*.t.sol or verify/diff/H-*_candidate.py) and that the cited
example numbers match the stored verify/H-*_diff.json / forge output. A finding
whose proof a reader can't reproduce is not done.
5. Quality gate (see checklist.md) and deliver
Confirm: no unproven claim in the findings section; every confirmed finding has a working PoC link, a target invariant, a severity, and a specific recommendation; the dismissed appendix shows the refutations; the coverage table is present.
What goes where (editorial policy)
| section | contents | rule |
| Findings | verdict: confirmed only | must have a PoC artifact |
| Appendix A — Open Items | needs-info | real but unprovable from the repo; ask the team |
| Appendix B — Dismissed | rejected | hypothesis + the refuting PoC (transparency) |
| Appendix C — Pending | needs-poc / needs-execution | honest backlog |
| Appendix D — Coverage | invariants tested vs total, methodology | shows breadth |
Why this matters for false positives
- Confirmed-only findings: the headline number is trustworthy because each entry survived a PoC. No "possible"/"might" in the findings.
- The dismissed appendix is a feature: showing what was investigated and refuted (with the proof) is the clearest evidence of a high-precision process — and it doubles as a reviewer's map of what not to re-check.
- Coverage table prevents false confidence: it states plainly which invariants were exercised and which were not.
Handoff
The report is the pipeline's deliverable. Report to the user: confirmed counts by
severity, open items needing their input, and the invariant coverage. Point them
to .audit/report/report.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

