@houseofwolvesllc/claude-scrum-skill 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,25 +11,32 @@ Fully autonomous project lifecycle driver. Plans sprints, executes stories via p
11
11
 
12
12
  ## Before You Start
13
13
 
14
- 1. Read `../project-scaffold/references/CONVENTIONS.md` for all project management standards. Follow these conventions exactly.
15
- 2. Read the project's `CLAUDE.md` (if it exists) for project-specific rules. **All subagents you spawn must also read and follow `CLAUDE.md`** include this instruction explicitly in every subagent prompt.
16
- 3. **Terminology:** Always refer to milestones as **"epics"** in all user-facing text, summaries, and conversational output. The word "milestone" should only appear in GitHub API commands and code — never in communication with the user.
17
- 4. Confirm the `gh` CLI is authenticated by running `gh auth status`.
18
- 5. Identify the target repository. If the user doesn't specify, detect from the current git remote or ask.
14
+ 1. Read `../shared/references/CONVENTIONS.md` for all project management standards. Follow these conventions exactly.
15
+ 2. Read `../shared/config.json` to determine the scaffolding mode (`scaffolding` key: `"local"`, `"github"`, `"jira"`, or `"trello"`, default: `"local"`). If `"local"`, also read the `paths.backlog` value. Read `../shared/references/PROVIDERS.md` for provider-specific API commands when using a remote provider.
16
+ 3. Read the project's `CLAUDE.md` (if it exists) for project-specific rules. **All subagents you spawn must also read and follow `CLAUDE.md`** include this instruction explicitly in every subagent prompt.
17
+ 4. Read `../shared/references/PERSONAS.md` for role preambles. When spawning
18
+ subagents, select the persona matching each story's `persona:*` label (GitHub mode)
19
+ or `persona` frontmatter field (local mode). If no persona exists, use `impl` (the default).
20
+ 5. **Terminology:** Always refer to milestones as **"epics"** in all user-facing text, summaries, and conversational output. The word "milestone" should only appear in GitHub API commands and code — never in communication with the user.
21
+ 6. **If `scaffolding: "github"`:** Confirm the `gh` CLI is authenticated by running `gh auth status`. Identify the target repository. If the user doesn't specify, detect from the current git remote or ask.
22
+ 7. **If `scaffolding: "jira"`:** Verify `JIRA_SITE`, `JIRA_EMAIL`, and `JIRA_API_TOKEN` env vars are set. Read `jira.project_key` from config.json.
23
+ 8. **If `scaffolding: "trello"`:** Verify `TRELLO_API_KEY` and `TRELLO_TOKEN` env vars are set. Read `trello.board_id` from config.json.
24
+ 9. **If `scaffolding: "local"`:** Skip authentication. Stories are tracked in local backlog files. Git operations (branches, commits, merges) still apply.
19
25
 
20
26
  ### Standing Authorizations
21
27
 
22
28
  The following actions are pre-authorized and do NOT require user confirmation during orchestration:
23
29
 
24
- - **Merge release PRs to `development`** — after the release PR is created and CI passes
30
+ - **Merge release branches to `development`** — via PR (GitHub) or direct merge (local), after CI passes
25
31
  - **Delete merged story and release branches** — standard cleanup after merge
26
32
  - **Create and switch between feature/release branches** — normal git workflow
33
+ - **Update story file frontmatter** (local mode only) — status, sprint, persona fields
27
34
 
28
35
  The following actions are NEVER authorized:
29
36
 
30
37
  - **Merge anything to `main`** — always requires explicit human review
31
38
  - **Force push or destructive git operations** — never permitted
32
- - **Close or delete issues without completing them** — incomplete work rolls over
39
+ - **Close or delete issues/stories without completing them** — incomplete work rolls over
33
40
 
34
41
  ---
35
42
 
@@ -37,23 +44,23 @@ The following actions are NEVER authorized:
37
44
 
38
45
  `$ARGUMENTS` can be:
39
46
 
