@gobing-ai/spur 0.3.87 → 0.3.89
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/config.example.yaml +9 -0
- package/config/rules/boundary/env-var-hygiene.yaml +13 -5
- package/config/rules/strict/runtime-boundaries.yaml +1 -0
- package/config/workflows/idea-pipeline.yaml +17 -0
- package/config/workflows/task-pipeline.yaml +25 -0
- package/package.json +9 -9
- package/plugins/sp/README.md +2 -2
- package/plugins/sp/commands/dev-refine.md +25 -7
- package/plugins/sp/commands/dev-refineall.md +9 -6
- package/plugins/sp/hooks/agent-hint.ts +1 -1
- package/plugins/sp/hooks/careful-guard.ts +1 -1
- package/plugins/sp/hooks/context-post-tool.ts +1 -1
- package/plugins/sp/hooks/context-session-start.ts +1 -1
- package/plugins/sp/hooks/context-session-stop.ts +1 -1
- package/plugins/sp/hooks/pi/guard-extension.ts +1 -1
- package/plugins/sp/hooks/task-write-guard.ts +1 -1
- package/plugins/sp/lib/env.ts +46 -0
- package/plugins/sp/lib/idea-handoff.generated.mjs +160 -152
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/scripts/daily-summary/daily-summary.mjs +1 -1
- package/plugins/sp/scripts/daily-summary/daily-summary.ts +1 -1
- package/plugins/sp/scripts/feature-sync-bounded.mjs +1 -1
- package/plugins/sp/scripts/feature-sync-bounded.ts +1 -1
- package/plugins/sp/scripts/idea-handoff.mjs +1 -1
- package/plugins/sp/scripts/idea-handoff.ts +1 -1
- package/plugins/sp/scripts/inline-run-setup.ts +1 -1
- package/plugins/sp/scripts/pr-reviewing.mjs +1 -1
- package/plugins/sp/scripts/pr-reviewing.ts +1 -1
- package/plugins/sp/scripts/quality-gate.mjs +1 -1
- package/plugins/sp/scripts/quality-gate.ts +1 -1
- package/plugins/sp/scripts/task-evidence-precheck.ts +1 -1
- package/plugins/sp/scripts/task-size-precheck.ts +1 -1
- package/plugins/sp/scripts/verify-answer-lint.ts +1 -1
- package/plugins/sp/scripts/workflow-step-profile.mjs +1 -1
- package/plugins/sp/scripts/workflow-step-profile.ts +1 -1
- package/plugins/sp/scripts/wrapup-steps.mjs +1 -1
- package/plugins/sp/scripts/wrapup-steps.ts +1 -1
- package/plugins/sp/skills/spur-cli/references/agent.md +92 -9
- package/plugins/sp/skills/spur-dev/SKILL.md +33 -33
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +81 -24
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +6 -3
- package/plugins/sp/skills/spur-dev/references/planning-workflow.md +10 -6
- package/schemas/spur-config.schema.json +14 -2
- package/spur.js +1889 -465
- package/web/_astro/{BoardApp.yBBcFXWP.js → BoardApp.CDUcHlTJ.js} +67 -67
- package/web/_astro/BoardApp.CaCGU_uX.js +1 -0
- package/web/_astro/{TaskDetail.DqFJbRFc.js → TaskDetail.DwTmbQp5.js} +1 -1
- package/web/_astro/{arc.DL-BpHoi.js → arc.BzF71EFI.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.9IdQYyDq.js → architectureDiagram-3BPJPVTR.jvdDahWM.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.BKsFCqTl.js → blockDiagram-GPEHLZMM.zSg4AmFD.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.DhwI0dh1.js → c4Diagram-AAUBKEIU.BkUIUQWH.js} +1 -1
- package/web/_astro/channel.SSVY0JPQ.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.B3QVmQ9S.js → chunk-2J33WTMH.DvfQ_f50.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.DBSuqs9F.js → chunk-4BX2VUAB.DuI4gQqX.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.BSYTWAYD.js → chunk-55IACEB6.D3BWBOpF.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.cWVuxXfS.js → chunk-727SXJPM.3QSi0a9M.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.DpU_Ob3d.js → chunk-AQP2D5EJ.xazCQrAF.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.BykFkyji.js → chunk-FMBD7UC4.B2g6u4rA.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.DwgHlMdY.js → chunk-ND2GUHAM.wWwWs99t.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.CusXUGWM.js → chunk-QZHKN3VN.BD5g3qa9.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.fx0ObzkN.js → classDiagram-4FO5ZUOK.C7CzCdsX.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.fx0ObzkN.js → classDiagram-v2-Q7XG4LA2.C7CzCdsX.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.Z4HgOlsd.js → cose-bilkent-S5V4N54A.Xyiau0gw.js} +1 -1
- package/web/_astro/{cynefin-OW5HDTMX.B5dIZHJu.js → cynefin-OW5HDTMX.BeC5MWas.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.DT70Q_Yw.js → dagre-BM42HDAG.yZbMN9vc.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.DqHA3XBF.js → diagram-2AECGRRQ.Cmo2zQM-.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.BmCem957.js → diagram-5GNKFQAL.D033eSVi.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.sn0-hrE0.js → diagram-KO2AKTUF.CR6k3Y3G.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.BSHe9tVc.js → diagram-LMA3HP47.x7mwu8jz.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.DHIc-86k.js → diagram-OG6HWLK6.D8aTTvUr.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.Bxayrs7v.js → erDiagram-TEJ5UH35.BoBqcKXQ.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.BkzoE_5I.js → flowDiagram-I6XJVG4X.D3mTQdrU.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.okT6CvTo.js → ganttDiagram-6RSMTGT7.H-cqgIh-.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.CJuYbhC7.js → gitGraphDiagram-PVQCEYII.B6s9zbfC.js} +1 -1
- package/web/_astro/{infoDiagram-5YYISTIA.RqLy7nBo.js → infoDiagram-5YYISTIA.BzgCoV6P.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.BwIcoagw.js → ishikawaDiagram-YF4QCWOH.BZzVhy1-.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.UB1VbWtH.js → journeyDiagram-JHISSGLW.BV3195Py.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.AaxMKpTk.js → kanban-definition-UN3LZRKU.BjRd2DWz.js} +1 -1
- package/web/_astro/{linear.Nv_xOUjP.js → linear.BILTgS5N.js} +1 -1
- package/web/_astro/{mermaid.core.Bc4LqQgX.js → mermaid.core.DBy_WKeW.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.oKUvU_qi.js → mindmap-definition-RKZ34NQL.BiEjaI4-.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.DQk0oo03.js → pieDiagram-4H26LBE5.i_8V5pIn.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.BdDjESDa.js → quadrantDiagram-W4KKPZXB.BWaW3MHn.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.C2u9hUeH.js → requirementDiagram-4Y6WPE33.CzddBbtg.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.CDEoiJST.js → sankeyDiagram-5OEKKPKP.X2ww0e-D.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.D_hT_GAT.js → sequenceDiagram-3UESZ5HK.DSA4kTcc.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.DI8RYG0b.js → stateDiagram-AJRCARHV.D0DtFSpR.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.Bkxz4DnP.js → stateDiagram-v2-BHNVJYJU.BfQq0zQv.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.DSY-kH3-.js → timeline-definition-PNZ67QCA.Dmlrgi1m.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.CpaDtuGr.js → vennDiagram-CIIHVFJN.D5mpl00Z.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.DujQWvo8.js → wardleyDiagram-YWT4CUSO.Df4BdzO4.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.DcM5Y4b9.js → xychartDiagram-2RQKCTM6.DiTRreKN.js} +1 -1
- package/web/index.html +1 -1
- package/web/_astro/BoardApp.CJiqp5pS.js +0 -1
- package/web/_astro/channel.CX5453qQ.js +0 -1
|
@@ -174,7 +174,8 @@ establishes a baseline with it before the first change and re-runs it after each
|
|
|
174
174
|
Constrain the operation to a named subset of dimensions — review dimensions on `dev-review`/
|
|
175
175
|
`dev-verify`/`dev-verifyall` (`all|stack|dependencies|data|flows|api|security|quality|performance`),
|
|
176
176
|
a refactor lens set on `dev-refactor` (`api|architect|tests|ui|auto`), a refine focus mode on
|
|
177
|
-
`dev-refine`/`dev-refineall
|
|
177
|
+
`dev-refine`/`dev-refineall` (`all|requirements|background|constraints|acceptance|quick` —
|
|
178
|
+
[dev-operations.md](dev-operations.md) § refine), or a reconstruction lens on `dev-reverse`.
|
|
178
179
|
Narrowing reduces token cost; omitting runs
|
|
179
180
|
all dimensions.
|
|
180
181
|
|
|
@@ -372,10 +373,12 @@ Orthogonal to `--focus` (which _narrows_ domains) and to `--mode` on other comma
|
|
|
372
373
|
| Value (refine family) | Bar | `--auto` SKIP behavior |
|
|
373
374
|
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
374
375
|
| `standard` (default when omitted) | L3 structural completeness (not empty/placeholder; check-clean for target sections) | **SKIP** when no L3 findings on target sections |
|
|
375
|
-
| `ready` | **Implement-ready** freeze: another agent can implement without inventing design (frozen names/APIs or explicit "no new API", anti-patterns, file targets, handoffs, out-of-scope) | **Do not SKIP** on L3-clean alone — run the ready checklist
|
|
376
|
+
| `ready` | **Implement-ready** freeze: another agent can implement without inventing design (frozen names/APIs or explicit "no new API", anti-patterns, file targets, handoffs, out-of-scope) | **Do not SKIP** on L3-clean alone — audit existing claims, run the ready checklist, rewrite sections until the bar is met, then promote `backlog → todo` |
|
|
376
377
|
|
|
377
378
|
Default for refine stays `standard` so ordinary `refineall --auto` remains cheap. Use `ready` for
|
|
378
|
-
multi-package / multi-agent handoffs
|
|
379
|
+
multi-package / multi-agent handoffs, flaky-pipeline features where a wrong implement is costly, and
|
|
380
|
+
evaluating/correcting an existing task (review-triage filing, stale backlog) whose claims may no
|
|
381
|
+
longer hold.
|
|
379
382
|
Full checklist: [dev-operations.md](dev-operations.md) § refine (depth ready).
|
|
380
383
|
|
|
381
384
|
### `--bdd` — use BDD scenarios as the verification lens
|
|
@@ -301,10 +301,12 @@ the handoff degrades to refineall.
|
|
|
301
301
|
(and preferably Plan/AC) so tasks land **content-ready**. **`--skip-design`:** leave `design`
|
|
302
302
|
empty — headings only.
|
|
303
303
|
|
|
304
|
-
**Refine is the fallback
|
|
304
|
+
**Refine is the fallback** Design author, not the primary one. It is also the audit path for
|
|
305
|
+
tasks that already have content:
|
|
305
306
|
|
|
306
307
|
```text
|
|
307
308
|
/sp:dev-refine <wbs> # single task — fills blank Design/AC/Plan if L3 gaps
|
|
309
|
+
/sp:dev-refine <wbs> --depth ready # evaluate + correct an existing/filed task, then promote to todo
|
|
308
310
|
/sp:dev-refineall --feature X --auto
|
|
309
311
|
/sp:dev-refineall --feature X --auto --depth ready # implement-ready freeze (no L3-only SKIP)
|
|
310
312
|
```
|
|
@@ -314,7 +316,9 @@ Under `--auto` + **`--depth standard`** (default), refine **SKIP**s when target
|
|
|
314
316
|
placeholder, synthesis runs (standard tier by default; escalates only on gate-fail). Under
|
|
315
317
|
**`--depth ready`**, do not SKIP on L3-clean alone — run the implement-ready checklist in
|
|
316
318
|
[dev-operations.md](dev-operations.md) § refine (frozen APIs, anti-patterns, file targets, handoffs)
|
|
317
|
-
so another agent can implement without inventing design.
|
|
319
|
+
so another agent can implement without inventing design. Ready depth also audits every existing
|
|
320
|
+
claim against the current tree, records corrections in Background, and promotes a passing task
|
|
321
|
+
`backlog → todo`.
|
|
318
322
|
|
|
319
323
|
**Check the variant before you write.** Which sections a task carries is decided by its `template:`
|
|
320
324
|
frontmatter against `.spur/tasks/section-matrix.yaml` — NOT a fixed list. Before authoring any
|
|
@@ -344,16 +348,16 @@ feature filled before a runall, use `/sp:dev-refineall --feature <id> --auto` (b
|
|
|
344
348
|
of `/sp:dev-refine`). It reuses the same per-task refine operation, freezes the set, topo-sorts by
|
|
345
349
|
`dependencies[]`, and emits a batch report — see [dev-operations.md](dev-operations.md) § refineall.
|
|
346
350
|
This does **not** replace just-in-time refine before each implement; it is a bulk pre-pass when the
|
|
347
|
-
feature's tasks are still `backlog`/`todo` placeholders. Prefer `--auto` for batch scale
|
|
348
|
-
|
|
351
|
+
feature's tasks are still `backlog`/`todo` placeholders. Prefer `--auto` for batch scale.
|
|
352
|
+
`/sp:dev-refineall` takes no `--next`; chain with `/sp:dev-runall --feature <id>` afterwards.
|
|
349
353
|
|
|
350
354
|
**Refine arguments** (defined on the `/sp:dev-refine` entry point, passed through verbatim; also
|
|
351
355
|
shared flags on `/sp:dev-refineall`):
|
|
352
356
|
|
|
353
357
|
| Argument | Effect |
|
|
354
358
|
|----------|--------|
|
|
355
|
-
| `--focus <mode>` | Narrows the gap analysis to a subset of domain hints.
|
|
356
|
-
| `--depth <standard\|ready>` | Spec depth bar. `standard` (default) = L3 structural completeness + L3 SKIP under `--auto`. `ready` = implement-ready freeze (never L3-only SKIP). See [flag-glossary.md](flag-glossary.md#flag-depth). |
|
|
359
|
+
| `--focus <mode>` | Narrows the gap analysis to a subset of domain hints. Values `all`, `requirements`, `background`, `constraints`, `acceptance`, `quick` — hint table in [dev-operations.md](dev-operations.md) § refine. Default `all`. Under `--depth ready` it only orders the work. |
|
|
360
|
+
| `--depth <standard\|ready>` | Spec depth bar. `standard` (default) = L3 structural completeness + L3 SKIP under `--auto`. `ready` = audit + implement-ready freeze + promote to `todo` (never L3-only SKIP). See [flag-glossary.md](flag-glossary.md#flag-depth). |
|
|
357
361
|
| `--auto` | Skip interactive Q&A — synthesize improvements from the task content alone. Use for well-scoped tasks where the agent can fill gaps without operator input. **Required for practical batch use** via `dev-refineall`. |
|
|
358
362
|
|
|
359
363
|
**Pre-synthesis skip gate (under `--auto` + `--depth standard`).** Before synthesizing, run `spur task check <wbs> --json`. When the **refine target sections** show no L3 findings, emit a structured SKIP instead of calling the synthesis agent. **Not applied when `--depth ready`.**
|
|
@@ -167,8 +167,20 @@
|
|
|
167
167
|
"description": "Capability tier for stage-registry adaptive model routing (ADR-033, 0343). Live values: cheap | standard | capable-1 | capable-2 | capable-3 (1=low output quality, 3=high within the capable band). A stage starts on the cheapest eligible executor meeting its model_policy min_tier. Bare legacy `capable` is accepted at runtime (zod preprocess \u2192 capable-1) during the deprecation window but is not part of this editor enum."
|
|
168
168
|
},
|
|
169
169
|
"disabled": {
|
|
170
|
-
"
|
|
171
|
-
"
|
|
170
|
+
"description": "Routing kill-switch (111; ownership widened 0890): a disabled profile never serves a role, team, stage, or explicit selection, and doctor inventories it without probing. Omitted = enabled. Bare `true` is operator-owned (only humans write booleans); automatic writers emit the object form carrying owner (operator|quota|probe), since (RFC 3339) and reason.",
|
|
171
|
+
"anyOf": [
|
|
172
|
+
{ "type": "boolean" },
|
|
173
|
+
{
|
|
174
|
+
"type": "object",
|
|
175
|
+
"additionalProperties": false,
|
|
176
|
+
"required": ["owner", "since", "reason"],
|
|
177
|
+
"properties": {
|
|
178
|
+
"owner": { "enum": ["operator", "quota", "probe"] },
|
|
179
|
+
"since": { "type": "string", "format": "date-time", "minLength": 1 },
|
|
180
|
+
"reason": { "type": "string", "minLength": 1 }
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
]
|
|
172
184
|
}
|
|
173
185
|
}
|
|
174
186
|
}
|