Skill 詳細
solidity-auditor
Directly relevant only for Solidity smart-contract security auditing.
使用前に確認
自動レビューは関連性のみを確認し、安全性や推奨を保証しません。使用前に出典の説明を読んでください。
SKILL.md
これはレビュー時に保存された抜粋です。完全で最新の内容は外部ソースを確認してください。
---
name: solidity-auditor
description: Security audit of Solidity code while you develop. Trigger on "audit", "check this contract", "review for security". Modes - default (full repo) or a specific filename.
---
# Smart Contract Security Audit
You are the orchestrator of a parallelized smart contract security audit.
## Mode Selection
**Exclude pattern:** skip directories `interfaces/`, `lib/`, `mocks/`, `test/` and files matching `*.t.sol`, `*Test*.sol` or `*Mock*.sol`.
- **Default** (no arguments): scan all `.sol` files using the exclude pattern. Use Bash `find` (not Glob).
- **`$filename ...`**: scan the specified file(s) only.
**Flags:**
- `--file-output` (off by default): also write the report to a markdown file (path per `{resolved_path}/report-formatting.md`). Never write a report file unless explicitly passed.
## Orchestration
**Turn 1 — Discover.** Print the banner, then make these parallel tool calls in one message:
a. Bash `find` for in-scope `.sol` files per mode selection
b. Glob for `**/references/hacking-agents/shared-rules.md` — extract the `references/` directory (two levels up) as `{resolved_path}`
c. ToolSearch `select:Agent`
d. Read the local `VERSION` file from the same directory as this skill
e. Bash `curl -sf https://raw.githubusercontent.com/pashov/skills/main/solidity-auditor/VERSION`
f. Bash `mktemp -d ./.audit-XXXXXX` → store as `{bundle_dir}`
If the remote VERSION fetch succeeds and differs from local, print `⚠️ You are not using the latest version. Please upgrade for best security coverage. See https://github.com/pashov/skills`. If it fails, skip silently.
**Turn 1b — Model selection (Claude Code only).** This turn applies ONLY when both `AskUserQuestion` and the `Agent` tool (with a `model` parameter) are available in your runtime — i.e., Claude Code. On Codex, Gemini, Cursor's native agent, or any runtime without these, SKIP this turn entirely, leave `{agent_model}` unset, and proceed to Turn 2. Do NOT emit the question as prose. Do NOT substitute any other mechanism.
On Claude Code:
1. Read your system prompt to detect your own model **family** (Opus, Sonnet, or Haiku). Ignore the version digits — the Agent tool's `model` parameter takes the family name (`"opus"` / `"sonnet"` / `"haiku"`), and the runtime resolves to the latest version in that family.
2. Call `AskUserQuestion` with:
- Question: `"Which Claude model should the 12 audit agents use?"`
- Three single-select options. Mark the orchestrator's own family as `(Recommended)` and place it first.
- On each option, set the `description` field to `latest`.
- On each option, set the `preview` field verbatim (preserve all whitespace exactly — the box widths must stay equal across all three):
Opus preview:
```
┌──────────────────────────────────────────────────────────┐
│ opus · highest reasoning · most expensive │
└──────────────────────────────────────────────────────────┘
```
Sonnet preview:
```
┌──────────────────────────────────────────────────────────┐
│ sonnet · balanced reasoning · mid cost │
└──────────────────────────────────────────────────────────┘
```
Haiku preview:
```
┌──────────────────────────────────────────────────────────┐
│ haiku · lowest reasoning · cheapest │
└──────────────────────────────────────────────────────────┘
```
3. Store the runner's choice as `{agent_model}`. If no answer, default to the orchestrator's own model.
**Turn 2 — Prepare.** In one message, make parallel tool calls: (a) Read `{resolved_path}/report-formatting.md`, (b) Read `{resolved_path}/judging.md`.
Then build all bundles in a single Bash command using `cat` (not shell variables or heredocs):
1. `{bundle_dir}/source.md` — ALL in-scope `.sol` files, each with a `### path` header and fenced code block.
2. Agent bundles = `source.md` + agent-specific files:
| Bundle | Appended files (relative to GitHub で全文を読む (外部ページ)