40
- 1. **A PRD file path** (e.g., `path/to/prd.md`) — scaffold the PRD first via `/project-scaffold`, then orchestrate **only the epics and stories created from that PRD**. The repo is detected from the current git remote (or ask the user).
41
- 2. **A repo identifier** (e.g., `owner/repo`) — orchestrate **all open epics and stories** already on the project board. No scaffolding step.
42
- 3. **A PRD file path + repo identifier** (e.g., `path/to/prd.md owner/repo`) — scaffold the PRD into the specified repo, then orchestrate only those epics/stories.
43
- 4. **Nothing** — detect the repo from the current git remote and orchestrate all open epics/stories.
47
+ 1. **A PRD file path** (e.g., `path/to/prd.md`) — scaffold the PRD first via `/project-scaffold`, then orchestrate **only the epics and stories created from that PRD**. In GitHub mode the repo is detected from the current git remote (or ask the user).
48
+ 2. **A repo identifier** (e.g., `owner/repo`, GitHub mode only) — orchestrate **all open epics and stories** already on the project board. No scaffolding step.
49
+ 3. **A PRD file path + repo identifier** (e.g., `path/to/prd.md owner/repo`, GitHub mode only) — scaffold the PRD into the specified repo, then orchestrate only those epics/stories.
50
+ 4. **Nothing** — GitHub mode: detect the repo from the current git remote and orchestrate all open epics/stories. Local mode: orchestrate all open epics/stories in the configured backlog directory.
44
51
 
45
- **How to distinguish:** If an argument is a path to an existing file, treat it as a PRD. Otherwise treat it as a repo identifier.
52
+ **How to distinguish:** If an argument is a path to an existing file, treat it as a PRD. Otherwise treat it as a repo identifier (GitHub mode only).
46
53
 
47
54
  ### Scope Rules
48
55
 
49
- - **Phase 1 (Epic Completion Loop):** When a PRD is provided, only execute epics/stories that were created from that PRD. Record the milestone numbers and issue numbers created during scaffolding and limit the sprint loop to those. When no PRD is provided, execute all open epics/stories on the project board.
56
+ - **Phase 1 (Epic Completion Loop):** When a PRD is provided, only execute epics/stories that were created from that PRD. In GitHub mode, record the milestone numbers and issue numbers. In local mode, record the epic directory names and story file paths. When no PRD is provided, execute all open epics/stories.
50
57
  - **Phase 2 (Emulation Hardening Loop):** Always applies to the **entire codebase** regardless of whether a PRD was provided. Emulation validates the whole project, not just the new work.
51
58
 
52
59
  ---
53
60
 
54
61
  ## State Management
55
62
 
56
- Orchestration state is persisted to `.claude/orchestration-state.md` so progress survives context compaction, usage caps, and session restarts. This file is human-readable markdown.
63
+ Orchestration state is persisted to `.claude-scrum-skill/orchestration-state.md` so progress survives context compaction, usage caps, and session restarts. This file is human-readable markdown.
57
64
 
58
65
  ### State File Structure
59
66
 
@@ -84,11 +91,13 @@ Orchestration state is persisted to `.claude/orchestration-state.md` so progress
84
91
  | Dashboard | pending | 8 | 0 | 8 |
85
92
 
86
93
  ## Current Sprint Stories
87
- | # | Title | Executor | Status | Subagent |
88
- |---|-------|----------|--------|----------|
89
- | 12 | Auth endpoint | claude | done | — |
90
- | 13 | Login UI | claude | in-progress | agent-3 |
91
- | 14 | API keys | human | skipped | — |
94
+ | # | Title | Executor | Persona | Status | Subagent |
95
+ |---|-------|----------|---------|--------|----------|
96
+ | 12 | Auth endpoint | claude | impl | done | — |
97
+ | 13 | Login UI | claude | impl | in-progress | agent-3 |
98
+ | 14 | API keys | human | — | skipped | — |
99
+ | 15 | CI pipeline | claude | ops | done | — |
100
+ | 16 | Auth ADR | claude | research | done | — |
92
101
 
