@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/config/plugin-scripts.json +0 -54
- package/config/rules/boundary/sp-script-placement.yaml +19 -0
- package/config/rules/strict/runtime-boundaries.yaml +6 -0
- package/config/rules/structure/test-location.yaml +2 -0
- package/config/rules/typescript/no-syscall-emulation-in-boundary-mock.yaml +1 -1
- package/config/rules/typescript/output-boundaries.yaml +15 -2
- package/config/script-placement-baseline.json +51 -0
- package/config/templates/AGENTS.md +3 -3
- package/config/workflows/feature-verification.yaml +1 -1
- package/config/workflows/history-anatomy.yaml +23 -11
- package/config/workflows/idea-pipeline.yaml +80 -85
- package/config/workflows/pr-review.yaml +18 -9
- package/config/workflows/task-pipeline.yaml +42 -95
- package/config/workflows/wrapup-pipeline.yaml +91 -38
- package/package.json +2 -2
- package/plugins/sp/README.md +14 -10
- package/plugins/sp/agents/super-reviewer.md +43 -18
- package/plugins/sp/commands/dev-fixgha.md +83 -0
- package/plugins/sp/commands/dev-gitmsg.md +8 -6
- package/plugins/sp/commands/dev-gtd.md +2 -2
- package/plugins/sp/commands/dev-idea.md +22 -12
- package/plugins/sp/commands/dev-job-dump.md +29 -0
- package/plugins/sp/commands/dev-job-resume.md +29 -0
- package/plugins/sp/commands/dev-plan.md +8 -9
- package/plugins/sp/commands/dev-review.md +22 -13
- package/plugins/sp/commands/dev-verifyall.md +1 -1
- package/plugins/sp/commands/spur-init.md +2 -2
- package/plugins/sp/lib/history-anatomy.generated.d.mts +112 -0
- package/plugins/sp/lib/history-anatomy.generated.mjs +686 -0
- package/plugins/sp/lib/idea-handoff.generated.mjs +5 -4
- package/plugins/sp/lib/inline-run.generated.d.mts +11 -0
- package/plugins/sp/lib/inline-run.generated.mjs +39 -13
- package/plugins/sp/lib/quality-gate.generated.d.mts +104 -0
- package/plugins/sp/lib/quality-gate.generated.mjs +445 -0
- package/plugins/sp/lib/residual-scan.generated.d.mts +63 -0
- package/plugins/sp/lib/residual-scan.generated.mjs +226 -0
- package/plugins/sp/lib/spur-bin.ts +36 -0
- package/plugins/sp/lib/step-profile.generated.d.mts +71 -0
- package/plugins/sp/lib/step-profile.generated.mjs +174 -0
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/roles.md +3 -3
- package/plugins/sp/scripts/feature-verification-steps.mjs +14 -1
- package/plugins/sp/scripts/feature-verification-steps.ts +14 -1
- package/plugins/sp/scripts/history-anatomy-cache.mjs +20 -19
- package/plugins/sp/scripts/history-anatomy-cache.ts +23 -928
- package/plugins/sp/scripts/inline-run-setup.mjs +85 -320
- package/plugins/sp/scripts/inline-run-setup.ts +104 -667
- package/plugins/sp/scripts/quality-gate.mjs +46 -24
- package/plugins/sp/scripts/quality-gate.ts +13 -659
- package/plugins/sp/scripts/residual-scan.mjs +179 -174
- package/plugins/sp/scripts/residual-scan.ts +125 -517
- package/plugins/sp/scripts/script-root.mjs +5 -1
- package/plugins/sp/scripts/script-root.ts +5 -1
- package/plugins/sp/scripts/workflow-step-profile.mjs +25 -17
- package/plugins/sp/scripts/workflow-step-profile.ts +21 -315
- package/plugins/sp/scripts/wrapup-drift-probe.mjs +8 -2
- package/plugins/sp/scripts/wrapup-drift-probe.ts +3 -2
- package/plugins/sp/scripts/wrapup-steps.mjs +72 -33
- package/plugins/sp/scripts/wrapup-steps.ts +128 -37
- package/plugins/sp/skills/code-improvement/SKILL.md +5 -4
- package/plugins/sp/skills/code-verification/SKILL.md +34 -9
- package/plugins/sp/skills/code-verification/references/verdict-schema.md +3 -3
- package/plugins/sp/skills/functional-review/SKILL.md +7 -4
- package/plugins/sp/skills/functional-review/references/verdict-schema.md +1 -1
- package/plugins/sp/skills/history-anatomy/references/modes.md +2 -1
- package/plugins/sp/skills/next-feature/references/handoff-routing.md +1 -1
- package/plugins/sp/skills/next-router/references/routing-table.md +1 -1
- package/plugins/sp/skills/source-driven-development/SKILL.md +11 -0
- package/plugins/sp/skills/spur-cli/SKILL.md +3 -3
- package/plugins/sp/skills/spur-cli/references/agent.md +10 -10
- package/plugins/sp/skills/spur-cli/references/features.md +17 -6
- package/plugins/sp/skills/spur-cli/references/init.md +17 -16
- package/plugins/sp/skills/spur-cli/references/self.md +3 -2
- package/plugins/sp/skills/spur-cli/references/serve.md +10 -10
- package/plugins/sp/skills/spur-cli/references/tasks/section-editing.md +9 -5
- package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +21 -6
- package/plugins/sp/skills/spur-cli/references/tasks.md +14 -8
- package/plugins/sp/skills/spur-cli/references/workflows.md +17 -14
- package/plugins/sp/skills/spur-dev/SKILL.md +2 -0
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +4 -3
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +14 -10
- package/plugins/sp/skills/spur-dev/references/decision-brief.md +1 -1
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +165 -75
- package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +7 -5
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +84 -39
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +8 -12
- package/plugins/sp/skills/spur-dev/references/feature-link-helper.md +3 -3
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +40 -21
- package/plugins/sp/skills/spur-dev/references/gate-checklists.md +19 -19
- package/plugins/sp/skills/spur-dev/references/idea-evaluation.md +4 -3
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +72 -15
- package/plugins/sp/skills/spur-doctor/SKILL.md +1 -1
- package/plugins/sp/skills/sys-architecture/SKILL.md +3 -2
- package/spur.js +4461 -2085
- package/web/_astro/{BoardApp.Cpxntzad.js → BoardApp.Bmv5WkJ9.js} +1 -1
- package/web/_astro/BoardApp.vveLOdDq.js +322 -0
- package/web/_astro/{TaskDetail.C5bW4WGV.js → TaskDetail.IKc3uDYV.js} +1 -1
- package/web/_astro/{arc.CyjRvNMY.js → arc.C63Ufg35.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.B4lWRzJA.js → architectureDiagram-3BPJPVTR.CP8Hyldk.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.Be38USQ2.js → blockDiagram-GPEHLZMM.Bo_48MRA.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.DT9Fj5Qx.js → c4Diagram-AAUBKEIU.Ch61sw-O.js} +1 -1
- package/web/_astro/channel.BKCmJpWM.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.SeSBWLg5.js → chunk-2J33WTMH.CHpzS7xf.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.DoO4VE14.js → chunk-4BX2VUAB.DzMNNWIw.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.DrmTFA53.js → chunk-55IACEB6.BqPrDw_Q.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.Bi-TUb_V.js → chunk-727SXJPM.ZzBHhNw-.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.B-xp8Uhi.js → chunk-AQP2D5EJ.1_O_LLkx.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.DGWrDnUU.js → chunk-FMBD7UC4.GS4UHg7_.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM._BagvPDy.js → chunk-ND2GUHAM.BnqotN4g.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.VOboYWQ0.js → chunk-QZHKN3VN.Ghuh8zoJ.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.D_apfHS7.js → classDiagram-4FO5ZUOK.BW9vC3zg.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.D_apfHS7.js → classDiagram-v2-Q7XG4LA2.BW9vC3zg.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.DNLU_L-x.js → cose-bilkent-S5V4N54A.D6jNC0ti.js} +1 -1
- package/web/_astro/{cynefin-OW5HDTMX.D8borhV-.js → cynefin-OW5HDTMX.BOGoCs4L.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.Uc0lvjcV.js → dagre-BM42HDAG.8iU5VcWi.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.DDIxtDBo.js → diagram-2AECGRRQ.CVt88HwH.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.DVoDnD3H.js → diagram-5GNKFQAL.C9HxUUMl.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.CRubTJ-0.js → diagram-KO2AKTUF.4ywkQN3t.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.m9SeYcXQ.js → diagram-LMA3HP47.C48A6gpz.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.C6s2ZjV5.js → diagram-OG6HWLK6.DxFieQW4.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.nSzr5KTj.js → erDiagram-TEJ5UH35.CtjtQqYs.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.DrZcys16.js → flowDiagram-I6XJVG4X.C5zAiahU.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.Do4M1b-K.js → ganttDiagram-6RSMTGT7.D_L6zsny.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.BWc9oJ4l.js → gitGraphDiagram-PVQCEYII.Ignnrk3V.js} +1 -1
- package/web/_astro/index.CbNz17Sx.css +1 -0
- package/web/_astro/{infoDiagram-5YYISTIA.BIdOctFk.js → infoDiagram-5YYISTIA.DLv8-P5u.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.CV5SuG2t.js → ishikawaDiagram-YF4QCWOH.p0OTpwFO.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.CxE-rEJ-.js → journeyDiagram-JHISSGLW.CIaBt-DD.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.BPRdKWs_.js → kanban-definition-UN3LZRKU.DGySIntq.js} +1 -1
- package/web/_astro/{linear.zRsuuDTE.js → linear.BATV4RXu.js} +1 -1
- package/web/_astro/{mermaid.core.jAJTcMKc.js → mermaid.core.DzkwM3VX.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.BffJxfCr.js → mindmap-definition-RKZ34NQL.3piBRRzA.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.CacwWaE3.js → pieDiagram-4H26LBE5.DUNueLub.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.hXELD06-.js → quadrantDiagram-W4KKPZXB.9bihVbrt.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.DdEbPcqT.js → requirementDiagram-4Y6WPE33.CkjsC-YT.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.DgaDocKv.js → sankeyDiagram-5OEKKPKP.Dbq4vaoQ.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.B0KScnAu.js → sequenceDiagram-3UESZ5HK.BivrH99P.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.CV9M_WNc.js → stateDiagram-AJRCARHV.CqLQ1Vzz.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.BOAo74Et.js → stateDiagram-v2-BHNVJYJU.DvvoLD3b.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.CqqepUMe.js → timeline-definition-PNZ67QCA.B-KR78gv.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.DDqe4dOG.js → vennDiagram-CIIHVFJN.Ck0Eieb5.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.B3R9OPdO.js → wardleyDiagram-YWT4CUSO.CRfdd_do.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.B3SvgXpQ.js → xychartDiagram-2RQKCTM6.Ck_Jxk9C.js} +1 -1
- package/web/index.html +2 -2
- package/plugins/sp/lib/artifact-digest.generated.d.mts +0 -7
- package/plugins/sp/lib/artifact-digest.generated.mjs +0 -48
- package/plugins/sp/scripts/feature-sync-bounded.mjs +0 -301
- package/plugins/sp/scripts/feature-sync-bounded.ts +0 -481
- package/plugins/sp/scripts/idea-coverage-check.ts +0 -168
- package/plugins/sp/scripts/inline-pipeline-parity-check.ts +0 -298
- package/plugins/sp/scripts/record-feature-sync.mjs +0 -63
- package/plugins/sp/scripts/record-feature-sync.ts +0 -84
- package/plugins/sp/scripts/script-contract-check.ts +0 -506
- package/plugins/sp/scripts/stage-registry-adapter.ts +0 -1533
- package/plugins/sp/scripts/surface-drift-inventory.ts +0 -989
- package/plugins/sp/scripts/task-evidence-precheck.ts +0 -189
- package/plugins/sp/scripts/task-size-precheck.ts +0 -212
- package/plugins/sp/scripts/transition-shim-check.ts +0 -238
- package/plugins/sp/scripts/validate-commands.ts +0 -689
- package/plugins/sp/scripts/validate-flag-contracts.ts +0 -890
- package/plugins/sp/scripts/verify-answer-lint.ts +0 -549
- package/web/_astro/BoardApp.BxJuwD7I.js +0 -191
- package/web/_astro/channel.CI6N_tCg.js +0 -1
- package/web/_astro/index.CENnIEqT.css +0 -1
package/plugins/sp/README.md
CHANGED
|
@@ -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
|
|
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) —
|
|
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 —
|
|
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 `
|
|
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` |
|
|
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`
|
|
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
|
|
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 (
|
|
48
|
-
emit it as advisory output (
|
|
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
|
|
61
|
-
|
|
62
|
-
|
|
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 |
|
|
76
|
-
| Other platforms |
|
|
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:
|
|
98
|
-
|
|
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
|
-
- [ ]
|
|
103
|
-
`spur task update <wbs> --section Review --from-file
|
|
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
|
|
143
|
-
`### Review` section, so every heading inside it MUST be `####` or deeper. A
|
|
144
|
-
the body becomes a new top-level task section and corrupts the document.
|
|
145
|
-
(emitted as output, not written to a task) the same body may be rendered one level
|
|
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
|
|
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
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
67
|
-
|
|
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>\"
|
|
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
|
-
| `--
|
|
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
|
-
[--
|
|
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
|
-
**
|
|
41
|
-
|
|
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>] [--
|
|
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` |
|
|
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>]
|
|
31
|
-
[--
|
|
32
|
-
[--
|
|
33
|
-
[--
|
|
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
|
-
**
|
|
41
|
-
|
|
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
|
|
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: "[<
|
|
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
|
-
|
|
|
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
|
|
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 [<
|
|
28
|
-
/sp:dev-review
|
|
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
|
-
-
|
|
38
|
-
-
|
|
39
|
-
- `--
|
|
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 `--
|
|
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>")`.
|