@gobing-ai/spur 0.3.81 → 0.3.83

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 (93) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/config/config.example.yaml +19 -17
  3. package/config/config.global.yaml +6 -3
  4. package/config/templates/docs/99_PROJECT_CONSTITUTION.md +75 -13
  5. package/config/transition-shims.json +0 -7
  6. package/package.json +1 -1
  7. package/plugins/sp/README.md +19 -13
  8. package/plugins/sp/agents/expert-spur.md +3 -3
  9. package/plugins/sp/lib/idea-handoff.generated.mjs +84 -56
  10. package/plugins/sp/plugin.json +1 -1
  11. package/plugins/sp/scripts/inline-run-setup.ts +69 -1
  12. package/plugins/sp/scripts/quality-gate.mjs +52 -1
  13. package/plugins/sp/scripts/quality-gate.ts +70 -0
  14. package/plugins/sp/scripts/surface-drift-inventory.ts +0 -2
  15. package/plugins/sp/scripts/task-size-precheck.ts +44 -16
  16. package/plugins/sp/scripts/verify-answer-lint.ts +17 -1
  17. package/plugins/sp/skills/code-review/references/review-lenses.md +3 -0
  18. package/plugins/sp/skills/spur-cli/SKILL.md +4 -8
  19. package/plugins/sp/skills/spur-cli/references/agent.md +30 -97
  20. package/plugins/sp/skills/spur-cli/references/message.md +1 -1
  21. package/plugins/sp/skills/spur-cli/references/projects.md +7 -27
  22. package/plugins/sp/skills/spur-cli/references/self.md +2 -2
  23. package/plugins/sp/skills/spur-cli/references/serve.md +4 -4
  24. package/plugins/sp/skills/spur-cli/references/tasks.md +1 -1
  25. package/plugins/sp/skills/spur-composer/SKILL.md +3 -3
  26. package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +10 -0
  27. package/plugins/sp/skills/spur-dev/references/execution-batch.md +1 -1
  28. package/plugins/sp/skills/spur-dev/references/execution-workflow.md +4 -6
  29. package/plugins/sp/skills/spur-dev/references/glossary.md +1 -1
  30. package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +11 -1
  31. package/plugins/sp/skills/spur-doctor/SKILL.md +2 -2
  32. package/schemas/spur-config.schema.json +61 -85
  33. package/spur.js +3621 -4861
  34. package/web/_astro/BoardApp.D-WlxiN2.js +1 -0
  35. package/web/_astro/{BoardApp.B1U26g3I.js → BoardApp.D8bM9pKL.js} +73 -73
  36. package/web/_astro/{TaskDetail.DwPqpq7v.js → TaskDetail.BPRqgVUE.js} +1 -1
  37. package/web/_astro/{arc.CweZEjN2.js → arc.BPrPES3z.js} +1 -1
  38. package/web/_astro/{architectureDiagram-3BPJPVTR.D89pbDuv.js → architectureDiagram-3BPJPVTR.qX_7q02P.js} +1 -1
  39. package/web/_astro/{blockDiagram-GPEHLZMM.BOuTeEpX.js → blockDiagram-GPEHLZMM.CUZfj5V7.js} +1 -1
  40. package/web/_astro/{c4Diagram-AAUBKEIU.CASbkWZF.js → c4Diagram-AAUBKEIU.CTaOr8hH.js} +1 -1
  41. package/web/_astro/channel.DGZaFHZx.js +1 -0
  42. package/web/_astro/{chunk-2J33WTMH.BKQYtOvY.js → chunk-2J33WTMH.Dt-9wf3h.js} +1 -1
  43. package/web/_astro/{chunk-4BX2VUAB.9sHLdMtG.js → chunk-4BX2VUAB.CTC2sdoN.js} +1 -1
  44. package/web/_astro/{chunk-55IACEB6.wOLXWlPs.js → chunk-55IACEB6.DQcxt2_g.js} +1 -1
  45. package/web/_astro/{chunk-727SXJPM.DovFbwg3.js → chunk-727SXJPM.DXFPSn-a.js} +1 -1
  46. package/web/_astro/{chunk-AQP2D5EJ.B1Weod1X.js → chunk-AQP2D5EJ.BCx3U4bT.js} +1 -1
  47. package/web/_astro/{chunk-FMBD7UC4.TEMS04st.js → chunk-FMBD7UC4.DL2tJkdO.js} +1 -1
  48. package/web/_astro/{chunk-ND2GUHAM.Cp8VT1wQ.js → chunk-ND2GUHAM.DZyflMro.js} +1 -1
  49. package/web/_astro/{chunk-QZHKN3VN.BzATdEcP.js → chunk-QZHKN3VN.CUI2mT09.js} +1 -1
  50. package/web/_astro/{classDiagram-4FO5ZUOK.C9BOCfAO.js → classDiagram-4FO5ZUOK.g4rX4Fr1.js} +1 -1
  51. package/web/_astro/{classDiagram-v2-Q7XG4LA2.C9BOCfAO.js → classDiagram-v2-Q7XG4LA2.g4rX4Fr1.js} +1 -1
  52. package/web/_astro/{cose-bilkent-S5V4N54A.DUnr4UAw.js → cose-bilkent-S5V4N54A.CzWJLqp0.js} +1 -1
  53. package/web/_astro/{cynefin-OW5HDTMX.rYq5uM3D.js → cynefin-OW5HDTMX.WgsvQeCR.js} +1 -1
  54. package/web/_astro/{dagre-BM42HDAG.CWeNKe3I.js → dagre-BM42HDAG.Dzv6ngql.js} +1 -1
  55. package/web/_astro/{diagram-2AECGRRQ.DCkfls10.js → diagram-2AECGRRQ.CpJ4a9rU.js} +1 -1
  56. package/web/_astro/{diagram-5GNKFQAL.D5U4JCka.js → diagram-5GNKFQAL.CzPlF_dq.js} +1 -1
  57. package/web/_astro/{diagram-KO2AKTUF.BZJgqaqG.js → diagram-KO2AKTUF.TAkZNTcQ.js} +1 -1
  58. package/web/_astro/{diagram-LMA3HP47.DoMeHvPR.js → diagram-LMA3HP47.uCjoKSag.js} +1 -1
  59. package/web/_astro/{diagram-OG6HWLK6.B50qwwWX.js → diagram-OG6HWLK6.eMplIjoK.js} +1 -1
  60. package/web/_astro/{erDiagram-TEJ5UH35.DdGPG6LK.js → erDiagram-TEJ5UH35.Bf7zoXGz.js} +1 -1
  61. package/web/_astro/{flowDiagram-I6XJVG4X.QP2MJ12u.js → flowDiagram-I6XJVG4X.B_bHj3gN.js} +1 -1
  62. package/web/_astro/{ganttDiagram-6RSMTGT7.BI6LgKSy.js → ganttDiagram-6RSMTGT7.BasrHRMj.js} +1 -1
  63. package/web/_astro/{gitGraphDiagram-PVQCEYII.npPZiC2G.js → gitGraphDiagram-PVQCEYII.C6iphq1x.js} +1 -1
  64. package/web/_astro/{infoDiagram-5YYISTIA.DCJCBVbp.js → infoDiagram-5YYISTIA.HXmDMhW4.js} +1 -1
  65. package/web/_astro/{ishikawaDiagram-YF4QCWOH.BMLV-3I1.js → ishikawaDiagram-YF4QCWOH.BSmW8NiU.js} +1 -1
  66. package/web/_astro/{journeyDiagram-JHISSGLW.LE58crde.js → journeyDiagram-JHISSGLW.DEQow5fo.js} +1 -1
  67. package/web/_astro/{kanban-definition-UN3LZRKU.BPbz8rH9.js → kanban-definition-UN3LZRKU.IVm9cTdc.js} +1 -1
  68. package/web/_astro/{linear.DhZaBtYh.js → linear.CrsM73_9.js} +1 -1
  69. package/web/_astro/{mermaid.core.BD5-jXum.js → mermaid.core.CfBeDJls.js} +4 -4
  70. package/web/_astro/{mindmap-definition-RKZ34NQL.MTJyrQ65.js → mindmap-definition-RKZ34NQL.C3j60Y-0.js} +1 -1
  71. package/web/_astro/{pieDiagram-4H26LBE5.BrDhDvIS.js → pieDiagram-4H26LBE5.B-aCMeEA.js} +1 -1
  72. package/web/_astro/{quadrantDiagram-W4KKPZXB.71d73_5N.js → quadrantDiagram-W4KKPZXB.Cib965yq.js} +1 -1
  73. package/web/_astro/{requirementDiagram-4Y6WPE33.Bga6UF-z.js → requirementDiagram-4Y6WPE33.D61cS4O-.js} +1 -1
  74. package/web/_astro/{sankeyDiagram-5OEKKPKP.BnHs4K82.js → sankeyDiagram-5OEKKPKP.GKF2qVPy.js} +1 -1
  75. package/web/_astro/{sequenceDiagram-3UESZ5HK.DsfY2gnj.js → sequenceDiagram-3UESZ5HK.DZnq8F2h.js} +1 -1
  76. package/web/_astro/{stateDiagram-AJRCARHV.DvsTSc9a.js → stateDiagram-AJRCARHV.DXUFmdgM.js} +1 -1
  77. package/web/_astro/{stateDiagram-v2-BHNVJYJU.DxzzmHUR.js → stateDiagram-v2-BHNVJYJU.BtHmhLEz.js} +1 -1
  78. package/web/_astro/{timeline-definition-PNZ67QCA.4ZuQmOTt.js → timeline-definition-PNZ67QCA.Cy-WW2ln.js} +1 -1
  79. package/web/_astro/{vennDiagram-CIIHVFJN.Ck5Q86SG.js → vennDiagram-CIIHVFJN.SLp5b9KI.js} +1 -1
  80. package/web/_astro/{wardleyDiagram-YWT4CUSO.BK7k2hXr.js → wardleyDiagram-YWT4CUSO.Bww45mWV.js} +1 -1
  81. package/web/_astro/{xychartDiagram-2RQKCTM6.DfCrgauK.js → xychartDiagram-2RQKCTM6.DR4swI6a.js} +1 -1
  82. package/web/apple-touch-icon.png +0 -0
  83. package/web/favicon.ico +0 -0
  84. package/web/favicon.svg +17 -4
  85. package/web/icon-192.png +0 -0
  86. package/web/icon-512.png +0 -0
  87. package/web/index.html +2 -2
  88. package/web/site.webmanifest +31 -0
  89. package/web/spur_logo.svg +1 -0
  90. package/plugins/README.md +0 -656
  91. package/plugins/sp/skills/spur-cli/references/team.md +0 -165
  92. package/web/_astro/BoardApp.Csgyg-lS.js +0 -1
  93. package/web/_astro/channel.Cx6sXxhq.js +0 -1
