Start
Ship with Vinaya

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 --all before it opens a pull request.
What comes out
A pull request carrying the brief in its own body, with vinaya check --all already 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.

Read the Developer role