@gobing-ai/spur 0.3.95 → 0.3.97

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.
Files changed (165) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/config/plugin-scripts.json +0 -54
  3. package/config/rules/boundary/sp-script-placement.yaml +19 -0
  4. package/config/rules/strict/runtime-boundaries.yaml +6 -0
  5. package/config/rules/structure/test-location.yaml +2 -0
  6. package/config/rules/typescript/no-syscall-emulation-in-boundary-mock.yaml +1 -1
  7. package/config/rules/typescript/output-boundaries.yaml +15 -2
  8. package/config/script-placement-baseline.json +51 -0
  9. package/config/templates/AGENTS.md +3 -3
  10. package/config/workflows/feature-verification.yaml +1 -1
  11. package/config/workflows/history-anatomy.yaml +23 -11
  12. package/config/workflows/idea-pipeline.yaml +80 -85
  13. package/config/workflows/pr-review.yaml +18 -9
  14. package/config/workflows/task-pipeline.yaml +42 -95
  15. package/config/workflows/wrapup-pipeline.yaml +91 -38
  16. package/package.json +2 -2
  17. package/plugins/sp/README.md +14 -10
  18. package/plugins/sp/agents/super-reviewer.md +43 -18
  19. package/plugins/sp/commands/dev-fixgha.md +83 -0
  20. package/plugins/sp/commands/dev-gitmsg.md +8 -6
  21. package/plugins/sp/commands/dev-gtd.md +2 -2
  22. package/plugins/sp/commands/dev-idea.md +22 -12
  23. package/plugins/sp/commands/dev-job-dump.md +29 -0
  24. package/plugins/sp/commands/dev-job-resume.md +29 -0
  25. package/plugins/sp/commands/dev-plan.md +8 -9
  26. package/plugins/sp/commands/dev-review.md +22 -13
  27. package/plugins/sp/commands/dev-verifyall.md +1 -1
  28. package/plugins/sp/commands/spur-init.md +2 -2
  29. package/plugins/sp/lib/history-anatomy.generated.d.mts +112 -0
  30. package/plugins/sp/lib/history-anatomy.generated.mjs +686 -0
  31. package/plugins/sp/lib/idea-handoff.generated.mjs +5 -4
  32. package/plugins/sp/lib/inline-run.generated.d.mts +11 -0
  33. package/plugins/sp/lib/inline-run.generated.mjs +39 -13
  34. package/plugins/sp/lib/quality-gate.generated.d.mts +104 -0
  35. package/plugins/sp/lib/quality-gate.generated.mjs +445 -0
  36. package/plugins/sp/lib/residual-scan.generated.d.mts +63 -0
  37. package/plugins/sp/lib/residual-scan.generated.mjs +226 -0
  38. package/plugins/sp/lib/spur-bin.ts +36 -0
  39. package/plugins/sp/lib/step-profile.generated.d.mts +71 -0
  40. package/plugins/sp/lib/step-profile.generated.mjs +174 -0
  41. package/plugins/sp/plugin.json +1 -1
  42. package/plugins/sp/references/roles.md +3 -3
  43. package/plugins/sp/scripts/feature-verification-steps.mjs +14 -1
  44. package/plugins/sp/scripts/feature-verification-steps.ts +14 -1
  45. package/plugins/sp/scripts/history-anatomy-cache.mjs +20 -19
  46. package/plugins/sp/scripts/history-anatomy-cache.ts +23 -928
  47. package/plugins/sp/scripts/inline-run-setup.mjs +85 -320
  48. package/plugins/sp/scripts/inline-run-setup.ts +104 -667
  49. package/plugins/sp/scripts/quality-gate.mjs +46 -24
  50. package/plugins/sp/scripts/quality-gate.ts +13 -659
  51. package/plugins/sp/scripts/residual-scan.mjs +179 -174
  52. package/plugins/sp/scripts/residual-scan.ts +125 -517
  53. package/plugins/sp/scripts/script-root.mjs +5 -1
  54. package/plugins/sp/scripts/script-root.ts +5 -1
  55. package/plugins/sp/scripts/workflow-step-profile.mjs +25 -17
  56. package/plugins/sp/scripts/workflow-step-profile.ts +21 -315
  57. package/plugins/sp/scripts/wrapup-drift-probe.mjs +8 -2
  58. package/plugins/sp/scripts/wrapup-drift-probe.ts +3 -2
  59. package/plugins/sp/scripts/wrapup-steps.mjs +72 -33
  60. package/plugins/sp/scripts/wrapup-steps.ts +128 -37
  61. package/plugins/sp/skills/code-improvement/SKILL.md +5 -4
  62. package/plugins/sp/skills/code-verification/SKILL.md +34 -9
  63. package/plugins/sp/skills/code-verification/references/verdict-schema.md +3 -3
  64. package/plugins/sp/skills/functional-review/SKILL.md +7 -4
  65. package/plugins/sp/skills/functional-review/references/verdict-schema.md +1 -1
  66. package/plugins/sp/skills/history-anatomy/references/modes.md +2 -1
  67. package/plugins/sp/skills/next-feature/references/handoff-routing.md +1 -1
  68. package/plugins/sp/skills/next-router/references/routing-table.md +1 -1
  69. package/plugins/sp/skills/source-driven-development/SKILL.md +11 -0
  70. package/plugins/sp/skills/spur-cli/SKILL.md +3 -3
  71. package/plugins/sp/skills/spur-cli/references/agent.md +10 -10
  72. package/plugins/sp/skills/spur-cli/references/features.md +17 -6
  73. package/plugins/sp/skills/spur-cli/references/init.md +17 -16
  74. package/plugins/sp/skills/spur-cli/references/self.md +3 -2
  75. package/plugins/sp/skills/spur-cli/references/serve.md +10 -10
  76. package/plugins/sp/skills/spur-cli/references/tasks/section-editing.md +9 -5
  77. package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +21 -6
  78. package/plugins/sp/skills/spur-cli/references/tasks.md +14 -8
  79. package/plugins/sp/skills/spur-cli/references/workflows.md +17 -14
  80. package/plugins/sp/skills/spur-dev/SKILL.md +2 -0
  81. package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +4 -3
  82. package/plugins/sp/skills/spur-dev/references/cross-cutting.md +14 -10
  83. package/plugins/sp/skills/spur-dev/references/decision-brief.md +1 -1
  84. package/plugins/sp/skills/spur-dev/references/dev-operations.md +165 -75
  85. package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +7 -5
  86. package/plugins/sp/skills/spur-dev/references/execution-batch.md +84 -39
  87. package/plugins/sp/skills/spur-dev/references/execution-workflow.md +8 -12
  88. package/plugins/sp/skills/spur-dev/references/feature-link-helper.md +3 -3
  89. package/plugins/sp/skills/spur-dev/references/flag-glossary.md +40 -21
  90. package/plugins/sp/skills/spur-dev/references/gate-checklists.md +19 -19
  91. package/plugins/sp/skills/spur-dev/references/idea-evaluation.md +4 -3
  92. package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +72 -15
  93. package/plugins/sp/skills/spur-doctor/SKILL.md +1 -1
  94. package/plugins/sp/skills/sys-architecture/SKILL.md +3 -2
  95. package/spur.js +4461 -2085
  96. package/web/_astro/{BoardApp.Cpxntzad.js → BoardApp.Bmv5WkJ9.js} +1 -1
  97. package/web/_astro/BoardApp.vveLOdDq.js +322 -0
  98. package/web/_astro/{TaskDetail.C5bW4WGV.js → TaskDetail.IKc3uDYV.js} +1 -1
  99. package/web/_astro/{arc.CyjRvNMY.js → arc.C63Ufg35.js} +1 -1
  100. package/web/_astro/{architectureDiagram-3BPJPVTR.B4lWRzJA.js → architectureDiagram-3BPJPVTR.CP8Hyldk.js} +1 -1
  101. package/web/_astro/{blockDiagram-GPEHLZMM.Be38USQ2.js → blockDiagram-GPEHLZMM.Bo_48MRA.js} +1 -1
  102. package/web/_astro/{c4Diagram-AAUBKEIU.DT9Fj5Qx.js → c4Diagram-AAUBKEIU.Ch61sw-O.js} +1 -1
  103. package/web/_astro/channel.BKCmJpWM.js +1 -0
  104. package/web/_astro/{chunk-2J33WTMH.SeSBWLg5.js → chunk-2J33WTMH.CHpzS7xf.js} +1 -1
  105. package/web/_astro/{chunk-4BX2VUAB.DoO4VE14.js → chunk-4BX2VUAB.DzMNNWIw.js} +1 -1
  106. package/web/_astro/{chunk-55IACEB6.DrmTFA53.js → chunk-55IACEB6.BqPrDw_Q.js} +1 -1
  107. package/web/_astro/{chunk-727SXJPM.Bi-TUb_V.js → chunk-727SXJPM.ZzBHhNw-.js} +1 -1
  108. package/web/_astro/{chunk-AQP2D5EJ.B-xp8Uhi.js → chunk-AQP2D5EJ.1_O_LLkx.js} +1 -1
  109. package/web/_astro/{chunk-FMBD7UC4.DGWrDnUU.js → chunk-FMBD7UC4.GS4UHg7_.js} +1 -1
  110. package/web/_astro/{chunk-ND2GUHAM._BagvPDy.js → chunk-ND2GUHAM.BnqotN4g.js} +1 -1
  111. package/web/_astro/{chunk-QZHKN3VN.VOboYWQ0.js → chunk-QZHKN3VN.Ghuh8zoJ.js} +1 -1
  112. package/web/_astro/{classDiagram-4FO5ZUOK.D_apfHS7.js → classDiagram-4FO5ZUOK.BW9vC3zg.js} +1 -1
  113. package/web/_astro/{classDiagram-v2-Q7XG4LA2.D_apfHS7.js → classDiagram-v2-Q7XG4LA2.BW9vC3zg.js} +1 -1
  114. package/web/_astro/{cose-bilkent-S5V4N54A.DNLU_L-x.js → cose-bilkent-S5V4N54A.D6jNC0ti.js} +1 -1
  115. package/web/_astro/{cynefin-OW5HDTMX.D8borhV-.js → cynefin-OW5HDTMX.BOGoCs4L.js} +1 -1
  116. package/web/_astro/{dagre-BM42HDAG.Uc0lvjcV.js → dagre-BM42HDAG.8iU5VcWi.js} +1 -1
  117. package/web/_astro/{diagram-2AECGRRQ.DDIxtDBo.js → diagram-2AECGRRQ.CVt88HwH.js} +1 -1
  118. package/web/_astro/{diagram-5GNKFQAL.DVoDnD3H.js → diagram-5GNKFQAL.C9HxUUMl.js} +1 -1
  119. package/web/_astro/{diagram-KO2AKTUF.CRubTJ-0.js → diagram-KO2AKTUF.4ywkQN3t.js} +1 -1
  120. package/web/_astro/{diagram-LMA3HP47.m9SeYcXQ.js → diagram-LMA3HP47.C48A6gpz.js} +1 -1
  121. package/web/_astro/{diagram-OG6HWLK6.C6s2ZjV5.js → diagram-OG6HWLK6.DxFieQW4.js} +1 -1
  122. package/web/_astro/{erDiagram-TEJ5UH35.nSzr5KTj.js → erDiagram-TEJ5UH35.CtjtQqYs.js} +1 -1
  123. package/web/_astro/{flowDiagram-I6XJVG4X.DrZcys16.js → flowDiagram-I6XJVG4X.C5zAiahU.js} +1 -1
  124. package/web/_astro/{ganttDiagram-6RSMTGT7.Do4M1b-K.js → ganttDiagram-6RSMTGT7.D_L6zsny.js} +1 -1
  125. package/web/_astro/{gitGraphDiagram-PVQCEYII.BWc9oJ4l.js → gitGraphDiagram-PVQCEYII.Ignnrk3V.js} +1 -1
  126. package/web/_astro/index.CbNz17Sx.css +1 -0
  127. package/web/_astro/{infoDiagram-5YYISTIA.BIdOctFk.js → infoDiagram-5YYISTIA.DLv8-P5u.js} +1 -1
  128. package/web/_astro/{ishikawaDiagram-YF4QCWOH.CV5SuG2t.js → ishikawaDiagram-YF4QCWOH.p0OTpwFO.js} +1 -1
  129. package/web/_astro/{journeyDiagram-JHISSGLW.CxE-rEJ-.js → journeyDiagram-JHISSGLW.CIaBt-DD.js} +1 -1
  130. package/web/_astro/{kanban-definition-UN3LZRKU.BPRdKWs_.js → kanban-definition-UN3LZRKU.DGySIntq.js} +1 -1
  131. package/web/_astro/{linear.zRsuuDTE.js → linear.BATV4RXu.js} +1 -1
  132. package/web/_astro/{mermaid.core.jAJTcMKc.js → mermaid.core.DzkwM3VX.js} +4 -4
  133. package/web/_astro/{mindmap-definition-RKZ34NQL.BffJxfCr.js → mindmap-definition-RKZ34NQL.3piBRRzA.js} +1 -1
  134. package/web/_astro/{pieDiagram-4H26LBE5.CacwWaE3.js → pieDiagram-4H26LBE5.DUNueLub.js} +1 -1
  135. package/web/_astro/{quadrantDiagram-W4KKPZXB.hXELD06-.js → quadrantDiagram-W4KKPZXB.9bihVbrt.js} +1 -1
  136. package/web/_astro/{requirementDiagram-4Y6WPE33.DdEbPcqT.js → requirementDiagram-4Y6WPE33.CkjsC-YT.js} +1 -1
  137. package/web/_astro/{sankeyDiagram-5OEKKPKP.DgaDocKv.js → sankeyDiagram-5OEKKPKP.Dbq4vaoQ.js} +1 -1
  138. package/web/_astro/{sequenceDiagram-3UESZ5HK.B0KScnAu.js → sequenceDiagram-3UESZ5HK.BivrH99P.js} +1 -1
  139. package/web/_astro/{stateDiagram-AJRCARHV.CV9M_WNc.js → stateDiagram-AJRCARHV.CqLQ1Vzz.js} +1 -1
  140. package/web/_astro/{stateDiagram-v2-BHNVJYJU.BOAo74Et.js → stateDiagram-v2-BHNVJYJU.DvvoLD3b.js} +1 -1
  141. package/web/_astro/{timeline-definition-PNZ67QCA.CqqepUMe.js → timeline-definition-PNZ67QCA.B-KR78gv.js} +1 -1
  142. package/web/_astro/{vennDiagram-CIIHVFJN.DDqe4dOG.js → vennDiagram-CIIHVFJN.Ck0Eieb5.js} +1 -1
  143. package/web/_astro/{wardleyDiagram-YWT4CUSO.B3R9OPdO.js → wardleyDiagram-YWT4CUSO.CRfdd_do.js} +1 -1
  144. package/web/_astro/{xychartDiagram-2RQKCTM6.B3SvgXpQ.js → xychartDiagram-2RQKCTM6.Ck_Jxk9C.js} +1 -1
  145. package/web/index.html +2 -2
  146. package/plugins/sp/lib/artifact-digest.generated.d.mts +0 -7
  147. package/plugins/sp/lib/artifact-digest.generated.mjs +0 -48
  148. package/plugins/sp/scripts/feature-sync-bounded.mjs +0 -301
  149. package/plugins/sp/scripts/feature-sync-bounded.ts +0 -481
  150. package/plugins/sp/scripts/idea-coverage-check.ts +0 -168
  151. package/plugins/sp/scripts/inline-pipeline-parity-check.ts +0 -298
  152. package/plugins/sp/scripts/record-feature-sync.mjs +0 -63
  153. package/plugins/sp/scripts/record-feature-sync.ts +0 -84
  154. package/plugins/sp/scripts/script-contract-check.ts +0 -506
  155. package/plugins/sp/scripts/stage-registry-adapter.ts +0 -1533
  156. package/plugins/sp/scripts/surface-drift-inventory.ts +0 -989
  157. package/plugins/sp/scripts/task-evidence-precheck.ts +0 -189
  158. package/plugins/sp/scripts/task-size-precheck.ts +0 -212
  159. package/plugins/sp/scripts/transition-shim-check.ts +0 -238
  160. package/plugins/sp/scripts/validate-commands.ts +0 -689
  161. package/plugins/sp/scripts/validate-flag-contracts.ts +0 -890
  162. package/plugins/sp/scripts/verify-answer-lint.ts +0 -549
  163. package/web/_astro/BoardApp.BxJuwD7I.js +0 -191
  164. package/web/_astro/channel.CI6N_tCg.js +0 -1
  165. package/web/_astro/index.CENnIEqT.css +0 -1