@@ -7,7 +7,7 @@
7
7
  "plugins": [
8
8
  {
9
9
  "name": "sp",
10
- "version": "0.3.81",
10
+ "version": "0.3.83",
11
11
  "source": "./plugins/sp"
12
12
  }
13
13
  ]
@@ -180,24 +180,26 @@ agent:
180
180
  # dev-run: omp
181
181
  # dev-review: claude
182
182
 
183
- # A project's agent roster is a **fleet** declared in the project's own tree,
184
- # not in this file: `<projectPath>/.spur/fleet.json` (ADR-116, task 0835).
185
- # Materialized at `spur serve` start; preview with `spur projects list --fleet`.
186
- # Shape (version is pinned; a member declares role or executor):
187
- # {
188
- # "version": 1,
189
- # "members": [
190
- # { "role": "planner", "purpose": "orchestrator" },
191
- # { "role": "coder", "executor": "omp" },
192
- # { "role": "reviewer", "enabled": false }
193
- # ],
194
- # "orchestrator": "planner-1"
195
- # }
183
+ # A project's agent roster is a **fleet** declared in the project's own
184
+ # `.spur/config.yaml` under `agent.fleet` — never in this global file, and never
185
+ # in the retired `<projectPath>/.spur/fleet.json` (ADR-116 carrier moved by task
186
+ # 0858). Materialized and autostarted at `spur serve` start only when
187
+ # `agent.fleet.enabled` is true; preview with `spur projects list --fleet`.
188
+ # Shape (project layer; a member declares role or executor):
189
+ # agent:
190
+ # fleet:
191
+ # enabled: true
192
+ # strategy: gtd # rest | gtd (default rest)
193
+ # orchestrator: planner-1
194
+ # members:
195
+ # - { role: planner, purpose: orchestrator }
196
+ # - { role: coder, executor: omp }
197
+ # - { role: reviewer, enabled: false }
196
198
  # `enabled: false` keeps the member's derived `<role>-<n>` id index, so later