93
102
  ## Dependency Map
94
103
  - #15 blocked-by #12 → unblocked (completed)
@@ -103,7 +112,7 @@ Orchestration state is persisted to `.claude/orchestration-state.md` so progress
103
112
 
104
113
  ### State Operations
105
114
 
106
- **On startup**, check for an existing `.claude/orchestration-state.md`:
115
+ **On startup**, check for an existing `.claude-scrum-skill/orchestration-state.md`:
107
116
  - If found and `Status: running` → resume from the recorded position
108
117
  - If found and `Status: paused` → ask the user whether to resume or restart
109
118
  - If found and `Status: completed` → ask the user whether to start a fresh run
@@ -130,10 +139,15 @@ Drive all open epics to completion through iterative sprint cycles.
130
139
  /project-scaffold <prd-path>
131
140
  ```
132
141
 
133
- After scaffolding completes, capture the milestone numbers and issue numbers that were created. These define the **orchestration scope** — Phase 1 will only plan and execute sprints for these specific epics and stories. Record them in the state file under `Scoped Milestones` and `Scoped Issues`.
142
+ After scaffolding completes:
143
+ - **GitHub mode:** Capture the milestone numbers and issue numbers that were created. Record them in the state file under `Scoped Milestones` and `Scoped Issues`.
144
+ - **Local mode:** Capture the epic directory names and story file paths created. Record them in the state file under `Scoped Epics` and `Scoped Stories`.
145
+
146
+ These define the **orchestration scope** — Phase 1 will only plan and execute sprints for these specific epics and stories.
134
147
 
135
148
  **If no PRD was provided** — detect and assess the existing project state:
136
149
 
150
+ **GitHub mode:**
137
151
  ```bash
138
152
  # Get open epics (milestones)
139
153
  gh api repos/<owner/repo>/milestones --jq '.[] | select(.state=="open") | {number, title, open_issues, closed_issues}'
@@ -145,6 +159,13 @@ gh issue list --repo <owner/repo> --state open --label "type:story" --json numbe
145
159
  # Check for any in-progress work
146
160
  ```
147
161
 
162
+ **Local mode:**
163
+ ```bash
164
+ # Read all epic directories with open status
165
+ # For each <backlog-path>/<epic-slug>/_epic.md, check frontmatter status
166
+ # Read all story files, filter by status != "done"
167
+ ```
168
+
148
169
  All open epics and stories are in scope for Phase 1.
149
170
 
150
171
  **In both cases**, present a brief overview to the user:
@@ -169,13 +190,12 @@ Initialize the state file and proceed.
169
190
 
170
191
  ### Step 2: Sprint Planning
171
192
 
172
- Invoke the `/sprint-plan` skill for the current epic:
193
+ Invoke the `/sprint-plan` skill:
173
194
 
174
- ```
175
- /sprint-plan <owner/repo>
176
- ```
195
+ - **GitHub mode:** `/sprint-plan <owner/repo>`
196
+ - **Local mode:** `/sprint-plan` (reads from configured backlog path)
177
197
 
178
- **If PRD-scoped:** Ensure the sprint plan only pulls from the scoped issues (recorded in the state file). If `/sprint-plan` proposes stories outside the scope, exclude them — they belong to other work and should not be mixed into this orchestration run.
198
+ **If PRD-scoped:** Ensure the sprint plan only pulls from the scoped stories (recorded in the state file). If `/sprint-plan` proposes stories outside the scope, exclude them — they belong to other work and should not be mixed into this orchestration run.
179
199
 
180
200
  Since this is autonomous mode, accept the default sprint plan without waiting for user confirmation — the skill's proposed sprint based on priority ordering and velocity target is the plan.
181
201
 
@@ -189,21 +209,47 @@ Execute all `executor:claude` stories in the current sprint. Skip `executor:huma
189
209
 
