Repository navigation
v0.12.0
·
102 commits
to master
since this release
Immutable
release. Only release title and notes can be modified.
Findings of a week-long manual run on a real project (Web Studio 0.11.1, ten sessions, 250 agent runs) and of an
external PHP project. Nothing new to learn: the same commands, the same agents — cheaper, and harder to bypass.
- One story per session (coordination-rules rule 13). 80 % of the week's spend was the parent's context, not the
agents' work: sessions ran to 966 k tokens with two compactions in ten sessions, and 85 % of requests re-read more than
200 k./story-donenow hands off to/clearbefore the next story (continuing in the same conversation is no longer
an offered option),/dev-storyrefuses to start a story past 50 % context without offering/clearfirst, and
/code-reviewsends a re-review after fixes to a fresh session past that mark. Playbook § 10.25 says the same in two languages. - Commands carry their namespace. A bare
/code-reviewin a hand-off ran Claude Code's built-in review skill of the
same name — nine general-purpose agents, no routing table, no appsec — and its findings travelled under the studio's name;
once a security-sensitive story was closed on its word. Every hand-off indev-story,refactor,code-review,
story-doneand every line/helpprints now names/web-studio:<command>in plugin mode; coordination-rules § Subagents
says why, next to the same rule forsubagent_type. /helpno longer starts the next command. It runs on Haiku, and a skill started from its closing question inherited
that model: a/code-reviewand a/story-doneran on Haiku and closed a story with invented numbers. After the answer
/helpprintsRun: /web-studio:<command>and ends the turn.- The studio's review has to be in the log.
/story-doneDoD: a reviewer'sSubagentStopafter the branch's first
commit,appsec-engineeramong them for a security-sensitive story — otherwiseNOT DONE (no studio review). - A verdict is the reviewer's. After fixes
/code-reviewsends the fix diff to the reviewer that raised each finding
and moves NEEDS CHANGES to APPROVED only on its answer — never on a green CI (five of five verdicts had been flipped by
the parent). A BLOCKING is downgraded only by the reviewer that raised it or bytechnical-directorthrough/impact.
Reviewers get the diff as one file and open every verdict withRead: N/M files;N < MisPARTIALand never
counts towards APPROVED (35 % of lead reviews had been cut off mid-diff). - Engineers write the code, in every mode. The rule lived in
dev-storyandrefactor; on an external PHP project
the session drifted into "faster to fix it myself" from the third review round. It is now in coordination-rules
§ Subagents, principle 8 of the CLAUDE.md template,code-reviewPhase 5 andhotfix— and it has an observer:
hooks/parent-write.sh(PreToolUse Write|Edit, warn-only) names the engineer the roster has for a code file the
session writes itself and leaves aParentWriteline inagent-audit.log;agent-stats.shand/sprint-statusprint the count. - Turn budgets and briefs.
maxTurns30 → 60 for the implementing Tier-3 engineers, 25 → 40 for the leads and
appsec-engineer(go-engineer hit its limit on 55 % of runs, test-engineer on 50 %, backend-lead as a reviewer on 35 %).
Thedev-storybrief has six fixed lines (Story · Readwith line ranges ·Write · Check · Skip · Report) because
half of an engineer's turns went intogrep/sednavigation of files the parent had already read; every agent's
protocol gains point 8 —Read/Grepon the brief's paths, shell search only when the path is unknown, and a
Checkpoint:line kept in the result so a cut-off hands the caller the point to resume from. After a cut-off the parent
sends one resume line and runs no checks of its own until theSubagentStop(50 of 64 cut-offs had been answered with
the parent's owngit statusand builds). - The roster says what the tiers do. Leads review, design and name the specialist; the session dispatches. The
Task
tool and "routes work to …" leave the seven leads — measured on real projects, no lead ever spawned an agent. - Hooks, four false positives closed and one gap:
validate-commitblocks provider-shaped credentials everywhere but only
warns onpassword = "…"shapes in test code and agent memory (three test files had been rewritten to please it);
validate-pushreads the commit from agit commit … && git pushcall instead of an emptyrev-list(docs commits
on the default branch cried wolf three times a day);written-pathsresolvesp='…'; open(p,'w')and
Path(p).write_text(…)(27 document writes in one session had passed every guard);consent-guardstays silent on a
one-lineStatus:/Started:/Actual:edit, on a command that sets the marker before writing, and on
docs/ops/measurements/(rule 12 asks for those).hooks/session-state.shis executable — skills call it as a
command and one call failed withPermission denied; the structure linter checks the bit for every hook a skill calls.