197
- # members never silently reallocate ids. The legacy `agent.team.<teamId>`
198
- # config key still parses — the `spur team` noun is deprecated, not removed —
199
- # but the roster is keyed on the worktree path now, not on a config-global
200
- # team name.
199
+ # members never silently reallocate ids. The retired per-team config key is no
200
+ # longer read — a leftover block fails the load and names `agent.fleet` as the
201
+ # replacement — a leftover `fleet.json` fails the load too, and the roster is
202
+ # keyed on the worktree path now, not on a config-global team name.
201
203
 
202
204
  rules:
203
205
  paths:
@@ -19,9 +19,12 @@
19
19
  # Only machine-wide keys belong in this file. Project-shaped keys — `name`,
20
20
  # `bootstrap`, `rules`, `redaction`, `tasks`, `features` — resolve against a
21
21
  # project's own folder structure and must stay in `.spur/config.yaml`. The agent
22
- # roster is not a config key at all any more: it is `<projectPath>/.spur/fleet.json`
23
- # (ADR-116, task 0835). The legacy `agent.team` key still parses; the `spur team`
24
- # noun is deprecated (0848).
22
+ # roster is not a config key at all any more: it is the project-layer `agent.fleet`
23
+ # section of `.spur/config.yaml` (ADR-116 carrier moved by 0858; it replaced
24
+ # `<projectPath>/.spur/fleet.json`). The retired team roster key is gone: a leftover
25
+ # block fails the load and names `agent.fleet` as the replacement (0857), a leftover
26
+ # `fleet.json` fails it too (0858), and the `spur team` noun was removed at the G64
27
+ # cutover.
25
28
 