@@ -68,6 +68,10 @@ single-task wrap-up closes out a whole set of completed tasks in one pass.
68
68
 
69
69
  ### Crossing a session boundary
70
70
 
71
+ For any unfinished job, use `/sp:dev-job-dump --file <path>` to save a Markdown snapshot and
72
+ `/sp:dev-job-resume --file <path>` in the next session to reconcile state and continue the remaining
73
+ work. Include the referenced checkout and evidence files when transferring to another machine.
74
+
71
75
  Two different problems, two different tools:
72
76
 
73
77
  - **The harness compacts your context mid-task.** That's normal. Keep the _planning_ half in one
@@ -125,6 +129,8 @@ list this README is checked against.
125
129
  | Command | What it does |
126
130
  | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
127
131
  | `dev-handover` | Generate a structured handover document when blocked — captures goal, progress, blocker, rejected approaches, and next steps |
132
+ | `dev-job-dump` | Save the current job, verified environment and ordered remaining work to a specified Markdown handoff file |
133
+ | `dev-job-resume` | Reconcile a Markdown handoff with current state and continue the remaining job through its existing owner |
128
134
  | `dev-debug` | Systematic debugging protocol — reproduce, isolate, diagnose root cause, apply minimal fix, and verify with regression tests |
129
135
  | `dev-daily` | Generate a daily summary report from agent usage data, git history, and notes |
