Do the work
a brief goes in — a pull request with that brief still attached comes out
This is the one stage where the tool actually matters. Planning and briefing are conversation; this is code, so you need something that can read and write your repo — a local agent, not a browser chat.
- What kind of tool
- A local coding agent with access to your filesystem — Claude Code, Codex, Antigravity, or whichever you already use.
- What you say to it
- Hand it the brief. Tell it to work in its own worktree, on its own branch, and to run
vinaya check --allbefore it opens a pull request. - What comes out
- A pull request carrying the brief in its own body, with
vinaya check --allalready green against it. - What to look at in Studio
- The task moves from Ready to In Review the moment the pull request opens.
Here's what vinaya check --all actually looks like — first on a clean tree, then when it refuses something.
A clean tree —
vinaya check --all✓ brief-shape: pass (336ms) ✓ doc-coverage: pass (668ms) ✓ coherence: pass (838ms) ✓ dispatch-readiness: pass (1192ms)
A refusal
✗ brief-shape: fail (51ms)
error: brief-validation Test Plan: no Test Plan section found — expected
`Test Plan: unit-tests-only`, or at least one `**[agent]**`/`**[principal]**`-tagged
checklist item.The same refusal, in its machine form
{
"schema": 1,
"check": "brief-shape",
"severity": "error",
"message": "brief-validation Test Plan: no Test Plan section found — expected `Test Plan: unit-tests-only`, or at least one `**[agent]**`/`**[principal]**`-tagged checklist item.",
"agent_recovery_prompt": "Open the PR body and add or fix the section named above, following the canonical PR-body template. Commit the corrected PR body, then re-run `vinaya check brief-shape`."
}The exact wording of a refusal — which template, which command to re-run — comes from your own repo's configuration; yours will name something else, but the shape holds.