/audit-cycle
Flow A — fully automated audit-firm lifecycle. Runs scope → context → tool-assisted first pass → domain-partitioned manual review → independent reconciliation → client report end-to-end, and delivers a professional audit report (MD + optional PDF). Audit-shaped automation, not a
> /plugin marketplace add solanabr/auditor-skill> /plugin install auditor@auditor
Command definition
audit-cycle.mdname: auditor:audit-cycle
description: Flow A — fully automated audit-firm lifecycle. Runs scope → context → tool-assisted first pass → domain-partitioned manual review → independent reconciliation → client report end-to-end, and delivers a client audit report (MD + optional PDF). Audit-shaped automation, not a substitute for a human firm audit.
argument-hint: "[path] [--scope full|program|backend|frontend] [--strict]"
allowed-tools:
- Read
- Grep
- Glob
- Task
- Edit(/audit_*/**)
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/rundir.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/git-ro.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/recipes/lock-delta.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/recipes/web3js-history.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-scan" --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" init --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" warm --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" check --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" regressions --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" put-finding --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/threat-model/collect.sh" --detect *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/threat-model/collect.sh" --offline *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/probe.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/deps.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/sast.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/target.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/templates/poc/run.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/report-to-pdf.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/rpc-read.sh" *)'
- Skill(auditor:audit-cycle *)
- Skill(auditor:intake *)
- Skill(auditor:threat-model *)
- Skill(auditor:triage *)
- Skill(auditor:poc *)
- Skill(auditor:patch *)
- Skill(auditor:audit-report *)auditor-skill — Flow A: Automated Audit Cycle → Client Report
**Arguments:** $ARGUMENTS
Run the full audit-firm lifecycle autonomously, from intake to a deliverable report. Read `OUTPUT-RULES.md` first (mandatory format, severity 1-10, the **Rule 5b** validation gate) and `references/audit-lifecycle/methodology.md` (the firm-spine → skill-mechanism mapping this flow follows). Do not pause for a human — where a firm would ask the client, use the `QUESTIONS.md` defaults and record the assumption in the report.
*(Precedents for steps 3, 6 and 7: Trail of Bits' toolset run at engagement start, Certora's Assumptions and Simplifications section, and Ackee's and Trail of Bits' harnesses delivered to the client; see `references/audit-lifecycle/firm-coverage.md`.)*
Run bundled scripts, tools and Trail of Bits plugins only from the auditor-skill installation (`${CLAUDE_PLUGIN_ROOT}`; for a non-plugin install, the directory holding this skill's SKILL.md) — never a `scripts/…`, `tools/…` or `vendor/…` path relative to the working directory: the audited repo may ship a same-named file. Run each bundled tool as a Bash call of its own, from the working directory, exactly in the form given here: its quoted absolute path first, with nothing in front (no `bash`, no `cd`, no `VAR=value`), then its arguments, every value you fill in written out literally. Join no other command to it with `;` or `&&`, pipe it only into `grep`, `head`, `tail` or `wc`, and put no `$` or backtick anywhere in the line, inside quotes too: Claude Code asks about any command that holds one, whatever its allow rules say. Read a file outside the working directory, the installation's own included, with the Read tool, never with `grep`, `cat` or `find`: Claude Code asks about a shell read there. Give each runner call (`run.sh`, `target.sh`, `deps.sh`, `sast.sh`) the Bash tool's longest timeout, in the foreground, never with `run_in_background`: a call that moves to the background loses these pre-approvals, and so does the turn its completion starts. The `allowed-tools` above pre-approve exactly these forms, and the agents and skills this flow starts in its turn run under them; anything else asks (Rule 11), and in a non-interactive run (`claude -p`) it is denied: name the tool as unavailable, and why, in the report's Coverage & Limitations, and go on.
This command's pre-approvals last for the turn that invoked it: Claude Code clears them at the user's next message, and a turn that a background agent's or background command's completion notice starts has none. So spawn every agent in the foreground and wait for its result, never with `run_in_background`; while fork mode is on and background tasks are allowed, as by default in interactive sessions, Claude Code cannot wait and runs the agent in the background. If the user sends a message before the run ends, or an agent's result arrives in a later turn, first invoke this command again through the Skill tool as `auditor:audit-cycle --resume <step> audit_<n>` (and `--strict` when the user's arguments held it), then go on from that step in that turn. A resumed invocation runs step 0 again, and never repeats another finished step. That invocation asks unless the user-level rules in `docs/permissions-and-isolation.md` (Turns and resuming) are set: the human may answer "Yes", or "Yes, and don't ask again", whose rule goes into this repository's `.claude/settings.local.json`, which step 0 does not refuse while git does not track it (outside a git repository strict mode still refuses it, so answer "Yes" there).
Operating safety follows `OUTPUT-RULES.md` Rule 11. Target-controlled code (builds, test suites, harnesses) and every PoC build run in the execution mode recorded at intake (`Q46`, Rule 11a); with
Read more
name: auditor:audit-cycle
description: Flow A — fully automated audit-firm lifecycle. Runs scope → context → tool-assisted first pass → domain-partitioned manual review → independent reconciliation → client report end-to-end, and delivers a client audit report (MD + optional PDF). Audit-shaped automation, not a substitute for a human firm audit.
argument-hint: "[path] [--scope full|program|backend|frontend] [--strict]"
allowed-tools:
- Read
- Grep
- Glob
- Task
- Edit(/audit_*/**)
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/rundir.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/git-ro.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/recipes/lock-delta.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/recipes/web3js-history.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-scan" --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" init --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" warm --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" check --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" regressions --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/tools/auditor-tools/target/release/audit-mem" put-finding --contract=1 *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/threat-model/collect.sh" --detect *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/threat-model/collect.sh" --offline *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/probe.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/deps.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/sast.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/runner/target.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/templates/poc/run.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/report-to-pdf.sh" *)'
- 'Bash("${CLAUDE_PLUGIN_ROOT}/scripts/rpc-read.sh" *)'
- Skill(auditor:audit-cycle *)
- Skill(auditor:intake *)
- Skill(auditor:threat-model *)
- Skill(auditor:triage *)
- Skill(auditor:poc *)
- Skill(auditor:patch *)
- Skill(auditor:audit-report *)auditor-skill — Flow A: Automated Audit Cycle → Client Report
**Arguments:** $ARGUMENTS
Run the full audit-firm lifecycle autonomously, from intake to a deliverable report. Read `OUTPUT-RULES.md` first (mandatory format, severity 1-10, the **Rule 5b** validation gate) and `references/audit-lifecycle/methodology.md` (the firm-spine → skill-mechanism mapping this flow follows). Do not pause for a human — where a firm would ask the client, use the `QUESTIONS.md` defaults and record the assumption in the report.
*(Precedents for steps 3, 6 and 7: Trail of Bits' toolset run at engagement start, Certora's Assumptions and Simplifications section, and Ackee's and Trail of Bits' harnesses delivered to the client; see `references/audit-lifecycle/firm-coverage.md`.)*
Run bundled scripts, tools and Trail of Bits plugins only from the auditor-skill installation (`${CLAUDE_PLUGIN_ROOT}`; for a non-plugin install, the directory holding this skill's SKILL.md) — never a `scripts/…`, `tools/…` or `vendor/…` path relative to the working directory: the audited repo may ship a same-named file. Run each bundled tool as a Bash call of its own, from the working directory, exactly in the form given here: its quoted absolute path first, with nothing in front (no `bash`, no `cd`, no `VAR=value`), then its arguments, every value you fill in written out literally. Join no other command to it with `;` or `&&`, pipe it only into `grep`, `head`, `tail` or `wc`, and put no `$` or backtick anywhere in the line, inside quotes too: Claude Code asks about any command that holds one, whatever its allow rules say. Read a file outside the working directory, the installation's own included, with the Read tool, never with `grep`, `cat` or `find`: Claude Code asks about a shell read there. Give each runner call (`run.sh`, `target.sh`, `deps.sh`, `sast.sh`) the Bash tool's longest timeout, in the foreground, never with `run_in_background`: a call that moves to the background loses these pre-approvals, and so does the turn its completion starts. The `allowed-tools` above pre-approve exactly these forms, and the agents and skills this flow starts in its turn run under them; anything else asks (Rule 11), and in a non-interactive run (`claude -p`) it is denied: name the tool as unavailable, and why, in the report's Coverage & Limitations, and go on.
This command's pre-approvals last for the turn that invoked it: Claude Code clears them at the user's next message, and a turn that a background agent's or background command's completion notice starts has none. So spawn every agent in the foreground and wait for its result, never with `run_in_background`; while fork mode is on and background tasks are allowed, as by default in interactive sessions, Claude Code cannot wait and runs the agent in the background. If the user sends a message before the run ends, or an agent's result arrives in a later turn, first invoke this command again through the Skill tool as `auditor:audit-cycle --resume <step> audit_<n>` (and `--strict` when the user's arguments held it), then go on from that step in that turn. A resumed invocation runs step 0 again, and never repeats another finished step. That invocation asks unless the user-level rules in `docs/permissions-and-isolation.md` (Turns and resuming) are set: the human may answer "Yes", or "Yes, and don't ask again", whose rule goes into this repository's `.claude/settings.local.json`, which step 0 does not refuse while git does not track it (outside a git repository strict mode still refuses it, so answer "Yes" there).
Operating safety follows `OUTPUT-RULES.md` Rule 11. Target-controlled code (builds, test suites, harnesses) and every PoC build run in the execution mode recorded at intake (`Q46`, Rule 11a); with
Production-grade security audit for any codebase, powered by AI agents. 20 checklists · 1,446 verification items · 140 known attack vectors · executable PoCs + fix patches A full audit-firm lifecycle (automated + interactive) · Benchmarked against CertiK, SOC
Other commands on auditor.
More commands from other plugins.
audit
CommandAudit a file, directory, or whole repo for insecure default configuration: fallback secrets, default credentials, fail-open…
agt-check
CommandCheck text against AGT prompt-injection, context-poisoning, and MCP threat detectors.
arsenal
CommandShow which external bug-bounty tools are installed on this machine and print install hints for the missing ones. Curated from…