130
136
  | `dev-dogfood` | Dogfood an agent skill/command/CLI — drive it end-to-end with bounded auto-fix, self-monitor, and emit a comprehensive report |
@@ -133,11 +139,12 @@ list this README is checked against.
133
139
  | `dev-find-conflict` | Authority-aware semantic audit across source, task, feature, and project authority files — detect conflicts, resolve claim-specific authority, and route confirmed repairs through owner surfaces |
134
140
  | `dev-find-next` | Prompt-first feature frontier prioritizer — ranks the open feature frontier by derived importance/urgency with per-candidate evidence; gates unactionable features; emits tree defects as proposals only |
135
141
  | `dev-fixall` | Fix all lint, type, and test errors systematically across the working tree |
142
+ | `dev-fixgha` | Find and fix failing GitHub Actions runs — gh fetch → diagnose → root-cause fix → commit → push → re-verify until green; optional context/filter argument |
136
143
  | `dev-simplify` | Simplify recently-changed code for clarity without changing behavior — incremental, test-after-each, revert on regression |
137
144
  | `dev-refactor` | Lens-routed refactoring with a preservation contract — taste lenses (api/architect/tests/ui) classify findings on the shared schema; cutting/breaking changes pause for operator approval; forwards to sp:code-refactoring |
138
145
  | `dev-arch` | Survey a codebase (or module tree) for shallow modules and deepening opportunities — emit a ranked MARKDOWN candidate report that feeds the planning half; never auto-refactors |
139
146
  | `dev-reverse` | Reverse-engineer a codebase — analyze unfamiliar repos, generate HLD/architecture docs, audit quality/security, and produce onboarding documentation |
140
- | `dev-gitmsg` | Generate conventional commit message(s) from the current change set via one bounded diff capture, optionally commit |
147
+ | `dev-gitmsg` | Generate conventional commit message(s) from the current change set via one bounded gather call, optionally commit |
141
148
  | `dev-gtd` | Get things done — quality gate (auto-fix) → conventional commit → push → gh verify in one flow; optional act CI simulation via `--act` |
142
149
  | `dev-changelog` | Generate changelog from git commits |
143
150
 
@@ -269,9 +276,9 @@ plugins/sp/
269
276
  │ # + careful-guard.{ts,test.ts} + context-hooks.test.ts + token-estimate.test.ts
270
277
  │ # + shared policy modules: agent-hint.ts, destructive-policy.{ts,test.ts}, task-file-policy.{ts,test.ts}
271
278
  │ # + pi/guard-extension.{ts,test.ts} (plugin.json `extensions.pi` entry point)
272
- ├── scripts/ # Executable helpers, split from prompts (ADR-031) — validate-commands.ts (thin-wrapper validator), batch-preflight.ts + scripts/<skill>/
279
+ ├── scripts/ # Executable helpers, split from prompts (ADR-031) — batch-preflight.ts + scripts/<skill>/
273
280
  │ # (daily-summary: {daily-summary, logger}.ts; dogfood-testing: {detect-pipeline-driving, validate-report}.ts)
274
- ├── tests/ # Plugin tests — command-contract.test.ts + skill-structure.test.ts + batch-preflight.test.ts + per-skill suites
281
+ ├── tests/ # Plugin tests — skill-structure.test.ts + batch-preflight.test.ts + per-skill suites (command-contract moved to scripts/commands/)
275
282
  ├── evals/ # Skill behavioral eval harness (scenarios + judge + run-eval runner)
276
283
  ├── plugin.json # Marketplace entry
277
284
  └── README.md # This file
@@ -399,7 +406,7 @@ hand-editable source for the operator command surface. Per-platform adapters are
399
406
  output** owned by `superskill` (`superskill install sp`) and never committed here. Plugin `sp` ships
400
407
  no per-platform artifacts — only the platform-independent thin wrappers.
401
408
 
402
- **Thin-wrapper contract** is enforced by `scripts/validate-commands.ts`:
409
+ **Thin-wrapper contract** is enforced by `scripts/commands/validate-commands.ts`:
403
410
 
404
411
  ```bash
405
412
  bun run validate-commands # validate all 39 commands
@@ -415,7 +422,7 @@ gate (a) is strengthened: the ordered three-heading set `## Argument Flags` →
415
422
  `## Implementation` is required, and gate (e) checks the `argument-hint` is syntax-only (no
416
423
  Markdown links), the `## Argument Flags` table has exactly `Flag | Description | Default` columns,
417
424
  the command carries exactly one glossary reference, and canonical hint tokens have bidirectional
418
- parity with table rows. The same gates are tested in `tests/command-contract.test.ts` and
425
+ parity with table rows. The same gates are tested in `scripts/commands/command-contract.test.ts` and
419
426
  `tests/command-flag-parity.test.ts`. See
420
427
  `docs/design/dev-command-argument-contract.md` for the full contract.
421
428
 
@@ -506,15 +513,12 @@ hold `SKILL.md` and prompt-side companions only.
506
513
  | `hooks/context-*.ts` | Runtime for the three registered context hooks (session-start, post-tool, session-stop) — token-cost estimation + ledger append for `sp:indexed-context` |
507
514
  | `hooks/careful-guard.ts` | Opt-in destructive-command guard (unwired — see Hooks above) |
508
515
  | `scripts/batch-preflight.ts` | Pure TABLE A STOP evaluation for `super-planner` — skip doomed pipeline launches without spawning a Skill subprocess; recovery hints map stuck statuses to a single `/sp:dev-*` hop |
509
- | `scripts/workflow-step-profile.ts` | Read-only step profile from `spur workflow trace` — per node and action-kind durations, idle gaps, session mode and `cacheHit` coverage, plus the ADR-115 cache-window flags `sp:spur-doctor` turns into workflow-optimization proposals |
516
+ | `scripts/workflow-step-profile.ts` | Thin glue over the generated lib bundle (`lib/step-profile.generated.mjs` from `packages/app/src/workflow/step-profile.ts`) — read-only step profile from `spur workflow trace`: per node and action-kind durations, idle gaps, session mode and `cacheHit` coverage, plus the ADR-115 cache-window flags `sp:spur-doctor` turns into workflow-optimization proposals |
510
517
  | `scripts/dogfood-testing/detect-pipeline-driving.ts` | Word-boundary detector for pipeline-driving testees (leading-space invariant) |
