@gobing-ai/spur 0.3.41 → 0.3.42

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 (185) hide show
  1. package/.claude-plugin/marketplace.json +15 -0
  2. package/README.md +15 -1
  3. package/config/templates/AGENTS.md +5 -3
  4. package/config/workflows/task-pipeline.yaml +103 -12
  5. package/package.json +15 -12
  6. package/plugins/README.md +655 -0
  7. package/plugins/sp/README.md +621 -0
  8. package/plugins/sp/agents/expert-spur.md +109 -0
  9. package/plugins/sp/agents/super-coder.md +126 -0
  10. package/plugins/sp/agents/super-planner.md +283 -0
  11. package/plugins/sp/agents/super-reviewer.md +154 -0
  12. package/plugins/sp/commands/dev-arch.md +30 -0
  13. package/plugins/sp/commands/dev-brainstorm.md +40 -0
  14. package/plugins/sp/commands/dev-changelog.md +28 -0
  15. package/plugins/sp/commands/dev-daily.md +29 -0
  16. package/plugins/sp/commands/dev-debug.md +29 -0
  17. package/plugins/sp/commands/dev-dogfood.md +33 -0
  18. package/plugins/sp/commands/dev-featurechange.md +130 -0
  19. package/plugins/sp/commands/dev-find-conflict.md +51 -0
  20. package/plugins/sp/commands/dev-find-issue.md +76 -0
  21. package/plugins/sp/commands/dev-find-next.md +60 -0
  22. package/plugins/sp/commands/dev-fixall.md +33 -0
  23. package/plugins/sp/commands/dev-gitmsg.md +28 -0
  24. package/plugins/sp/commands/dev-gtd.md +97 -0
  25. package/plugins/sp/commands/dev-handover.md +26 -0
  26. package/plugins/sp/commands/dev-idea.md +50 -0
  27. package/plugins/sp/commands/dev-next.md +31 -0
  28. package/plugins/sp/commands/dev-parallel.md +30 -0
  29. package/plugins/sp/commands/dev-plan.md +46 -0
  30. package/plugins/sp/commands/dev-refine.md +48 -0
  31. package/plugins/sp/commands/dev-refineall.md +65 -0
  32. package/plugins/sp/commands/dev-refresh.md +32 -0
  33. package/plugins/sp/commands/dev-reverse.md +32 -0
  34. package/plugins/sp/commands/dev-review.md +31 -0
  35. package/plugins/sp/commands/dev-run.md +63 -0
  36. package/plugins/sp/commands/dev-runall.md +80 -0
  37. package/plugins/sp/commands/dev-simplify.md +39 -0
  38. package/plugins/sp/commands/dev-unit.md +29 -0
  39. package/plugins/sp/commands/dev-verify.md +48 -0
  40. package/plugins/sp/commands/dev-verifyall.md +72 -0
  41. package/plugins/sp/commands/dev-wrap.md +30 -0
  42. package/plugins/sp/commands/dev-wrapall.md +33 -0
  43. package/plugins/sp/commands/rule-add.md +18 -0
  44. package/plugins/sp/commands/rule-refine.md +18 -0
  45. package/plugins/sp/commands/rule-scan.md +18 -0
  46. package/plugins/sp/commands/spur-init.md +22 -0
  47. package/plugins/sp/commands/workflow-add.md +18 -0
  48. package/plugins/sp/commands/workflow-refine.md +18 -0
  49. package/plugins/sp/hooks/agent-hint.ts +60 -0
  50. package/plugins/sp/hooks/careful-guard.ts +147 -0
  51. package/plugins/sp/hooks/context-post-tool.ts +325 -0
  52. package/plugins/sp/hooks/context-session-start.ts +182 -0
  53. package/plugins/sp/hooks/context-session-stop.ts +95 -0
  54. package/plugins/sp/hooks/hooks.json +51 -0
  55. package/plugins/sp/hooks/pi/guard-extension.ts +341 -0
  56. package/plugins/sp/hooks/task-write-guard.ts +84 -0
  57. package/plugins/sp/plugin.json +8 -0
  58. package/plugins/sp/scripts/batch-preflight.ts +204 -0
  59. package/plugins/sp/scripts/daily-summary/daily-summary.ts +606 -0
  60. package/plugins/sp/scripts/daily-summary/logger.ts +28 -0
  61. package/plugins/sp/scripts/dogfood-testing/detect-pipeline-driving.ts +363 -0
  62. package/plugins/sp/scripts/dogfood-testing/validate-report.ts +168 -0
  63. package/plugins/sp/scripts/feature-sync-bounded.ts +451 -0
  64. package/plugins/sp/scripts/stage-registry-adapter.ts +1341 -0
  65. package/plugins/sp/scripts/task-size-precheck.ts +202 -0
  66. package/plugins/sp/scripts/validate-commands.ts +651 -0
  67. package/plugins/sp/scripts/validate-flag-contracts.ts +875 -0
  68. package/plugins/sp/skills/brainstorm/SKILL.md +361 -0
  69. package/plugins/sp/skills/brainstorm/agents/openai.yaml +14 -0
  70. package/plugins/sp/skills/brainstorm/examples/ideation-example.md +209 -0
  71. package/plugins/sp/skills/brainstorm/metadata.openclaw +7 -0
  72. package/plugins/sp/skills/brainstorm/references/grilling-interview.md +68 -0
  73. package/plugins/sp/skills/brainstorm/references/workflows.md +255 -0
  74. package/plugins/sp/skills/branch-workflow/SKILL.md +109 -0
  75. package/plugins/sp/skills/branch-workflow/references/branch-lifecycle.md +69 -0
  76. package/plugins/sp/skills/branch-workflow/references/worktree-patterns.md +100 -0
  77. package/plugins/sp/skills/code-implementation/SKILL.md +176 -0
  78. package/plugins/sp/skills/code-implementation/references/debugging.md +64 -0
  79. package/plugins/sp/skills/code-implementation/references/implementation-patterns.md +113 -0
  80. package/plugins/sp/skills/code-improvement/SKILL.md +231 -0
  81. package/plugins/sp/skills/code-improvement/references/deepening-signals.md +205 -0
  82. package/plugins/sp/skills/code-review/SKILL.md +112 -0
  83. package/plugins/sp/skills/code-review/references/receiving-code-review.md +70 -0
  84. package/plugins/sp/skills/code-review/references/review-lenses.md +117 -0
  85. package/plugins/sp/skills/code-review/references/self-review-checklist.md +53 -0
  86. package/plugins/sp/skills/code-review/references/verification-before-completion.md +68 -0
  87. package/plugins/sp/skills/code-simplification/SKILL.md +225 -0
  88. package/plugins/sp/skills/code-testing/SKILL.md +108 -0
  89. package/plugins/sp/skills/code-testing/references/stacks/bun-ts.md +165 -0
  90. package/plugins/sp/skills/code-testing/references/stacks/go.md +88 -0
  91. package/plugins/sp/skills/code-testing/references/stacks/python.md +117 -0
  92. package/plugins/sp/skills/code-testing/references/test-loop-breaker.md +37 -0
  93. package/plugins/sp/skills/code-testing/references/test-output-discipline.md +52 -0
  94. package/plugins/sp/skills/code-testing/references/unit-testing.md +212 -0
  95. package/plugins/sp/skills/code-verification/SKILL.md +535 -0
  96. package/plugins/sp/skills/code-verification/references/code-improvement.md +39 -0
  97. package/plugins/sp/skills/code-verification/references/secu-review.md +94 -0
  98. package/plugins/sp/skills/code-verification/references/verdict-schema.md +141 -0
  99. package/plugins/sp/skills/conflict-finding/SKILL.md +254 -0
  100. package/plugins/sp/skills/conflict-finding/references/authority-resolution.md +258 -0
  101. package/plugins/sp/skills/conflict-finding/references/comparison-protocol.md +277 -0
  102. package/plugins/sp/skills/conflict-finding/references/finding-contract.md +346 -0
  103. package/plugins/sp/skills/conflict-finding/references/remediation-routing.md +276 -0
  104. package/plugins/sp/skills/daily-summary/SKILL.md +171 -0
  105. package/plugins/sp/skills/daily-summary/agents/openai.yaml +13 -0
  106. package/plugins/sp/skills/doc-evolve/SKILL.md +175 -0
  107. package/plugins/sp/skills/doc-evolve/references/operations.md +93 -0
  108. package/plugins/sp/skills/dogfood-testing/SKILL.md +608 -0
  109. package/plugins/sp/skills/dogfood-testing/references/monitor-ledger.md +211 -0
  110. package/plugins/sp/skills/dogfood-testing/references/report-template.md +351 -0
  111. package/plugins/sp/skills/doubt-driven-development/SKILL.md +136 -0
  112. package/plugins/sp/skills/functional-review/SKILL.md +364 -0
  113. package/plugins/sp/skills/functional-review/references/verdict-schema.md +133 -0
  114. package/plugins/sp/skills/indexed-context/SKILL.md +164 -0
  115. package/plugins/sp/skills/issue-finding/SKILL.md +424 -0
  116. package/plugins/sp/skills/issue-finding/agents/openai.yaml +15 -0
  117. package/plugins/sp/skills/issue-finding/examples/expected-findings.json +27 -0
  118. package/plugins/sp/skills/issue-finding/examples/session-test-loop.jsonl +23 -0
  119. package/plugins/sp/skills/issue-finding/references/session-formats.md +121 -0
  120. package/plugins/sp/skills/next-feature/SKILL.md +125 -0
  121. package/plugins/sp/skills/next-feature/references/handoff-routing.md +92 -0
  122. package/plugins/sp/skills/next-feature/references/proposal-contract.md +49 -0
  123. package/plugins/sp/skills/next-feature/references/ranking-rubric.md +52 -0
  124. package/plugins/sp/skills/next-feature/references/signal-derivation.md +67 -0
  125. package/plugins/sp/skills/next-router/SKILL.md +181 -0
  126. package/plugins/sp/skills/next-router/references/messages.md +90 -0
  127. package/plugins/sp/skills/next-router/references/routing-table.md +216 -0
  128. package/plugins/sp/skills/parallel-execution/SKILL.md +148 -0
  129. package/plugins/sp/skills/parallel-execution/references/dispatch-surface.md +100 -0
  130. package/plugins/sp/skills/parallel-execution/references/fan-out-patterns.md +101 -0
  131. package/plugins/sp/skills/parallel-execution/references/result-synthesis.md +94 -0
  132. package/plugins/sp/skills/reverse-engineering/SKILL.md +375 -0
  133. package/plugins/sp/skills/reverse-engineering/agents/openai.yaml +18 -0
  134. package/plugins/sp/skills/source-driven-development/SKILL.md +124 -0
  135. package/plugins/sp/skills/spec-decomposition/SKILL.md +117 -0
  136. package/plugins/sp/skills/spec-decomposition/references/decomposition.md +539 -0
  137. package/plugins/sp/skills/spur-cli/SKILL.md +133 -0
  138. package/plugins/sp/skills/spur-cli/references/agent.md +179 -0
  139. package/plugins/sp/skills/spur-cli/references/features/acceptance-criteria.md +82 -0
  140. package/plugins/sp/skills/spur-cli/references/features/hierarchy-mece.md +177 -0
  141. package/plugins/sp/skills/spur-cli/references/features/roadmap-priority.md +84 -0
  142. package/plugins/sp/skills/spur-cli/references/features/verbs.md +122 -0
  143. package/plugins/sp/skills/spur-cli/references/features.md +234 -0
  144. package/plugins/sp/skills/spur-cli/references/init.md +119 -0
  145. package/plugins/sp/skills/spur-cli/references/message.md +98 -0
  146. package/plugins/sp/skills/spur-cli/references/rules/authoring-rules.md +212 -0
  147. package/plugins/sp/skills/spur-cli/references/rules/fine-tuning.md +148 -0
  148. package/plugins/sp/skills/spur-cli/references/rules/operations.md +228 -0
  149. package/plugins/sp/skills/spur-cli/references/rules/validation-and-extension.md +129 -0
  150. package/plugins/sp/skills/spur-cli/references/rules.md +209 -0
  151. package/plugins/sp/skills/spur-cli/references/serve.md +58 -0
  152. package/plugins/sp/skills/spur-cli/references/tasks/l3-guard-cheatsheet.md +98 -0
  153. package/plugins/sp/skills/spur-cli/references/tasks/section-editing.md +95 -0
  154. package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +361 -0
  155. package/plugins/sp/skills/spur-cli/references/tasks.md +278 -0
  156. package/plugins/sp/skills/spur-cli/references/team.md +133 -0
  157. package/plugins/sp/skills/spur-cli/references/workflows/authoring-workflows.md +226 -0
  158. package/plugins/sp/skills/spur-cli/references/workflows/operations.md +211 -0
  159. package/plugins/sp/skills/spur-cli/references/workflows/validation-and-extension.md +129 -0
  160. package/plugins/sp/skills/spur-cli/references/workflows.md +355 -0
  161. package/plugins/sp/skills/spur-dev/SKILL.md +224 -0
  162. package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +196 -0
  163. package/plugins/sp/skills/spur-dev/references/cross-cutting.md +664 -0
  164. package/plugins/sp/skills/spur-dev/references/decision-brief.md +80 -0
  165. package/plugins/sp/skills/spur-dev/references/dev-operations.md +546 -0
  166. package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +164 -0
  167. package/plugins/sp/skills/spur-dev/references/execution-batch.md +727 -0
  168. package/plugins/sp/skills/spur-dev/references/execution-workflow.md +350 -0
  169. package/plugins/sp/skills/spur-dev/references/feature-link-helper.md +191 -0
  170. package/plugins/sp/skills/spur-dev/references/flag-glossary.md +417 -0
  171. package/plugins/sp/skills/spur-dev/references/gate-checklists.md +171 -0
  172. package/plugins/sp/skills/spur-dev/references/glossary.md +95 -0
  173. package/plugins/sp/skills/spur-dev/references/idea-evaluation.md +80 -0
  174. package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +88 -0
  175. package/plugins/sp/skills/spur-dev/references/planning-workflow.md +302 -0
  176. package/plugins/sp/skills/spur-dev/references/product-planning.md +206 -0
  177. package/plugins/sp/skills/spur-dev/references/section-batching.md +24 -0
  178. package/plugins/sp/skills/sys-architecture/SKILL.md +155 -0
  179. package/plugins/sp/skills/sys-architecture/references/decision-method.md +137 -0
  180. package/plugins/sp/skills/sys-architecture/references/upkeep-survey.md +75 -0
  181. package/plugins/sp/skills/sys-debugging/SKILL.md +228 -0
  182. package/plugins/sp/skills/sys-debugging/references/debugging-protocol.md +62 -0
  183. package/plugins/sp/skills/test-driven-development/SKILL.md +248 -0
  184. package/plugins/sp/skills/wayfinder/SKILL.md +292 -0
  185. package/spur.js +6093 -5180