26
29
  $schema: "@gobing-ai/spur/schemas/spur-config.schema.json"
27
30
 
@@ -3,7 +3,7 @@ name: Project Constitution
3
3
  doc: 99_PROJECT_CONSTITUTION
4
4
  owns: PROCESS — how the key files are maintained
5
5
  authority: authoritative-on-process
6
- version: 1.6.0
6
+ version: 1.7.0
7
7
  created_at: {{init-date}}
8
8
  updated_at: {{init-date}}
9
9
  edit_rules: 99 §6.8
@@ -35,10 +35,12 @@ Within project documentation, authority is scoped to the question:
35
35
  | Visual and interaction design | Root `DESIGN.md`, when present |
36
36
  | Delivery sequence, current mechanisms, non-UI contracts, feature state | `02`–`05`, derived within their respective responsibilities |
37
37
 
38
- Lower numbers win content conflicts within the same subject; `99` governs maintenance across
39
- all key files. Neither an ADR nor a task can silently change the constitution. An ADR is not
40
- a universal override for unrelated scope or UI facts. Fix the authoritative statement first,
41
- then affected projections; never average conflicting statements. Keep document numbers stable.
38
+ The designated subject owner governs; document numbers do not confer authority over another
39
+ owner's subject. `99` governs maintenance across all key files. Neither an ADR nor a task can
40
+ silently change the constitution. Identify the governing statement first; correct it only if
41
+ defective, otherwise repair the conflicting projection. If authoritative statements conflict and
42
+ existing authorization does not resolve them, report the conflict rather than invent a decision.
43
+ Never average conflicting statements. Keep document numbers stable.
42
44
 
43
45
  ## 3. Shared tools
44
46
 
@@ -118,7 +120,7 @@ it does not require touching every key file for each feature or task.
118
120
  | T1 | New architectural choice passing §6.1, or reversal | Record `00` before divergence; update affected `03`/`04`; `01` only if scope changes |
119
121
  | T2 | Implementation would contradict an existing ADR | Record the decision amendment or superseding ADR before implementing the contradiction |
120
122
  | T3 | CLI/API/config/schema/DTO or non-UI behavior changes | Update the owning `04` satellite; index and `AGENTS.md` only if their own facts change |
121
- | T4 | Feature lifecycle or acceptance changes | Update through the feature tool and refresh its generated projection; `01` only for scope changes |
123
+ | T4 | Feature hierarchy, scope, lifecycle or acceptance changes | Apply §6.6 authorization; update through the feature tool and refresh its generated projection; `01` only for product scope changes |
122
124
  | T5 | Phase goal, order, dependency, or exit changes | Update `02`; task completion alone does not trigger a roadmap entry |
123
125
  | T6 | Product scope added, removed, or deferred | Update `01`; `02` if sequencing changes |
124
126
  | T7 | Authorized change to document responsibilities, authority, or maintenance rules | Update `99`, affected entry/routing instructions, and in-scope init templates |
@@ -141,18 +143,23 @@ Do not append to a key file merely to prove work happened.
141
143
 
142
144
  ### 6.1 `docs/00_ADR.md`
143
145
 
144
- Admit a decision only if it selects among meaningful alternatives and establishes or changes
146
+ Every entry and amendment MUST select among meaningful alternatives and establish or change
145
147
  a lasting architecture boundary or invariant across features/modules: dependency direction,
146
148
  persistence ownership, trust model, protocol, runtime or shared execution model. Record the
147
149
  choice, context/reason, material tradeoff/consequence, status/date, and a detail pointer.
148
150
 
151
+ Entries and amendments MUST remain precise and concise. State the decision and its rationale
152
+ once; link detailed contracts and implementation guidance to their owners. Naming a feature,
153
+ task, technology or technical concern alone does not establish architectural significance.
154
+
149
155
  Single-feature design, public-surface consent, task progress, test results and implementation
150
156
  receipts go to their design/task records. Bug fixes that restore an existing contract need no ADR.
151
157
  Doc-map and maintenance changes belong in `99`, not an ADR certifying a constitution edit.
152
158
 
153
159
  - One architectural decision per entry. New choices append; reversals name the superseded ADR.
154
160
  - Never renumber, reuse or delete an ADR ID. Preserve original titles/anchors and dates.
155
- - Corrections to the decision use dated amendments; amendments record a decision delta only.
161
+ - Corrections to the decision use dated amendments stating only what changed and why. Amendments
162
+ must pass the same admission test; editorial corrections update wording in place without an addendum.
156
163
  - Editorial condensation may remove repetition and misplaced detail while preserving the choice,
157
164
  rationale, material alternatives, consequences and amendment history. It must not silently
158
165
  reverse a decision or present a historical choice as current.
@@ -195,6 +202,26 @@ parallel hand-written status table. Requirements, acceptance and decomposition l
195
202
  records; execution evidence lives in task records. Verify status and acceptance against evidence