511
518
  | `scripts/dogfood-testing/validate-report.ts` | Pure `validateReport(md)` — footer-mandatory + 7-check finalize-or-abort contract with stable error codes |
512
519
  | `scripts/daily-summary/{daily-summary,logger}.ts` | ccusage + git-history orchestration helpers for `sp:daily-summary` |
513
- | `scripts/feature-sync-bounded.ts` | Bounded retry-suppression wrapper for `spur feature sync` during batch/wrap-up runs — suppresses identical L4-blocked repeats |
514
- | `scripts/stage-registry-adapter.ts` | dev-next golden-path adapter over the canonical stage registry — TABLE A/B/C resolution bridge for the status-aware facade |
515
- | `scripts/task-size-precheck.ts` | Pipeline size precheck guard (R2) — evaluates R-item/Plan-count limits to PASS/FAIL |
516
520
  | `scripts/task-diffstat.ts` | 0943 triage-lane diffstat producer — numstat + untracked scan vs the run base; writes `<wbs>-diffstat.json` with the sensitive-path flag; fails safe (sensitive) |
517
- | `scripts/validate-flag-contracts.ts` | Mechanical consistency gate — compares flag claims across command files, flag-glossary, cross-cutting, dev-operations, and ADR; reports disagreements |
521
+ | `scripts/commands/validate-flag-contracts.ts` | Mechanical consistency gate — compares flag claims across command files, flag-glossary, cross-cutting, dev-operations, and ADR; reports disagreements |
518
522
  | `*.test.ts` | Unit suites — in `hooks/` for guards, in `tests/<skill>/` per ADR-031 pairing |
519
523
 
