agentleFS
WhyUSayMyNameWhyUSayMyName/skill-proofhound-audit/skills/sc-report/SKILL.md

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
  1. Very specific:

    After sc-verify; the orchestrator (sc-audit) calls this last.

    line 23
  2. Distinctive:

    Keep every PoC reference and the proof excerpt — they are the report's backbone.

    line 57

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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)

sectioncontentsrule
Findingsverdict: confirmed onlymust have a PoC artifact
Appendix A — Open Itemsneeds-inforeal but unprovable from the repo; ask the team
Appendix B — Dismissedrejectedhypothesis + the refuting PoC (transparency)
Appendix C — Pendingneeds-poc / needs-executionhonest backlog
Appendix D — Coverageinvariants tested vs total, methodologyshows 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.