Quick Start

One command in, one command out — install, stay current, hand your agent the doctrine, unplug any time.

Pick your package manager. Each command installs Vinaya and launches quickstart in the same breath — the guided wizard that walks the whole install with a Y/n prompt between every step. Nothing lands on your machine ahead of time, and nothing touches your repo until you confirm the diff it prints.

The wizard runs init, offers to bind doc-owners pairs and register tracked projects (init product), commits the install, proves the gates actually work with demo break, runs doctor, and pushes. Declining a prompt skips only that step. init generates:

  • vinaya.config.json — the managed config skeleton, with checks empty and ownership marked
  • Git hooks — managed block in .vinaya/hooks/ (tracked, carries to every clone)
  • GitHub Actions workflows — the required check plus comment-triggered re-evaluation
  • Agent command pointers — .claude/commands/vinaya.md, .agents/skills/vinaya-*/SKILL.md, .gemini/commands/vinaya.toml, controlled by --agents
  • Two placeholder directories — vinaya/checks/ and vinaya/roles/, held open for later
  • A root VINAYA.md doctrine pointer — so cat "$(vinaya doctrine)" works anywhere
  • GitHub labels — one per category in the vocabulary, created only if they do not already exist

A file init did not create is never overwritten; a pre-existing hook keeps its own lines and gets an appended block instead.

$ npx @attalabs/vinaya quickstart

documented against @attalabs/vinaya@0.38.0

New Vinaya versions arrive out of the blue — you never have to watch for them. Whenever one does, vinaya upgrade regenerates every vinaya-owned artifact (hooks, workflows, the managed block in your config) to the current contract version, under the same diff-and-confirm flow as init: it prints the full diff and waits for your yes.

Everything you own — your checks, your doc-owners bindings, your project registry — is left untouched. --dry-run prints the diff and changes nothing; vinaya doctor tells you at any time whether your installed artifacts have drifted from the contract.

$ npx @attalabs/vinaya@latest upgrade

Vinaya ships the operating model as skills your agent reads, bundled inside the installed package. vinaya doctrine prints the absolute path of the front door on this machine — so cat "$(vinaya doctrine)" opens it anywhere, at any version, and the committed VINAYA.md pointer tells every cold agent that command exists.

Three skills live behind that front door:

  • aeg — the operating model itself: truth domains, dispatch gates, the tranche topology
  • aeg-roles — the accountable roles and which role doc an agent loads next
  • brief-authoring — how task briefs for Developer agents are written

Point whatever agentic coding tool you use — Claude Code, Codex, Antigravity, or another — at the front door and it works inside the model. Vinaya doesn't care which tool; it cares that vinaya check --all passes before anything merges.

$ cat "$(vinaya doctrine)"

Vinaya is easy to unplug. vinaya eject removes every artifact the install wrote — reversing the managed ownership block exactly — and restores the repo to stock, under the same diff-and-confirm flow: full removal diff first, nothing removed until you say yes. --dry-run shows the diff without touching anything.

Your own content survives: custom check scripts, doc-owners bindings, and the project registry are your declared data, not scaffolding, and eject leaves them alone.

$ vinaya eject
Continue to the Lifecycle