@gobing-ai/spur 0.3.92 → 0.3.94
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/pipeline-budgets.json +0 -7
- package/config/plugin-scripts.json +10 -0
- package/config/rules/boundary/test-subpath-boundary.yaml +48 -0
- package/config/rules/strict/runtime-boundaries.yaml +2 -1
- package/config/rules/structure/protected-files.yaml +4 -0
- package/config/templates/AGENTS.md +4 -0
- package/config/templates/docs/02_ROADMAP.md +2 -0
- package/config/templates/docs/03_ARCHITECTURE.md +3 -1
- package/config/templates/docs/04_DESIGN.md +2 -0
- package/config/templates/docs/99_PROJECT_CONSTITUTION.md +10 -2
- package/config/workflow-candidates.json +72 -1
- package/config/workflows/feature-verification.yaml +1 -0
- package/config/workflows/history-anatomy.yaml +2 -0
- package/config/workflows/idea-pipeline.yaml +67 -18
- package/config/workflows/pr-review.yaml +8 -0
- package/config/workflows/task-pipeline.yaml +171 -39
- package/config/workflows/wayfinder-resolution.yaml +5 -0
- package/config/workflows/wrapup-pipeline.yaml +55 -14
- package/package.json +9 -9
- package/plugins/sp/README.md +8 -3
- package/plugins/sp/commands/dev-review-session.md +4 -4
- package/plugins/sp/commands/dev-review.md +16 -5
- package/plugins/sp/commands/dev-run.md +2 -2
- package/plugins/sp/commands/dev-runall.md +2 -2
- package/plugins/sp/hooks/pi/guard-extension.ts +17 -36
- package/plugins/sp/lib/idea-handoff.generated.mjs +8 -4
- package/plugins/sp/lib/inline-run.generated.d.mts +3 -0
- package/plugins/sp/lib/inline-run.generated.mjs +48 -19
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/scripts/inline-pipeline-parity-check.ts +1 -1
- package/plugins/sp/scripts/inline-run-setup.mjs +117 -7
- package/plugins/sp/scripts/inline-run-setup.ts +211 -7
- package/plugins/sp/scripts/quality-gate.mjs +255 -6
- package/plugins/sp/scripts/quality-gate.ts +425 -9
- package/plugins/sp/scripts/residual-scan.mjs +13 -5
- package/plugins/sp/scripts/residual-scan.ts +34 -7
- package/plugins/sp/scripts/task-diffstat.mjs +156 -0
- package/plugins/sp/scripts/task-diffstat.ts +229 -0
- package/plugins/sp/scripts/wrapup-drift-probe.mjs +181 -0
- package/plugins/sp/scripts/wrapup-drift-probe.ts +258 -0
- package/plugins/sp/scripts/wrapup-steps.mjs +60 -1
- package/plugins/sp/scripts/wrapup-steps.ts +89 -4
- package/plugins/sp/skills/brainstorm/SKILL.md +2 -0
- package/plugins/sp/skills/brainstorm/references/workflows.md +17 -2
- package/plugins/sp/skills/code-verification/SKILL.md +2 -2
- package/plugins/sp/skills/code-verification/references/secu-review.md +3 -2
- package/plugins/sp/skills/session-review/SKILL.md +11 -9
- package/plugins/sp/skills/spur-check/SKILL.md +112 -0
- package/plugins/sp/skills/spur-dev/SKILL.md +2 -1
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +14 -2
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +8 -2
- package/plugins/sp/skills/spur-dev/references/document-authoring.md +85 -0
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +46 -18
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +24 -3
- package/plugins/sp/skills/spur-dev/references/gate-checklists.md +3 -2
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +34 -2
- package/plugins/sp/skills/spur-dev/references/planning-workflow.md +5 -5
- package/plugins/sp/skills/spur-dev/templates/design.md +31 -0
- package/plugins/sp/skills/spur-dev/templates/plan.md +32 -0
- package/plugins/sp/skills/spur-doctor/SKILL.md +60 -14
- package/schemas/state-machine-workflow.schema.json +4 -0
- package/spur.js +19577 -19822
- package/web/_astro/BoardApp.C02hAHPO.js +1 -0
- package/web/_astro/{BoardApp.CerSBgis.js → BoardApp.FTEs3-N8.js} +107 -105
- package/web/_astro/{TaskDetail.DCqiC-OZ.js → TaskDetail.C-GdsS-t.js} +1 -1
- package/web/_astro/arc.uuAf51IT.js +1 -0
- package/web/_astro/{architectureDiagram-3BPJPVTR.DM_vp_hO.js → architectureDiagram-3BPJPVTR.CGe629A1.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.DXVIiv0p.js → blockDiagram-GPEHLZMM.D1mGCq3p.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.BbF_zCxW.js → c4Diagram-AAUBKEIU.CMsolcde.js} +1 -1
- package/web/_astro/channel.fsgl7o5j.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.CAgQHpPC.js → chunk-2J33WTMH.CrGA3fik.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.BN-5tpw4.js → chunk-4BX2VUAB.DsLVVla0.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.CnPkEEr0.js → chunk-55IACEB6.Dxc59Tfi.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.BQzQeMVm.js → chunk-727SXJPM.CaEVE2Wy.js} +4 -4
- package/web/_astro/{chunk-AQP2D5EJ.B6xNyDnL.js → chunk-AQP2D5EJ.BiJ4HXeI.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.C7f9Ih78.js → chunk-FMBD7UC4.Mxf1fru5.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.CNV1dFXT.js → chunk-ND2GUHAM.pyOWQixH.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.Cudn2TkJ.js → chunk-QZHKN3VN.BmEsg4vr.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.D1NwP50q.js → classDiagram-4FO5ZUOK.BHhhMFTO.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.D1NwP50q.js → classDiagram-v2-Q7XG4LA2.BHhhMFTO.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.B1wSL-Xb.js → cose-bilkent-S5V4N54A.2fH4YOlp.js} +1 -1
- package/web/_astro/{cynefin-OW5HDTMX.BmK52w8G.js → cynefin-OW5HDTMX.C2j1_lKL.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.Bfy5CTDT.js → dagre-BM42HDAG.hZ2NCTdT.js} +2 -2
- package/web/_astro/diagram-2AECGRRQ.Bfw5_EzK.js +43 -0
- package/web/_astro/diagram-5GNKFQAL.Bt1V_Tmk.js +10 -0
- package/web/_astro/{diagram-KO2AKTUF.CW_vMJ4z.js → diagram-KO2AKTUF.DEk-YFwp.js} +3 -3
- package/web/_astro/{diagram-LMA3HP47.B_8ZGF67.js → diagram-LMA3HP47.CDjndtQm.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.BppnHsdS.js → diagram-OG6HWLK6.cFnUHScG.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.BEuHXcjJ.js → erDiagram-TEJ5UH35.DlhYp7NV.js} +5 -5
- package/web/_astro/{flowDiagram-I6XJVG4X.CH-UlnGr.js → flowDiagram-I6XJVG4X.DNTpsxfx.js} +4 -4
- package/web/_astro/{ganttDiagram-6RSMTGT7.BO81S85v.js → ganttDiagram-6RSMTGT7.DC_p36PI.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.XnPxPPZN.js → gitGraphDiagram-PVQCEYII.DkEqNI0P.js} +1 -1
- package/web/_astro/{infoDiagram-5YYISTIA.JyjYRu_T.js → infoDiagram-5YYISTIA.CrjioCTG.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.BBRBF-Fo.js → ishikawaDiagram-YF4QCWOH.BcK0CN8n.js} +5 -5
- package/web/_astro/{journeyDiagram-JHISSGLW.C_iymSyp.js → journeyDiagram-JHISSGLW.p0CbBDX1.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.DdfW-Oqt.js → kanban-definition-UN3LZRKU.puHIFt6J.js} +7 -7
- package/web/_astro/{linear.C2_IkbZT.js → linear.Bb-3a1d7.js} +1 -1
- package/web/_astro/mermaid.core.CJDgXOJs.js +301 -0
- package/web/_astro/{mindmap-definition-RKZ34NQL.DAZIxQSK.js → mindmap-definition-RKZ34NQL.BoAZEI9t.js} +2 -2
- package/web/_astro/{pieDiagram-4H26LBE5.CN8sIhKM.js → pieDiagram-4H26LBE5.CJNSdqY7.js} +3 -3
- package/web/_astro/{quadrantDiagram-W4KKPZXB.3dGcX5GP.js → quadrantDiagram-W4KKPZXB.DtTy7_0Z.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.BV2y4dd6.js → requirementDiagram-4Y6WPE33.BNYV98Xg.js} +3 -3
- package/web/_astro/{sankeyDiagram-5OEKKPKP.Cqo15Tvo.js → sankeyDiagram-5OEKKPKP.DRq9DGHp.js} +4 -4
- package/web/_astro/{sequenceDiagram-3UESZ5HK.CROCPMJB.js → sequenceDiagram-3UESZ5HK.B7KdBFCm.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.RfXZrkFE.js → stateDiagram-AJRCARHV.CD62ZJ2H.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.CPXmbBs9.js → stateDiagram-v2-BHNVJYJU.CeVk1TAj.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.DdgKTiO8.js → timeline-definition-PNZ67QCA.C_ZPA5tT.js} +3 -3
- package/web/_astro/{vennDiagram-CIIHVFJN.CPNVSHF1.js → vennDiagram-CIIHVFJN.CrThO_FQ.js} +5 -5
- package/web/_astro/{wardleyDiagram-YWT4CUSO.CQhA0Jyr.js → wardleyDiagram-YWT4CUSO.DSZCA5nl.js} +3 -3
- package/web/_astro/{xychartDiagram-2RQKCTM6.n61BWyy4.js → xychartDiagram-2RQKCTM6.KI7baTuk.js} +1 -1
- package/web/index.html +1 -1
- package/config/workflows/decision-routing-example.yaml +0 -134
- package/web/_astro/BoardApp.eoTz0pZs.js +0 -1
- package/web/_astro/arc.CPwg6Rw0.js +0 -1
- package/web/_astro/channel.MYZLKNwy.js +0 -1
- package/web/_astro/diagram-2AECGRRQ.DhNnvUvX.js +0 -43
- package/web/_astro/diagram-5GNKFQAL.lTX5KwnS.js +0 -10
- package/web/_astro/mermaid.core.GAOYeSR0.js +0 -303
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spur-doctor
|
|
3
|
-
description: "Evaluate spur artifacts from read-only
|
|
3
|
+
description: "Evaluate spur artifacts and plan/design Markdown from read-only evidence, reflect over sp:history-anatomy findings, and return a proposal table. Diagnoses artifacts, not runtime environments (that is spur agent doctor). Triggers: check artifact health, propose evolution, review legacy documents."
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
version: 1.0.0
|
|
6
6
|
metadata:
|
|
@@ -26,16 +26,19 @@ see_also:
|
|
|
26
26
|
# sp:spur-doctor — evaluate spur artifacts and propose changes
|
|
27
27
|
|
|
28
28
|
One cross-noun method (ADR-114, [spur artifact evolution](../../../../docs/design/spur-artifact-evolution.md)
|
|
29
|
-
§2): gather **read-only
|
|
30
|
-
**reflect** over `sp:history-anatomy` findings
|
|
31
|
-
**artifacts
|
|
29
|
+
§2): gather **read-only evidence** about tasks, features, rules, workflows, agent specs, and
|
|
30
|
+
plan/design Markdown; **reflect** over `sp:history-anatomy` findings; and return a
|
|
31
|
+
**proposal table**. It diagnoses spur artifacts — definitions, rules, corpus records and documents —
|
|
32
|
+
not runtime environments: whether an agent
|
|
32
33
|
binary, host session or tool install is healthy is `spur agent doctor`'s job, not this skill's.
|
|
33
34
|
|
|
34
35
|
## Read-only invariant
|
|
35
36
|
|
|
36
|
-
The doctor **writes nothing and names no mutating verb**. It performs no task, feature, rule
|
|
37
|
-
workflow write
|
|
38
|
-
([../spur-composer/SKILL.md](../spur-composer/SKILL.md)) applies
|
|
37
|
+
The doctor **writes nothing and names no mutating verb**. It performs no task, feature, rule,
|
|
38
|
+
workflow or document write. The operator accepts rows; `sp:spur-composer`
|
|
39
|
+
([../spur-composer/SKILL.md](../spur-composer/SKILL.md)) applies corpus rows, while a document
|
|
40
|
+
author applies plan/design rows using the
|
|
41
|
+
[spur-dev authoring guide](../spur-dev/references/document-authoring.md). A caller that wants a
|
|
39
42
|
record saves the returned table under `docs/reports/`; the doctor creates no artifact store.
|
|
40
43
|
|
|
41
44
|
- **History enters only through `sp:history-anatomy` findings.** Raw history records stay out
|
|
@@ -55,9 +58,51 @@ record saves the returned table under `docs/reports/`; the doctor creates no art
|
|
|
55
58
|
| workflow | `spur workflow validate --json` (findings by `level`), `node "$(superskill script path sp workflow-step-profile.mjs)" <workflow> --json` |
|
|
56
59
|
| agent spec | `spur agent list --specs --json` |
|
|
57
60
|
| history | A `sp:history-anatomy` report ([../history-anatomy/SKILL.md](../history-anatomy/SKILL.md)), never raw history records |
|
|
61
|
+
| plan/design Markdown | The file itself, the project constitution, the relevant spur-dev template, and inbound index/links; no new CLI needed |
|
|
58
62
|
|
|
59
63
|
Every row of a proposal cites the evidence it rests on. No anchor, no proposal.
|
|
60
64
|
|
|
65
|
+
## Legacy plan and design review
|
|
66
|
+
|
|
67
|
+
Enumerate `docs/plans/*.md` and `docs/design/*.md` with `rg --files` and sort the paths. Include
|
|
68
|
+
every Markdown path in the review; JSON and other files are outside this contract. For a large set,
|
|
69
|
+
freeze the list and split it into named path groups by record type (for example
|
|
70
|
+
`docs/plans/*-brainstorm.md`, other plans, designs), at most ~40 files each, and combine their
|
|
71
|
+
coverage lists. Read each file and the project constitution before judging it. Report scanned paths
|
|
72
|
+
and counts of proposals and no-ops, so an omitted file is visible.
|
|
73
|
+
|
|
74
|
+
Compare each plan with the [plan template](../spur-dev/templates/plan.md) and each design with the
|
|
75
|
+
[design template](../spur-dev/templates/design.md), using the
|
|
76
|
+
[authoring guide](../spur-dev/references/document-authoring.md) for meaning. Look for missing or
|
|
77
|
+
unsupported `kind`, title, status, dates, material related links or useful tags; unclear objective,
|
|
78
|
+
premises, execution sequence or follow-up in a plan; unclear issue, context, solution, contract or
|
|
79
|
+
compatibility in a design; and a missing `04_DESIGN.md` pointer for a design satellite.
|
|
80
|
+
These are **review prompts**, not format errors. Keep specialized sections required by a producing workflow.
|
|
81
|
+
|
|
82
|
+
Judge metadata against the authoring guide's **frontmatter vocabulary** and **legacy metadata
|
|
83
|
+
upgrade** rules, so every row in a batch makes the same choice: the same key mapping, `title` from
|
|
84
|
+
the H1, `related` from owner keys or linking feature/task records, `created_at` source order
|
|
85
|
+
(legacy `date`, filename prefix, first commit, else flag), status mapping only when unambiguous,
|
|
86
|
+
and tags in record-type → feature → area order from the shared list. A row whose status or tag needs
|
|
87
|
+
judgment says so in `change` instead of picking a value. Never propose renumbering or renaming a
|
|
88
|
+
legacy heading.
|
|
89
|
+
|
|
90
|
+
Propose only evidence-backed, useful edits. A proposal names the exact file and heading or
|
|
91
|
+
frontmatter field, cites a line and the governing rule, and says what can be inferred and what
|
|
92
|
+
needs an operator answer. Preserve filenames, anchors, original dates, decisions and historical
|
|
93
|
+
status. Do not silently promote a proposal to current behavior, invent metadata, or rewrite a
|
|
94
|
+
whole file to fit a template. A conforming or intentionally specialized file is a no-op.
|
|
95
|
+
|
|
96
|
+
The `apply` cell for a document row points to the spur-dev authoring guide; the author edits an
|
|
97
|
+
accepted row in place, then runs `sp:doc-evolve` sync-check for affected key documents and verifies
|
|
98
|
+
links, headings, frontmatter and the `04` index when applicable. No bulk conversion or strict
|
|
99
|
+
validator is required for old files.
|
|
100
|
+
|
|
101
|
+
For a batch, the caller saves each group's table as
|
|
102
|
+
`docs/reports/YYYY-MM-DD-<group>-doc-upgrade-review.md`. After the operator accepts rows, the author
|
|
103
|
+
applies one group's metadata-only rows together and commits them as one change; body restructuring
|
|
104
|
+
rows stay per file. Flagged rows wait for the operator's answer.
|
|
105
|
+
|
|
61
106
|
## Workflow step profile and cache-window flags
|
|
62
107
|
|
|
63
108
|
The step profile (`plugins/sp/scripts/workflow-step-profile`, ADR-065 plugin entrypoint) reads
|
|
@@ -114,25 +159,26 @@ Return one row per actionable finding, with exactly these columns:
|
|
|
114
159
|
| Column | Content |
|
|
115
160
|
| --- | --- |
|
|
116
161
|
| `key` | The finding key, or `<noun>:<id>:<check>` for an artifact finding |
|
|
117
|
-
| `evidence` |
|
|
162
|
+
| `evidence` | CLI output, report section, or document path and line the row rests on |
|
|
118
163
|
| `action` | One action class from the reflection map (or the per-noun evaluation) |
|
|
119
164
|
| `change` | The proposed change, in one line |
|
|
120
|
-
| `apply` | The `spur
|
|
165
|
+
| `apply` | The `spur`/composer route for corpus rows or the spur-dev authoring guide for document rows |
|
|
121
166
|
| `verify` | The evidence to re-run after applying |
|
|
122
167
|
|
|
123
168
|
Rules:
|
|
124
169
|
|
|
125
|
-
-
|
|
126
|
-
|
|
170
|
+
- Corpus `apply` routes use a `spur` verb or gated composer step; document rows use the spur-dev
|
|
171
|
+
authoring guide. The doctor itself never edits either surface. Shared-workflow rows route
|
|
172
|
+
through the composition ladder's shared step.
|
|
127
173
|
- A `task` row carries the finding `key` in the task body (the history-anatomy handoff route).
|
|
128
174
|
- Rows are proposals only. No applied change, diff, or command output claimed as run.
|
|
129
175
|
|
|
130
176
|
## What this skill is not
|
|
131
177
|
|
|
132
|
-
- **Not the applier.** `sp:spur-composer` applies accepted rows
|
|
133
|
-
|
|
178
|
+
- **Not the applier.** `sp:spur-composer` applies accepted corpus rows and document authors apply
|
|
179
|
+
accepted document rows; this skill performs no write.
|
|
134
180
|
- **Not a runtime doctor.** Environment, binary and session readiness belong to
|
|
135
|
-
`spur agent doctor`; this skill diagnoses
|
|
181
|
+
`spur agent doctor`; this skill diagnoses artifacts from read-only evidence.
|
|
136
182
|
- **Not a history interpreter.** Findings come from `sp:history-anatomy` reports, never from raw
|
|
137
183
|
history records.
|
|
138
184
|
- **Not a loop.** Recurring evolution passes belong to `sp:super-planner` or a workflow.
|
|
@@ -135,6 +135,10 @@
|
|
|
135
135
|
"type": "string",
|
|
136
136
|
"minLength": 1
|
|
137
137
|
},
|
|
138
|
+
"terminalReason": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"description": "Closed terminal-reason enum declared when this edge finalizes the run (0937 R3; required for edges into failureStates)."
|
|
141
|
+
},
|
|
138
142
|
"description": {
|
|
139
143
|
"type": "string"
|
|
140
144
|
},
|