@@ -0,0 +1,63 @@
1
+ ---
2
+ description: Run a task — full pipeline (precheck→implement→test→review→approve→verify→record→done) or single-step (implement)
3
+ argument-hint: "<wbs> [--mode <full|implement>] [--agent <inline|auto|name>] [--auto] [--next] [--wrap] [--continue]"
4
+ allowed-tools: ["Bash", "Read", "Write", "Edit", "Skill"]
5
+ ---
6
+
7
+ # Dev Run
8
+
9
+ Wraps the **sp:spur-dev** and **sp:code-implementation** skills.
10
+
11
+ ## Argument Flags
12
+
13
+ | Flag | Description | Default |
14
+ | --- | --- | --- |
15
+ | `<wbs>` | Task WBS to run. | required |
16
+ | `--mode` `<full\|implement>` | Full pipeline or single implement step. | full |
17
+ | `--agent` `<inline\|auto\|name>` | Who runs the model-bearing stages. In an interactive session, omit/`inline` runs implement mode and full-mode stages in the host session. `auto` or a name keeps subprocess dispatch. | inline |
18
+ | `--auto` | Skip objective HITL confirmations. | off |
19
+ | `--next` | Chain-to-completion via the next-router. | off |
20
+ | `--wrap` | Run the wrap hop after the main step. | off |
21
+ | `--continue` | Resume an interrupted task from its checkpoint. | off |
22
+
23
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
24
+
25
+ ## Usage
26
+
27
+ /sp:dev-run <wbs> [--mode <full|implement>] [--agent <inline|auto|name>] [--auto] [--next] [--wrap] [--continue]
28
+
29
+ ## Implementation
30
+
31
+ - Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
32
+ - Full pipeline (default `--mode full`): interactive omit/`--agent inline` uses the
33
+ [inline pipeline driver](../skills/spur-dev/references/inline-pipeline-driver.md) via
34
+ `Skill(skill="sp:spur-dev", args="run-inline $ARGUMENTS")`; `--agent auto` or a named executor
35
+ uses `Skill(skill="sp:spur-dev", args="run $ARGUMENTS")` and the workflow subprocess path.
36
+ - Implement step only (`--mode implement`): `Skill(skill="sp:code-implementation", args="$ARGUMENTS")`
37
+
38
+ **Flags:**
39
+
40
+ - `--auto` | `--agent <inline|auto|name>` — Skip objective HITL confirmations (taste/irreversible gates still pause). `--agent` names who does the model-bearing work. Interactive omit/`inline` keeps both implement-only and full-mode model stages in this session. Full mode reads `task-pipeline.yaml` as the SSOT and interprets its actions/guards through the inline driver; it records `stage <id> executed inline in session <session-id>` in the run log. `auto` or a name is merged into `vars.agent` and `vars.implementAgent` and keeps the existing subprocess workflow. Headless `spur workflow run` / `spur agent run` is unchanged. See the [execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
41
+
42
+ **Mode split (load-bearing — bug-742)**
43
+
44
+ | Mode | What runs | Must not do |
45
+ | --- | --- | --- |
46
+ | `--mode full` (default) | Interactive omit/inline: host-session driver over `task-pipeline.yaml`; explicit/headless executor: workflow subprocess | — |
47
+ | `--mode implement` | Single implement competency via `sp:code-implementation` | Re-launch the full pipeline, `spur workflow run …task-pipeline…`, or `/sp:dev-run` **without** `--mode implement` |
48
+
49
+ The pipeline's `implement` step invokes this command **only** as:
50
+
51
+ ```text
52
+ /sp:dev-run --mode implement <wbs> --auto
53
+ ```
54
+
55
+ That pure slash form is intentional (ADR-043): workflow `agent.run` `input` is a command pointer, not an inline essay. Anti-recursion, scope, and Solution authorship live in this command + `sp:code-implementation`, not in YAML prose bolted onto the slash line.
56
+
57
+ **When `--mode implement` is active (including as a pipeline subprocess):** work only in the current working tree on `<wbs>`. **NEVER invoke** `spur workflow run` for the task pipeline, and **NEVER invoke** `/sp:dev-run` without an explicit `--mode implement` — this step *is* the pipeline's implement stage; re-entering full mode recurses (bug-742).
58
+
59
+ > **⚠ Redefinition (feature H8, 2026-07-31).** `--next` previously selected implement-only mode on
60
+ > this command. It no longer does — use `--mode implement`. The replacement already existed and is
61
+ > what `routing-table.md` row A5 dispatches, which is evidence the overload was accidental. This
62
+ > warning is marked for removal after one release (these are prompt files; leaving it is permanent
63
+ > noise). See ADR-039. **was: `--next` selected implement-only mode.**
@@ -0,0 +1,80 @@
1
+ ---
2
+ description: Run a batch of tasks through their pipelines in dependency-correct order — resolve a set, topo-sort, run each via task-pipeline.yaml, emit a batch report
3
+ argument-hint: "--tasks <selector> [--feature <id>] [--mode <sequential|parallel>] [--keep-going] [--auto] [--agent <inline|auto|name>] [--json] [--wrap] [--next] [--continue] [--worktree [<name>]]"
4
+ allowed-tools: ["Bash", "Read", "Skill"]
5
+ ---
6
+
7
+ # Dev Runall
8
+
9
+ Wraps the **sp:spur-dev** skill.
10
+
11
+ ## Argument Flags
12
+
13
+ | Flag | Description | Default |
14
+ | --- | --- | --- |
15
+ | `--tasks` `<selector>` | Task selector to run. | required |
16
+ | `--feature` `<id>` | Restrict to a feature. | omitted |
17
+ | `--mode` `<sequential\|parallel>` | Batch execution order. | sequential |
18
+ | `--keep-going` | Continue past per-task failures. | off |
19
+ | `--auto` | Skip objective HITL gates. | off |
20
+ | `--agent` `<inline\|auto\|name>` | Who runs each task's pipeline stages. Interactive sequential omit/`inline` uses the host-session driver; `auto`, a name, parallel mode, and headless invocation use subprocesses. | inline |
21
+ | `--json` | Emit structured JSON. | off |
22
+ | `--wrap` | Run the wrap hop per task. | off |
23
+ | `--next` | Chain-to-completion via the next-router. | off |
24
+ | `--continue` | Resume an interrupted batch. | off |
25
+ | `--worktree` `[<name>]` | Run the batch 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. | off |
26
+
27
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
28
+
29
+ ## Usage
30
+
31
+ ```
32
+ /sp:dev-runall --tasks <selector> [--feature <id>] [--mode <sequential|parallel>] [--keep-going] [--auto] [--agent <inline|auto|name>] [--json] [--wrap] [--next] [--continue] [--worktree [<name>]]
33
+ ```
34
+
35
+ Flags: `--tasks <selector>` (required — explicit WBS list, status pseudo-list, `feature:<id>`,
36
+ or `ready`), `--feature <id>` (sugar for `feature:<id>`), `--mode`
37
+ `<sequential|parallel>` (default `sequential`; `parallel` fans out a proven-independent subset —
38
+ see `execution-batch.md` § Parallel Execution), `--keep-going`
39
+ (batch failure policy — skip a failed task's in-batch dependents, continue independents; default
40
+ halts on first failure), `--auto`
41
+ (sets `profile=auto` on each per-task run, skipping the HITL approve gate), `--agent <inline|auto|name>`
42
+ (names who runs the pipeline's stages — interactive sequential omit/`inline` uses the host driver;
43
+ `auto` or a name is merged into each per-task `vars.agent` and `vars.implementAgent`; parallel mode
44
+ retains isolated subprocesses, ADR-047), `--json` (emit the
45
+ report as JSON), `--wrap` (trigger
46
+ `wrapup-pipeline.yaml` after the batch completes), `--next`
47
+ (chain each task to terminal status, then run the wrap hop **once for the batch** — see below),
48
+ `--worktree` `[<name>]` (run the batch in an isolated git worktree —
49
+ FF-merge onto the base ref on full success, retain intact on any failure/halt/non-FF; bare form
50
+ creates a fresh tree, `<name>` form adopts an existing worktree by name/path/branch; see
51
+ `execution-batch.md` § Worktree isolation).
52
+
53
+ **`--worktree` is sequential-only.** `--worktree --mode parallel` is **rejected**. This flag gives
54
+ the batch *one* worktree for the whole run; per-task worktrees and parallel isolation remain task
55
+ 0142 Slice A. Run parallel batches without `--worktree`, or run them sequentially with it.
56
+
57
+ **`--worktree` corpus visibility.** While the batch runs in a worktree, corpus writes (task
58
+ statuses, kanban) land in the worktree copy; your main tree still shows pre-run statuses until the
59
+ FF-merge on success. This is expected, not a bug.
60
+
61
+ **`--next` (batch-once wrap).** `--next`
62
+ is chain-to-completion with propagation. On `dev-runall`, each task in the batch runs its
63
+ `task-pipeline.yaml` to terminal status (the pipeline already drives precheck → implement → test →
64
+ review → approve → verify → record → done); when the batch is complete, the wrap hop runs **once
65
+ for the batch** — mirroring the batch-once shippable gate `dev-verifyall` uses — rather than once
66
+ per task. Without `--next`, `--wrap` is wrap-without-chaining (the single batch wraps without
67
+ advancing the feature lifecycle). **was: `--next` deliberately omitted; the old no-`--next` rationale argued against the old per-task-transition meaning and does not carry.**
68
+
69
+ **Three orthogonal axes** (do not confuse): `--keep-going`
70
+ = batch failure policy (does a failure halt the batch or skip dependents?);
71
+ `--continue` = resume from
72
+ checkpoint (pick up an interrupted batch); `--next`
73
+ = chain each task to terminal status + batch-once wrap. See `dev-operations.md` § runall for the
74
+ full distinction.
75
+
76
+ ## Implementation
77
+
78
+ - Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface). Interactive sequential omit/`inline` keeps the orchestrator and each task's model stages in the host session through the [inline pipeline driver](../skills/spur-dev/references/inline-pipeline-driver.md). `--agent auto`, a name, or parallel mode retains the isolated per-task workflow boundary.
79
+ - Interactive sequential omit/inline: `Skill(skill="sp:spur-dev", args="runall-inline $ARGUMENTS")`.
80
+ - Explicit executor or parallel mode: `Skill(skill="sp:spur-dev", args="runall $ARGUMENTS")` → `sp:super-planner` agent.
@@ -0,0 +1,39 @@
1
+ ---
2
+ description: Simplify code for clarity without changing behavior — reduce complexity in recent changes (or a given scope), preserving behavior exactly
3
+ argument-hint: "[<path-or-scope>] [--scope <recent|all|path>] [--check <cmd>] [--agent <inline|auto|name>] [--auto]"
4
+ allowed-tools: ["Bash", "Read", "Edit", "Skill"]
5
+ ---
6
+
7
+ # Dev Simplify
8
+
9
+ Wraps the **sp:code-simplification** skill.
10
+
11
+ ## Argument Flags
12
+
13
+ | Flag | Description | Default |
14
+ | --- | --- | --- |
15
+ | `[<path-or-scope>]` | Path or scope to simplify. | recent |
16
+ | `--scope` `<recent\|all\|path>` | Scope of the simplification pass. | recent |
17
+ | `--check` `<cmd>` | Validation command to iterate against. | project gate |
18
+ | `--agent` `<inline\|auto\|name>` | Who runs the model-bearing simplification. | inline |
19
+ | `--auto` | Skip objective HITL gates (taste gates: over-engineering removal & cross-file utility extraction still require approval). | off |
20
+
21
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
22
+
23
+ ## Usage
24
+
25
+ /sp:dev-simplify [<path-or-scope>] [--scope <recent|all|path>] [--check <cmd>] [--agent <inline|auto|name>] [--auto]
26
+
27
+ ## Implementation
28
+
29
+ - Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
30
+ - `Skill(skill="sp:code-simplification", args="$ARGUMENTS")`
31
+ - **Interaction & Confirmation Model**:
32
+ - **Over-Engineering Removal**: Classify abstractions as Accidental LLM Over-engineering vs Intentional Reserved Patterns. Present target, reason, pros, cons, and recommendation with rationale before removing indirection.
33
+ - **Common Pattern Consolidation**: Follow the 5-stage lifecycle:
34
+ 1. Identify repeating operations across scope.
35
+ 2. Confirm proposed shared helper/utility signature and module location with operator.
36
+ 3. Implement shared helper in isolation with unit tests.
37
+ 4. Refactor call-sites incrementally.
38
+ 5. Run regression verification suite (`--check <cmd>`).
39
+
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: Generate or extend tests until the unit target is met
3
+ argument-hint: "<target> [--coverage <n>] [--agent <inline|auto|name>] [--auto]"
4
+ allowed-tools: ["Bash", "Read", "Write", "Edit", "Skill"]
5
+ ---
6
+
7
+ # Dev Unit
8
+
9
+ Wraps the **sp:code-testing** skill.
10
+
11
+ ## Argument Flags
12
+
13
+ | Flag | Description | Default |
14
+ | --- | --- | --- |
15
+ | `<target>` | File / module / path to generate tests for. | required |
16
+ | `--coverage` `<n>` | Coverage percentage target. | configured |
17
+ | `--agent` `<inline\|auto\|name>` | Who runs the model-bearing test work. | inline |
18
+ | `--auto` | Skip objective HITL gates. | off |
19
+
20
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
21
+
22
+ ## Usage
23
+
24
+ /sp:dev-unit <target> [--coverage <n>] [--agent <inline|auto|name>] [--auto]
25
+
26
+ ## Implementation
27
+
28
+ - Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
29
+ - `Skill(skill="sp:code-testing", args="$ARGUMENTS")`
@@ -0,0 +1,48 @@
1
+ ---
2
+ description: Verify a task against its requirements and Acceptance Criteria — traceability check producing a PASS/PARTIAL/FAIL verdict with evidence
3
+ argument-hint: "<wbs> [--agent <inline|auto|name>] [--fix <none|blockers-first|all>] [--focus <lens>] [--bdd] [--auto] [--force] [--next] [--skip-shippable]"
4
+ allowed-tools: ["Bash", "Read", "Skill"]
5
+ ---
6
+
7
+ # Dev Verify
8
+
9
+ Wraps the **sp:code-verification** skill.
10
+
11
+ ## Argument Flags
12
+
13
+ | Flag | Description | Default |
14
+ | --- | --- | --- |
15
+ | `<wbs>` | Task WBS to verify. | required |
16
+ | `--agent` `<inline\|auto\|name>` | Who runs the model-bearing verification. | inline |
17
+ | `--fix` `<none\|blockers-first\|all>` | Auto-fix policy on findings. | none |
18
+ | `--focus` `<lens>` | Verification lens. | omitted |
19
+ | `--bdd` | Run BDD scenarios. | off |
20
+ | `--auto` | Skip objective HITL gates. | off |
21
+ | `--force` | Re-run even if already verified. | off |
22
+ | `--next` | Hand off to the next-router on success. | off |
23
+ | `--skip-shippable` | Compatibility alias for --skip-shipable; skip the shippable gate. | off |
24
+
25
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
26
+
27
+ ## Usage
28
+
29
+ ```
30
+ /sp:dev-verify <wbs> [--agent <inline|auto|name>] [--fix <none|blockers-first|all>] [--focus <lens>] [--bdd] [--auto] [--force] [--next] [--skip-shippable]
31
+ ```
32
+
33
+ **Shippable readiness** (feature-level): when `--fix all` and the task has a `feature_id`, the
34
+ skill runs `spur feature check <id>` after the per-task verdict and emits `Shippable: PASS|FAIL|N/A`.
35
+ Default **on** with `--fix all`. Opt out only with **`--skip-shippable`** (alias `--skip-shipable`).
36
+ See `sp:code-verification` § Shippable readiness gate.
37
+
38
+ ## Implementation
39
+
40
+ - Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
41
+ - `Skill(skill="sp:code-verification", args="verify $ARGUMENTS")`
42
+
43
+ **Flags:**
44
+
45
+ `--next`: chain-to-completion with
46
+ propagation — on a PASS verdict, hand the task back to `sp:next-router` to advance and re-invoke
47
+ until done or a gate stops it. The `testing → done` transition is the chain's first hop. A PARTIAL
48
+ or FAIL verdict halts the chain (task stays `testing` as review-pending). **was: `--next` chain-ish (undefined formally).**
@@ -0,0 +1,72 @@
1
+ ---
2
+ description: Verify a batch of tasks against their requirements and Acceptance Criteria — batch traceability check producing per-task verdicts and a summary report
3
+ argument-hint: "--tasks <selector> [--feature <id>] [--agent <inline|auto|name>] [--fix <none|blockers-first|all>] [--focus <lens>] [--bdd] [--auto] [--force] [--next] [--json] [--skip-shippable] [--worktree [<name>]]"
4
+ allowed-tools: ["Bash", "Read", "Skill"]
5
+ ---
6
+
7
+ # Dev Verifyall
8
+
9
+ Wraps the **sp:spur-dev** and **sp:code-verification** skills.
10
+
11
+ ## Argument Flags
12
+
13
+ | Flag | Description | Default |
14
+ | --- | --- | --- |
15
+ | `--tasks` `<selector>` | Task selector to verify. | required |
16
+ | `--feature` `<id>` | Restrict to a feature. | omitted |
17
+ | `--agent` `<inline\|auto\|name>` | Who runs each verification. | inline |
18
+ | `--fix` `<none\|blockers-first\|all>` | Auto-fix policy on findings. | none |
19
+ | `--focus` `<lens>` | Verification lens. | omitted |
20
+ | `--bdd` | Run BDD scenarios. | off |
21
+ | `--auto` | Skip objective HITL gates. | off |
22
+ | `--force` | Re-run even if already verified. | off |
23
+ | `--next` | Hand off to the next-router on success. | off |
24
+ | `--json` | Emit structured JSON. | off |
25
+ | `--skip-shippable` | Compatibility alias for --skip-shipable; skip the shippable gate. | off |
26
+ | `--worktree` `[<name>]` | Run the batch 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. | off |
27
+
28
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
29
+
30
+ ## Usage
31
+
32
+ ```
33
+ /sp:dev-verifyall --tasks <selector> [--feature <id>] [--agent <inline|auto|name>] [--fix <none|blockers-first|all>] [--focus <lens>] [--bdd] [--auto] [--force] [--next] [--json] [--skip-shippable] [--worktree [<name>]]
34
+ ```
35
+
36
+ Flags: `--tasks <selector>` (required unless `--feature`), `--feature <id>` (sugar for
37
+ `feature:<id>`), shared verify flags (`--agent`, `--fix`,
38
+ `--focus`, `--bdd`,
39
+ `--auto`, `--force`),
40
+ `--next` (per-task lifecycle chaining — see below),
41
+ `--json`, `--skip-shippable`, `--worktree` `[<name>]` (run the batch in an isolated git worktree — FF-merge
42
+ onto the base ref on full success, retain intact on any failure/halt/non-FF; bare form creates a
43
+ fresh tree, `<name>` form adopts an existing worktree by name/path/branch; see
44
+ `execution-batch.md` § Worktree isolation).
45
+ **`--worktree` corpus visibility.** While the batch runs in a worktree, corpus writes (task
46
+ statuses, verdicts) land in the worktree copy; your main tree still shows pre-run statuses until
47
+ the FF-merge on success. Expected, not a bug.
48
+
49
+ **`--next` (per-task lifecycle chaining):** `--next`
50
+ is chain-to-completion with propagation. For each task whose verdict is **PASS**, the chain's first
51
+ hop transitions `testing → done` through the FSM with the `--strict-core` Review L3 guard honored;
52
+ a task whose verdict is **PARTIAL** or **FAIL** does **not** transition (it stays `testing` as
53
+ review-pending) — that task's chain halts, reporting the verdict. One task's non-PASS never blocks
54
+ another task's transition — each task's verdict is its own, and each task's chain is independent.
55
+ Transitions run **before** the shippable gate (R3), so `spur feature check` observes the final
56
+ statuses. Do not confuse with `--keep-going`
57
+ (batch failure policy, dev-runall) or `--continue`
58
+ (resume from checkpoint) — see the glossary. **was: `--next` chain-ish (per-task transition, undefined formally).**
59
+
60
+ **Shippable readiness** (feature-level): when `--fix all` and a feature context exists
61
+ (`--feature` or a unique shared `feature_id` across the set), after all per-task verifies the
62
+ orchestrator runs **one** `spur feature check <id>` and emits `Shippable: PASS|FAIL|N/A`.
63
+ A FAIL means the batch is **not clean** (rollup at least PARTIAL) even if every task AC PASSed.
64
+ Default **on** with `--fix all`. Opt out only with **`--skip-shippable`** (alias `--skip-shipable`).
65
+ Without `--fix all`, shippable is not evaluated (optional note: use `--fix all` for ship gate).
66
+
67
+ ## Implementation
68
+
69
+ - Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
70
+ - Batch orchestration: `Skill(skill="sp:spur-dev", args="verifyall $ARGUMENTS")`
71
+ - Per-task verification (inner): `Skill(skill="sp:code-verification", args="verify <wbs> $SHARED_FLAGS")`
72
+ - Shippable gate: once after the batch (same skill § Shippable readiness gate)
@@ -0,0 +1,30 @@
1
+ ---
2
+ description: Wrap up a single completed task — learnings, metrics, doc-sync, optional feature transition and branch cleanup
3
+ argument-hint: "<wbs> [--auto] [--merge] [--dry-run]"
4
+ allowed-tools: ["Bash", "Read", "AskUserQuestion"]
5
+ ---
6
+
7
+ # Dev Wrap
8
+
9
+ Wraps the **wrapup-pipeline.yaml** workflow.
10
+
11
+ ## Argument Flags
12
+
13
+ | Flag | Description | Default |
14
+ | --- | --- | --- |
15
+ | `<wbs>` | Task WBS to wrap. | required |
16
+ | `--auto` | Skip objective HITL gates. | off |
17
+ | `--merge` | Merge the wrap branch. | off |
18
+ | `--dry-run` | Render the wrap without writing. | off |
19
+
20
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
21
+
22
+ ## Usage
23
+
24
+ /sp:dev-wrap <wbs> [--auto] [--merge] [--dry-run]
25
+
26
+ ## Implementation
27
+
28
+ ```bash
29
+ spur workflow run .spur/workflows/wrapup-pipeline.yaml --vars '{"tasks":"[\"<wbs>\"]","profile":"interactive|auto","merge":"true|false"}' [--dry-run]
30
+ ```
@@ -0,0 +1,33 @@
1
+ ---
2
+ description: Wrap up a batch of completed tasks — learnings, metrics, doc-sync, feature transition, optional branch cleanup
3
+ argument-hint: "[--since <iso-date>] [--feature <id>] [--status <s>] [--auto] [--merge] [--dry-run]"
4
+ allowed-tools: ["Bash", "Read", "AskUserQuestion"]
5
+ ---
6
+
7
+ # Dev Wrapall
8
+
9
+ Wraps the **wrapup-pipeline.yaml** workflow.
10
+
11
+ ## Argument Flags
12
+
13
+ | Flag | Description | Default |
14
+ | --- | --- | --- |
15
+ | `--since` `<iso-date>` | Wrap tasks completed since a date. | configured |
16
+ | `--feature` `<id>` | Wrap tasks in a feature. | omitted |
17
+ | `--status` `<s>` | Only wrap tasks in a status. | done |
18
+ | `--auto` | Skip objective HITL gates. | off |
19
+ | `--merge` | Merge wrap branches. | off |
20
+ | `--dry-run` | Render wraps without writing. | off |
21
+
22
+ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
23
+
24
+ ## Usage
25
+
26
+ /sp:dev-wrapall [--since <iso-date>] [--feature <id>] [--status <s>] [--auto] [--merge] [--dry-run]
27
+
28
+ ## Implementation
29
+
30
+ ```bash
31
+ spur workflow run .spur/workflows/wrapup-pipeline.yaml --vars '{"tasks":"<json-encoded-wbs-list>","feature":"<id|>","profile":"interactive|auto","merge":"true|false"}' [--dry-run]
32
+ ```
33
+
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Author a validated, smoke-tested constraint rule
3
+ argument-hint: "\"<description>\" [--file <path>] [--preset <target>]"
4
+ allowed-tools: ["Bash", "Read", "Write", "Skill"]
5
+ ---
6
+
7
+ # Rule Add
8
+
9
+ Wraps the **sp:spur-cli** skill.
10
+
11
+ ## Usage
12
+
13
+ /sp:rule-add "<description>" [--file <path>] [--preset <target>]
14
+
15
+ ## Implementation
16
+
17
+ - `Skill(skill="sp:spur-cli", args="rule add $ARGUMENTS")`
18
+
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Refine a constraint rule or preset, then re-verify it
3
+ argument-hint: "<rule-file-or-preset> [--intent \"<goal>\"] [--severity <sev>] [--scope <glob>] [--exempt <path>] [--disable <id>] [--override <id>] [--dry-run]"
4
+ allowed-tools: ["Bash", "Read", "Edit", "Skill"]
5
+ ---
6
+
7
+ # Rule Refine
8
+
9
+ Wraps the **sp:spur-cli** skill.
10
+
11
+ ## Usage
12
+
13
+ /sp:rule-refine <rule-file-or-preset> [--intent "<goal>"] [--severity <sev>] [--scope <glob>] [--exempt <path>] [--disable <id>] [--override <id>] [--dry-run]
14
+
15
+ ## Implementation
16
+
17
+ - `Skill(skill="sp:spur-cli", args="rule refine $ARGUMENTS")`
18
+
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Discover recurring anti-patterns worth codifying as rules
3
+ argument-hint: "[<path-or-glob>]"
4
+ allowed-tools: ["Bash", "Read", "Grep", "Glob", "Skill"]
5
+ ---
6
+
7
+ # Rule Scan
8
+
9
+ Wraps the **sp:spur-cli** skill.
10
+
11
+ ## Usage
12
+
13
+ /sp:rule-scan [<path-or-glob>]
14
+
15
+ ## Implementation
16
+
17
+ - `Skill(skill="sp:spur-cli", args="rule scan $ARGUMENTS")`
18
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Initialize a new Spur project — scaffold config + docs, then customize for this project's stack and scope
3
+ argument-hint: "[--name <name>] [--minimal] [--force]"
4
+ allowed-tools: ["Bash", "Read", "Write", "Skill"]
5
+ ---
6
+
7
+ # Spur Init
8
+
9
+ Wraps **spur init** (deterministic scaffold) + **sp:doc-evolve** (project customization).
10
+
11
+ ## Usage
12
+
13
+ /sp:spur-init [--name <name>] [--minimal] [--force]
14
+
15
+ ## Implementation
16
+
17
+ ```bash
18
+ spur init --json $ARGUMENTS
19
+ ```
20
+ - Parse the JSON envelope once and retain it as `scaffoldResult`; summarize its created/skipped files in one block.
21
+ - Customize (Phase 2): `Skill(skill="sp:doc-evolve", args="customize --project <scaffoldResult.project>")`.
22
+ Reuse the retained project value; do not rerun init or replay its create/exists transcript.
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Author a validated, dry-run-verified workflow in the right execution mode
3
+ argument-hint: "\"<description>\" [--kind <state-machine|transition-flow>] [--file <path>]"
4
+ allowed-tools: ["Bash", "Read", "Write", "Skill"]
5
+ ---
6
+
7
+ # Workflow Add
8
+
9
+ Wraps the **sp:spur-cli** skill.
10
+
11
+ ## Usage
12
+
13
+ /sp:workflow-add "<description>" [--kind <state-machine|transition-flow>] [--file <path>]
14
+
15
+ ## Implementation
16
+
17
+ - `Skill(skill="sp:spur-cli", args="workflow add $ARGUMENTS")`
18
+
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Refine an existing workflow, then re-validate and re-dry-run it
3
+ argument-hint: "<workflow-file> [--intent \"<goal>\"] [--dry-run]"
4
+ allowed-tools: ["Bash", "Read", "Edit", "Skill"]
5
+ ---
6
+
7
+ # Workflow Refine
8
+
9
+ Wraps the **sp:spur-cli** skill.
10
+
11
+ ## Usage
12
+
13
+ /sp:workflow-refine <workflow-file> [--intent "<goal>"] [--dry-run]
14
+
15
+ ## Implementation
16
+
17
+ - `Skill(skill="sp:spur-cli", args="workflow refine $ARGUMENTS")`
18
+
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Shared host-agent identification helpers — the **only** host-agent detection path
3
+ * in the sp plugin hooks.
4
+ *
5
+ * Why this file exists (task 0480 R4): `resolveAgentHint()` previously existed in two
6
+ * places — `context-session-start.ts` (4-candidate chain, `undefined` fallback) and
7
+ * `pi/guard-extension.ts` (3-candidate chain missing `CLAUDE_CODE_ENTRYPOINT` and
8
+ * `CLAUDE_MODEL`, `'pi'` fallback). The divergence let the two layers reach opposite
9
+ * conclusions about whether the calling agent is identifiable. Consolidating here
10
+ * guarantees both hooks use the same candidate list and cannot silently diverge again.
11
+ *
12
+ * **Do not duplicate this candidate chain elsewhere.** New host-agent signals are
13
+ * added to the arrays below, not to per-hook copies.
14
+ */
15
+
16
+ /**
17
+ * Best-effort agent name from env (never required).
18
+ *
19
+ * Candidate chain (checked in order, first non-empty string wins):
20
+ * 1. `SPUR_AGENT` — explicit override
21
+ * 2. `CLAUDE_CODE_ENTRYPOINT` — Claude Code sets this to its entrypoint path
22
+ * 3. `TERM_PROGRAM` — terminal identifier (e.g. `claude`, `ghostty`)
23
+ * 4. `SPUR_DEFAULT_AGENT` — configured default agent
24
+ *
25
+ * @param env - environment record (defaults to `process.env`)
26
+ * @param fallback - value returned when no candidate matches (defaults to `undefined`)
27
+ */
28
+ export function resolveAgentHint(
29
+ env: NodeJS.ProcessEnv = process.env,
30
+ fallback: string | undefined = undefined,
31
+ ): string | undefined {
32
+ const candidates = [env.SPUR_AGENT, env.CLAUDE_CODE_ENTRYPOINT, env.TERM_PROGRAM, env.SPUR_DEFAULT_AGENT];
33
+ for (const c of candidates) {
34
+ if (typeof c === 'string' && c.trim()) return c.trim();
35
+ }
36
+ return fallback;
37
+ }
38
+
39
+ /**
40
+ * Best-effort model id from env (never required).
41
+ *
42
+ * Candidate chain (checked in order, first non-empty string wins):
43
+ * 1. `SPUR_MODEL` — explicit override
44
+ * 2. `ANTHROPIC_MODEL` — Anthropic API model
45
+ * 3. `OPENAI_MODEL` — OpenAI API model
46
+ * 4. `CLAUDE_MODEL` — Claude Code model setting
47
+ *
48
+ * @param env - environment record (defaults to `process.env`)
49
+ * @param fallback - value returned when no candidate matches (defaults to `undefined`)
50
+ */
51
+ export function resolveModelHint(
52
+ env: NodeJS.ProcessEnv = process.env,
53
+ fallback: string | undefined = undefined,
54
+ ): string | undefined {
55
+ const candidates = [env.SPUR_MODEL, env.ANTHROPIC_MODEL, env.OPENAI_MODEL, env.CLAUDE_MODEL];
56
+ for (const c of candidates) {
57
+ if (typeof c === 'string' && c.trim()) return c.trim();
58
+ }
59
+ return fallback;
60
+ }