190
210
  For stories with no unresolved dependencies, spawn parallel Task subagents (using the `Task` tool with `subagent_type: "Bash"` or `subagent_type: "general-purpose"` as appropriate). Each subagent receives:
191
211
 
212
+ **Persona resolution:** Before spawning each subagent, resolve its persona:
213
+
214
+ 1. **GitHub mode:** Check the story's labels for a `persona:*` label (e.g., `persona:ops`, `persona:research`).
215
+ **Local mode:** Read the `persona` field from the story file's frontmatter.
216
+ 2. If found, load the matching preamble from `../shared/references/PERSONAS.md`.
217
+ 3. If no persona exists, use the `impl` preamble.
218
+ 4. If the persona references a name not defined in `PERSONAS.md`, fall back
219
+ to `impl` and log a warning.
220
+
221
+ **Subagent prompt structure:**
222
+
192
223
  ```
224
+ <persona preamble from PERSONAS.md>
225
+
226
+ ---
227
+
193
228
  You are executing story #<number> for repo <owner/repo>.
194
229
 
195
- **IMPORTANT:** First read the project's CLAUDE.md file if it exists, and follow all instructions in it.
230
+ **IMPORTANT:** First read the project's CLAUDE.md file if it exists, and
231
+ follow all instructions in it. CLAUDE.md is authoritative for stack,
232
+ patterns, and style — it overrides any general guidance in this preamble.
196
233
 
197
234
  **Story:** <title>
198
- **Acceptance criteria:** <from issue body>
199
- **Branch strategy:** Create branch `story/<number>-<slug>` from `release/<epic-slug>`, implement, commit, push, and open a PR targeting `release/<epic-slug>`.
235
+ **Acceptance criteria:** <from issue body or story file>
236
+ **Branch strategy:** Create branch `story/<number>-<slug>` from
237
+ `release/<epic-slug>`, implement, commit, push, and open a PR targeting
238
+ `release/<epic-slug>`.
200
239
 
201
240
  After implementation:
241
+
242
+ GitHub mode:
202
243
  1. Open a PR with a clear description of changes
203
244
  2. Ensure CI passes
204
245
  3. The PR should target the release branch, NOT development or main
246
+ 4. Do NOT merge the PR — just open it and report back.
205
247
 
206
- Do NOT merge the PR — just open it and report back.
248
+ Local mode:
249
+ 1. Commit all changes to the story branch
250
+ 2. Merge the story branch into release/<epic-slug>
251
+ 3. Push the release branch
252
+ 4. Report back what was implemented.
207
253
  ```
208
254
 
209
255
  **Execution rules:**
@@ -212,11 +258,26 @@ Do NOT merge the PR — just open it and report back.
212
258
  2. **Concurrency limit:** Run up to 3 subagents in parallel to avoid rate limiting.
213
259
  3. **Progress tracking:** As each subagent completes, update the state file and check if any blocked stories are now unblocked. Spawn newly unblocked stories immediately.
214
260
  4. **Failure handling:** If a subagent fails, retry once with additional context about the failure. If it fails again, mark the story as blocked with a note and continue with remaining stories.
215
- 5. **PR merging:** After a story PR is opened and CI passes, merge it to the release branch:
216
- ```bash
217
- gh pr merge <pr-number> --repo <owner/repo> --squash --auto
218
- ```
261
+ 5. **Story completion:**
262
+ - **GitHub mode:** After a story PR is opened and CI passes, merge it to the release branch:
263
+ ```bash
264
+ gh pr merge <pr-number> --repo <owner/repo> --squash --auto
265
+ ```
266
+ - **Local mode:** The subagent merges the story branch directly into the release branch. After completion, update the story file's frontmatter to `status: done`.
219
267
  6. **Skip human/cowork stories:** Log them as skipped in the state file. They roll over naturally during sprint release.
