Sprint Scaffold
Apply the Filing Cabinet product spec_charter.md template + the Flowstate product .claude/agents/pr-review.md template to internal Aria sprints (not just customer-facing project tarballs). Closes the audit-trail loop: every sprint has a mission, scope, risks, acceptance criteria, and a review rubric for everything shipped under it.
This skill emerged from Sprint 020 (two_terminal_push, 2026-05-23) where T1 and T2 shipped 11 items in parallel with zero conflicts because the sprint folder enforced clean ownership boundaries up front.
When to use
- User says "open sprint NNN" / "start sprint for X" / "new sprint" / "scaffold a sprint" / "let's sprint on Y"
- You're about to start work that spans 3+ items + multiple sessions and should have one canonical home
- Multiple terminals or contributors need a file-lock contract (this skill ships HANDOFF_*.md templates)
Steps
./sprint_scaffold.sh NNN slug [--dest DIR] runs steps 2-5 in one shot; the steps below are what it does.
Pick the sprint number. Look at ./sprints/ (or your --dest) — find the highest existing NNN and add 1. Slug is lowercase-hyphenated.
ls ./sprints/ | sort -n | tail -3
Create the folder + subdirs:
SPRINT=021_<slug>
mkdir -p ./sprints/$SPRINT/{reference,sql,.claude/agents}
Write spec_charter.md (Filing Cabinet pattern). Use the template below — pre-fill what you know, leave the rest as TODO:
# Sprint NNN — <Title> · spec_charter v1
**Opened:** YYYY-MM-DD
**Closes:** YYYY-MM-DD (target)
**Method:** Filing Cabinet spec_charter pattern + Flowstate pr-review pattern
## 1. Mission
<1-2 sentences. What changes if this sprint succeeds?>
## 2. Stakeholders
| Role | Person | Responsibility |
|---|---|---|
| Owner | <owner> | Final call |
| T1 | Claude | <lane> |
| T2 | (if applicable) | <lane> |
| Informed | <teammate> | <when needed> |
## 3. Constraints
1. <calendar / doctrine / file-lock / restart / etc.>
## 4. Scope
### P0 (must ship)
| # | Item | Owner | Status |
### P1 (close if possible)
### P2 (stretch)
### Out of scope (defensibly deferable)
## 5. Risks
| Risk | Likelihood | Mitigation |
## 6. Open questions
## 7. v1 acceptance criteria
- [ ] <criterion>
## 8. Versioning
Per Filing Cabinet versioning protocol: copy to spec_charter_v2.md when scope changes. Never edit v1 in place.
## 9. Tools/skills used (reuse log)
| Tool/skill | Used for | New or existing |
## 10. New skill emerging (if any)
Write .claude/agents/pr-review.md (Flowstate pattern). Use this 5-dim rubric template:
# Sprint NNN PR-Review Rubric (Flowstate pattern, sprint-local)
Apply to every item shipped before marking done.
## The 5 dimensions
### 1. Correctness — does it do what the charter §4 said?
### 2. Security — auth gates? secrets? injection?
### 3. Test coverage — smoke trace saved?
### 4. Doctrine alignment — which feedback_* rules apply?
### 5. Follow-ups — what was deferred?
## Output format
Sprint NNN self-review —
1. Correctness: ✅ / ⚠️ / ❌ —
2. Security: ✅ / ⚠️ / ❌
3. Test coverage: ✅ / ⚠️ / ❌
4. Doctrine: ✅ / ⚠️ / ❌
5. Follow-ups: <ops_log ids, skill ideas>
Verdict: APPROVE / REQUEST CHANGES / RETHINK
Smoke command:
Drop a HANDOFF template (if multi-terminal):
touch ./sprints/$SPRINT/HANDOFF_T1_TO_T2.md
Pre-fill with the file-lock contract + route-prefix partition pattern from the Sprint 020 handoff.
Insert a parent row in your ops log (example against our v4_ops_log table):
INSERT INTO v4_ops_log (priority, status, category, area, title, detail, owner, purpose) VALUES
('P0','in_progress','product','<area>',
'Sprint NNN — <title>',
'Charter at ./sprints/NNN_slug/spec_charter.md',
'claude','sprint_NNN');
Subsequent items in this sprint tag purpose='sprint_NNN' for clean filtering.
Report. Print the absolute path to the new sprint folder + the next 1-3 items to populate.
Folder layout this skill creates
./sprints/NNN_slug/
├── spec_charter.md ← Filing Cabinet pattern
├── .claude/agents/pr-review.md ← Flowstate pattern
├── HANDOFF_T1_TO_T2.md ← Inter-terminal coordination (template)
├── reference/ ← Source docs that fed the sprint
└── sql/ ← Schema migrations this sprint introduces
Notes
- This skill was promoted from Sprint 020 (
two_terminal_push, 2026-05-23) where the pattern proved itself shipping 11 items in parallel between T1 and T2 with zero file collisions.
- The
spec_charter.md template here is the same one that ships at the root of every Filing Cabinet customer tarball, just retargeted at our internal sprint context. The Mission/Stakeholders/Constraints/Risks/Acceptance pattern works identically for both.
- The
pr-review.md template here matches the Flowstate scaffold pack — .claude/agents/pr-review.md at sprint root means Claude Code agents picked up later in the sprint will auto-honor the rubric.
- Charter versioning rule (never edit v1 in place; copy to v2 if scope changes) is load-bearing. Audit trail needs the WHY of pivots.
- Pair with your session-close routine — at sprint close, the per-item memories that piled up should each have a
## Sprint NNN self-review block already.
- Cross-link sprint memories with
[[other-slug]] for navigability.
1---2name: sprint-scaffold3description: Scaffold a new sprint folder with the Filing Cabinet spec_charter.md + Flowstate .claude/agents/pr-review.md + reference/sql/ subdirs. Use when starting a new sprint (e.g. "open sprint 021", "start a sprint for X", "new sprint folder"). Drops a working skeleton in ./sprints/NNN_slug/ with the load-bearing files pre-filled so every shipped item gets an audit-trail home. Validated over a two-terminal sprint that shipped 20+ items under this pattern.4---56# Sprint Scaffold78Apply the Filing Cabinet product `spec_charter.md` template + the Flowstate product `.claude/agents/pr-review.md` template to **internal Aria sprints** (not just customer-facing project tarballs). Closes the audit-trail loop: every sprint has a mission, scope, risks, acceptance criteria, and a review rubric for everything shipped under it.910This skill emerged from Sprint 020 (`two_terminal_push`, 2026-05-23) where T1 and T2 shipped 11 items in parallel with zero conflicts because the sprint folder enforced clean ownership boundaries up front.1112## When to use1314- User says "open sprint NNN" / "start sprint for X" / "new sprint" / "scaffold a sprint" / "let's sprint on Y"15- You're about to start work that spans 3+ items + multiple sessions and should have one canonical home16- Multiple terminals or contributors need a file-lock contract (this skill ships HANDOFF_*.md templates)1718## Steps1920`./sprint_scaffold.sh NNN slug [--dest DIR]` runs steps 2-5 in one shot; the steps below are what it does.21221. **Pick the sprint number.** Look at `./sprints/` (or your `--dest`) — find the highest existing NNN and add 1. Slug is lowercase-hyphenated.2324 ```sh25 ls ./sprints/ | sort -n | tail -326 ```27282. **Create the folder + subdirs:**2930 ```sh31 SPRINT=021_<slug>32 mkdir -p ./sprints/$SPRINT/{reference,sql,.claude/agents}33 ```34353. **Write spec_charter.md** (Filing Cabinet pattern). Use the template below — pre-fill what you know, leave the rest as `TODO`:3637 ```markdown38 # Sprint NNN — <Title> · spec_charter v13940 **Opened:** YYYY-MM-DD41 **Closes:** YYYY-MM-DD (target)42 **Method:** Filing Cabinet spec_charter pattern + Flowstate pr-review pattern4344 ## 1. Mission45 <1-2 sentences. What changes if this sprint succeeds?>4647 ## 2. Stakeholders48 | Role | Person | Responsibility |49 |---|---|---|50 | Owner | <owner> | Final call |51 | T1 | Claude | <lane> |52 | T2 | (if applicable) | <lane> |53 | Informed | <teammate> | <when needed> |5455 ## 3. Constraints56 1. <calendar / doctrine / file-lock / restart / etc.>5758 ## 4. Scope59 ### P0 (must ship)60 | # | Item | Owner | Status |61 ### P1 (close if possible)62 ### P2 (stretch)63 ### Out of scope (defensibly deferable)6465 ## 5. Risks66 | Risk | Likelihood | Mitigation |6768 ## 6. Open questions6970 ## 7. v1 acceptance criteria71 - [ ] <criterion>7273 ## 8. Versioning74 Per Filing Cabinet versioning protocol: copy to spec_charter_v2.md when scope changes. Never edit v1 in place.7576 ## 9. Tools/skills used (reuse log)77 | Tool/skill | Used for | New or existing |7879 ## 10. New skill emerging (if any)80 ```81824. **Write .claude/agents/pr-review.md** (Flowstate pattern). Use this 5-dim rubric template:8384 ```markdown85 # Sprint NNN PR-Review Rubric (Flowstate pattern, sprint-local)8687 Apply to every item shipped before marking done.8889 ## The 5 dimensions90 ### 1. Correctness — does it do what the charter §4 said?91 ### 2. Security — auth gates? secrets? injection?92 ### 3. Test coverage — smoke trace saved?93 ### 4. Doctrine alignment — which feedback_* rules apply?94 ### 5. Follow-ups — what was deferred?9596 ## Output format97 ```98 ## Sprint NNN self-review — <item slug>99 **1. Correctness:** ✅ / ⚠️ / ❌ — <one-line evidence>100 **2. Security:** ✅ / ⚠️ / ❌101 **3. Test coverage:** ✅ / ⚠️ / ❌102 **4. Doctrine:** ✅ / ⚠️ / ❌103 **5. Follow-ups:** <ops_log ids, skill ideas>104 **Verdict:** APPROVE / REQUEST CHANGES / RETHINK105 **Smoke command:** <copy-paste-able>106 ```107 ```1081095. **Drop a HANDOFF template** (if multi-terminal):110111 ```sh112 touch ./sprints/$SPRINT/HANDOFF_T1_TO_T2.md113 ```114115 Pre-fill with the file-lock contract + route-prefix partition pattern from the Sprint 020 handoff.1161176. **Insert a parent row in your ops log** (example against our `v4_ops_log` table):118119 ```sql120 INSERT INTO v4_ops_log (priority, status, category, area, title, detail, owner, purpose) VALUES121 ('P0','in_progress','product','<area>',122 'Sprint NNN — <title>',123 'Charter at ./sprints/NNN_slug/spec_charter.md',124 'claude','sprint_NNN');125 ```126127 Subsequent items in this sprint tag `purpose='sprint_NNN'` for clean filtering.1281297. **Report.** Print the absolute path to the new sprint folder + the next 1-3 items to populate.130131## Folder layout this skill creates132133```134./sprints/NNN_slug/135├── spec_charter.md ← Filing Cabinet pattern136├── .claude/agents/pr-review.md ← Flowstate pattern137├── HANDOFF_T1_TO_T2.md ← Inter-terminal coordination (template)138├── reference/ ← Source docs that fed the sprint139└── sql/ ← Schema migrations this sprint introduces140```141142## Notes143144- This skill was promoted from Sprint 020 (`two_terminal_push`, 2026-05-23) where the pattern proved itself shipping 11 items in parallel between T1 and T2 with zero file collisions.145- The `spec_charter.md` template here is the same one that ships at the root of every Filing Cabinet customer tarball, just retargeted at our internal sprint context. The Mission/Stakeholders/Constraints/Risks/Acceptance pattern works identically for both.146- The `pr-review.md` template here matches the Flowstate scaffold pack — `.claude/agents/pr-review.md` at sprint root means Claude Code agents picked up later in the sprint will auto-honor the rubric.147- Charter versioning rule (never edit v1 in place; copy to v2 if scope changes) is load-bearing. Audit trail needs the WHY of pivots.148- Pair with your session-close routine — at sprint close, the per-item memories that piled up should each have a `## Sprint NNN self-review` block already.149- Cross-link sprint memories with `[[other-slug]]` for navigability.