A parallel audit: research, compare, check, find gaps
This is the pattern most graphs start from: a planner splits the goal, four workers research, compare, check and look for gaps at the same time, a verifier with a clean context keeps only claims backed by evidence, and a writer merges the rest.
7 steps in 4 stages · 7 subagents · a kit of 12 files
Free. Built in your browser; nothing is uploaded. No API key, no account.
How it runs
Steps in the same stage start at the same time. Each subagent gets only what its incoming edges carry, and a step in a fresh context never sees the reasoning of the steps before it. A gate decides whether the work passes, and a failed gate re-runs the work it checks.
- Stage 1
Split · Planner
sonnet · Read
- Stage 24 in parallel
WORKER 1: Research · Worker
haiku · Read, Grep, Glob, WebSearch, WebFetch
WORKER 2: Compare · Worker
haiku · Read, Grep, Glob, WebSearch
WORKER 3: Check · Worker
haiku · Read, Grep, Glob, Bash
WORKER 4: Find Gaps · Worker
haiku · Read, Grep, Glob
- Stage 3
VERIFIER (Fresh Context) · Checker
opus · Read, Grep, Glob · fresh context
Gate: Every kept claim cites concrete evidence and no two workers contradict each other.
- Stage 4
Merge & final answer · Writer
sonnet · Read
Use it when
- You want a starting point for your own multi-agent skill.
- A task has independent parts that can run at once.
- You need claims checked by something that did not write them.
Change these first
- Rename the four workers to the parts of your task.
- Write the verifier's gate as something a checker can decide from the inputs.
Need a workflow built for your team? Fixed-price packages
What you get
An orchestrating SKILL.md, one Claude Code subagent per step with its own tools and model, and the same skill as a Cursor rule. Your agent runs it with its own subagents; nothing on this site calls a model.
- .claude/skills/parallel-system-audit/SKILL.mdorchestrator
- .claude/skills/parallel-system-audit/graph.skill.mdgraph source
- .claude/agents/parallel-system-audit-splitter.mdsubagent
- .claude/agents/parallel-system-audit-worker-research.mdsubagent
- .claude/agents/parallel-system-audit-worker-compare.mdsubagent
- .claude/agents/parallel-system-audit-worker-check.mdsubagent
- .skill-graph/.gitignoresupport
- .cursor/rules/parallel-system-audit.mdcCursor rule
- README.mdreadme
- + 3 more subagents
---
name: parallel-system-audit
description: "Splits a goal into 4 parallel workers, verifies with fresh context, and synthesizes."
---
# parallel-system-audit
Splits a goal into 4 parallel workers, verifies with fresh context, and synthesizes.
This skill is a graph: each step has its own prompt and context, and only the payloads named below move between steps.
## Plan
Run the stages in order. Every model step runs in its own subagent; do not do a step's work yourself. Only command steps and approvals are yours to run. Steps in the same stage do not depend on each other: start them together, in one message with several subagent calls.
The input (`goal`) is the user's goal: their request, word for word, handed on under `### goal`. Ask for it if the user has not given one.
### Stage 1 · 1 step
- **SPLIT** (`splitter`) → subagent `parallel-system-audit-splitter`
- Hand it: the user's goal.
- Expect: `subtask_json` (json).
- Contract check (`subtask_json`): save its output to `.skill-graph/parallel-system-audit/splitter.json`, then run `node -e "const fs=require('fs');const d=JSON.parse(fs.readFileSync(process.argv[1],'utf8'));const k=['worker_research','worker_compare','worker_check','worker_gaps'];const ok=d!==null&&typeof d==='object'&&Array.isArray(d)===false;const m=ok?k.filter((x)=>Object.hasOwn(d,x)===false):k;if(m.length>0){console.error('Missing keys: '+m.join(', '));process.exit(1)}" .skill-graph/parallel-system-audit/splitter.json` with Bash. Exit code 0 passes.
- If a contract check fails: re-run this step once with its previous answer and the error output. If it fails again, stop and show the user the output.
### Stage 2 · 4 steps in parallel
- **WORKER 1: Research** (`worker_research`) → subagent `parallel-system-audit-worker-research`
- Hand it: only the `worker_research` value from the JSON of SPLIT (`splitter`).
- Expect: `findings_array` (markdown).
- **WORKER 2: Compare** (`worker_compare`) → subagent `parallel-system-audit-worker-compare`
- Hand it: only the `worker_compare` value from the JSON of SPLIT (`splitter`).
- Expect: `findings_array` (markdown).
- **WORKER 3: Check** (`worker_check`) → subagent `parallel-system-audit-worker-check`
- Hand it: only the `worker_check` value from the JSON of SPLIT (`splitter`).
- Expect: `findings_array` (markdown).
- **WORKER 4: Find Gaps** (`worker_gaps`) → subagent `parallel-system-audit-worker-gaps`
- Hand it: only the `worker_gaps` value from the JSON of SPLIT (`splitter`).
- Expect: `findings_array` (markdown).
… 37 more lines in the kitOr let Claude adapt it
Add Skill Graph to Claude Code as a connector, then ask. Claude loads this starter, changes it for your project, checks it and hands you the kit.
Set up the connectorAsk Claude
Use Skill Graph: get the parallel-system-audit template, adapt it to this project, validate it until it has no errors, and compile it for Claude Code.The graph file
The whole workflow is one Markdown file, graph.skill.md: the steps and edges in the frontmatter, one prompt per step below it. The guide explains every field.
graph.skill.md · 118 lines
---
name: parallel-system-audit
description: Splits a goal into 4 parallel workers, verifies with fresh context, and synthesizes.
spec: skill-graph/1
topology:
nodes:
- id: goal
type: input
label: 1. GOAL
- id: splitter
type: orchestrator
label: 2. SPLIT
model: sonnet
tools: [Read]
- id: worker_research
type: worker
label: "3. WORKER 1: Research"
model: haiku
tools: [Read, Grep, Glob, WebSearch, WebFetch]
- id: worker_compare
type: worker
label: "3. WORKER 2: Compare"
model: haiku
tools: [Read, Grep, Glob, WebSearch]
- id: worker_check
type: worker
label: "3. WORKER 3: Check"
model: haiku
tools: [Read, Grep, Glob, Bash]
- id: worker_gaps
type: worker
label: "3. WORKER 4: Find Gaps"
model: haiku
tools: [Read, Grep, Glob]
- id: verifier
type: verifier
label: 4. VERIFIER (Fresh Context)
isolated_context: true
model: opus
tools: [Read, Grep, Glob]
gate: Every kept claim cites concrete evidence and no two workers contradict each other.
on_fail: retry
max_retries: 1
- id: merger
type: synthesizer
label: 5 & 6. MERGE & FINAL ANSWER
model: sonnet
tools: [Read]
edges:
- from: goal
to: splitter
- from: splitter
to:
- worker_research
- worker_compare
- worker_check
- worker_gaps
contract: subtask_json
- from:
- worker_research
- worker_compare
- worker_check
- worker_gaps
to: verifier
contract: findings_array
- from: verifier
to: merger
contract: verified_payload
contracts:
subtask_json:
format: json
description: One key per worker id; each value is that worker's task in one or two sentences.
findings_array:
format: markdown
description: A numbered list of findings, each with its evidence (file, line, quote or URL) and a confidence of high, medium or low.
verified_payload:
format: markdown
description: Only the claims that passed verification, then a short list of rejected claims with the reason.
---
# Node Prompts & Edge Contracts
## @node: splitter
You are the Orchestrator. Take the user's goal and break it into 4 distinct tasks.
The goal:
{{goal}}
Output strictly as JSON with keys: `worker_research`, `worker_compare`, `worker_check`, `worker_gaps`.
## @node: worker_research
Focus ONLY on deep research for: {{splitter.worker_research}}
Return findings with exact citations.
## @node: worker_compare
Focus ONLY on comparing alternatives and trade-offs for: {{splitter.worker_compare}}
## @node: worker_check
Focus ONLY on checking technical constraints and correctness for: {{splitter.worker_check}}
## @node: worker_gaps
Focus ONLY on finding missing edge cases and blind spots for: {{splitter.worker_gaps}}
## @node: verifier
**CRITICAL: FRESH CONTEXT MODE.**
You only see the raw outputs from the 4 workers. You do NOT see their reasoning chain.
Audit every claim below for hallucinations, bias, or weak evidence. Reject unverified claims.
Original goal: {{goal}}
Worker outputs:
{{workers.output}}
## @node: merger
Combine the verified findings below into one clear, actionable report.
{{verifier.output}}
More starter graphs
- PR reviewSecurity, performance, architecture and test coverage reviewers
- Bug triageStack trace, logs, recent commits and a minimal repro
- RFC discoveryFeasibility, prior art, interface design and failure modes
- Ship a changeEdit until tests pass, review the diff in parallel, approve once before the PR
- Review each fileOne fresh-context review per changed file, however many there are, then merge and gate
- Research reportSources, figures, counterpoints and open questions, fact-checked in a fresh context
- Write an articleAngle, outline, facts and reader in parallel, then an editor check before the draft
- Analyze a datasetProfile, clean, analyze and sanity-check a table in parallel, then re-check every figure
- Design an appUsers, features, screens and data model in parallel, then a product review before the spec