268
+ 7. **Persona routing:** When resolving personas:
269
+ - **GitHub mode:**
270
+ ```bash
271
+ persona=$(gh issue view <number> --repo <owner/repo> --json labels \
272
+ --jq '[.labels[].name | select(startswith("persona:"))] | first // empty' \
273
+ | sed 's/persona://')
274
+ persona=${persona:-impl}
275
+ ```
276
+ - **Local mode:** Read the `persona` field from the story file's frontmatter. Default to `impl` if not set.
277
+
278
+ Load the corresponding preamble section from `../shared/references/PERSONAS.md`
279
+ and prepend it to the subagent prompt. Log the persona assignment in the
280
+ state file.
220
281
 
221
282
  **Progress updates** — Print a concise progress line every 2-3 story completions:
222
283
 
@@ -228,24 +289,111 @@ Sprint 2: 5/8 stories done (13/19 pts) — #21 auth middleware ✓, #22 rate lim
228
289
 
229
290
  Once all `executor:claude` stories in the sprint are complete (or retried and marked blocked), invoke the sprint release skill:
230
291
 
292
+ - **GitHub mode:** `/sprint-release <owner/repo>`
293
+ - **Local mode:** `/sprint-release` (reads from configured backlog path)
294
+
295
+ This closes the sprint, handles rolled-over stories, and merges the release branch to `development` (local mode: direct merge; GitHub mode: opens a release PR).
296
+
297
+ ### Step 5: Review and Merge to Development
298
+
299
+ After `/sprint-release` completes, run the automated review gate before
300
+ finalizing.
301
+
302
+ **Step 5a: Automated Review**
303
+
304
+ Spawn a review subagent using the `review` persona from
305
+ `../shared/references/PERSONAS.md`:
306
+
307
+ **GitHub mode:**
308
+ ```
309
+ Task({
310
+ subagent_type: "general-purpose",
311
+ prompt: "<review preamble from PERSONAS.md>
312
+
313
+ Review PR #<pr-number> in <owner/repo>.
314
+
315
+ The PR merges release/<epic-slug> into development and contains all
316
+ stories from Sprint <N>:
317
+ <list story numbers, titles, and their personas>
318
+
319
+ Read the full diff. Post review comments anchored to specific files/lines.
320
+ End with a summary comment: finding counts by severity and a
321
+ recommendation of merge, merge-with-followup-issues, or block.
322
+
323
+ IMPORTANT: Read the project's CLAUDE.md first — review against the
324
+ project's actual conventions, not generic standards."
325
+ })
231
326
  ```
