Which command runs each stage, which agent owns it, where issue state lives. Load when an issue begins.
Resources
4Install
npx skillscat add ayeo-io/compass/compass-runtime Install via the SkillsCat registry.
Compass - the stage map
The rules of behaviour are in compass-contract.md, and the SessionStart hook
puts them in every session before you read this. They are not repeated here,
so the two cannot disagree.
What this file carries is the mapping a session needs once it is already
following the contract - which command runs which stage, what each writes,
which agent owns it, and where the result lands on disk.
If anything here conflicts with docs/methodology.md, the methodology doc
wins. First Compass session? docs/five-minutes.md has the mental model and a
worked example; docs/safety-contract.md says what Compass guarantees and
what it explicitly does not.
The stages and their commands
| Stage | Command | Artifact it writes |
|---|---|---|
| Assess | /compass:assess |
delivery-approach.md + the manifest's assessment |
| Define acceptance criteria | /compass:define |
acceptance-criteria.md |
| Requirements review | /compass:refine |
requirements-review.md (ends with the Definition of Ready) |
| Plan | /compass:plan |
technical-design.md (+ distribution-map.md on parallel work) |
| Break down the work | /compass:breakdown |
worktrees + subtask assignments |
| Implement | /compass:implement |
code + the red and green records (named by binding) |
| Test & review | /compass:verify |
verification-report.md (ends with the Definition of Done) |
| Ship | /compass:ship |
the integration commit + settled follow-ups |
/compass:assess itself carries only that light path. The full assess
procedure - setup, --reassess, steps 1 to 7 and the gate - is inapproaches/assess-procedure.md, which assess names for every heavier
approach and for --reassess.
When assess computes a quick fix, the eight rows above collapse into one
command: /compass:quick-fix carries the whole light path - assess, the one
scenario, red-green, the check, the commit - inlined in a single file, and it
is read with the quick-fix skill and nothing else. It is the same pipeline
at its lightest weight, not a way around it: if compass approach evaluate
returns anything heavier, the rows above are what runs.
Cross-issue: /compass:status (one issue or a flat list), /compass:flow
(the managed cross-issue view - advisory, never gating). Role entry points:/compass:intent (product owner), /compass:position (marketer),/compass:design (designer - produces the UI contract), /compass:consult
(multi-role decisions). /compass:init is optional, and it is not what
creates the project: the entry points above run compass init for you.
Retired command names are removed at the next major version rather than
carried as redirects, so a retired name is an unknown command rather than a
pointer (ADR-024). governance/terminology.yml names each retired word beside
the one that replaced it, and docs/glossary.md says the same in prose; the
current verbs are whatever compass --help lists.
The binding decides the filename. compass tdd-red --scenario <id> andcompass tdd-green --scenario <id> write evidence/red-<id>.json andevidence/green-<id>.json; a run with no --scenario writesevidence/red.json and evidence/green.json instead. Nothing else is touched, so
recording one scenario cannot overwrite the record another gate is citing -
and a reader knows where their evidence went without guessing.
Which agent and which skill, per stage
- Assess - load the
adaptive-routingskill; consider therouter
agent. - Define and refine - load
bdd-specification; on brownfield work whose
behaviour is not yet written down, also loadbehaviour-mapping. Thespec-authoragent owns both stages. - Plan - load
plan-authoring(which optional design sections earn a
place) andgovernance-check(how to check the design against the
governance in force). Theplanneragent owns it. - Implementing in parallel - load
worktree-multiagent. Theorchestrator
agent coordinates;builderagents work, one per worktree, each loadingtdd-discipline. - Test & review - the
verifierandrevieweragents run; loadevidence-gates. Loadreceiving-code-reviewwhen answering their
comments. - An unexpected test failure while implementing - load
systematic-debugging, and after three failed fixes re-assess rather than
try a fourth. - Role-facing work - load
intent-interviewand read itsrole-translation.md, which is how one set of
acceptance criteria is read through five role perspectives. Theproduct-owner,product-marketerandarchitectagents apply specific
ones. evidence-gatescarriestraceability.md, read whenever an artifact is
written.
The full set is in agents/. The files in agents/ are the authority.
Worktrees and multiagent
Only the orchestrator agent creates worktrees (scripts/multiagent.sh) and
integrates them (scripts/integrate.sh). A builder works inside its
assigned worktree and never touches a sibling's. The approach's distribution
map says how many subtasks exist; policy can cap the count. On solo work there
is no worktree - work on the current branch.
Where state lives
.compass/
├── config.yml Project config, and what initialised the project
├── current-task One-line pointer to the active issue
├── work/
│ └── <issue-slug>/ One directory per issue
│ ├── delivery-approach.md The delivery-approach record (prose)
│ ├── manifest.yml The manifest
│ ├── intent.md Intake (if a product owner was involved)
│ ├── ui-contract.md Designer contracts (if a designer was involved)
│ ├── acceptance-criteria.md The shared artifact every role reads
│ ├── requirements-review.md (ends with the Definition of Ready gate)
│ ├── technical-design.md The design
│ ├── distribution-map.md Multiagent orchestration (full-approach scale work)
│ ├── positioning.md Marketer messaging (if in play)
│ ├── launch-readiness.md Marketer claims gate (if in play)
│ ├── verification-report.md (ends with the Definition of Done gate)
│ ├── evidence/ red/green records + typed gate evidence
│ └── devlog.md Append-only running log
└── flow/
└── digest-<date>.md Periodic cross-issue digestgovernance/ lives at the project root, not under .compass/. The CLI reads
whichever is in force: the project's own if /compass:init copied one in, the
framework's shipped defaults otherwise.
Project lessons
A project keeps rules a person has had to repeat as lessons; the session
start shows the always ones after the contract. When the person states
one, run compass lesson propose "<their words>", quoting them,
and never compass lesson add. A proposal takes effect only when someone runscompass lesson accept. The CLI cannot tell whether the person or the model
typed a rule, so this instruction is what keeps the model on the proposing
side. A lesson is advice: a guardrail always wins.
Writing voice
Before you write:
- a devlog entry, a requirements review, or anything else this skill
produces - readskills/compass-runtime/writing-voice.md, the principle
and the tells that mark prose narrating the pipeline instead of
communicating a decision; - a repository-wide replacement - read
text-sweeps.md, what a text sweep
must not touch.
writing-voice-worked-example.md beside writing-voice.md carries the
before-and-after pairs from this project's own archive, for when the
principle alone does not settle a sentence.
When you are unsure
Re-read delivery-approach.md. It was written at assessment precisely so a
later session, or a different agent, can pick the issue up without re-deriving
the process. If it does not answer the question, the assessment under-sized
the work: say so and re-assess rather than improvise.