THE CREW
The six agents
Five core agents — prospector, draftsman, inspector, smith, judge — run every /smithy. A sixth, questmaster, joins only during /smithy-quest. Same agent definitions on pi and prime-agent: under prime, their file/shell work flows through the persistent ipython kernel.
prospector
Finds the relevant files and lines. Read-only, fast.
17 tools · 7 search · tome trio
draftsman
Produces the plan. Read-only.
16 tools · 6 search · tome trio
inspector
Fresh-instance adversarial review of draftsman's plan. Gates smith until APPROVE. Read-only.
16 tools · 6 search · tome trio
smith
Builds. Executes the approved plan. Emits [DONE:n] progress markers.
24 tools · edit · write · bash
judge
Verifies smith's work against the plan (runs tests/type-checks). Returns APPROVE / REQUEST CHANGES / REJECT.
22 tools · 7 search · bash · tome trio
prospector
Finds the relevant files and lines. Read-only, fast.
The scout. Reads the repo and returns the small set of files and line ranges that matter for the goal — never writes. When the knowledge-base bridge is connected, prospector queries the code graph via the tome trio (tome_search / tome_describe / tome_call — injected into its session from the parent bridge) and falls back to grep/ast_grep when it isn't.
Runs when: When the goal touches code the parent model has not already loaded into context — i.e. the case where reading the whole repo would burn the budget before planning starts.
Tools read · grep · find · ls · ast_grep · lsp_query · comment_check · task (3) · web (2) · cached (2) · tome trio (3)
Example reads repo → returns ["src/calc.js:12-48", "src/format.js:5-22", "package.json:scripts.test"]
Hand off → passes findings
draftsman
Produces the plan. Read-only.
Turns prospector's findings into a numbered, executable plan and writes it to `.smithy/plan.md`. Read-only — draftsman never edits your code, only the ledger. Forces itself into the loop for any open-ended goal or 3+-file change so the build has a blueprint to follow.
Runs when: Always for open-ended goals and 3+-file changes. Skipped only when the goal is trivial enough that a one-line fix doesn't need a plan ceremony.
Tools read · grep · find · ls · ast_grep · lsp_query · task (3) · web (2) · cached (2) · tome trio (3)
Example findings + goal → 5-step .smithy/plan.md with checkboxes, file paths, and a short rationale per step
Hand off → hands plan
inspector
Fresh-instance adversarial review of draftsman's plan. Gates smith until APPROVE. Read-only.
A fresh-instance critic (no shared context with draftsman — eliminates self-review bias). Re-reads the relevant code and the plan, then issues a verdict in `## Adversarial Reviews`: `approve` / `request changes` / `block`. A `block` sends you back to planning instead of wasting a build.
Runs when: Auto-runs on any non-trivial plan (the kind that warrants a second pair of eyes). You can also ask for a re-review in plain prose — the model re-runs the inspector on request.
Tools read · grep · find · ls · ast_grep · lsp_query · task (3) · web (2) · cached (2) · tome trio (3)
Example fresh-context read of .smithy/plan.md + repo → "VERDICT: approve" (or request changes / block with concrete follow-ups)
Hand off → APPROVE → build
smith
Builds. Executes the approved plan. Emits [DONE:n] progress markers.
The only writer. Under `/smithy`, smith auto-runs in its own git worktree so concurrent builds never race on the same files; on success the branch merges back, on conflict an interactive chooser (judge-auto-fix, manual, or abort). Emits `[DONE:n]` markers so the orchestrator can track progress against the plan. Once done, judge verifies (not draftsman — see Option A in the docs).
Runs when: Once inspector has approved the plan. Skipped for trivial goals where planning is overkill — smith handles the one-line fix directly.
Tools read · grep · find · ls · ast_grep · lsp_query · comment_check · edit · write · bash · apply_patch · todos (2) · hashline (2) · task (3) · web (2) · typecheck · tome trio (3)
Example reads approved plan → applies edits → emits [DONE:1] … [DONE:5] → commits on branch
Hand off → hands work → verify
judge
Verifies smith's work against the plan (runs tests/type-checks). Returns APPROVE / REQUEST CHANGES / REJECT.
Runs your test suite and type-checker against the current tree — for the post-`/smithy` judge, smith's branch has already merged so the parent tree IS the verified code. Emits a verdict in `## Verification`: `APPROVE` / `REQUEST CHANGES` / `REJECT`. Each run appends to the ledger, so the history of audit accumulates. Ask for a re-check in plain prose any time.
Runs when: Automatically after smith finishes a multi-step plan. You can also ask for a re-verification in plain prose at any time.
Tools read · grep · find · ls · ast_grep · lsp_query · comment_check · bash · hashline_read · todo_read · task (3) · web (2) · cached (2) · typecheck · test_finder · tome trio (3)
Example runs npm test + tsc --noEmit → emits "VERDICT: APPROVE" (or REQUEST CHANGES with concrete follow-ups)
Quest-only /smithy-quest only
This agent only appears during /smithy-quest runs. Questmaster is a fresh-instance critic — it did NOT do the work it evaluates — and decides whether the quest goal is met between iterations of the autonomous loop.
questmaster
Assesses whether the quest goal is met. Fresh instance — did NOT do the work. Returns QUEST_COMPLETE / QUEST_CONTINUE / QUEST_SATURATED.
A /smithy-quest-only agent. After each judge APPROVE, the questmaster (a fresh instance — it did NOT do the work) reads git diff --stat and the .smithy/quest.md history to assess progress. It returns EXACTLY one verdict on its final line: QUEST_COMPLETE (goal met — emit [DONE]), QUEST_CONTINUE: <specific next focus> (loop with a concrete next-iteration target the parent will use as the new goal), or QUEST_SATURATED (diminishing returns — emit [DONE:saturation]). The next-focus contract is what keeps iterations from drifting.
Runs when: Only during /smithy-quest, after each judge APPROVE. Decides whether the quest loops for another iteration or terminates.
Tools read · grep · find · ls · bash · ast_grep · lsp_query · hashline_read · web (2) · cached (2) · test_finder · tome trio (3)
Example reads git diff --stat + .smithy/quest.md → "QUEST_CONTINUE" (more valuable work remains)