Repository navigation
Spec Store Files
xsyetopz edited this page Oct 13, 2026
·
1 revision
This page lists the files of the spec store, the keys of their front matter, the requirement IDs, and the events.
It is for a user who edits the files of a change, and for a contributor who edits the spec slice.
Read Spec Store first.
All paths are under .dotclaude/spec/.
| File | kind |
Front matter keys | Sizes |
|---|---|---|---|
changes/<id>/change.md |
change |
schema, kind, id, size, status, verify
|
all |
changes/<id>/requirements/<capability>.md |
requirements |
schema, kind, capability
|
medium, large
|
changes/<id>/design.md |
design |
schema, kind, id
|
large |
changes/<id>/packages/<package>.md |
package |
schema, kind, id, title, wave, deps, owns, satisfies, verify, agent, status
|
all |
changes/<id>/events.jsonl |
none | the header {"schema":2}
|
all |
specs/<capability>.md |
spec |
schema, kind, capability
|
the main specs |
changes/archive/<date>-<id>/ |
the same as above | the same as above | archived changes |
- Each Markdown file starts with front matter that has
schema: dotclaude-spec/2andkind. - A
trivialchange holds its requirements in a## Requirementssection ofchange.md. - The
waveandtitlekeys of a package give the order and the name of the package. No separate list of packages exists. - The
statuskey is a copy of the last state inevents.jsonl. Only the CLI writes it, so a reader sees the state in the file.dotclaude-spec validatecompares the key with the last event. - A change that is
archivedmoves tochanges/archive/<date>-<id>/.<date>is the UTC date of the run.
| Key | Meaning |
|---|---|
id |
The name of the package, such as P1. |
title |
A short name. |
wave |
The number of the wave. A package runs after the packages of the waves before it. |
deps |
The ids of the packages that must be done first. |
owns |
The paths that the package may change. Two open packages of one wave must not overlap. |
satisfies |
The requirement IDs that the package does. |
verify |
The command that must exit with 0 at the head of the branch. |
agent |
The agent that does the package. |
status |
The state of the package. |
- A requirement heading is
### REQ-<n>: <name>.<n>is a whole number that is unique in the store. -
dotclaude-spec specifygives the next free number. It is one more than the largest number inspecs/and in each open change. - An ID does not change, and a removed ID is not used again.
- A package lists the IDs that it does in
satisfies. - An open question is the marker
[NEEDS CLARIFICATION: <question>]in any file of the change. While a marker is open,specifyandimplementrefuse to move the state.
events.jsonl holds the history of each state.
The first line is the header {"schema":2}.
Each line after it is one state change:
{"at":"<time>","package":"P1","state":"verified","sha":"<sha>","verify":{"command":"just check","exit":0}}-
packageis absent on the event of a change. - The optional keys are
sha,verify,verdict,findings,decision, andnote. -
verifyholds the command and the exit status.decisionisfix-codeorrevise-spec. - A failed
verifyadds an event with its exit status, and the package staysdoing. - The reader stops on a header that is not
{"schema":2}. -
dotclaude-spec logprints the events.
- Spec Store States: the states and the gates that these events record.
- Start
- How dotclaude Works
- Add-On Plugins
- How Claude Code Works
- Reference
- Rationale
- Evidence
- Development
- Archive