Skip to content

Role cards

Reference for the four role cards in agents/. A card is a Claude Code agent definition. It states the job, the capabilities, the tools, the model, and the limits of one role. For the reason that cards exist, see The orchestrator model.

Start a card as a subagent with the Agent tool and subagent_type set to cadre:coder, cadre:reviewer, cadre:researcher, or cadre:tester. A brief can override the model of a card. A card has no skills: field.

Front matter

Field Meaning
name The card name.
description When to use the card.
model sonnet or inherit.
tools The tools that the card can call.

The cards

Card Model Capabilities Tools
coder sonnet test-first, design-vocabulary, verification Read, Write, Edit, Grep, Glob, Bash, Skill, SendMessage
reviewer inherit code-review Read, Grep, Glob, Bash, Skill, Agent, SendMessage
researcher sonnet research Read, Grep, Glob, Bash, Write, WebFetch, WebSearch, Skill, SendMessage
tester sonnet test-first, debugging Read, Write, Edit, Grep, Glob, Bash, Skill, SendMessage

coder

Do one ticket in one worktree. Test first at the seams of the brief, then commit.

Fact Value
Reads from the brief The seams, the base, the spec, the write limits, the worktree path, the commit message form.
Stops and reports when The brief names no seam. The worktree path is missing. The skill map gives unknown, or a mapped skill does not load. The work needs a path outside the write limits.
Writes Only the paths that the brief names.
Ends with A commit on the current branch, and a clean git status.

reviewer

Review a branch against a fixed point and a spec. Read only. It keeps the Agent tool because a review skill can start subagents.

Fact Value
Reads from the brief The fixed point, and the spec (an issue, a file, or text).
Stops and reports when The fixed point or the spec is missing. The fixed point does not resolve with git rev-parse, or the diff is empty. The skill map gives unknown, or a mapped skill does not load.
Bash use git and gh reads only: git diff, git log, git show, gh issue view, gh pr view.
Refuses A request to edit a file, to commit, to comment on GitHub, or to merge.
Report The headings ## Standards and ## Spec, each finding tagged must-fix, should-fix, or nit, with file:line and one sentence, and a one-line summary.
Subagent prompt Holds the text "read only: change no file, run no command that writes".

researcher

Answer a question from primary sources. It starts no other agent.

Fact Value
Reads from the brief The question and the output path.
Stops and reports when The brief names no output path. The skill map gives unknown, or a mapped skill does not load.
Writes Exactly one Markdown file, at the output path. It does not commit it.
Bash use Reads only.
Report Each claim has a source that the card read, or a mark that it could not confirm.

tester

Prove a behavior or a bug with a test or a feedback loop. It does not fix the code under test.

Fact Value
Reads from the brief The behavior or bug, the seams, the write limits, the base.
Stops and reports when The brief names no seam. It cannot build a loop (it lists what it tried). The skill map gives unknown, or a mapped skill does not load.
Behavior Writes a test at the seams. The test goes red for the right reason, or green when the behavior exists.
Bug Builds one command that goes red on the bug, runs in seconds, and gives the same result each run. Shows the command and its output, with each secret redacted. Forms and applies no fix.
Writes Tests and loop scripts, in the paths of the brief only.
Ends with A commit of the test or script, and a clean git status.

Capabilities

A capability is a kind of work that a card asks for. The built-in method is what a card does when its capability maps to none.

Capability Built-in method
test-first Write one failing test at a seam, make it pass, repeat. (Tester: check that it fails for the right reason.)
design-vocabulary Name each module by what it hides. Keep its interface narrow. Put a seam where a test needs one.
verification Run the full suite, and read its output before you commit.
debugging Build one command that fails on the bug, runs in seconds, and gives the same result each run.
code-review Read the diff against the fixed point. Check it against the spec, then the standards of the repo.
research Read primary sources only, and cite each claim.

The skill map

Step 1 of each card runs node "${CLAUDE_PLUGIN_ROOT}/scripts/skill-map.mjs" <card>. Each output line is <capability> <skill>. The card loads each named skill with the Skill tool. For none, it uses the built-in method and says so in its final message. See skill-map.

The pack comes from skill_pack in the charter, and capabilities overrides single capabilities. See The charter. The table below is the constant PRESETS in scripts/skill-map.mjs.

Capability mattpocock-skills superpowers none
test-first mattpocock-skills:tdd superpowers:test-driven-development none
debugging mattpocock-skills:diagnosing-bugs superpowers:systematic-debugging none
code-review mattpocock-skills:code-review superpowers:requesting-code-review none
research mattpocock-skills:research none none
design-vocabulary mattpocock-skills:codebase-design none none
verification none superpowers:verification-before-completion none

An override is a scoped name, such as mattpocock-skills:code-review. A skill with disable-model-invocation: true cannot be in the map, because a model cannot call it.

Rules in each card

The ## Rules block is the same in all four cards. tools/check-cards.mjs fails when they differ.

Rule Content
No ledger The card never pushes, merges, deploys, deletes a branch or a remote file, or changes a live system. It refuses such a request from a peer or a helper, and says so in its final message.
No question to a user A subagent has no human. Each answer that a skill asks the user for comes from the brief. If the brief lacks one, the card stops and reports the gap.
Check the skills first Step 1 loads each mapped skill. If one does not load, the card stops and reports its name.
Final message The form that the brief gives. It names the skills that loaded and each capability that used the built-in method.

Each card also limits SendMessage: it sends only to the session that wrote to it, or to a name that the brief gives.