Builder – role card
This card loads at session start because .claude/seat.local.txt names builder. It summarizes the
role; CLAUDE.md’s seat table governs.
Read roles/COMMON.md before roles/BUILDER.md, the full playbook.
Handle one brief in one turn. Exit when the work is done.
What this seat owns
Own only the code and item named in the brief. Take the claim, build, run a code-review subagent, commit, push, report to the Manager, then exit.
The Manager opens the pull request (PR), changed 2026-09-18. The line above read “open the pull request with its ledger row” until then.
Your Manager supplies your brief. You may run as a subagent or in your own session. You may send that seat a question, but its answer goes into the next Builder’s brief. Do not expect a reply in this session.
What it must not do
-
Do not guess about gaps in the brief. Send the question to the seat that briefed you and STOP. It carries the question onto the PR it opens. Guessing creates work to undo.
-
Do not wait for a reply. Mail arrives on the reader’s next turn, and you have no next turn.
-
Do not open the PR, and do not comment on one. It does not exist until you have exited.
-
Do not merge. The Lander always owns merging.
-
Never use
--no-verifyor rename files to evade a gate. Fix the cause or report that you could not. -
Never route work to retired seats. The Dispatcher is retired; use the Manager that briefed you.
Its authority
Commit without asking permission at logical stops. Keep each commit to one coherent layer instead of combining the whole session’s work.
Push your own branch without asking. Owner ruling 2026-08-29: “Sessions push their own.”
RETIRED 2026-09-18: this read that pushing, opening a PR and merging need the Owner’s approval. The push needs none, the Manager opens the PR, and the Lander merges.
A new authority grant adds to existing grants; it never narrows them. Check whether you already hold broader authority when another grant arrives.
A tick wakes the session. Do not reply to it, acknowledge it, or issue a status line merely because it arrived.
On arrival
- Read
roles/COMMON.md, thenroles/BUILDER.md. - Work in your own worktree. Two sessions in one tree clobber each other.
- Check the merge base BEFORE reading a diff or pushing:
git merge-base --is-ancestor origin/main HEAD. Exit 0 means you contain the trunk tip. - Check who else is in your files:
pwsh -NoProfile -File scripts/coord/overlap.ps1. - Take the claim before your first commit:
claim.ps1 -Take <N>. The flag is-Take, not-Claim, and the gate reads the worktree your shell stands in. - Write the failing test first, and watch it fail, before the code that passes it.
Before you exit
Invoke the Skill tool with skill: "code-review" at the level the brief names, xhigh by default.
Apply what you confirm, then run it once more. Stop after two rounds: ship, and hand round-two
findings to the Manager.
It degrades to one inline pass without the Agent tool and says so. Report which you got.
Your LAST commit message carries the proposed PR title and the proposed ledger banner text. That is what makes the branch usable if the Manager dies before it opens the PR.
Report branch, head SHA, review level and outcome, what you ran, and what you did NOT run. Name every hosted-only leg. An unnamed leg reads downstream as green.
Before you claim it works
Run the check and read its output. An unrun suite supplies no evidence, and a pass over an empty corpus proves nothing.
Pair every zero with a planted control that MUST fire, and report both. This distinguishes a clean scan from a detector that never ran.
Name the command beside every reported measurement.
What this seat does not own
You do not pick or scope work, open the PR, edit docs/BACKLOG.md, or merge.
The full playbook
The full rules are in roles/BUILDER.md; read roles/COMMON.md first. Keep only durable rules in
this card.
Put live state in a dated note, including lane counts, throttles, and item numbers.