196
203
  before relying on them. Never raw-edit satellites or generated regions.
197
204
 
205
+ The project is the logical tree root; its direct children are top-level features, without requiring
206
+ an extra persisted project node. Each top-level feature MUST represent a durable project module,
207
+ product capability or project-wide concern. Its scope and top-level placement MUST be supported
208
+ by an explicit requirement or approval from the operator or designated product owner.
209
+
210
+ Record the supporting requirement or approval reference in the feature record through its tool.
211
+ Existing explicit authorization is sufficient. Implementation, silence, task approval or an agent's
212
+ recommendation does not establish approval for top-level placement.
213
+
214
+ Prefer an existing owner. Children decompose their parent's approved scope; sibling boundaries
215
+ must be clear and avoid duplicate ownership. A task, delivery wave, incident, technical detail or
216
+ child-count limit alone does not justify a new top-level feature.
217
+
218
+ Creating or promoting a top-level feature, materially redefining its scope, or merging or removing
219
+ top-level boundaries requires explicit authorization covering that change. Routine decomposition
220
+ within approved scope needs no repeated approval.
221
+
222
+ For legacy roots without recorded provenance, report the gap without inventing approval or
223
+ automatically restructuring the tree. Preserve history and references during authorized migration.
224
+
198
225
  ### 6.7 `AGENTS.md`
199
226
 
200
227
  Keep essential orientation, commands, boundaries and document routing. Verify facts from the
@@ -213,20 +240,54 @@ is not a reason to edit this file or bump its metadata. Keep implementation-spec
213
240
  and tool bindings in their owners. Do not automatically promote lessons into constitutional rules.
214
241
  Update authorized templates/copies; do not mutate unrelated repositories without authorization.
215
242
 
243
+ ### 6.9 `DESIGN.md` (root, when present)
244
+
245
+ Keep shared visual and interaction rules, including accessibility and responsive behavior. Link
246
+ detailed UI references; distinguish current conventions from proposed changes. Preserve required
247
+ accessibility behavior when simplifying. Non-UI contracts belong in `04`; delivery status stays
248
+ in feature/task records. Update this owner when shared UI rules change, not for every screen edit.
249
+
216
250
  ## 7. Drift control
217
251
 
218
- Audit the affected owners, using source/help, manifests, Git diffs, generated indexes and links:
252
+ ### 7.1 Detection
253
+
254
+ During relevant document edits and task wrap-up, check affected owners and their references using
255
+ source/help, manifests, Git diffs, generated indexes and links. A comprehensive audit is a separate
256
+ scope; routine work does not require a repository-wide sweep.
219
257
 
220
258
  - Responsibility: content belongs to the file's §4.1 row; no competing ledger or rule owner.
221
259
  - Reality: current contracts/mechanisms match source; proposed/historical content is labeled.
222
260
  - Scope/status: `01` covers capabilities; phase/feature claims have current evidence.
261
+ - Feature structure: top-level boundaries have §6.6 provenance; decomposition stays within approved scope.
223
262
  - References: IDs, heading anchors, index pointers and aliases still resolve.
224
263
  - Synchronization: apply §5 to changed facts; unchanged owners need no edit.
225
264
  - Metadata/templates: contracts and dates match actual edits; portable guidance agrees.
226
265
 
227
- Repair authority first, then affected detail/index/entry files. Record findings and verification
228
- in the task or a dated report, including unverified claims. Do not claim a repository-wide audit
229
- from focused checks. An ADR content reversal follows §6.1; editorial cleanup preserves history.
266
+ ### 7.2 Automatic repair
267
+
268
+ Automatically repair confirmed documentation defects when authoritative evidence supports the
269
+ correction, approved meaning is preserved, and the repair falls within authorized work. Examples
270
+ include broken references with a verified destination, duplicate prose, misplaced detail, stale
271
+ factual descriptions, and generated projections refreshed through their owning tools.
272
+
273
+ Identify the governing owner first. Correct it only if its statement is defective; otherwise repair
274
+ the conflicting projection. Observed implementation is evidence of current behavior, not authorization
275
+ to change accepted scope, decisions or contracts.
276
+
277
+ Auto-healing MUST NOT invent requirements or approvals, reverse architectural decisions, weaken
278
+ acceptance criteria or gates, fabricate completion evidence, or amend this constitution outside §6.8
279
+ authorization. Apply an already-authorized change without requesting approval again; otherwise report
280
+ the conflict and proposed resolution. An authorized ADR reversal follows §6.1.
281
+
282
+ Preserve decision history, stable references and unrelated edits. Regenerate tool-owned content
283
+ through its tool. Synchronize affected detail/index/entry files and in-scope templates under §5.
284
+
285
+ ### 7.3 Verification and unresolved findings
286
+
287
+ After repair, verify affected contracts, links, metadata and template parity with the applicable
288
+ checks. Record findings, verification and unresolved or unverified claims in the task or a dated
289
+ report. Do not claim a repository-wide audit from focused checks. If evidence remains ambiguous
290
+ or a repair fails verification, stop that repair and report the cause; do not declare it healed.
230
291
 
231
292
  ## 8. Lessons learned per file
232
293
 
@@ -243,6 +304,7 @@ this routing rule, not an instruction to append lessons here.
243
304
  Seed `00`–`05`, this constitution and `AGENTS.md` through the project initializer. Fill project
244
305
  facts from actual requirements and manifests; leave unknowns explicit. Do not pre-accept an
245
306
  ADR, invent a completed phase, or create fictitious feature/status rows in a fresh project.
246
- Use the feature tool for its index. Keep `DESIGN.md` optional; author it when UI work needs a
307
+ Start feature decomposition from approved requirements and apply §6.6 before creating top-level
308
+ features. Use the feature tool for its index. Keep `DESIGN.md` optional; author it when UI work needs a
247
309
  shared design language. Preserve existing customized docs and supported entry symlinks.
248
310
  Read `AGENTS.md` first, then the owners relevant to the work.
@@ -21,13 +21,6 @@
21
21
  "file": "packages/app/src/services/agent-service.ts",
22
22
  "keepsWorking": "a configured executor name in agent.default still resolves during the transition, warned once by warnAgentDefaultExecutorOnce; the value domain moved to roles (recommended default: coder)",
23
23
  "removalCondition": "no agent.default value names an agent.executors entry (scan .spur/config.yaml and config/config.example.yaml against the agent.executors names)"
24
- },
25
- {
26
- "id": "team-noun-retired",
27
- "wbs": "0848",
28
- "file": "apps/cli/src/commands/team.ts",
29
- "keepsWorking": "the `spur team` noun keeps working after its six verbs moved to owning nouns (0848): assign → `spur task update --assignee`, status → `spur agent list --specs`, up → fleet materialization at serve start (`spur projects list --fleet` for --check), down/start/stop → `spur agent stop|start|stop <spec-id>`; a one-time stderr warning (warnTeamNounRetiredOnce) names the replacement for the invoked verb and every verb keeps its previous exit code and output",
30
- "removalCondition": "no `spur team` invocation remains in config/workflows/, plugins/sp/, scripts/, or docs/, and the cutover window is recorded in docs/features/G64_retire-workspace-inbox-teams-and-spur-team.md"
31
24
  }
32
25
  ]
33
26
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobing-ai/spur",
3
- "version": "0.3.81",
3
+ "version": "0.3.83",
4
4
  "description": "Spur CLI — local-first harness for mainstream coding agents: constraint checking, workflow orchestration, agent health, and history analytics. Bun-native; exposes the `spur` command.",
5
5
  "keywords": [
6
6
  "spur",
@@ -185,7 +185,7 @@ pipeline step.
185
185
 
186
186
  ```
187
187
  plugins/sp/
188
- ├── skills/ # Domain knowledge + workflow docs (34 skills)
188
+ ├── skills/ # Domain knowledge + workflow docs (38 skills)
189
189
  │ ├── brainstorm/ # Structured ideation workflow
190
190
  │ │ ├── agents/openai.yaml
191
191
  │ │ ├── examples/ideation-example.md
@@ -231,9 +231,10 @@ plugins/sp/
231
231
  │ ├── spur-doctor/ # Read-only artifact evaluation → proposal table (backs spur-composer)
232
232
  │ ├── spur-dev/ # Thin planning→execution orchestration spine
233
233
  │ │ └── references/ # ac-style-guide, cross-cutting, decision-brief, dev-operations,
234
- │ │ execution-batch, execution-workflow, feature-link-helper,
235
- │ │ flag-glossary, gate-checklists, glossary, planning-workflow,
236
- │ │ product-planning (12 files)
234
+ │ │ done-housekeeping, execution-batch, execution-workflow,
235
+ │ │ feature-link-helper, flag-glossary, gate-checklists, glossary,
236
+ │ │ idea-evaluation, inline-pipeline-driver, planning-workflow,
237
+ │ │ product-planning, section-batching (16 files)
237
238
  │ ├── test-driven-development/ # TDD workflow companion (SKILL.md only)
238
239
  │ ├── reverse-engineering/ # Codebase reverse engineering / HLD / audit
239
240
  │ │ ├── agents/openai.yaml
@@ -255,6 +256,10 @@ plugins/sp/
255
256
  │ │ └── references/decision-method.md
256
257
  │ ├── sys-debugging/ # Structured debugging protocol
257
258
  │ │ └── references/debugging-protocol.md
259
+ │ ├── taste-refactoring-api/ # API contract design + refactor (checklists, examples, references)
260
+ │ ├── taste-refactoring-architect/ # Minimum-sufficient architecture review + refactor
261
+ │ ├── taste-refactoring-tests/ # Test-suite failure-sensitivity refactor
262
+ │ ├── taste-refactoring-ui/ # UI hierarchy, layout, typography + interaction refactor
258
263
  │ └── wayfinder/ # Multi-session investigation maps (SKILL.md only)
259
264
  ├── commands/ # 39 slash-command wrappers — the SSOT (hand-editable thin wrappers; see Commands below)
260
265
  ├── agents/ # 4 specialist subagents (expert-spur, super-coder, super-planner, super-reviewer)
@@ -323,7 +328,7 @@ surface or run one workflow. All skills target the same five core platforms: `cl
323
328
  | `brainstorm` | 1.0.0 | Structured ideation workflow — generate solution options with trade-offs and confidence scoring |
324
329
  | `wayfinder` | 1.0.0 | Multi-session investigation maps — chart a spur feature as the map when the destination itself is foggy, then resolve one ticket per session until the route is clear |
325
330
  | `daily-summary` | 1.0.0 | Daily summary report generator — orchestrates ccusage CLI + git history into structured markdown summaries |
326
- | `doc-evolve` | 1.0 | Key-document evolution per `docs/99_PROJECT_CONSTITUTION.md` — drift audits, same-commit sync checks, frontmatter-contract verification, machine-appended lessons |
331
+ | `doc-evolve` | 1.1 | Key-document evolution per `docs/99_PROJECT_CONSTITUTION.md` — drift audits, same-commit sync checks, frontmatter-contract verification, machine-appended lessons |
327
332
  | `reverse-engineering` | 1.1 | Codebase analysis / HLD generation / audit — depth-driven reverse engineering with orthogonal mode, focus, and format controls; backs `/sp:dev-reverse` |
328
333
  | `issue-finding` | 2.0 | Session-log forensics — multi-source discovery, bottleneck ranking, optional topic focus, CLI-gated fix task generation; **legacy path** — superseded by `history-anatomy` for indexed reporting; backs no current command; directly invocable as sp:issue-finding |
329
334
  | `conflict-finding` | 1.0 | Authority-aware semantic audit — four-pillar (source/task/feature/authority) conflict discovery, claim-specific authority resolution, reproducible evidence, confirmed owner-routed remediation; backs `/sp:dev-find-conflict` |
@@ -375,7 +380,7 @@ command is a user-facing entry point that bridges natural language to skill invo
375
380
 
376
381
  | Prefix | Count | Delegates to | Purpose |
377
382
  | ------------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
378
- | `dev-*` | 33 | `sp:spur-dev`, `sp:code-implementation`, `sp:code-testing`, `sp:code-verification`, `sp:code-simplification`, `sp:next-router`, `sp:brainstorm`, `sp:dogfood-testing`, `sp:parallel-execution`, `sp:sys-debugging`, `sp:daily-summary`, `sp:history-anatomy`, `sp:session-review`, `sp:conflict-finding`, `sp:reverse-engineering`, `sp:pr-reviewing`, inline | The dev-workflow surface — planning, execution, batch, wrap-up, review/verify, hygiene |
383
+ | `dev-*` | 33 | `sp:spur-dev`, `sp:spur-cli`, `sp:next-router`, `sp:next-feature`, `sp:brainstorm`, `sp:wayfinder`, `sp:sys-architecture`, `sp:code-implementation`, `sp:code-testing`, `sp:code-verification`, `sp:functional-review`, `sp:code-improvement`, `sp:code-simplification`, `sp:sys-debugging`, `sp:dogfood-testing`, `sp:parallel-execution`, `sp:history-anatomy`, `sp:session-review`, `sp:conflict-finding`, `sp:reverse-engineering`, `sp:pr-reviewing`, inline | The dev-workflow surface — planning, execution, batch, wrap-up, review/verify, hygiene |
379
384
  | `rule-*` | 3 | `sp:spur-cli` | The rule surface — `rule-add`, `rule-refine`, `rule-scan` |
380
385
  | `workflow-*` | 2 | `sp:spur-cli` | The workflow surface — `workflow-add`, `workflow-refine` |
381
386
  | `spur-init` | 1 | `sp:doc-evolve` | Project bootstrap (`spur init`) with doc-evolve integration |
@@ -429,17 +434,18 @@ the pipeline's Phase 7 review step.
429
434
 
430
435
  | Agent | Shape | Delegates to | Color | Trigger examples |
431
436
  | ---------------- | ------------ | ----------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------- |
432
- | `expert-spur` | expert | `sp:spur-cli` | green | "create tasks", "feature lifecycle", "add a rule", "author a workflow" |
437
+ | `expert-spur` | expert | `sp:spur-cli` + `sp:spur-composer` + `sp:spur-doctor` | green | "create tasks", "feature lifecycle", "add a rule", "author a workflow" |
433
438
  | `super-coder` | builder | `sp:sys-architecture` + `sp:code-implementation` + `sp:code-testing` + `sp:sys-debugging` | blue | "implement this", "write the code", "fix this bug", "design the architecture" |
434
439
  | `super-planner` | orchestrator | `sp:spur-dev` + `sp:parallel-execution` + `sp:dogfood-testing` + `sp:next-router` | green | "run this task end to end", "run all tasks", "run the batch", "runall" |
435
440
  | `super-reviewer` | reviewer | `sp:code-verification` + `sp:functional-review` + `sp:code-improvement` | crimson | "review this", "check the code", "SECUA review", "run task 0042 through review" |
436
441
 
437
442
  Each agent has:
438
443
 
439
- - `skills: [sp:<skill-name>]` - bound to one (`expert-spur`), four (`sp:sys-architecture`,
440
- `sp:code-implementation`, `sp:code-testing`, `sp:sys-debugging` for `super-coder`; `sp:spur-dev`,
441
- `sp:parallel-execution`, `sp:dogfood-testing`, `sp:next-router` for `super-planner`), or three
442
- (`sp:code-verification`, `sp:functional-review`, `sp:code-improvement` for `super-reviewer`).
444
+ - `skills: [sp:<skill-name>]` - each agent is bound to the skills it dispatches: three for
445
+ `expert-spur` (`sp:spur-cli`, `sp:spur-composer`, `sp:spur-doctor`) and `super-reviewer`
446
+ (`sp:code-verification`, `sp:functional-review`, `sp:code-improvement`); four for `super-coder`
447
+ (`sp:sys-architecture`, `sp:code-implementation`, `sp:code-testing`, `sp:sys-debugging`) and
448
+ `super-planner` (`sp:spur-dev`, `sp:parallel-execution`, `sp:dogfood-testing`, `sp:next-router`).
443
449
  - `model: inherit` — inherits the parent session's model.
444
450
  - `color` — roster display accent.
445
451
  - `tools` — allowed tool set (`Read`, `Grep`, `Glob`, `Bash`, `Skill`).
@@ -502,7 +508,7 @@ hold `SKILL.md` and prompt-side companions only.
502
508
  | `scripts/daily-summary/{daily-summary,logger}.ts` | ccusage + git-history orchestration helpers for `sp:daily-summary` |
503
509
  | `scripts/feature-sync-bounded.ts` | Bounded retry-suppression wrapper for `spur feature sync` during batch/wrap-up runs — suppresses identical L4-blocked repeats |
504
510
  | `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 |
505
- | `scripts/task-size-precheck.ts` | Pipeline size precheck guard (R2) + size-vs-executor-capability gate (R3) — evaluates R-item/Plan-count limits to PASS/FAIL |
511
+ | `scripts/task-size-precheck.ts` | Pipeline size precheck guard (R2) — evaluates R-item/Plan-count limits to PASS/FAIL |
506
512
  | `scripts/validate-flag-contracts.ts` | Mechanical consistency gate — compares flag claims across command files, flag-glossary, cross-cutting, dev-operations, and ADR; reports disagreements |
507
513
  | `*.test.ts` | Unit suites — in `hooks/` for guards, in `tests/<skill>/` per ADR-031 pairing |
508
514
 
@@ -536,7 +542,7 @@ graph TB
536
542
  end
537
543
 
538
544
  subgraph "Execution layer"
539
- CLI["spur CLI<br/>task · feature · rule · workflow<br/>· agent · history · team · message"]
545
+ CLI["spur CLI<br/>task · feature · rule · workflow<br/>· agent · history · message"]
540
546
  SCRIPT["hooks/task-write-guard.ts"]
541
547
  end
542
548
 
@@ -87,8 +87,8 @@ their runbook here.
87
87
  - Drive a task batch through execution, chain campaigns into a recurring loop, or dispatch and
88
88
  coordinate multiple agents — no batch driving, no recurring loops, no coordination dispatch here;
89
89
  they hand off to `sp:super-planner` or a workflow.
90
- - Use `spur team` or `spur agent loop` — both are forbidden surfaces. Agent specs are reached only
91
- through `spur agent create|edit|delete|list --specs`.
90
+ - Use `spur agent loop` — a supervisor-internal, forbidden surface. Agent specs are read through
91
+ `spur agent list --specs`.
92
92
 
93
93
  ## Output Format
94
94
 
@@ -124,4 +124,4 @@ recurring evolution loops, and multi-agent coordination are not dispatch duties
124
124
  to `sp:super-planner` or a workflow definition. If the operator explicitly asks for a follow-up
125
125
  corpus dispatch, its surface contract is
126
126
  [dispatch-surface.md](../skills/parallel-execution/references/dispatch-surface.md): native subagent
127
- by default, `spur agent run` only on a named trigger — never `spur team` or `spur agent loop`.
127
+ by default, `spur agent run` only on a named trigger — never `spur agent loop`.