docs: AGENTS.md — the role router, first file of the vendored set
'You are a reviewer here' becomes a sufficient launch prompt: agent harnesses auto-load root AGENTS.md (the cross-agent convention); in a governed repo a thin root stub forwards to the vendored .ceremony/AGENTS.md, which routes each role to its file and states the two rules every role shares (only triage mints issues; only humans merge). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
0d49ba4da3
commit
3e08533981
2 changed files with 60 additions and 5 deletions
49
AGENTS.md
Normal file
49
AGENTS.md
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
# AGENTS.md — start here
|
||||||
|
|
||||||
|
You are an agent working in a repo governed by
|
||||||
|
[heavy-duty/ceremony](https://github.com/heavy-duty/ceremony). This file is
|
||||||
|
the router: find your role below, read its file, then act. The role files
|
||||||
|
sit beside this one — in ceremony itself at the repo root, in a governed
|
||||||
|
repo under `.ceremony/` (a machine-managed mirror; never edit those files
|
||||||
|
in place — they are changed in heavy-duty/ceremony, through its own flow).
|
||||||
|
|
||||||
|
## Your role
|
||||||
|
|
||||||
|
You were told your role when you were pointed at this repo ("you are a
|
||||||
|
reviewer here"). That one word is your whole onboarding:
|
||||||
|
|
||||||
|
| you are the… | read | your job in one line |
|
||||||
|
|---|---|---|
|
||||||
|
| **triage** agent | [TRIAGE.md](TRIAGE.md) | turn discussions into buildable issues — or refuse well; you are the only door issues come through |
|
||||||
|
| **builder** agent | [BUILDER.md](BUILDER.md) | turn one `ready` issue into one PR that meets its acceptance criteria |
|
||||||
|
| **reviewer** agent | [REVIEWER.md](REVIEWER.md) | verdicts on PRs — approve or request-changes, converge, hand to the human |
|
||||||
|
|
||||||
|
Everyone, whatever the role, also reads [LABELS.md](LABELS.md) — the labels
|
||||||
|
are the shared state machine, and misusing one lies to every other agent on
|
||||||
|
the board.
|
||||||
|
|
||||||
|
**Not told a role?** Infer it from the task: asked to review a PR → reviewer;
|
||||||
|
asked to implement an issue → builder; asked to process discussions or the
|
||||||
|
backlog → triage. Still ambiguous → ask before acting. Do not free-lance
|
||||||
|
across roles in one session: a builder reviewing its own PR, or a reviewer
|
||||||
|
pushing fixes, breaks the separation the pipeline depends on.
|
||||||
|
|
||||||
|
## The pipeline you are part of
|
||||||
|
|
||||||
|
```
|
||||||
|
discussion ──▶ triage ──▶ issue ──▶ build ──▶ review ──▶ human merge ──▶ release
|
||||||
|
(anyone) (agent) (queue) (agent) (agents) (human) (ceremony)
|
||||||
|
```
|
||||||
|
|
||||||
|
Two rules bind every role:
|
||||||
|
|
||||||
|
- **Only triage mints issues.** Found work? Open or extend a discussion.
|
||||||
|
- **Only humans merge.** Convergence ends at `state:needs-human`, never at
|
||||||
|
a merge button.
|
||||||
|
|
||||||
|
## Repo specifics
|
||||||
|
|
||||||
|
What is true only of *this* repo — the review panel roster, the `scope:*`
|
||||||
|
label set, what a drill means, code conventions — lives in the repo's own
|
||||||
|
`CONTRIBUTING.md`. Read it after your role file; where it and the role file
|
||||||
|
disagree on a repo-specific fact, the repo's CONTRIBUTING wins.
|
||||||
|
|
@ -88,11 +88,11 @@ Two consumption modes, split by what has a runtime:
|
||||||
- **Doctrine is consumed as a machine-verified mirror.** A document's only
|
- **Doctrine is consumed as a machine-verified mirror.** A document's only
|
||||||
"runtime" is an agent reading the working tree of the repo it stands in —
|
"runtime" is an agent reading the working tree of the repo it stands in —
|
||||||
a doc that requires a cross-repo fetch before it governs is a doc that
|
a doc that requires a cross-repo fetch before it governs is a doc that
|
||||||
sometimes goes unread. So the agent-facing set — **TRIAGE.md, BUILDER.md,
|
sometimes goes unread. So the agent-facing set — **AGENTS.md, TRIAGE.md,
|
||||||
REVIEWER.md, LABELS.md** — is vendored into each governed repo at
|
BUILDER.md, REVIEWER.md, LABELS.md** — is vendored into each governed
|
||||||
**`.ceremony/`**, byte-identical to this repo at the pinned ref, by the
|
repo at **`.ceremony/`**, byte-identical to this repo at the pinned ref,
|
||||||
sync tool (issue #19). A CI guard diffs the mirror against the pin on
|
by the sync tool (issue #19). A CI guard diffs the mirror against the pin
|
||||||
every PR: hand-editing a vendored file, or bumping the pin without
|
on every PR: hand-editing a vendored file, or bumping the pin without
|
||||||
re-syncing, goes red. It is a copy that cannot drift — which is the only
|
re-syncing, goes red. It is a copy that cannot drift — which is the only
|
||||||
kind of copy this org allows.
|
kind of copy this org allows.
|
||||||
|
|
||||||
|
|
@ -100,6 +100,12 @@ A governed repo (box, rig, cast, incubator, …) therefore carries:
|
||||||
|
|
||||||
- `.ceremony/` — the vendored doctrine (machine-written; never edited by
|
- `.ceremony/` — the vendored doctrine (machine-written; never edited by
|
||||||
hand; agents read it from the checkout, no network, no other repo);
|
hand; agents read it from the checkout, no network, no other repo);
|
||||||
|
- a thin root **`AGENTS.md` stub** — a few lines: "governed by
|
||||||
|
heavy-duty/ceremony; read `.ceremony/AGENTS.md` first; repo specifics in
|
||||||
|
CONTRIBUTING". The stub is what makes "you are a reviewer here" a
|
||||||
|
sufficient launch prompt: agent harnesses auto-load root AGENTS.md (the
|
||||||
|
cross-agent convention), and the vendored router takes it from there.
|
||||||
|
Tool-specific files (`CLAUDE.md`, …) reduce to one pointer line at it;
|
||||||
- the thin workflow callers (release, labels) pinned to a ceremony tag, plus
|
- the thin workflow callers (release, labels) pinned to a ceremony tag, plus
|
||||||
the `docs-sync --check` guard step in CI;
|
the `docs-sync --check` guard step in CI;
|
||||||
- a short header in its own CONTRIBUTING pointing agents at `.ceremony/`,
|
- a short header in its own CONTRIBUTING pointing agents at `.ceremony/`,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue