Benchmark comparing AI models + AI coding tools VS human AI reports for Solidity smart contract security auditing using Pashov Skills.
AI credits sponsored by Pashov⭐️
This benchmark runs the pashov/skills solidity-auditor skill across multiple AI model + harness combinations against the same set of smart contracts, then visualizes the results in a local dashboard for comparison.
Each runner invokes its harness CLI directly (no orchestrator needed).
It can also compare an human ai audit or public competitions against ai models to see if AI models can match expert human auditors.
| Harness | Model | Runner Script |
|---|---|---|
| Claude Code | Claude Opus 4.6 | ai-runners/claude-code-opus-4.6.sh |
| Claude Code | Claude Sonnet 4.6 | ai-runners/claude-code-sonnet-4.6.sh |
| OpenCode | Google Gemini 3.1 Pro | ai-runners/opencode-gemini-3.1-pro.sh |
| Codex | OpenAI GPT 5.4 | ai-runners/codex-gpt-5.4.sh |
| OpenCode | MiniMax M2.7 | ai-runners/opencode-minimax-m2.7.sh |
| OpenCode | Qwen 3.5 Plus | ai-runners/opencode-qwen3.5-plus.sh |
| OpenCode | xAI Grok 4.20 Beta | ai-runners/opencode-grok-4.20-beta.sh |
- Claude Code installed (
npm install -g @anthropic-ai/claude-code) - OpenCode installed
- Codex installed
- Bun installed (for dashboard)
- API keys configured for each provider
# Run a single benchmark
./run-all.sh notional-finance --only claude-code-opus-4.6
# Tag a run (reports go into reports/notional-finance/run-1/)
./run-all.sh notional-finance --run-id run-3
# Run a single runner directly
./ai-runners/claude-code-opus-4.6.sh notional-finance
./ai-runners/claude-code-opus-4.6.sh notional-finance run-3 # with run ID
NOTE: For opencode, you need to run manually and pass the master prompt via doing a dry-run, due there is pemissions that must be enabled manually and can not be bypassed by opencode.json config.
./run-all.sh notional-finance --only opencode-qwen3.5-plus --dry-runcd dashboard
bun install
bun run devOpen http://localhost:5173 to view the comparison dashboard.
security-audit-skills-benchmark/
├── ai-runners/ # One bash script per model+harness combo
├── targets/ # Smart contract codebases to audit
│ └── notional-finance/
│ ├── repo/ # Solidity source code
│ ├── integrations-context/ # External protocol references (Morpho, Curve, Pendle)
│ └── AUDIT_PROMPT.md # Scope, focus, and instructions for this target
├── reports/ # JSON benchmark results
│ └── notional-finance/
│ ├── run-0/ # First batch of results
│ └── run-N/ # Subsequent runs
├── dashboard/ # Bun + Vite visualization app
├── skills/ # Embedded Pashov Skills library
├── run-all.sh # Master orchestrator
├── report-schema.json # JSON schema for report format
└── README.md
- Create
targets/<name>/repo/with the Solidity codebase - Create
targets/<name>/AUDIT_PROMPT.mddefining scope, file list, and focus areas - Optionally add
targets/<name>/integrations-context/with external protocol references - Run:
./run-all.sh <name> --run-id run-0
- Create
ai-runners/<harness>-<model-slug>.shfollowing the existing pattern - Set
HARNESSto one of:claude-code,opencode,codex - Add the runner name to the
RUNNERSarray inrun-all.sh
If you need a new harness type, add a run_<harness>() function in _common.sh.
Each benchmark run produces a JSON report conforming to report-schema.json:
{
"metadata": {
"model": "claude-opus-4.6",
"harness": "claude-code",
"target": "notional-finance",
"timestamp": "2026-03-23T12:00:00Z",
"duration_seconds": 180,
"skill_version": "v2"
},
"summary": {
"total_findings": 5,
"critical": 1,
"high": 2,
"medium": 1,
"low": 0,
"informational": 1
},
"findings": [...],
"raw_output": "..."
}MIT