520
524
  **Design principle:** Scripts are **deterministic enforcement**. Unlike skills (which are advisory
@@ -26,7 +26,8 @@ skills: [sp:code-verification, sp:functional-review, sp:code-improvement]
26
26
 
27
27
  The **review specialist** for the sp plugin. Runs the multi-dimensional review defined by
28
28
  `/sp:dev-review` — functional traceability, SECUA quality, and architectural depth — either
29
- standalone (a source path or a task WBS) or as the pipeline's Phase 7 review step.
29
+ standalone (a task, a task set, a source path, or a path list) or as the pipeline's Phase 7
30
+ review step.
30
31
 
31
32
  ## Role
32
33
 
@@ -44,8 +45,8 @@ write `## Review`. This coordinator is the single `## Review` writer in coordina
44
45
  fallback only and never overwrites authored Review.
45
46
 
46
47
  Your job: establish scope, dispatch each requested dimension to its skill, collect findings, merge
47
- them into a ranked report, and write the report to the task's `## Review` section (pipeline mode) or
48
- emit it as advisory output (standalone mode).
48
+ them into a ranked report, and write the report to the task's `## Review` section (per task target)
49
+ or emit it as advisory output (path target).
49
50
 
50
51
  ## When to use
51
52
 
@@ -57,9 +58,13 @@ emit it as advisory output (standalone mode).
57
58
 
58
59
  ### Direct-Entry (standalone)
59
60
 
60
- Invoked by the operator or `/sp:dev-review <wbs|path>`. You run the full multi-dimensional review
61
- and emit the ranked findings. Advisory by default — the operator decides what to act on. Only
62
- when invoked under the pipeline (or with `--next`) do blocker/major findings block a gate.
61
+ Invoked by the operator or `/sp:dev-review` — usually as the coordinator definition the
62
+ invoking session acts under (`/sp:dev-review` runs its review inline; it does not dispatch this
63
+ agent). The target kind decides the output contract: **WBS target → the merged report is written
64
+ to the task's `## Review` section** (via `spur task update <wbs> --section Review --from-file`);
65
+ **path target → advisory output only** (no task mutation). With multiple targets the contract
66
+ applies per target — see [Multi-target coordination](#multi-target-coordination-task-1023) below.
67
+ Only when invoked under the pipeline do blocker/major findings block a gate.
63
68
 
64
69
  ### Pipeline Phase 7
65
70
 
@@ -68,12 +73,29 @@ Invoked by `task-pipeline.yaml`'s `review` step. The pipeline hands you the task
68
73
  return a PASS/PARTIAL/FAIL verdict to the pipeline's `approve(HITL)` gate. `blocker`/`major`
69
74
  findings block the gate; `minor`/`advisory` are recorded but do not block.
70
75
 
76
+ ### Multi-target coordination (task 1023)
77
+
78
+ - **Task targets (`--tasks <selector>` / `--feature <id>[,<id>]`).** The set resolves once through
79
+ the batch selector grammar ([execution-batch.md § Step 1](../skills/spur-dev/references/execution-batch.md#step-1--selector-resolution-r1))
80
+ and freezes. Fan out one WBS-mode review per task and write each task's **own** merged
81
+ `## Review` — never merge two tasks into one Review. Tasks in `backlog`/`todo`/`blocked` are
82
+ reported **NOT-STARTED** and skipped (§ 3a outcome vocabulary); a per-task failure does not stop
83
+ the remaining tasks. End the run with a combined summary table (WBS, verdict, P1/P2 counts).
84
+ - **Path targets (`--scope <path>[,<path>]`).** Paths must exist, are normalized, and
85
+ nested/duplicate paths are merged. Run one path-scope sub-review (Step 3p) per surviving path —
86
+ each eligible for native-subagent dispatch per
87
+ [dispatch-surface.md](../skills/parallel-execution/references/dispatch-surface.md) — then merge
88
+ the fragments, run **one** cross-path architecture pass (`sp:code-improvement` over the
89
+ inter-path imports), and emit **one** advisory report. No task mutation.
90
+ - **`--triage` with multiple targets** buckets findings across all targets once; identical
91
+ `file:line` findings are deduped before bucketing.
92
+
71
93
  ## Skill invocation
72
94
 
73
95
  | Platform | Invocation |
74
96
  | ---------- | ----------- |
75
- | Claude Code | Spawned by `/sp:dev-review` → `Skill(skill="sp:code-verification"/"sp:functional-review"/"sp:code-improvement", args="...")` dispatch |
76
- | Other platforms | Invoke the three skills' review modes directly; this agent is the dispatcher |
97
+ | Claude Code | The review coordinator dispatches `Skill(skill="sp:code-verification"/"sp:functional-review"/"sp:code-improvement", args="...")` — under `/sp:dev-review` the coordinator is the invoking session (this agent is not dispatched); when this agent is dispatched directly, it dispatches the same skills |
98
+ | Other platforms | The coordinator invokes the three skills' review modes directly — this agent when dispatched, the invoking session under `/sp:dev-review` |
77
99
 
78
100
  ## Dispatch surface
79
101
 
@@ -94,13 +116,17 @@ HITL gate unless `--auto` was passed.
94
116
 
95
117
  ### Always
96
118
 
97
- - [ ] Establish scope first: WBS mode (task diff) or path mode (source glob). Derive the diff
98
- scope the same way `sp:code-verification` Step 3 does.
119
+ - [ ] Establish scope first per target kind: task targets (task diff → `sp:code-verification`
120
+ Step 3, one review per task) or path targets (tracked files under the path →
121
+ `sp:code-verification` Step 3p, one sub-review per path). Defer to that recipe — no
122
+ restated copy.
99
123
  - [ ] Dispatch each requested dimension to its owning skill — do not inline the review logic.
100
124
  - [ ] Merge findings into a single ranked report, emitting native priority cells
101
125
  (`P1 (blocker)` > `P2 (major)` > `P3 (minor)` > `P4 (advisory)` — see Output Format).
102
- - [ ] In pipeline mode, write the merged report to the task's `## Review` section via
103
- `spur task update <wbs> --section Review --from-file`; in standalone mode, emit as output.
126
+ - [ ] With a WBS target (standalone or pipeline), write the merged report to that task's
127
+ `## Review` section via `spur task update <wbs> --section Review --from-file` — per task
128
+ under a task set, then the combined summary table; with a path target, emit as advisory
129
+ output (one merged report for a path list, including the cross-path architecture pass).
104
130
  - [ ] Cite `file:line` evidence for every finding — no vague "implemented correctly."
105
131
  - [ ] Apply the honesty gate: no PASS verdict without fresh, pasted verification evidence.
106
132
 
@@ -139,10 +165,11 @@ fails it. One explicit mapping, no transcription step anywhere downstream:
139
165
  Severity words stay visible in the same cell — the mapping adds the machine-readable label, it does
140
166
  not replace the semantics.
141
167
 
142
- **Section-relative headings.** In pipeline mode the report body is written *into* the task's
143
- `### Review` section, so every heading inside it MUST be `####` or deeper. A `##`/`###` heading in
144
- the body becomes a new top-level task section and corrupts the document. In standalone mode
145
- (emitted as output, not written to a task) the same body may be rendered one level shallower.
168
+ **Section-relative headings.** In WBS mode (standalone or pipeline) the report body is written
169
+ *into* the task's `### Review` section, so every heading inside it MUST be `####` or deeper. A
170
+ `##`/`###` heading in the body becomes a new top-level task section and corrupts the document. With
171
+ a path target (emitted as output, not written to a task) the same body may be rendered one level
172
+ shallower.
146
173
 
147
174
  ```markdown
148
175
  #### Review Report — <wbs|path>
@@ -180,8 +207,6 @@ rejected by the checker, and so they should be:
180
207
  | 1 | P4 (advisory) | — | No P1–P3 findings: 6 changed files reviewed across all six dimensions; R1–R3 traceable to tests | `packages/app/src/workflow/proof-input-fingerprint.ts:102-160` |
181
208
  ```
182
209
 
183
- With `--json`, emit the same shape as a JSON object for machine consumption.
184
-
185
210
  ## Out of scope
186
211
 
187
212
  - Implementing fixes (that's `sp:code-implementation` / `sp:super-coder`).
@@ -0,0 +1,83 @@
1
+ ---
2
+ description: Find and fix failing GitHub Actions runs — gh fetch → diagnose → root-cause fix → commit → push → re-verify until green
3
+ role: coder
4
+ argument-hint: "[<context>] [--max-retry <n>] [--no-push]"
5
+ allowed-tools: ["Bash", "Read", "Write", "Edit", "Grep", "Glob"]
6
+ ---
7
+
8
+ # Dev Fixgha
9
+
10
+ Self-contained all-in-one GitHub Actions repair loop (no backing skill): fetch failing runs with
11
+ `gh`, diagnose each from its failed-step log, fix the root cause locally, commit, push, and watch the
12
+ new runs — repeating until every in-scope workflow is green. Invoking this command is the operator's
13
+ explicit request to edit `.github/workflows/` when the root cause lives there.
14
+
15
+ ## Argument Flags
16
+
17
+ | Flag | Description | Default |
18
+ | --- | --- | --- |
19
+ | `<context>` | Free-text context and/or search filter: a workflow name or file, run ID/URL, PR number, branch, job/step name, or a hint about the failure. Narrows which runs are in scope and seeds the diagnosis. | latest failing run per workflow on the current branch |
20
+ | `--max-retry <n>` | Max fix → push → verify iterations before stopping with the remaining failures. | 3 |
21
+ | `--no-push` | Fix and commit locally but do not push or re-verify on GitHub. | off |
22
+
23
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
24
+
25
+ ## Usage
26
+
27
+ /sp:dev-fixgha [<context>] [--max-retry <n>] [--no-push]
28
+
29
+ ## Implementation
30
+
31
+ Execute the stages below in order. Parse `gh` output with `--json` / `--jq`; never scrape tables.
32
+ A stage that cannot succeed after `--max-retry` iterations stops the run with the specific failing
33
+ output — do not silently skip a real failure.
34
+
35
+ **1 — Preflight.** `gh auth status` must pass (otherwise stop and tell the operator to run
36
+ `! gh auth login`). Resolve the repo (`gh repo view --json nameWithOwner`), the current branch, and
37
+ `HEAD`. The working tree must be clean of unrelated changes (one writer per tree) — if it is not,
38
+ stop and report instead of mixing them into CI-fix commits.
39
+
40
+ **2 — Collect failing runs.** Build the in-scope set from `<context>`:
41
+
42
+ - run ID / URL → that run (`gh run view <id> --json databaseId,workflowName,headBranch,headSha,conclusion,jobs,url`);
43
+ - PR number → `gh pr checks <n> --json name,state,link,workflow` (failed checks only);
44
+ - workflow name/file → `gh run list --workflow <wf> --branch <branch> --limit 10 --json databaseId,workflowName,headSha,status,conclusion,event,url`;
45
+ - otherwise → `gh run list --branch <branch> --limit 30 --json …` and keep the **latest** run per
46
+ workflow whose `conclusion` is `failure`, `startup_failure`, or `timed_out`. An older failure
47
+ already superseded by a green run of the same workflow is out of scope.
48
+
49
+ Free text that is not an identifier narrows by workflow/job/step name and is carried into diagnosis.
50
+ If `actionlint` is on `PATH`, also run it over `.github/workflows/` and add its findings as
51
+ static issues. Nothing failing and no static findings → report "all GitHub Actions green" and stop.
52
+
53
+ **3 — Diagnose each failure.** Pull only the failing output: `gh run view <id> --log-failed`
54
+ (bounded — keep the tail around the first error per failed step, not the whole log). Classify:
55
+
56
+ | Class | Signal | Action |
57
+ | --- | --- | --- |
58
+ | Code | test / lint / typecheck / build error | Reproduce locally with the failing step's command, then fix the source. |
59
+ | Workflow | YAML / expression error, bad action ref or deprecated version, missing `permissions`, wrong runner/tool version, cache/path mismatch | Fix the workflow file minimally. |
60
+ | Environment | CI-only behavior (OS, root vs non-root, missing binary, timezone, case-sensitive FS) | Fix the code or workflow so both environments are correct — never weaken a correct test. |
61
+ | Transient | network/registry timeout, runner outage, rate limit, no code/workflow cause | `gh run rerun <id> --failed` once; if it fails again, reclassify. |
62
+ | External | missing/expired secret, repo setting, billing, third-party outage | Cannot be fixed from the tree — record and report for the operator. |
63
+
64
+ **4 — Fix.** Root cause only, surgical diff. Forbidden shortcuts: `continue-on-error`, `if: false`,
65
+ deleting or skipping jobs/steps/tests, loosening thresholds, `--no-verify`, force-push, and any edit
66
+ to secrets. After fixing, run the local quality gate (`bun run check`, or the project's equivalent);
67
+ if red, run `/sp:dev-fixall "<gate-command>"` before continuing.
68
+
69
+ **5 — Commit.** Follow the gitmsg procedure in
70
+ [dev-operations.md](../skills/spur-dev/references/dev-operations.md#9-gitmsg) to produce one
71
+ conventional commit per iteration (typically `fix(ci): …` for workflow changes, or the owning
72
+ `fix(<scope>): …` for code), whose body names the run IDs it addresses. Commit with the
73
+ repository's hooks enabled.
74
+
75
+ **6 — Push and re-verify.** Skip when `--no-push` (report the commits and stop). Otherwise
76
+ `git push` (set upstream if missing; on rejection, pull `--rebase` then retry — never force). Find
77
+ the runs for the pushed SHA (`gh run list --commit <sha> --json databaseId,workflowName,status,conclusion`;
78
+ poll briefly — runs can take a few seconds to appear), then `gh run watch <id> --exit-status` for
79
+ each in-scope workflow. Any new failure feeds back into stage 3. Stop when all in-scope workflows
80
+ are green or `--max-retry` iterations are spent.
81
+
82
+ **7 — Report.** One table: workflow · run ID · class · root cause · fix (`path:line`) · commit ·
83
+ final status. List External/unfixed items separately with the exact operator action required.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Generate conventional commit message(s) from the current change set via one bounded diff capture, optionally commit
2
+ description: Generate conventional commit message(s) from the current change set via one bounded gather call, optionally commit
3
3
  role: scribe
4
4
  argument-hint: "[--commit] [--squash] [--all] [--scope <path>]"
5
5
  allowed-tools: ["Bash", "Read"]
@@ -28,8 +28,10 @@ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag
28
28
 
29
29
  Follow the inline procedure in [dev-operations.md](../skills/spur-dev/references/dev-operations.md#9-gitmsg) (gitmsg).
30
30
 
31
- One diff capture per run — `-U0`, lockfiles excluded, 60 KB cap — is the token contract; never re-read
32
- the diff wider. Neither `--commit` nor `--squash` → messages only. `--commit` → one commit per concern, split automatically,
33
- so the operator is never asked to re-stage and re-run. `--squash` → one commit for everything.
34
- An empty index widens to the whole tree only on a message-only run, and says so; a committing run
35
- stops there and prints the exact `--all` re-run line instead of guessing.
31
+ One gather call per run (per-file-capped `-U0` diff including untracked content, recent subjects for
32
+ scope vocabulary, secret and partial-staging guards — git + shell only), then at most one commit call.
33
+ Never re-read the diff wider. Neither `--commit` nor `--squash` → messages only. `--commit` → one
34
+ commit per concern, split automatically, so the operator is never asked to re-stage and re-run.
35
+ `--squash` → one commit for everything. An empty index widens to the whole tree only on a
36
+ message-only run, and says so; a committing run stops there and prints the exact `--all` re-run line
37
+ instead of guessing.
@@ -63,8 +63,8 @@ Then stop the run (this stage failed). The operator can proceed by re-running wi
63
63
 
64
64
  **3 — Generate a conventional commit message.** Follow the gitmsg procedure (the same one
65
65
  `/sp:dev-gitmsg` runs) — see
66
- [dev-operations.md](../skills/spur-dev/references/dev-operations.md#9-gitmsg): one bounded diff
67
- capture, concern grouping, conventional `<type>(<scope>): <summary>` formatting. Two deviations
66
+ [dev-operations.md](../skills/spur-dev/references/dev-operations.md#9-gitmsg): one bounded gather
67
+ call, concern grouping, conventional `<type>(<scope>): <summary>` formatting. Two deviations
68
68
  belong to this flow: read the change set with `--all` semantics (this stage commits everything the
69
69
  gate just proved green, not only what happens to be staged), and resolve multiple concerns to a
70
70
  **single combined message** (dominant type/scope, one body bullet per concern) so the push is
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Turn a vague idea into a feature with AC and a decomposed task batch — discovery, idea-eval, feature-create, AC, feature-check, system-design, decompose, batch-create (Design by default), handoff
3
3
  role: planner
4
- argument-hint: "\"<idea>\" [--from-file <path>] [--auto] [--skip-design] [--approve-taste] [--agent <inline|auto|name>]"
4
+ argument-hint: "\"<idea>\" | --from-file <path> [--skip-design] [--agent <inline|auto|name>] [--auto]"
5
5
  allowed-tools: ["Bash", "Read", "Skill", "AskUserQuestion"]
6
6
  ---
7
7
 
@@ -16,29 +16,39 @@ contract below maps to that workflow's transitions.
16
16
  | --- | --- | --- |
17
17
  | `"<idea>"` | Vague idea to turn into a feature with AC and tasks. | required (or `--from-file`) |
18
18
  | `--from-file` `<path>` | Read the idea from a file instead of the positional argument. Mutually exclusive with `"<idea>"` — exactly one must be present. The file's contents become the verbatim idea text (trimmed of surrounding whitespace only). Useful for long or multiline asks that are awkward to quote. | off |
19
- | `--auto` | Skip objective HITL gates only (taste gates still pause). | off |
20
- | `--skip-design` | Omit system-design and per-task Design. | off |
21
- | `--approve-taste` | With `--auto`: set idea_approved + design_approved so idea-eval / design-approval do not pause. | off |
22
- | `--idea-approved` | Compatibility alias for idea_approved=true (subset of --approve-taste). | off |
23
- | `--design-approved` | Compatibility alias for design_approved=true (subset of --approve-taste). | off |
19
+ | `--skip-design` | Omit system-design (and its approval gate) and per-task Design. | off |
24
20
  | `--agent` `<inline\|auto\|name>` | Who runs the model-bearing ideation. Omission and `inline` drive `idea-pipeline.yaml` in this session with zero external agent/workflow processes; `auto` tier-resolves an executor and a name pins one, both through the async workflow worker. | inline |
21
+ | `--auto` | Accept the pipeline's recommendation at every operator gate (see below). | off |
25
22
 
26
23
  For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
27
24
 
28
25
  ## Usage
29
26
 
30
27
  ```
31
- /sp:dev-idea "<idea>"
32
- [--auto] # skip objective HITL only (feature-check, batch-create)
33
- [--skip-design] # design package off (system-design + task Design)
34
- [--approve-taste] # with --auto: skip idea-eval + design-approval pauses
28
+ /sp:dev-idea "<idea>" | --from-file <path>
29
+ [--skip-design] # design package off (system-design + task Design)
35
30
  [--agent <inline|auto|name>] # inline is the current session; auto/name are async workers
31
+ [--auto] # no operator pauses; follow each gate's recommendation
36
32
  ```
37
33
 
38
34
  There is **no** `--design` force flag. Design is default-on; only `--skip-design` opts out.
39
35
 
40
- **Aliases (one-release / scripts):** `--idea-approved` and `--design-approved` still map into the same
41
- vars as subsets of `--approve-taste` (`idea_approved` / `design_approved`). Prefer `--approve-taste`.
36
+ **Removed flags:** `--approve-taste`, `--idea-approved`, and `--design-approved` are folded into
37
+ `--auto`. If passed, ignore them with a one-line notice; do not treat them as `--auto`.
38
+
39
+ **Operator gates.** Every gate is asked as one `AskUserQuestion` [decision brief](../skills/spur-dev/references/decision-brief.md):
40
+ the recommended option first, then options with their reasoning. The operator picks; they never
41
+ type a yes/no. `--auto` takes the recommended option at each gate without asking.
42
+
43
+ | Gate | Pauses when | Recommendation comes from | `--auto` takes |
44
+ | --- | --- | --- | --- |
45
+ | idea-eval | after discovery | eval report `## Recommendation` (`proceed` / `reshape` / `drop`) | `proceed`/`reshape` → continue; `drop` → cancel; missing → still asks |
46
+ | feature-check | after AC | recorded AC check + requirement coverage | PASS → continue; FAIL → revise AC (cap 3) |
47
+ | design-approval | after system-design (skipped by `--skip-design`) | recorded design check | PASS → approve; FAIL → still asks |
48
+ | batch-create | after decompose | batch schema + task-order sidecar validation | create the batch |
49
+
50
+ Flag → vars: `--auto` sets `profile=auto`, `idea_approved=true`, `design_approved=true`;
51
+ `--skip-design` sets `design=skip`.
42
52
 
43
53
  ## Implementation
44
54
 
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: Dump remaining work to a Markdown handoff file
3
+ role: scribe
4
+ argument-hint: "--file <path>"
5
+ allowed-tools: ["Bash", "Read", "Write", "Skill"]
6
+ ---
7
+
8
+ # Dev Job Dump
9
+
10
+ Wraps the **sp:spur-dev** skill.
11
+
12
+ ## Argument Flags
13
+
14
+ | Flag | Description | Default |
15
+ | --- | --- | --- |
16
+ | `--file <path>` | Markdown file to write or refresh with the current job handoff. | required |
17
+
18
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
19
+
20
+ ## Usage
21
+
22
+ /sp:dev-job-dump --file <path>
23
+
24
+ ## Implementation
25
+
26
+ Follow [job-dump](../skills/spur-dev/references/dev-operations.md#11a-job-dump), using the shared
27
+ handoff template to capture the current job and its remaining work.
28
+
29
+ Skill(skill="sp:spur-dev", args="job-dump $ARGUMENTS")
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: Resume remaining work from a Markdown handoff file
3
+ role: planner
4
+ argument-hint: "--file <path>"
5
+ allowed-tools: ["Bash", "Read", "Write", "Edit", "Skill"]
6
+ ---
7
+
8
+ # Dev Job Resume
9
+
10
+ Wraps the **sp:spur-dev** skill.
11
+
12
+ ## Argument Flags
13
+
14
+ | Flag | Description | Default |
15
+ | --- | --- | --- |
16
+ | `--file <path>` | Markdown handoff file to read before continuing the remaining work. | required |
17
+
18
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
19
+
20
+ ## Usage
21
+
22
+ /sp:dev-job-resume --file <path>
23
+
24
+ ## Implementation
25
+
26
+ Follow [job-resume](../skills/spur-dev/references/dev-operations.md#11b-job-resume): validate the
27
+ handoff against current state, then continue through the existing owner of the recorded operation.
28
+
29
+ Skill(skill="sp:spur-dev", args="job-resume $ARGUMENTS")
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Plan a feature from a description — intake → feature create → AC generation → feature check gate → decomposition → batch-create (Design by default)
3
3
  role: planner
4
- argument-hint: "\"<description>\" [--feature <id>] [--parent <feature-id>] [--agent <inline|auto|name>] [--skip-design] [--auto] [--approve-taste]"
4
+ argument-hint: "\"<description>\" [--feature <id>] [--parent <feature-id>] [--skip-design] [--agent <inline|auto|name>] [--auto]"
5
5
  allowed-tools: ["Bash", "Read", "Skill", "AskUserQuestion"]
6
6
  ---
7
7
 
@@ -18,8 +18,7 @@ Wraps the **sp:spur-dev** skill.
18
18
  | `--parent` `<feature-id>` | Create under a parent feature. | omitted |
19
19
  | `--agent` `<inline\|auto\|name>` | Who runs the model-bearing planning. Omission and `inline` drive `idea-pipeline.yaml` in this session with zero external agent/workflow processes; `auto` tier-resolves an executor and a name pins one, both through the async workflow worker. | inline |
20
20
  | `--skip-design` | Omit the system-design hop. | off |
21
- | `--auto` | Skip objective HITL gates. | off |
22
- | `--approve-taste` | With --auto: skip design-approval pause. | off |
21
+ | `--auto` | Accept the pipeline's recommendation at every operator gate (same gate table as `/sp:dev-idea`). | off |
23
22
 
24
23
  For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
25
24
 
@@ -27,18 +26,18 @@ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag
27
26
 
28
27
  ```
29
28
  /sp:dev-plan "<description>"
30
- [--feature <id>] [--parent <feature-id>] [--agent <inline|auto|name>]
31
- [--auto] # skip objective HITL where the plan path supports it
32
- [--skip-design] # design package off (satellite + task Design)
33
- [--approve-taste] # with --auto: skip design-approval taste pause when applicable
29
+ [--feature <id>] [--parent <feature-id>]
30
+ [--skip-design] # design package off (satellite + task Design)
31
+ [--agent <inline|auto|name>]
32
+ [--auto] # no operator pauses; follow each gate's recommendation
34
33
  ```
35
34
 
36
35
  **Design package (unified with `/sp:dev-idea`):** Design is **on by default**. Default fills
37
36
  per-task `### Design` in the batch and the feature satellite when the seam heuristic fires
38
37
  (ties lean **design**). There is **no** `--design` force flag — only **`--skip-design`** opts out.
39
38
 
40
- **Taste re-entry:** `--approve-taste` is the same flag as on `dev-idea` (sets prior design approval
41
- for taste gates). Alias: `--design-approved` (prefer `--approve-taste`).
39
+ **Removed flags:** `--approve-taste` and `--design-approved` are folded into `--auto` (same
40
+ contract as `/sp:dev-idea`). If passed, ignore them with a one-line notice.
42
41
 
43
42
  ## Implementation
44
43
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- description: "Review code for a task or path — multi-dimensional review across functional traceability, SECUA quality, and architectural depth. With --triage: fix small findings directly, then file the rest as implement-ready tasks. Triggers: \"review this\", \"check the code\", \"SECUA review\", \"dev review\", \"audit this\", \"triage review findings\"."
2
+ description: "Review code for a task set or paths — multi-dimensional review across functional traceability, SECUA quality, and architectural depth. With --triage: fix small findings directly, then file the rest as implement-ready tasks. Triggers: \"review this\", \"check the code\", \"SECUA review\", \"dev review\", \"audit this\", \"triage review findings\"."
3
3
  role: reviewer
4
- argument-hint: "[<wbs|path>] [--agent <inline|auto|name>] [--focus <dims>] [--triage] [--worktree [<name>]]"
5
- allowed-tools: ["Bash", "Read", "Skill"]
4
+ argument-hint: "[--tasks <selector> | --feature <id>[,<id>] | --scope <path>[,<path>]] [--agent <inline|auto|name>] [--focus <dims>] [--triage] [--worktree [<name>]] [--auto]"
5
+ allowed-tools: ["Bash", "Read", "Skill", "Edit", "Write"]
6
6
  ---
7
7
 
8
8
  # Dev Review
@@ -13,19 +13,24 @@ Wraps the **sp:functional-review**, **sp:code-verification**, and **sp:code-impr
13
13
 
14
14
  | Flag | Description | Default |
15
15
  | --- | --- | --- |
16
- | `[<wbs\|path>]` | Task WBS or source path to review. | cwd |
16
+ | `--tasks <selector>` | Review a task set — batch selector grammar ([execution-batch.md § Step 1](../skills/spur-dev/references/execution-batch.md#step-1--selector-resolution-r1)): comma WBS list or `feature:<id>`; status pseudo-lists and `ready` are rejected for review (they select work to do, not work to review). Resolved once, frozen; one WBS-mode review per task, each writing its own merged `## Review`; the run ends with a combined summary table (WBS, verdict, P1/P2 counts). | — |
17
+ | `--feature <id>[,<id>]` | Sugar for the union of the `feature:<id>` sets — resolved once, frozen, then reviewed as `--tasks`. | — |
18
+ | `--scope <path>[,<path>]` | Advisory review of the tracked files under one or more paths: paths must exist (exit 2 otherwise), are normalized, duplicates dropped and nested paths collapse to the ancestor (`--scope apps,apps/cli` → `apps`); one sub-review per path, one merged report with a cross-path architecture pass; no task mutation. | — |
19
+ | `[<wbs\|path>]` | **Deprecated positional alias** (one release): a `^\d{4}$` token with a resolvable task → `--tasks <wbs>`; an existing path → `--scope <path>`; otherwise exit 2. Prints a deprecation warning naming the replacement. | — |
17
20
  | `--agent` `<inline\|auto\|name>` | Who runs the model-bearing review. | omit |
18
- | `--focus` `<dims>` | Review dimensions (functional / SECUA / architecture). | all |
19
- | `--triage` | After the review: fix small findings directly, file the rest as one or more implement-ready tasks. | off (report-only) |
20
- | `--worktree` `[<name>]` | Run the triage in an isolated git worktree; FF-merge on success, retain on failure. Bare `--worktree` creates a fresh tree; `--worktree <name>` adopts an existing worktree by name/path/branch. Requires `--triage`. | off |
21
+ | `--focus` `<dims>` | Review dimensions — vocabulary and skill routing: [code-verification/SKILL.md](../skills/code-verification/SKILL.md) review mode (SSOT). | all |
22
+ | `--triage` | After the review: bucket findings across all targets once (identical `file:line` findings deduped), fix small findings directly, file the rest as one or more implement-ready tasks. | off (report-only) |
23
+ | `--worktree` `[<name>]` | Run the triage in an isolated git worktree; FF-merge on success, retain on failure. Bare `--worktree` creates a fresh tree; `--worktree <name>` adopts an existing worktree by name/path/branch. Multi-target aware (below). Requires `--triage`. | off |
24
+ | `--auto` | Skip objective HITL confirmations. | off |
21
25
 
22
26
  For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
23
27
 
24
28
  ## Usage
25
29
 
26
30
  ```
27
- /sp:dev-review [<wbs|path>] [--agent <inline|auto|name>] [--focus <dims>] [--triage] [--worktree [<name>]]
28
- /sp:dev-review scripts --triage
31
+ /sp:dev-review [--tasks <selector> | --feature <id>[,<id>] | --scope <path>[,<path>]] [--agent <inline|auto|name>] [--focus <dims>] [--triage] [--worktree [<name>]] [--auto]
32
+ /sp:dev-review --tasks 0962,0963 --triage
33
+ /sp:dev-review --scope apps,packages,plugins,scripts
29
34
  /sp:dev-review 0962 --triage --worktree
30
35
  ```
31
36
 
@@ -34,10 +39,14 @@ Put the target first: a bare token after `--worktree` is read as the worktree na
34
39
  ## Implementation
35
40
 
36
41
  - Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
37
- - WBS mode (`<wbs>`): `Skill(skill="sp:functional-review", args="<wbs> $ARGUMENTS")` + `Skill(skill="sp:code-verification", args="review $ARGUMENTS")` + `Skill(skill="sp:code-improvement", args="<wbs> $ARGUMENTS")` (functional traceability + SECUA framework + architectural depth; the three skills return review fragments and the coordinator (`sp:super-reviewer`) writes the combined `## Review` — F92 0593 R1)
38
- - Path mode (`<path>`): `Skill(skill="sp:code-verification", args="review $ARGUMENTS")` + `Skill(skill="sp:code-improvement", args="<path> $ARGUMENTS")` (advisory SECUA quality + architectural depth; performs no task mutation)
39
- - `--triage`: after the review returns, run the triage protocol in [dev-operations.md § 2. review](../skills/spur-dev/references/dev-operations.md#2-review) **inline in this session** — the review skills and `sp:super-reviewer` stay report-only.
42
+ - **Selector validation (before any review runs).** Exactly one target kind per invocation: `--tasks`, `--feature`, or `--scope`. More than one → exit 2 naming the conflicting selectors (a positional beside an explicit selector is a second target kind → exit 2); none (and no positional) → exit 2 with usage — there is no implicit `cwd` target. The set is resolved once and frozen through the [execution-batch.md § Step 1](../skills/spur-dev/references/execution-batch.md#step-1--selector-resolution-r1) batch resolver — no review-specific parser; `--feature <id>[,<id>]` is sugar for the union of the `feature:<id>` sets.
43
+ - **WBS mode (per task target):** `Skill(skill="sp:functional-review", args="<wbs> $FLAGS")` + `Skill(skill="sp:code-verification", args="review <wbs> $FLAGS")` + `Skill(skill="sp:code-improvement", args="<wbs> $FLAGS")` (functional traceability + SECUA framework + architectural depth — each skill receives its one resolved WBS exactly once plus `$FLAGS` = `$ARGUMENTS` minus the selector (`--tasks`/`--feature`/`--scope` or positional) and its value, never the raw selector, and returns a review fragment only — F92 0593 R1)
44
+ - **Task fan-out (`--tasks` / `--feature`).** One WBS-mode review per task in the frozen set. Tasks in `backlog`/`todo`/`blocked` are reported NOT-STARTED and skipped (§ 3a outcome vocabulary); a per-task failure does not stop the remaining tasks. Each implemented task gets its own merged `## Review`; the run ends with a combined summary table (WBS, verdict, P1/P2 counts).
45
+ - Coordinator = this session. No `sp:super-reviewer` subagent is dispatched: act as the review coordinator defined in [agents/super-reviewer.md](../agents/super-reviewer.md) — merge the fragments per its Output Format (native `P1`–`P4` priority cells, section-relative headings) and, for every task target (standalone or pipeline), write that task's combined `## Review` via `spur task update <wbs> --section Review --from-file`. Path mode emits advisory output only.
46
+ - **Path mode (per path target):** `Skill(skill="sp:code-verification", args="review <path> $FLAGS")` + `Skill(skill="sp:code-improvement", args="<path> $FLAGS")` (advisory SECUA quality + architectural depth — one normalized path forwarded once plus `$FLAGS`; performs no task mutation). Under `--scope <path>[,<path>]`: paths must exist (exit 2 otherwise), are normalized, duplicates dropped and nested paths collapse to the ancestor (`--scope apps,apps/cli` → `apps`); each surviving path gets a sub-review (Step 3p path scope), eligible for native-subagent dispatch per [dispatch-surface.md](../skills/parallel-execution/references/dispatch-surface.md); the coordinator merges the sub-reviews, runs **one** cross-path architecture pass (`sp:code-improvement` over the inter-path imports), and emits **one** advisory report. No task mutation.
47
+ - **Positional alias (deprecated).** A positional `<wbs|path>` is accepted for one release: a `^\d{4}$` token with a resolvable task behaves as `--tasks <wbs>`; an existing path as `--scope <path>`; otherwise exit 2. Print a deprecation warning naming the replacement selector; removal is a follow-up.
48
+ - `--triage`: after the review returns, run the triage protocol in [dev-operations.md § 2. review](../skills/spur-dev/references/dev-operations.md#2-review) **inline in this session** — the review skills and `sp:super-reviewer` stay report-only. With multiple targets, bucket the findings across all targets once (identical `file:line` findings deduped before bucketing). `Edit`/`Write` in `allowed-tools` exist only for these direct fixes.
40
49
  - Without `--worktree`, every write lands in the current working tree on the current branch: no branch creation, no checkout, no commit.
41
- - `--worktree [<name>]`: the [execution-batch.md § Worktree isolation](../skills/spur-dev/references/execution-batch.md#worktree-isolation---worktree-name) lifecycle as a run of one (marker `command` = `dev-review`, `selector` = the target). Rejected without `--triage`.
50
+ - `--worktree [<name>]`: the [execution-batch.md § Worktree isolation](../skills/spur-dev/references/execution-batch.md#worktree-isolation---worktree-name) lifecycle as a run of one (marker `command` = `dev-review`, `selector` = the full normalized target list). Admission requires every target to resolve before the tree is cut. Branch slug: `sp/review-<first>-and-<N>-<short-id>` for a multi-target run (N = target count), `sp/review-<slug>-<short-id>` for a single target (the WBS or the path's basename). Rejected without `--triage`.
42
51
  While it runs, fixes and filed tasks land in the worktree copy; the main tree shows them only after the FF-merge.
43
52
  - `--fix`: Deprecated (still accepted: no-op + warning; route remediation to `--triage` or `/sp:dev-verify --fix`). **`--next` removed** (feature H8, 2026-07-31) — it was a deprecated no-op; route progression to `/sp:dev-next`. **was: `--next` deprecated no-op.**
@@ -49,7 +49,7 @@ the FF-merge on success. Expected, not a bug.
49
49
 
50
50
  **`--next` (per-task lifecycle chaining):** `--next`
51
51
  is chain-to-completion with propagation. For each task whose verdict is **PASS**, the chain's first
52
- hop transitions `testing → done` through the FSM with the `--strict-core` Review L3 guard honored;
52
+ hop transitions `testing → done` through the FSM with the `--as done` Review L3 guard honored;
53
53
  a task whose verdict is **PARTIAL** or **FAIL** does **not** transition (it stays `testing` as
54
54
  review-pending) — that task's chain halts, reporting the verdict. One task's non-PASS never blocks
55
55
  another task's transition — each task's verdict is its own, and each task's chain is independent.
@@ -7,7 +7,7 @@ allowed-tools: ["Bash", "Read", "Write", "Skill"]
7
7
 
8
8
  # Spur Init
9
9
 
10
- Wraps **spur init** (deterministic scaffold) + **sp:doc-evolve** (project customization).
10
+ Wraps **spur self init** (deterministic scaffold) + **sp:doc-evolve** (project customization).
11
11
 
12
12
  ## Usage
13
13
 
@@ -16,7 +16,7 @@ Wraps **spur init** (deterministic scaffold) + **sp:doc-evolve** (project custom
16
16
  ## Implementation
17
17
 
18
18
  ```bash
19
- spur init --json $ARGUMENTS
19
+ spur self init --json $ARGUMENTS
20
20
  ```
21
21
  - Parse the JSON envelope once and retain it as `scaffoldResult`; summarize its created/skipped files in one block.
22
22
  - Customize (Phase 2): `Skill(skill="sp:doc-evolve", args="customize --project <scaffoldResult.project>")`.