Project layout¶
.atipspec/
config.yaml name, language, policies
.gitignore ignores tmp/
contract.md the architecture contract; its ```rules block is machine-checked
overview.md what the product is and where things live; curated, with an index block
glossary.md the project's canonical words
approvals/contract.json the contract's recorded acceptance, written by `atipspec accept contract`
teams.json optional: refs, owners, repositories, integration branch, ticket links
adapter.json optional: the process adapter `atipspec run` calls
specs/
auth.md living spec of the auth capability: requirements and scenarios
orders.md
decisions/
DEC-001-stack.md choices with lasting consequences
initiatives/
orders/roadmap.md deliveries grouped over months, with their interfaces
deliveries/
password-reset/
brief.md explore phase output, optional
spec.md intent, scope decisions and the requirement IDs it lists; status draft or ready
baseline.json the capability's living spec when the delivery started, written by `new`
plan.md scope, approach, tasks and final verification
contracts.json contracts pinned from other repositories, written by `new` and `contract-pin`
sources/ documents `spec-bind` imported, as they were
approvals/ local-proposal.json, local-result.json (local-spec, local-plan for legacy), written by `atipspec accept`
progress.json the tasks recorded with `atipspec task-done`
evidence/ written by `atipspec verify`
FINAL-20260913T154145.218304Z-3f9a1c2e.json
logs/ full command output and copied JUnit reports, with hashes
review.md written by the reviewer
review-rounds.json reviews counted, started by `atipspec accept`, written by `review` and `run`
run.json the runner's checkpoint, written by `atipspec run`
deferred.md findings postponed with a reason
reports/ report exports; on deliver, acceptance.json, the receipt
archive/
checkout-v2/ delivered; same files, status delivered, with reports/acceptance.json
migrations/<digest>/ originals backed up by `atipspec migrate --apply`
pilots/<name>/ pilot protocols and observations
enterprise/ examples `atipspec enterprise-init` writes
framework/
rules.md the rules every phase command prints
workflows/ explore, spec, fix, plan, build, review, contract, curate
templates/ spec, plan, fix-spec, fix-plan, brief, deferred, review, rubric, capability, contract, overview, glossary, decision, roadmap
tmp/ review packets and JUnit reports (`.atipspec/tmp/junit.xml`); ignored by git
.claude/skills/atipspec*/SKILL.md per client: one skill per phase plus the umbrella
.claude/settings.json Claude Code: asks before `atipspec accept` and edits to CI workflows or its settings, denies edits to approval, evidence and review round records
What the model reads, and when¶
| Moment | Reads |
|---|---|
| Skill invoked | that phase's SKILL.md, a few lines |
| The phase command runs | what it prints: the phase's workflow, framework/rules.md and the output of atipspec context <slug> |
| Writing an artifact | its template under framework/templates/ |
It never browses specs/ or archive/ wholesale, and never reads a workflow
for a phase the CLI has not opened. That is what keeps the cost of a request
bounded.
What the CLI writes¶
| Command | Writes |
|---|---|
init, install |
config.yaml, skeleton documents, framework/, client skills, the Claude Code permission rules merged into .claude/settings.json |
new, decision, initiative |
new folders and files from templates, baseline.json; a roadmap line; with system set, contracts.json |
spec-bind |
the living spec, the IDs in spec.md, sources/ for an import |
accept |
approvals/local-*.json and status: ready in the spec, and for a guided proposal the start of review-rounds.json; for the contract, .atipspec/approvals/contract.json and status: accepted in the contract and the decisions it lists |
task-done |
progress.json |
verify |
evidence/*.json and evidence/logs/ |
review |
tmp/<slug>-review-packet.md and review-rounds.json |
run |
run.json, progress.json, review-rounds.json, the reviewer's review.md and what the adapter and verify write |
contract-pin |
contracts.json |
report --out |
the dossier, outside the repository, under tmp/ or in the delivery's reports/ |
deliver |
the living spec, the receipt reports/acceptance.json, the delivery's status, the move to archive/ |
migrate --apply |
the converted delivery and its living spec, the backups under migrations/ |
curate |
the index block of overview.md |
pilot |
pilots/<name>/ |
enterprise-init |
the examples under enterprise/, or --out |
approve, sync-approvals, attest |
signed approval and evidence records with their .sig files |
Everything else is written by the model or by a person.