232
- /sprint-release <owner/repo>
327
+
328
+ **Local mode:**
233
329
  ```
330
+ Task({
331
+ subagent_type: "general-purpose",
332
+ prompt: "<review preamble from PERSONAS.md>
234
333
 
235
- This closes the sprint, handles rolled-over stories, and opens the release PR to `development`.
334
+ Review the sprint release merge on the development branch.
236
335
 
237
- ### Step 5: Merge Release PR to Development
336
+ Run: git diff <pre-merge-sha>..HEAD on the development branch.
238
337
 
239
- After `/sprint-release` creates the release PR, merge it to `development` (standing authorization — no user confirmation needed):
338
+ This merge contains all stories from Sprint <N>:
339
+ <list story file paths, titles, and their personas>
240
340
 
241
- ```bash
242
- # Wait for CI to pass on the release PR
243
- gh pr checks <pr-number> --repo <owner/repo> --watch
341
+ Read the full diff. Report findings with specific file paths and line
342
+ numbers. End with a summary: finding counts by severity and a
343
+ recommendation of accept, accept-with-followups, or revert.
344
+
345
+ IMPORTANT: Read the project's CLAUDE.md first — review against the
346
+ project's actual conventions, not generic standards."
347
+ })
348
+ ```
244
349
 
245
- # Merge the release PR to development
350
+ **Step 5b: Act on Review Findings**
351
+
352
+ - **If recommendation is `block`/`revert`** (any critical findings):
353
+ Pause orchestration. Present the critical findings to the user and ask
354
+ how to proceed. Update state file with `Status: paused`.
355
+ In local mode, the merge already landed — if the user chooses to revert,
356
+ run `git revert <merge-commit>` on development.
357
+
358
+ - **If recommendation is `merge-with-followup-issues`/`accept-with-followups`** (warnings only):
359
+ Create follow-up items for each warning finding:
360
+ - **GitHub mode:**
361
+ ```bash
362
+ gh issue create --repo <owner/repo> --title "Follow-up: <finding summary>" \
363
+ --body "<finding detail from review>" \
364
+ --label "type:chore" --label "source:review" --label "executor:claude"
365
+ ```
366
+ - **Local mode:** Create a story file in the appropriate epic directory:
367
+ ```markdown
368
+ <!-- <backlog-path>/<epic-slug>/NNN-followup-<slug>.md -->
369
+ ---
370
+ title: "Follow-up: <finding summary>"
371
+ status: backlog
372
+ executor: claude
373
+ priority: P2-medium
374
+ points: 2
375
+ labels: [type:chore, source:review]
376
+ persona: impl
377
+ ---
378
+ <finding detail from review>
379
+ ```
380
+ Then proceed.
381
+
382
+ - **If recommendation is `merge`/`accept`** (clean or info-only):
383
+ Proceed.
384
+
385
+ **Step 5c: Merge (GitHub mode only)**
386
+
387
+ ```bash
246
388
  gh pr merge <pr-number> --repo <owner/repo> --squash
247
389
  ```
248
390
 
391
+ In local mode, `/sprint-release` already merged the release branch to
392
+ development directly — no additional merge step needed.
393
+
394
+ **Skip review:** If the environment variable `ORCHESTRATE_SKIP_REVIEW=1` is
395
+ set, skip Step 5a/5b entirely (original behavior).
396
+
249
397
  If merge conflicts exist:
250
398
  1. Attempt automatic resolution by rebasing the release branch onto `development`
251
399
  2. If auto-resolution fails, **pause orchestration** and escalate to the user:
@@ -281,22 +429,32 @@ Never delete `main` or `development`.
281
429
 
282
430
  After each sprint cycle, check if the current epic is complete:
283
431
 
432
+ **GitHub mode:**
284
433
  ```bash
285
434
  # Check remaining open issues for this epic
286
435
  gh api repos/<owner/repo>/milestones/<milestone-number> --jq '{open_issues, closed_issues}'
287
436
  ```
288
437
 
438
+ **Local mode:**
439
+ ```bash
440
+ # Count story statuses in the epic directory
441
+ # Read all story files in <backlog-path>/<epic-slug>/, check frontmatter status
442
+ ```
443
+
289
444
  **If open issues remain** (excluding `executor:human`/`executor:cowork` stories that were skipped):
290
445
  - Check if remaining stories are all human/cowork → if yes, the epic's claude-executable work is done, move to next epic
291
446
  - Otherwise → loop back to Step 2 for another sprint
292
447
 
293
- **If all issues are closed:**
294
- ```bash
295
- # Close the epic
296
- gh api repos/<owner/repo>/milestones/<milestone-number> -X PATCH -f state="closed"
297
- ```
448
+ **If all stories are complete:**
298
449
 
299
- **If more in-scope epics remain** → move to the next epic (by priority) and loop back to Step 2. When PRD-scoped, only consider epics listed in `Scoped Milestones`.
450
+ - **GitHub mode:**
451
+ ```bash
452
+ # Close the epic
453
+ gh api repos/<owner/repo>/milestones/<milestone-number> -X PATCH -f state="closed"
454
+ ```
455
+ - **Local mode:** Update `_epic.md` frontmatter to `status: closed`.
456
+
457
+ **If more in-scope epics remain** → move to the next epic (by priority) and loop back to Step 2. When PRD-scoped, only consider epics listed in the state file's scoped epics.
300
458
 
301
459
  **If all in-scope epics are complete** → transition to Phase 2.
302
460
 
@@ -327,11 +485,11 @@ Invoke the project emulation skill:
327
485
  /project-emulate
328
486
  ```
