Three copy-paste templates plus the execution-model rule. Pick the one that matches what you're writing.
| Template | When to use | Output file |
|---|---|---|
| Project Overview | One per project. System-level architecture. Changes rarely. | specs/<project>/OVERVIEW.md |
| Workstream Spec | Durable workstream context, invariants, backlog, active plan index. | workstreams/<scope>/SPEC.md |
| PR Plan | One PR-sized execution handoff. Self-contained pickup after session loss. | workstreams/<scope>/plans/<BACKLOG-ID>-<slug>.md |
Last updated: date Owner: [name/team] Status: [Draft | Active | Complete]
- [Business/product goal — why this exists]
- [Success metric — measurable outcome]
- [Key constraint — the non-negotiable]
- Architecture finalized
- [Milestone]
- [Milestone]
- Integration: [target]
[diagram]
- [Principle]. [Explanation.]
- [Principle]. [Explanation.]
- [Principle]. [Explanation.]
| Module | Location | Language | What It Does | Status | % Done | Action Needed |
|---|---|---|---|---|---|---|
| [Name] | path/ |
[lang] | [one sentence] | [state] | X% | [action or "None"] |
| Capability | Must be native? | Platform A | Platform B | Web Fallback |
|---|---|---|---|---|
| [thing] | YES / NO | KEEP / BUILD / DELETE | KEEP / BUILD / DELETE | [fallback or "None"] |
| Metric | Current | After | Saved |
|---|---|---|---|
| [metric] | [value] | [value] | [delta] |
Person 1 — [Scope] -> workstreams/<scope>/SPEC.md
|- [deliverable]
|- [deliverable]
'- [deliverable]
Person 2 — [Scope] -> workstreams/<scope>/SPEC.md
|- [deliverable]
'- [deliverable]
Input:
[Example: API call, SDK launch call, user action that kicks off the system]
Output:
[Example: callback result, UI state, observable outcome]
- Phase 1 (Now): [what's happening]
- Phase 2: [what comes next and what triggers it]
- Phase 3: [end state]
| Term | Definition |
|---|---|
| [term] | [definition] |
Last updated: date Owner: [name/team] Parent:
../../OVERVIEW.mdStatus: [Draft | Active | Complete]
- [What this workstream owns]
- [Why it exists]
- [High-level definition of done]
- [in scope]
- [in scope]
- [out of scope]
- [out of scope]
- [rule that must remain true]
- [security or contract boundary]
| Depends On | Type | Status | Notes |
|---|---|---|---|
| [scope/package] | Upstream / Downstream | [state] | [note] |
| Area | Owner | Notes |
|---|---|---|
path/or/module |
[team/person] | [why] |
| ID | Title | Status | Priority | Depends On | Plan | PR |
|---|---|---|---|---|---|---|
| [ID] | [title] | Ready | High | - | - | - |
Allowed statuses:
ReadyIn ProgressBlockedDeferredDone
| Plan | IDs | Status |
|---|---|---|
plans/<BACKLOG-ID>-<slug>.md |
[ID] | In Progress |
- Backlog reflects reality
- Active plan links are current
- Done items are marked done
- Cross-workstream dependencies updated
Last updated: date Status: [Draft | Active | Complete]
- Workstream: [scope]
- Backlog IDs: [ID]
- Owner: [name/team]
- Branch: [branch or TBD]
- PR: [url or TBD]
- [why now]
- [user/system impact]
- [important constraint]
- [deliverable]
- [deliverable]
- [not included]
- [not included]
pathpath
pathpath
- [must already be true]
- [upstream dependency]
- [critical constraint]
- [contract note]
- [edge case]
[command]- Code changes complete
- Validation passes
- Backlog row updated
- Plan status updated
- PR linked
- date: Scope changed because ...
- [Principle]. [Why.]
- [Principle]. [Why.]
Done when: [statement]
file/path.ts — Lines X-Y
// BEFORE
[exact current code]// AFTER
[exact target code]Input:
[concrete example]
Expected Output:
[concrete example]
Edge case — [description]:
Input: [edge case]
Output: [expected result]
Create: src/path/to/new-file.ts
Implements: [InterfaceName] from src/types/[file].ts
// SKELETON
[exports, function signatures, key types — enough to show the shape]Input:
[concrete example]
Expected Output:
[concrete example]
Error case — [description]:
Input: [error scenario]
Output: [expected error behavior]
| File | Change | Risk |
|---|---|---|
src/foo.ts |
[what changes] | High/Med/Low — [why] |
| File | Why |
|---|---|
src/bar.ts |
[out of scope / owned by another workstream / etc.] |
Goal: [One sentence.]
Steps:
- [Concrete step]
- [Concrete step]
- Validate: [specific command or check]
Input:
[concrete test: CLI command, function call, etc.]
Expected Output:
[what you should see]
| Test | Type | What it validates |
|---|---|---|
| [test name/description] | Unit / Integration / Build gate | [one sentence] |
Depends on: Chunk [ID]
Goal: [One sentence.]
Steps:
- [step]
- [step]
- Validate: [check]
Input:
[test]
Expected Output:
[result]
| Test | Type | What it validates |
|---|---|---|
| [test] | [type] | [validates] |
Chunk A (no deps)
|---> Chunk B (after A)
| '---> Chunk D (after B)
|---> Chunk C (after A)
'---> Chunk E (after A, optional)
| Chunk | Description | Size | Status |
|---|---|---|---|
| [ID] | [name] | S/M/L | Pending / In Progress / Done / Skipped |
# After every chunk (must pass):
[type-check command]
[test command]
# After all chunks:
[integration check command]| File | What to Look At |
|---|---|
path/to/file.ts |
[what's relevant] |
| Spec said | We did | Why |
|---|---|---|
| [original plan] | [actual implementation] | [reason] |
| File | Role |
|---|---|
src/thing.ts |
[what it does] |
- [One-liner that would help the next person]
| Item | Discovered during | Suggested spec |
|---|---|---|
| [thing] | Chunk [ID] | [new or existing spec] |