329
487
 
330
- This produces the full emulation report in `.claude/reports/emulation-report/`, including `ISSUES.md` with categorized findings.
488
+ This produces the full emulation report in `.claude-scrum-skill/reports/emulation-report/`, including `ISSUES.md` with categorized findings.
331
489
 
332
490
  ### Step 9: Parse Findings
333
491
 
334
- Read and parse `.claude/reports/emulation-report/ISSUES.md`. Extract findings by severity:
492
+ Read and parse `.claude-scrum-skill/reports/emulation-report/ISSUES.md`. Extract findings by severity:
335
493
 
336
494
  - **Critical** — must fix (blocks production readiness)
337
495
  - **Warning** — should fix (degrades quality or reliability)
@@ -353,7 +511,7 @@ Generating hardening PRD for 10 actionable findings.
353
511
 
354
512
  ### Step 10: Generate Hardening PRD
355
513
 
356
- Create a PRD document at `.claude/hardening-prd-run-<N>.md` from the emulation findings. This PRD becomes the input for scaffolding a hardening epic.
514
+ Create a PRD document at `.claude-scrum-skill/hardening-prd-run-<N>.md` from the emulation findings. This PRD becomes the input for scaffolding a hardening epic.
357
515
 
358
516
  Structure the PRD as:
359
517
 
@@ -388,7 +546,7 @@ Only include critical and warning findings. Info-level findings are logged but n
388
546
  Invoke project scaffold with the hardening PRD to create a single "Hardening (Run N)" epic:
389
547
 
390
548
  ```
391
- /project-scaffold .claude/hardening-prd-run-<N>.md
549
+ /project-scaffold .claude-scrum-skill/hardening-prd-run-<N>.md
392
550
  ```
393
551
 
394
552
  This creates the milestone, issues, labels, and branches for the hardening work.
@@ -445,7 +603,7 @@ This runs across the **entire codebase** and automatically fixes:
445
603
  - Dead and duplicated code (unused exports, files, dependencies, commented-out code)
446
604
  - Failing tests and coverage gaps (targets 50% minimum across all metrics)
447
605
 
448
- After cleanup completes, read the report at `.claude/reports/cleanup-report/SUMMARY.md`:
606
+ After cleanup completes, read the report at `.claude-scrum-skill/reports/cleanup-report/SUMMARY.md`:
449
607
 
450
608
  - **If all phases PASS** → proceed to Step 15 (Completion Summary)
451
609
  - **If any phase FAIL** → review the report, attempt a second cleanup pass. If issues persist after two passes, log remaining issues and proceed to Step 15 with a note
@@ -457,7 +615,7 @@ Print a phase transition summary:
457
615
 
458
616
  **Build:** ✅ zero errors, zero warnings
459
617
  **Lint:** ✅ zero violations
460
- **HATEOAS:** ✅ compliant (or SKIP if not an API project)
618
+ **Project Principles:** ✅ compliant (or SKIP if no principles in CLAUDE.md)
461
619
  **Dead code:** ✅ none detected
462
620
  **Tests:** ✅ all passing, <pct>% coverage
463
621
 
@@ -486,10 +644,10 @@ Print a comprehensive summary of the entire orchestration run:
486
644
  ### Phase 3 — Project Cleanup
487
645
  - **Build:** ✅ clean / ⚠️ <N> remaining issues
488
646
  - **Lint:** ✅ clean / ⚠️ <N> remaining issues
489
- - **HATEOAS:** ✅ compliant / ⚠️ <N> violations / ⏭️ skipped
647
+ - **Project Principles:** ✅ compliant / ⚠️ <N> violations / ⏭️ skipped (no principles in CLAUDE.md)
490
648
  - **Dead code:** ✅ none / ⚠️ <N> items remaining
491
649
  - **Tests:** ✅ passing (<pct>% coverage) / ⚠️ <N> failing, <pct>% coverage
492
- - **Full report:** .claude/reports/cleanup-report/SUMMARY.md
650
+ - **Full report:** .claude-scrum-skill/reports/cleanup-report/SUMMARY.md
493
651
 
494
652
  ### Timeline
495
653
  - Started: <timestamp>
@@ -504,6 +662,45 @@ Print a comprehensive summary of the entire orchestration run:
504
662
 
505
663
  Update the state file with `Status: completed`.
506
664
 
665
+ ### Step 16: ADR Update
666
+
667
+ Review the work completed during this orchestration run and determine if any
668
+ decisions merit an Architecture Decision Record.
669
+
670
+ Read the ADR output path from `../shared/config.json` (key: `paths.adr`,
671
+ default: `.claude-scrum-skill/adr`).
672
+
673
+ 1. Read all existing ADRs in the configured ADR directory to understand what's
674
+ already documented and the numbering/format convention in use.
675
+ 2. Review the epics completed, hardening fixes applied, and any significant
676
+ technical choices made during orchestration (e.g., new libraries adopted,
677
+ patterns introduced, infrastructure changes, security model decisions).
678
+ 3. For each decision that is **non-obvious, hard to reverse, or would
679
+ surprise a future contributor**, create a new ADR following the existing
680
+ format and numbering sequence.
681
+ 4. Skip decisions that are already covered by an existing ADR or that are
682
+ trivial/self-evident from the code.
683
+
684
+ Print a summary:
685
+
686
+ ```
687
+ ### ADRs
688
+ - **Existing:** <N> ADRs in .claude-scrum-skill/adr/
689
+ - **Created:** <N> new ADRs
690
+ - ADR-<NNN>: <title>
691
+ - ADR-<NNN>: <title>
692
+ - **Skipped:** No new decisions warranting ADRs (if none created)
693
+ ```
694
+
695
+ ### Step 17: Clean Up State File
696
+
697
+ Delete `.claude-scrum-skill/orchestration-state.md` so the next orchestration
698
+ run starts with a clean slate:
699
+
700
+ ```bash
701
+ rm -f .claude-scrum-skill/orchestration-state.md
702
+ ```
703
+
507
704
  ---
508
705
 
509
706
  ## Communication Pattern
@@ -517,13 +714,15 @@ Keep the user informed without being noisy:
517
714
  | Every 2-3 stories | Progress line with counts and latest completions |
518
715
  | Story failure | Immediate single-line alert with story number and error |
519
716
  | Sprint released | Sprint scorecard — 3-4 lines |
717
+ | Review complete | Recommendation + finding counts — 2 lines |
520
718
  | Merge to development | Single confirmation line |
521
719
  | Epic completed | Epic summary — 3-4 lines |
522
720
  | Phase transition | Full phase summary |
523
721
  | Hardening run start | Run number and finding counts |
524
722
  | Cleanup started | Single line: "Running project cleanup..." |
525
723
  | Cleanup complete | Phase 3 summary — 5-6 lines with pass/fail per dimension |
526
- | Orchestration complete | Full completion summary (Step 15) |
724
+ | ADRs updated | Count of new ADRs + titles — 2-3 lines |
725
+ | Orchestration complete | Full completion summary (Step 17) |
527
726
  | Error/pause | Immediate alert with context and options |
528
727
 
529
728
  ---
@@ -541,7 +740,7 @@ Keep the user informed without being noisy:
541
740
  - Update state file with conflict details for resume
542
741
 
543
742
  ### State File Corruption
544
- - If `.claude/orchestration-state.md` is unreadable or malformed, reconstruct state from GitHub:
743
+ - If `.claude-scrum-skill/orchestration-state.md` is unreadable or malformed, reconstruct state from GitHub:
545
744
  ```bash
546
745
  # Get sprint and story status from the project board
547
746
  # Get branch state from git