@gobing-ai/spur 0.3.62 → 0.3.64
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/corpus-baseline.json +3428 -3796
- package/config/workflows/history-anatomy.yaml +40 -11
- package/package.json +9 -9
- package/plugins/sp/README.md +8 -5
- package/plugins/sp/agents/expert-spur.md +20 -4
- package/plugins/sp/commands/dev-find-issue.md +4 -4
- package/plugins/sp/commands/dev-gitmsg.md +12 -6
- package/plugins/sp/commands/dev-gtd.md +8 -19
- package/plugins/sp/commands/dev-idea.md +3 -3
- package/plugins/sp/commands/dev-plan.md +1 -1
- package/plugins/sp/commands/dev-run.md +2 -2
- package/plugins/sp/commands/dev-runall.md +2 -2
- package/plugins/sp/commands/dev-wrap.md +5 -6
- package/plugins/sp/commands/dev-wrapall.md +5 -7
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/environment-lens.md +66 -0
- package/plugins/sp/scripts/history-anatomy-cache.mjs +165 -15
- package/plugins/sp/scripts/history-anatomy-cache.ts +216 -15
- package/plugins/sp/skills/dogfood-testing/SKILL.md +14 -1
- package/plugins/sp/skills/dogfood-testing/references/report-template.md +30 -0
- package/plugins/sp/skills/history-anatomy/SKILL.md +3 -3
- package/plugins/sp/skills/history-anatomy/references/operations.md +21 -8
- package/plugins/sp/skills/history-anatomy/references/report-contract.md +63 -5
- package/plugins/sp/skills/next-router/SKILL.md +4 -4
- package/plugins/sp/skills/pr-reviewing/SKILL.md +2 -3
- package/plugins/sp/skills/redesign-web-ui/SKILL.md +184 -0
- package/plugins/sp/skills/redesign-web-ui/references/audit-checklist.md +121 -0
- package/plugins/sp/skills/redesign-web-ui/references/upgrade-techniques.md +66 -0
- package/plugins/sp/skills/spur-cli/references/agent.md +16 -7
- package/plugins/sp/skills/spur-cli/references/message.md +4 -2
- package/plugins/sp/skills/spur-cli/references/workflows/authoring-workflows.md +5 -0
- package/plugins/sp/skills/spur-cli/references/workflows/operations.md +20 -5
- package/plugins/sp/skills/spur-cli/references/workflows/workflow-fit-and-tuning.md +230 -0
- package/plugins/sp/skills/spur-cli/references/workflows.md +26 -4
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +28 -34
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +62 -20
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +1 -1
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +18 -8
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +7 -6
- package/spur.js +1012 -372
- package/web/_astro/{BoardApp.rkWGVwwK.js → BoardApp.CKolAjUz.js} +56 -56
- package/web/_astro/BoardApp.DXD--ybM.js +1 -0
- package/web/_astro/{TaskDetail.B7ODt_bA.js → TaskDetail.Bre7G4gC.js} +1 -1
- package/web/_astro/{arc.C5QRz6AQ.js → arc.7luwOGiC.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.CHptn8gZ.js → architectureDiagram-3BPJPVTR.F6KaHXp-.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.b1nEDkDw.js → blockDiagram-GPEHLZMM.CCGHeRVi.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.BWj8S_Qq.js → c4Diagram-AAUBKEIU.CpqewGmd.js} +1 -1
- package/web/_astro/channel.DxfOFf1l.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.q0BBuE1n.js → chunk-2J33WTMH.CB9vKa5F.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.DP2KDkAU.js → chunk-4BX2VUAB.ifGXoUA3.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.CkCId72p.js → chunk-55IACEB6.VIaRo7l8.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.oHWzxMot.js → chunk-727SXJPM.DzPE41OS.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.DkkgxfMP.js → chunk-AQP2D5EJ.UF2QRXYF.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.lmFJDvRK.js → chunk-FMBD7UC4.D2zXKa1R.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.52jt0eHK.js → chunk-ND2GUHAM.Cb9bDyvx.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.Cg8KEFoD.js → chunk-QZHKN3VN.nUKFBiLD.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.BuOUhxcD.js → classDiagram-4FO5ZUOK.DZg9K9mO.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.BuOUhxcD.js → classDiagram-v2-Q7XG4LA2.DZg9K9mO.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.BRUU8E_0.js → cose-bilkent-S5V4N54A.D9STo90d.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.GDbfFYVV.js → dagre-BM42HDAG.D3IbwhHz.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.CvIDBeJF.js → diagram-2AECGRRQ.BWTDxBe9.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.DMgJjWOX.js → diagram-5GNKFQAL.XnXlonHG.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.njjl-0AP.js → diagram-KO2AKTUF.CywOngCO.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.CcCqgP8M.js → diagram-LMA3HP47.DY1D21Iu.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.Btqd-YVE.js → diagram-OG6HWLK6.DQxb59KA.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.BbhML_Xo.js → erDiagram-TEJ5UH35.CF2U-pQZ.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.CkvsIgY8.js → flowDiagram-I6XJVG4X.BJK4M3in.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.m8IWD_wW.js → ganttDiagram-6RSMTGT7.BSniMzdB.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.5z87HXO-.js → gitGraphDiagram-PVQCEYII.Dxg-yRov.js} +1 -1
- package/web/_astro/index.BVXdIsZV.css +1 -0
- package/web/_astro/{infoDiagram-5YYISTIA.Bvyvsd7Q.js → infoDiagram-5YYISTIA.BY4CgO_n.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.DdWVYO87.js → ishikawaDiagram-YF4QCWOH.BmWDZtwF.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.C3kOlYH1.js → journeyDiagram-JHISSGLW.CpB1YWDP.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.CfKTUHVC.js → kanban-definition-UN3LZRKU.k-fukQX9.js} +1 -1
- package/web/_astro/{linear.CMDHnzgX.js → linear.BNNCobvI.js} +1 -1
- package/web/_astro/{mermaid.core.DN7-WrsP.js → mermaid.core.DnpzzuPU.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.DcQxLvqG.js → mindmap-definition-RKZ34NQL.D9NnlLBu.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.Nu-Inbw6.js → pieDiagram-4H26LBE5.CKhoMiyC.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.Dck2EChs.js → quadrantDiagram-W4KKPZXB.BkAygRlm.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.C--E5XuW.js → requirementDiagram-4Y6WPE33.CX8ibmwc.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.B_0iRNna.js → sankeyDiagram-5OEKKPKP.Dvurpa0Y.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.PKuKr9mk.js → sequenceDiagram-3UESZ5HK.veO8c2tk.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.ClhGHb-O.js → stateDiagram-AJRCARHV.DpMr4CO3.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.Bv6BBnvg.js → stateDiagram-v2-BHNVJYJU.CKjso86_.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.BZm2ZvAH.js → timeline-definition-PNZ67QCA.DayoPp_2.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.Dt6yZXry.js → vennDiagram-CIIHVFJN.XNHf04O9.js} +1 -1
- package/web/_astro/{wardley-L42UT6IY.rUs-E00M.js → wardley-L42UT6IY.CpM_031g.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.BcWgv4cA.js → wardleyDiagram-YWT4CUSO.lIAjSkZJ.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.DH-M-cX9.js → xychartDiagram-2RQKCTM6.D8_2K6U1.js} +1 -1
- package/web/index.html +2 -2
- package/web/_astro/BoardApp.Z9jMwI9G.js +0 -1
- package/web/_astro/channel.BJtn6CGV.js +0 -1
- package/web/_astro/index.nWve6EHS.css +0 -1
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
# date — YYYY-MM-DD for --date (daily); empty for ad-hoc
|
|
32
32
|
# since — inclusive ISO lower bound (ad-hoc; also normalizes daily via the DST-aware rule)
|
|
33
33
|
# until — inclusive ISO upper bound (ad-hoc)
|
|
34
|
+
# baselineSince — declared home for the baseline-leg lower bound the analyze stage references;
|
|
35
|
+
# actual values flow through the run-scoped env file emitted by resolve-paths
|
|
36
|
+
# (0674 R2/R5 — a referenced var must have a declared home, never an implicit one)
|
|
37
|
+
# baselineUntil — baseline-leg upper bound, same contract as baselineSince
|
|
34
38
|
# focus — ad-hoc focus string (required in ad-hoc mode, rejected in daily)
|
|
35
39
|
# recompute — "true" forces the full analyze/render/enrich/validate path (cache disposition
|
|
36
40
|
# forced-recompute)
|
|
@@ -57,10 +61,14 @@ vars:
|
|
|
57
61
|
date: ""
|
|
58
62
|
since: ""
|
|
59
63
|
until: ""
|
|
64
|
+
baselineSince: ""
|
|
65
|
+
baselineUntil: ""
|
|
60
66
|
focus: ""
|
|
61
67
|
recompute: "false"
|
|
62
68
|
output: ""
|
|
63
|
-
|
|
69
|
+
# 0676 R5: omp went quota-dead (HTTP 429) in the 2026-08-25 dogfood. The literal names a
|
|
70
|
+
# currently-reachable executor; `agent.default` in config still overrides via the precedence chain.
|
|
71
|
+
agent: "claude"
|
|
64
72
|
spurBin: "spur"
|
|
65
73
|
__runId: ""
|
|
66
74
|
stepTimeoutMs: "1800000"
|
|
@@ -110,7 +118,8 @@ states:
|
|
|
110
118
|
command: >-
|
|
111
119
|
h=$(superskill script path sp history-anatomy-cache.mjs);
|
|
112
120
|
node "$h" paths --helper "$h" --report-dir "$reportDir" --date "$date"
|
|
113
|
-
--output "$output" --
|
|
121
|
+
--output "$output" --mode "$mode" --since "$since" --until "$until"
|
|
122
|
+
--out .spur/run/$__runId-paths.txt
|
|
114
123
|
|
|
115
124
|
- id: analyze
|
|
116
125
|
description: >
|
|
@@ -122,11 +131,13 @@ states:
|
|
|
122
131
|
options:
|
|
123
132
|
command: >-
|
|
124
133
|
mkdir -p .spur/run;
|
|
125
|
-
|
|
134
|
+
. .spur/run/$__runId-paths.txt;
|
|
135
|
+
$spurBin history analyze --out .spur/run/$__runId-history-anatomy-current.json --since "$HA_SINCE" --until "$HA_UNTIL" --json
|
|
126
136
|
- kind: shell
|
|
127
137
|
options:
|
|
128
138
|
command: >-
|
|
129
|
-
|
|
139
|
+
. .spur/run/$__runId-paths.txt;
|
|
140
|
+
$spurBin history analyze --out .spur/run/$__runId-history-anatomy-baseline.json --since "$HA_BASELINE_SINCE" --until "$HA_BASELINE_UNTIL" --json 2>/dev/null || true
|
|
130
141
|
|
|
131
142
|
- id: cache-probe
|
|
132
143
|
description: >
|
|
@@ -138,7 +149,7 @@ states:
|
|
|
138
149
|
- kind: shell
|
|
139
150
|
options:
|
|
140
151
|
command: >-
|
|
141
|
-
. .spur/run/$__runId-paths.
|
|
152
|
+
. .spur/run/$__runId-paths.txt;
|
|
142
153
|
node "$HA_HELPER" probe --artifact .spur/run/$__runId-history-anatomy-current.json
|
|
143
154
|
--baseline .spur/run/$__runId-history-anatomy-baseline.json --target "$HA_TARGET"
|
|
144
155
|
--mode "$mode" --date "$HA_DATE" --recompute "$recompute" --executor "$agent"
|
|
@@ -161,8 +172,14 @@ states:
|
|
|
161
172
|
- id: enrich
|
|
162
173
|
description: >
|
|
163
174
|
Model enrichment via the skill operation sp:history-anatomy enrich (0658 operations.md).
|
|
164
|
-
Consumes the two artifacts; authors the model half of the report.
|
|
175
|
+
Consumes the two artifacts; authors the model half of the report. A porcelain baseline
|
|
176
|
+
is captured before dispatch and asserted after: any working-tree file created outside the
|
|
177
|
+
declared output fails the run (0676 R3).
|
|
165
178
|
onEnter:
|
|
179
|
+
- kind: shell
|
|
180
|
+
options:
|
|
181
|
+
command: >-
|
|
182
|
+
git status --porcelain > .spur/run/$__runId-baseline-enrich.txt || true
|
|
166
183
|
- kind: agent.run
|
|
167
184
|
options:
|
|
168
185
|
agent: ${vars.agent}
|
|
@@ -171,10 +188,14 @@ states:
|
|
|
171
188
|
role: reviewer
|
|
172
189
|
expectFile: .spur/run/${vars.__runId}-candidate.md
|
|
173
190
|
timeoutMs: ${vars.stepTimeoutMs}
|
|
191
|
+
- kind: shell
|
|
192
|
+
options:
|
|
193
|
+
command: >-
|
|
194
|
+
node "$(superskill script path sp history-anatomy-cache.mjs)" assert-clean --baseline .spur/run/$__runId-baseline-enrich.txt --expect .spur/run/$__runId-candidate.md
|
|
174
195
|
|
|
175
196
|
- id: structure-gate
|
|
176
197
|
description: >
|
|
177
|
-
Deterministic structure gate via the helper (0659). Asserts the
|
|
198
|
+
Deterministic structure gate via the helper (0659). Asserts the twelve sections in order,
|
|
178
199
|
per-finding fields, no placeholders, evidence anchors. Not reachable on the hit path from
|
|
179
200
|
enrich — always gated before validation.
|
|
180
201
|
onEnter:
|
|
@@ -187,8 +208,12 @@ states:
|
|
|
187
208
|
- id: validate
|
|
188
209
|
description: >
|
|
189
210
|
Independent evidence validation via the skill operation sp:history-anatomy validate.
|
|
190
|
-
Publication is reachable only from a PASS here.
|
|
211
|
+
Publication is reachable only from a PASS here. Same undeclared-write assertion as enrich (0676 R3).
|
|
191
212
|
onEnter:
|
|
213
|
+
- kind: shell
|
|
214
|
+
options:
|
|
215
|
+
command: >-
|
|
216
|
+
git status --porcelain > .spur/run/$__runId-baseline-validate.txt || true
|
|
192
217
|
- kind: agent.run
|
|
193
218
|
options:
|
|
194
219
|
agent: ${vars.agent}
|
|
@@ -197,6 +222,10 @@ states:
|
|
|
197
222
|
role: reviewer
|
|
198
223
|
expectFile: .spur/run/${vars.__runId}-validation.txt
|
|
199
224
|
timeoutMs: ${vars.stepTimeoutMs}
|
|
225
|
+
- kind: shell
|
|
226
|
+
options:
|
|
227
|
+
command: >-
|
|
228
|
+
node "$(superskill script path sp history-anatomy-cache.mjs)" assert-clean --baseline .spur/run/$__runId-baseline-validate.txt --expect .spur/run/$__runId-validation.txt
|
|
200
229
|
|
|
201
230
|
- id: correct
|
|
202
231
|
description: >
|
|
@@ -219,7 +248,7 @@ states:
|
|
|
219
248
|
- kind: shell
|
|
220
249
|
options:
|
|
221
250
|
command: >-
|
|
222
|
-
. .spur/run/$__runId-paths.
|
|
251
|
+
. .spur/run/$__runId-paths.txt;
|
|
223
252
|
node "$HA_HELPER" refresh --report "$HA_TARGET"
|
|
224
253
|
--out .spur/run/$__runId-publishable.md --disposition hit
|
|
225
254
|
|
|
@@ -233,7 +262,7 @@ states:
|
|
|
233
262
|
- kind: shell
|
|
234
263
|
options:
|
|
235
264
|
command: >-
|
|
236
|
-
. .spur/run/$__runId-paths.
|
|
265
|
+
. .spur/run/$__runId-paths.txt;
|
|
237
266
|
node "$HA_HELPER" stamp --candidate .spur/run/$__runId-candidate.md
|
|
238
267
|
--provenance .spur/run/$__runId-provenance.json
|
|
239
268
|
--out .spur/run/$__runId-publishable.md
|
|
@@ -247,7 +276,7 @@ states:
|
|
|
247
276
|
- kind: shell
|
|
248
277
|
options:
|
|
249
278
|
command: >-
|
|
250
|
-
. .spur/run/$__runId-paths.
|
|
279
|
+
. .spur/run/$__runId-paths.txt;
|
|
251
280
|
mkdir -p "$(dirname "$HA_TARGET")";
|
|
252
281
|
node "$HA_HELPER" publish .spur/run/$__runId-publishable.md "$HA_TARGET"
|
|
253
282
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gobing-ai/spur",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.64",
|
|
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",
|
|
@@ -53,14 +53,14 @@
|
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@commander-js/extra-typings": "^14.0.0",
|
|
56
|
-
"@gobing-ai/ts-db": "^0.4.
|
|
57
|
-
"@gobing-ai/ts-ai-runner": "^0.4.
|
|
58
|
-
"@gobing-ai/ts-dual-workflow-engine": "^0.4.
|
|
59
|
-
"@gobing-ai/ts-infra": "^0.4.
|
|
60
|
-
"@gobing-ai/ts-llm-jsonl-importer": "^0.4.
|
|
61
|
-
"@gobing-ai/ts-rule-engine": "^0.4.
|
|
62
|
-
"@gobing-ai/ts-runtime": "^0.4.
|
|
63
|
-
"@gobing-ai/ts-utils": "^0.4.
|
|
56
|
+
"@gobing-ai/ts-db": "^0.4.45",
|
|
57
|
+
"@gobing-ai/ts-ai-runner": "^0.4.45",
|
|
58
|
+
"@gobing-ai/ts-dual-workflow-engine": "^0.4.45",
|
|
59
|
+
"@gobing-ai/ts-infra": "^0.4.45",
|
|
60
|
+
"@gobing-ai/ts-llm-jsonl-importer": "^0.4.45",
|
|
61
|
+
"@gobing-ai/ts-rule-engine": "^0.4.45",
|
|
62
|
+
"@gobing-ai/ts-runtime": "^0.4.45",
|
|
63
|
+
"@gobing-ai/ts-utils": "^0.4.45",
|
|
64
64
|
"@types/bun": "1.3.14",
|
|
65
65
|
"@types/figlet": "^1.7.0",
|
|
66
66
|
"@types/node-notifier": "8.0.5",
|
package/plugins/sp/README.md
CHANGED
|
@@ -128,14 +128,14 @@ list this README is checked against.
|
|
|
128
128
|
| `dev-debug` | Systematic debugging protocol — reproduce, isolate, diagnose root cause, apply minimal fix, and verify with regression tests |
|
|
129
129
|
| `dev-daily` | Generate a daily summary report from agent usage data, git history, and notes |
|
|
130
130
|
| `dev-dogfood` | Dogfood an agent skill/command/CLI — drive it end-to-end with bounded auto-fix, self-monitor, and emit a comprehensive report |
|
|
131
|
-
| `dev-find-issue` | Generate the daily/ad-hoc history-anatomy diagnostic report over already-imported history — mode contract, closed finding taxonomy,
|
|
131
|
+
| `dev-find-issue` | Generate the daily/ad-hoc history-anatomy diagnostic report over already-imported history — mode contract, closed finding taxonomy, twelve-section report contract, cache branch, atomic publication; forwards to sp:history-anatomy |
|
|
132
132
|
| `dev-find-conflict` | Authority-aware semantic audit across source, task, feature, and project authority files — detect conflicts, resolve claim-specific authority, and route confirmed repairs through owner surfaces |
|
|
133
133
|
| `dev-find-next` | Prompt-first feature frontier prioritizer — ranks the open feature frontier by derived importance/urgency with per-candidate evidence; gates unactionable features; emits tree defects as proposals only |
|
|
134
134
|
| `dev-fixall` | Fix all lint, type, and test errors systematically across the working tree |
|
|
135
135
|
| `dev-simplify` | Simplify recently-changed code for clarity without changing behavior — incremental, test-after-each, revert on regression |
|
|
136
136
|
| `dev-arch` | Survey a codebase (or module tree) for shallow modules and deepening opportunities — emit a ranked MARKDOWN candidate report that feeds the planning half; never auto-refactors |
|
|
137
137
|
| `dev-reverse` | Reverse-engineer a codebase — analyze unfamiliar repos, generate HLD/architecture docs, audit quality/security, and produce onboarding documentation |
|
|
138
|
-
| `dev-gitmsg` | Generate conventional commit message(s) from
|
|
138
|
+
| `dev-gitmsg` | Generate conventional commit message(s) from the current change set via one bounded diff capture, optionally commit |
|
|
139
139
|
| `dev-gtd` | Get things done — quality gate (auto-fix) → conventional commit → push → gh verify in one flow; optional act CI simulation via `--act` |
|
|
140
140
|
| `dev-changelog` | Generate changelog from git commits |
|
|
141
141
|
|
|
@@ -173,7 +173,7 @@ and verification (`sp:code-verification`) — plus a CLI facade (`sp:spur-cli`,
|
|
|
173
173
|
`spur` noun) and standalone technique skills (`sp:next-router`, `sp:test-driven-development`, `sp:brainstorm`,
|
|
174
174
|
`sp:wayfinder`, `sp:sys-debugging`, `sp:code-review`, `sp:code-simplification`, `sp:code-improvement`,
|
|
175
175
|
`sp:parallel-execution`, `sp:branch-workflow`, `sp:doc-evolve`, `sp:dogfood-testing`,
|
|
176
|
-
`sp:daily-summary`, `sp:reverse-engineering`, `sp:issue-finding`, `sp:conflict-finding`, `sp:indexed-context`). See
|
|
176
|
+
`sp:daily-summary`, `sp:reverse-engineering`, `sp:issue-finding`, `sp:conflict-finding`, `sp:indexed-context`, `sp:redesign-web-ui`). See
|
|
177
177
|
[skills/spur-dev/SKILL.md](skills/spur-dev/SKILL.md)'s Step routing table for which skill owns which
|
|
178
178
|
pipeline step.
|
|
179
179
|
|
|
@@ -181,7 +181,7 @@ pipeline step.
|
|
|
181
181
|
|
|
182
182
|
```
|
|
183
183
|
plugins/sp/
|
|
184
|
-
├── skills/ # Domain knowledge + workflow docs (
|
|
184
|
+
├── skills/ # Domain knowledge + workflow docs (31 skills)
|
|
185
185
|
│ ├── brainstorm/ # Structured ideation workflow
|
|
186
186
|
│ │ ├── agents/openai.yaml
|
|
187
187
|
│ │ ├── examples/ideation-example.md
|
|
@@ -239,6 +239,8 @@ plugins/sp/
|
|
|
239
239
|
│ │ └── references/{authority-resolution.md, comparison-protocol.md, finding-contract.md, remediation-routing.md}
|
|
240
240
|
│ ├── next-feature/ # Prompt-first feature frontier prioritizer (backs /sp:dev-find-next)
|
|
241
241
|
│ │ └── references/{signal-derivation.md, ranking-rubric.md, proposal-contract.md, handoff-routing.md}
|
|
242
|
+
│ ├── redesign-web-ui/ # Existing-UI visual upgrade past generic AI defaults
|
|
243
|
+
│ │ └── references/{audit-checklist, upgrade-techniques}.md
|
|
242
244
|
│ ├── history-anatomy/ # Diagnostic interpretation owner over already-imported history (backs /sp:dev-find-issue)
|
|
243
245
|
│ │ └── references/{modes.md, report-contract.md, operations.md}
|
|
244
246
|
│ ├── sys-architecture/ # Architecture / ADR judgment competency
|
|
@@ -318,7 +320,8 @@ surface or run one workflow. All skills target the same five core platforms: `cl
|
|
|
318
320
|
| `next-feature` | 1.0 | Prompt-first feature frontier prioritizer — sync-first precondition, B3 actionability gate (cited, never restated), tiered rubric over measured signals, D1–D4 defect proposals conforming to the restructure map schema; backs `/sp:dev-find-next` |
|
|
319
321
|
| `pr-reviewing` | 1.0 | GitHub Codex PR review — PR prepare/reuse, `@codex review` request with per-HEAD dedupe, bounded polling, findings normalization, validated fix + re-review; spine SSOT `pr-review.yaml` + `scripts/pr-reviewing.ts`; backs `/sp:dev-pr-review` |
|
|
320
322
|
| `indexed-context` | 1.0 | Cross-agent project context — anatomy/learnings/pitfalls/buglog/memory in `.spur/context/`; hook-tracked token-ledger; graceful degradation on agents without hooks |
|
|
321
|
-
| `history-anatomy` | 1.0 | Diagnostic interpretation owner over already-imported history — daily/ad-hoc mode contract, closed finding taxonomy,
|
|
323
|
+
| `history-anatomy` | 1.0 | Diagnostic interpretation owner over already-imported history — daily/ad-hoc mode contract, closed finding taxonomy, twelve-section report contract, `enrich`/`validate` rubrics; no workflow launch, no JSONL fallback, no corpus mutation |
|
|
324
|
+
| `redesign-web-ui` | 1.0 | Existing-UI visual upgrade — audit generic AI fingerprints, apply in-stack polish against `DESIGN.md` / live tokens, verify behavior and viewports; does not migrate frameworks |
|
|
322
325
|
|
|
323
326
|
#### Bounded coexistence and retirement gate — `sp:issue-finding` (HA-S1 0661)
|
|
324
327
|
|
|
@@ -45,10 +45,24 @@ guide and conventions before acting.
|
|
|
45
45
|
- **Traceability audits** — verify every task links to a feature, every scenario maps to a task.
|
|
46
46
|
- **Section-editing campaigns** — update the same section across multiple tasks.
|
|
47
47
|
- **Rule-catalog work** — author, fine-tune, validate, or harden constraint rules across the catalog.
|
|
48
|
-
- **Workflow work** — author, validate, dry-run, or refactor one or more workflows.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
- **Workflow work** — decide fit, author, validate, dry-run, tune, or refactor one or more workflows.
|
|
49
|
+
Read `sp:spur-cli` `references/workflows/workflow-fit-and-tuning.md` before authoring or
|
|
50
|
+
refactoring, and apply it in this order:
|
|
51
|
+
- **Fit first.** A process earns a `spur workflow` only when it replays, branches on a
|
|
52
|
+
machine-checkable predicate, **and** needs a durable per-run record. Fewer than three → recommend
|
|
53
|
+
a descriptive procedure or checklist and stop. Author the mode gate only after fit clears.
|
|
54
|
+
- **Simplicity is the budget, and it is measured.** `shell` commands at or under 5 non-comment
|
|
55
|
+
units, `agent.run` inputs referencing a slash command rather than carrying a raw prompt, guards
|
|
56
|
+
a single predicate. Over budget → pick a recorded owner from
|
|
57
|
+
`docs/design/workflow-shell-ownership.md`; never reformat to dodge the measure.
|
|
58
|
+
- **Latency and observability are authoring decisions.** Minimize `agent.run` node count first;
|
|
59
|
+
soft status-file probe over repeated probing; guards ordered cheapest-discriminating-first;
|
|
60
|
+
`iterationBound` from a latency budget; states named for outcomes; `failureStates` declared.
|
|
61
|
+
- **Refactor in a named direction** — promote (prose → workflow), demote (workflow → prose),
|
|
62
|
+
or optimize in place. Back an optimization with a before/after `spur workflow trace` pair,
|
|
63
|
+
never with a feel.
|
|
64
|
+
- Composition-advisory findings (`workflow validate --json` → `composition`) are advisory only;
|
|
65
|
+
never block a run or edit an executing pipeline over them.
|
|
52
66
|
- **Corpus health checks** — run `check`/`validate` across a batch and report findings.
|
|
53
67
|
|
|
54
68
|
For a single operation, use the `spur` CLI directly. For the planning/execution lifecycle, use
|
|
@@ -72,12 +86,14 @@ Invoke `sp:spur-cli` for verb guidance and per-noun conventions:
|
|
|
72
86
|
- [ ] Run the corpus-wide sweep after batch edits: `spur task check --corpus --json` (fails on structural errors outside `config/corpus-baseline.json`).
|
|
73
87
|
- [ ] Use `spur task update --section --from-file` for all task section edits.
|
|
74
88
|
- [ ] Run the noun's scoped `refresh` after batch operations where one exists (`spur task refresh`, `spur feature refresh --feature <id>` or `--all`).
|
|
89
|
+
- [ ] Run the workflow fit gate before authoring any new workflow, and recommend a descriptive procedure when it does not clear all three parts.
|
|
75
90
|
|
|
76
91
|
### Never
|
|
77
92
|
|
|
78
93
|
- [ ] Never edit corpus files directly — always through CLI verbs.
|
|
79
94
|
- [ ] Never reimplement verb logic or validation — the CLI owns it.
|
|
80
95
|
- [ ] Never drive the planning/execution lifecycle through this agent — use `sp:spur-dev`.
|
|
96
|
+
- [ ] Never author a workflow whose every node is a raw-prompt `agent.run` — that is a descriptive procedure paying a process spawn per step.
|
|
81
97
|
|
|
82
98
|
## Output Format
|
|
83
99
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Generate the daily or ad-hoc history-anatomy diagnostic report over already-imported history: the
|
|
2
|
+
description: "Generate the daily or ad-hoc history-anatomy diagnostic report over already-imported history: the twelve-section report contract, closed finding taxonomy, cache branch, bounded correction, and atomic publication. Triggers: find issues, post-mortem, performance analysis, session review, history-anatomy, run the daily report, ad-hoc diagnosis"
|
|
3
3
|
role: reviewer
|
|
4
|
-
argument-hint: "[<focus>] [--mode <daily|ad-hoc>] [--date <YYYY-MM-DD>] [--since <RFC3339>] [--until <RFC3339>] [--recompute] [--agent <
|
|
4
|
+
argument-hint: "[<focus>] [--mode <daily|ad-hoc>] [--date <YYYY-MM-DD>] [--since <RFC3339>] [--until <RFC3339>] [--recompute] [--agent <auto|name>] [--output <path>]"
|
|
5
5
|
allowed-tools: ["Bash", "Read", "Skill"]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -10,7 +10,7 @@ allowed-tools: ["Bash", "Read", "Skill"]
|
|
|
10
10
|
Wraps the **sp:history-anatomy** skill — the independent owner of diagnostic interpretation over
|
|
11
11
|
already-imported history. The skill resolves the mode contract (daily is the default and uses the
|
|
12
12
|
current local calendar day; ad-hoc requires a focus plus two ordered bounds), owns the report
|
|
13
|
-
contract (
|
|
13
|
+
contract (twelve sections, closed finding taxonomy, evidence rules, recurrence ledger), and
|
|
14
14
|
exposes the `enrich` and `validate` operations the `history-anatomy.yaml` workflow invokes.
|
|
15
15
|
Publication is atomic and gated behind both the deterministic structure gate and independent
|
|
16
16
|
evidence validation. This command never triggers an import.
|
|
@@ -25,7 +25,7 @@ evidence validation. This command never triggers an import.
|
|
|
25
25
|
| `--since` `<RFC3339>` | Inclusive lower bound (ad-hoc; required). | omitted |
|
|
26
26
|
| `--until` `<RFC3339>` | Inclusive upper bound (ad-hoc; required). | omitted |
|
|
27
27
|
| `--recompute` | Force the full analyze/render/enrich/validate path; records disposition forced-recompute. | off |
|
|
28
|
-
| `--agent` `<
|
|
28
|
+
| `--agent` `<auto\|name>` | Execution surface selector. This target is engine-driven (headless). Per task 0687, omit and explicit `--agent inline` resolve identically — tier resolution with one warning naming the substituted executor; there is deliberately **no** host-session inline driver for `history-anatomy.yaml` (mechanism (b)). A name pins the executor. | omitted |
|
|
29
29
|
| `--output` `<path>` | Explicit report output path (ad-hoc; default writes to the run directory). | run dir |
|
|
30
30
|
|
|
31
31
|
For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Generate conventional commit message(s) from
|
|
2
|
+
description: Generate conventional commit message(s) from the current change set via one bounded diff capture, optionally commit
|
|
3
3
|
role: scribe
|
|
4
|
-
argument-hint: "[--commit] [--squash] [--scope <path>]"
|
|
4
|
+
argument-hint: "[--commit] [--squash] [--all] [--scope <path>]"
|
|
5
5
|
allowed-tools: ["Bash", "Read"]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -13,17 +13,23 @@ Implements an inline procedure — see [dev-operations.md](../skills/spur-dev/re
|
|
|
13
13
|
|
|
14
14
|
| Flag | Description | Default |
|
|
15
15
|
| --- | --- | --- |
|
|
16
|
-
| `--commit` |
|
|
17
|
-
| `--squash` |
|
|
18
|
-
| `--
|
|
16
|
+
| `--commit` | Commit the change set — one commit per concern. | off |
|
|
17
|
+
| `--squash` | Collapse every concern into one message and one commit; implies `--commit`. | off |
|
|
18
|
+
| `--all` | Widen the change set past the index to every change in the tree — unstaged **and untracked**. | off |
|
|
19
|
+
| `--scope` `<path>` | Path filter on the change set; always wins over change-set auto-discovery. | the whole change set |
|
|
19
20
|
|
|
20
21
|
For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
|
|
21
22
|
|
|
22
23
|
## Usage
|
|
23
24
|
|
|
24
|
-
/sp:dev-gitmsg [--commit] [--squash] [--scope <path>]
|
|
25
|
+
/sp:dev-gitmsg [--commit] [--squash] [--all] [--scope <path>]
|
|
25
26
|
|
|
26
27
|
## Implementation
|
|
27
28
|
|
|
28
29
|
Follow the inline procedure in [dev-operations.md](../skills/spur-dev/references/dev-operations.md#9-gitmsg) (gitmsg).
|
|
29
30
|
|
|
31
|
+
One diff capture per run — `-U0`, lockfiles excluded, 60 KB cap — is the token contract; never re-read
|
|
32
|
+
the diff wider. Neither `--commit` nor `--squash` → messages only. `--commit` → one commit per concern, split automatically,
|
|
33
|
+
so the operator is never asked to re-stage and re-run. `--squash` → one commit for everything.
|
|
34
|
+
An empty index widens to the whole tree only on a message-only run, and says so; a committing run
|
|
35
|
+
stops there and prints the exact `--all` re-run line instead of guessing.
|
|
@@ -62,25 +62,14 @@ The real GitHub CI runner passes. **Do not** modify the build infrastructure to
|
|
|
62
62
|
Then stop the run (this stage failed). The operator can proceed by re-running without `--act`.
|
|
63
63
|
|
|
64
64
|
**3 — Generate a conventional commit message.** Follow the gitmsg procedure (the same one
|
|
65
|
-
`/sp:dev-gitmsg` runs)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
<type>(<scope>): <summary>
|
|
75
|
-
|
|
76
|
-
<body — optional bullets from the group's per-file sentences>
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Summary: imperative mood, ≤72 chars, lowercase first word, no period. Body only when the change is
|
|
80
|
-
non-obvious. Resolve groups: one group → emit its message; multiple groups → emit one message per
|
|
81
|
-
group plus a split recommendation (stage per concern, re-run); under this all-in-one flow, prefer a
|
|
82
|
-
single combined message (dominant type/scope, per-file bullets) so the push is atomic. Delete the
|
|
83
|
-
temp file (`rm "$TEMP_FILE"`) — no `/tmp` diff residue.
|
|
65
|
+
`/sp:dev-gitmsg` runs) — see
|
|
66
|
+
[dev-operations.md](../skills/spur-dev/references/dev-operations.md#9-gitmsg): one bounded diff
|
|
67
|
+
capture, concern grouping, conventional `<type>(<scope>): <summary>` formatting. Two deviations
|
|
68
|
+
belong to this flow: read the change set with `--all` semantics (this stage commits everything the
|
|
69
|
+
gate just proved green, not only what happens to be staged), and resolve multiple concerns to a
|
|
70
|
+
**single combined message** (dominant type/scope, one body bullet per concern) so the push is
|
|
71
|
+
atomic. `--scope <path>` bounds the capture as usual. If the change set is empty, report
|
|
72
|
+
"no changes to commit" and stop.
|
|
84
73
|
|
|
85
74
|
**4 — Commit.** Stage all intended changes (`git add`) and commit with the resolved message
|
|
86
75
|
(`git commit -m "$MESSAGE"`). When `--dry-run`, print the message and the copy-paste `git commit` /
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Turn a vague idea into a feature with AC and a decomposed task batch — discovery, idea-eval, feature-create, AC, feature-check, system-design, decompose, batch-create (Design by default), handoff
|
|
3
3
|
role: planner
|
|
4
|
-
argument-hint: "\"<idea>\" [--auto] [--skip-design] [--approve-taste] [--agent <
|
|
4
|
+
argument-hint: "\"<idea>\" [--auto] [--skip-design] [--approve-taste] [--agent <auto|name>]"
|
|
5
5
|
allowed-tools: ["Bash", "Read", "Skill", "AskUserQuestion"]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -20,7 +20,7 @@ contract below maps to that workflow's transitions.
|
|
|
20
20
|
| `--approve-taste` | With `--auto`: set idea_approved + design_approved so idea-eval / design-approval do not pause. | off |
|
|
21
21
|
| `--idea-approved` | Compatibility alias for idea_approved=true (subset of --approve-taste). | off |
|
|
22
22
|
| `--design-approved` | Compatibility alias for design_approved=true (subset of --approve-taste). | off |
|
|
23
|
-
| `--agent` `<
|
|
23
|
+
| `--agent` `<auto\|name>` | Who runs the model-bearing ideation. The pipeline's `agent.run` stages are headless — they always dispatch a subprocess. Omission and explicit `--agent inline` resolve identically per task 0687: tier substitution plus one warning naming the substituted executor; `auto` (tier-resolves an executor); a name (pins that executor). | inline |
|
|
24
24
|
|
|
25
25
|
For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
|
|
26
26
|
|
|
@@ -31,7 +31,7 @@ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag
|
|
|
31
31
|
[--auto] # skip objective HITL only (feature-check, batch-create)
|
|
32
32
|
[--skip-design] # design package off (system-design + task Design)
|
|
33
33
|
[--approve-taste] # with --auto: skip idea-eval + design-approval pauses
|
|
34
|
-
[--agent <
|
|
34
|
+
[--agent <auto|name>] # who runs the model-bearing ideation (default: agent.default)
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
There is **no** `--design` force flag. Design is default-on; only `--skip-design` opts out.
|
|
@@ -16,7 +16,7 @@ Wraps the **sp:spur-dev** skill.
|
|
|
16
16
|
| `"<description>"` | Feature description to plan. | required |
|
|
17
17
|
| `--feature` `<id>` | Attach to an existing feature. | omitted |
|
|
18
18
|
| `--parent` `<feature-id>` | Create under a parent feature. | omitted |
|
|
19
|
-
| `--agent` `<inline\|auto\|name>` | Who runs the model-bearing planning. The planning pipeline's `agent.run` stages are headless — they always dispatch a subprocess.
|
|
19
|
+
| `--agent` `<inline\|auto\|name>` | Who runs the model-bearing planning. The planning pipeline's `agent.run` stages are headless — they always dispatch a subprocess. `inline` — also what omission resolves to since task 0687 — substitutes tier resolution there with one warning naming the resolved executor; `auto` (tier-resolves an executor); a name (pins that executor). | inline |
|
|
20
20
|
| `--skip-design` | Omit the system-design hop. | off |
|
|
21
21
|
| `--auto` | Skip objective HITL gates. | off |
|
|
22
22
|
| `--approve-taste` | With --auto: skip design-approval pause. | off |
|
|
@@ -15,7 +15,7 @@ Wraps the **sp:spur-dev** and **sp:code-implementation** skills.
|
|
|
15
15
|
| --- | --- | --- |
|
|
16
16
|
| `<wbs>` | Task WBS to run. | required |
|
|
17
17
|
| `--mode` `<full\|implement>` | Full pipeline or single implement step. | full |
|
|
18
|
-
| `--agent` `<inline\|auto\|name>` | Who runs the model-bearing stages.
|
|
18
|
+
| `--agent` `<inline\|auto\|name>` | Who runs the model-bearing stages. omit and explicit `--agent inline` resolve identically (task 0687): eligible stages dispatch once to a native subagent with host-session fallback (0508 eligibility); otherwise every stage executes in the invoking session. `auto` or a name keeps subprocess dispatch.. | omit |
|
|
19
19
|
| `--auto` | Skip objective HITL confirmations. | off |
|
|
20
20
|
| `--next` | Chain-to-completion via the next-router. | off |
|
|
21
21
|
| `--wrap` | Run the wrap hop after the main step. The `--agent` selector is preserved into the `/sp:dev-wrap <wbs>` handoff when supplied; omission remains omission. The wrap hop is workflow-backed and reports its trigger-3 subprocess override. | off |
|
|
@@ -39,7 +39,7 @@ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag
|
|
|
39
39
|
|
|
40
40
|
**Flags:**
|
|
41
41
|
|
|
42
|
-
- `--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 the controller and implement-only stages in this session; full mode reads `task-pipeline.yaml` as the SSOT and interprets its actions/guards through the inline driver,
|
|
42
|
+
- `--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 the controller and implement-only stages in this session; full mode reads `task-pipeline.yaml` as the SSOT and interprets its actions/guards through the inline driver, whose eligible `agent.run` stages dispatch once to a native subagent and otherwise run in the host (0508 eligibility — task 0687 resolved-inline) It records `stage <id> executed inline in session <session-id>` or `stage <id> executed via subagent <agent-id> (host 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).
|
|
43
43
|
|
|
44
44
|
`--worktree` `[<name>]` (run the task's pipeline in an isolated git worktree — FF-merge onto the
|
|
45
45
|
base ref on full success, retain intact on any failure/halt/non-FF; bare form creates a fresh tree,
|
|
@@ -18,7 +18,7 @@ Wraps the **sp:spur-dev** skill.
|
|
|
18
18
|
| `--mode` `<sequential\|parallel>` | Batch execution order. | sequential |
|
|
19
19
|
| `--keep-going` | Continue past per-task failures. | off |
|
|
20
20
|
| `--auto` | Skip objective HITL gates. | off |
|
|
21
|
-
| `--agent` `<inline\|auto\|name>` | Who runs each task's pipeline stages. Interactive sequential omit/`inline` uses the host-session driver
|
|
21
|
+
| `--agent` `<inline\|auto\|name>` | Who runs each task's pipeline stages. Interactive sequential omit/`inline` uses the host-session driver with unified inline semantics (task 0687 — see below)). `auto`, a name, parallel mode, and headless invocation use subprocesses. | omit |
|
|
22
22
|
| `--json` | Emit structured JSON. | off |
|
|
23
23
|
| `--wrap` | Run the wrap hop per task. The `--agent` selector is preserved into each `/sp:dev-wrap <wbs>` handoff when supplied; omission remains omission. | off |
|
|
24
24
|
| `--next` | Chain-to-completion via the next-router. | off |
|
|
@@ -81,6 +81,6 @@ full distinction.
|
|
|
81
81
|
|
|
82
82
|
## Implementation
|
|
83
83
|
|
|
84
|
-
- 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 in the host session through the [inline pipeline driver](../skills/spur-dev/references/inline-pipeline-driver.md);
|
|
84
|
+
- 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 in the host session through the [inline pipeline driver](../skills/spur-dev/references/inline-pipeline-driver.md); the resolved selector applies uniformly — eligible `agent.run` stages dispatch once to a native subagent with host fallback (0508). `--agent auto`, a name, or parallel mode retains the isolated per-task workflow boundary.
|
|
85
85
|
- Interactive sequential omit/inline: `Skill(skill="sp:spur-dev", args="runall-inline $ARGUMENTS")`.
|
|
86
86
|
- Explicit executor or parallel mode: `Skill(skill="sp:spur-dev", args="runall $ARGUMENTS")` → `sp:super-planner` agent.
|
|
@@ -14,7 +14,7 @@ Wraps the **wrapup-pipeline.yaml** workflow.
|
|
|
14
14
|
| Flag | Description | Default |
|
|
15
15
|
| --- | --- | --- |
|
|
16
16
|
| `<wbs>` | Task WBS to wrap. | required |
|
|
17
|
-
| `--agent` `<inline\|auto\|name>` | Who runs the wrap's model-bearing steps. Wrap is workflow-backed (headless): `omit`
|
|
17
|
+
| `--agent` `<inline\|auto\|name>` | Who runs the wrap's model-bearing steps. Wrap is workflow-backed (headless): `omit` and `--agent inline` resolve identically per task 0687 — tier substitution under objective trigger 3 (durable auditable run record required) with a warning naming the substituted executor; `auto` tier-resolves an executor; a name pins that executor into `vars.agent`. | inline |
|
|
18
18
|
| `--auto` | Skip objective HITL gates. | off |
|
|
19
19
|
| `--merge` | Merge the wrap branch. | off |
|
|
20
20
|
| `--dry-run` | Render the wrap without writing. | off |
|
|
@@ -32,13 +32,13 @@ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag
|
|
|
32
32
|
- Resolve the executor **before** launching the workflow:
|
|
33
33
|
- `--agent <name>` → pass the name unchanged into `vars.agent`.
|
|
34
34
|
- `--agent auto` → tier-resolve a concrete executor first, then merge it into `vars.agent`.
|
|
35
|
-
- omit
|
|
35
|
+
- omit and explicit `--agent inline` resolve identically (task 0687): tier substitution plus one warning naming the resolved executor (headless surface).
|
|
36
36
|
- Emit a pre-dispatch notice naming the override before `spur workflow run`, exactly:
|
|
37
|
-
`execution surface: subprocess`, `reason: trigger 3 — durable auditable run record required`, `requested agent: inline|auto|<name>` (explicit `inline`
|
|
37
|
+
`execution surface: subprocess`, `reason: trigger 3 — durable auditable run record required`, `requested agent: inline|auto|<name>` (explicit `inline` substitutes tier resolution and warns), `executor: <substituted-name>|<resolved-name>`.
|
|
38
38
|
- The wrap workflow still creates its durable run record (task_run_links / trace) — the notice reports the override, it does not change the workflow.
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
AGENT=… #
|
|
41
|
+
AGENT=… # omit≡inline → tier-substituted executor + warning; auto tier-resolved; <name> unchanged
|
|
42
42
|
echo "execution surface: subprocess; reason: trigger 3 — durable auditable run record required; requested agent: <inline|auto|name>; executor: $AGENT"
|
|
43
43
|
VARS=$(jq -nc --arg tasks "[\"$WBS\"]" --arg agent "$AGENT" --arg profile "$PROFILE" --arg merge "$MERGE" \
|
|
44
44
|
'{tasks:$tasks, agent:$agent, profile:$profile, merge:$merge}')
|
|
@@ -46,5 +46,4 @@ spur workflow run wrapup-pipeline.yaml --vars "$VARS" [--dry-run]
|
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
The executor resolution is described in the bullets above; the snippet's `AGENT` variable carries
|
|
49
|
-
the resolved name (
|
|
50
|
-
before dispatch).
|
|
49
|
+
the resolved name (omit ≡ explicit `inline`; both tier-substitute with a warning).
|
|
@@ -16,7 +16,7 @@ Wraps the **wrapup-pipeline.yaml** workflow.
|
|
|
16
16
|
| `--since` `<iso-date>` | Wrap tasks completed since a date. | configured |
|
|
17
17
|
| `--feature` `<id>` | Wrap tasks in a feature. | omitted |
|
|
18
18
|
| `--status` `<s>` | Only wrap tasks in a status. | done |
|
|
19
|
-
| `--agent` `<inline\|auto\|name>` | Who runs the wrap's model-bearing steps. Wrap is workflow-backed (headless): `omit`
|
|
19
|
+
| `--agent` `<inline\|auto\|name>` | Who runs the wrap's model-bearing steps. Wrap is workflow-backed (headless): `omit` and `--agent inline` resolve identically per task 0687 — tier substitution under objective trigger 3 (durable auditable run record required) with a warning naming the substituted executor; `auto` tier-resolves an executor; a name pins that executor into `vars.agent`. | inline |
|
|
20
20
|
| `--auto` | Skip objective HITL gates. | off |
|
|
21
21
|
| `--merge` | Merge wrap branches. | off |
|
|
22
22
|
| `--dry-run` | Render wraps without writing. | off |
|
|
@@ -34,13 +34,13 @@ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag
|
|
|
34
34
|
- Resolve the executor **before** launching the workflow:
|
|
35
35
|
- `--agent <name>` → pass the name unchanged into `vars.agent`.
|
|
36
36
|
- `--agent auto` → tier-resolve a concrete executor first, then merge it into `vars.agent`.
|
|
37
|
-
- omit
|
|
37
|
+
- omit and explicit `--agent inline` resolve identically (task 0687): tier substitution plus one warning naming the resolved executor (headless surface).
|
|
38
38
|
- Emit a pre-dispatch notice naming the override before `spur workflow run`, exactly:
|
|
39
|
-
`execution surface: subprocess`, `reason: trigger 3 — durable auditable run record required`, `requested agent: inline|auto|<name>` (explicit `inline`
|
|
39
|
+
`execution surface: subprocess`, `reason: trigger 3 — durable auditable run record required`, `requested agent: inline|auto|<name>` (explicit `inline` substitutes tier resolution and warns), `executor: <substituted-name>|<resolved-name>`.
|
|
40
40
|
- The wrap workflow still creates its durable run record — the notice reports the override, it does not change the workflow.
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
AGENT=… #
|
|
43
|
+
AGENT=… # omit≡inline → tier-substituted executor + warning; auto tier-resolved; <name> unchanged
|
|
44
44
|
echo "execution surface: subprocess; reason: trigger 3 — durable auditable run record required; requested agent: <inline|auto|name>; executor: $AGENT"
|
|
45
45
|
VARS=$(jq -nc --arg tasks "$TASKS" --arg feature "$FEATURE" --arg agent "$AGENT" --arg profile "$PROFILE" --arg merge "$MERGE" \
|
|
46
46
|
'{tasks:$tasks, feature:$feature, agent:$agent, profile:$profile, merge:$merge}')
|
|
@@ -48,6 +48,4 @@ spur workflow run wrapup-pipeline.yaml --vars "$VARS" [--dry-run]
|
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
The executor resolution is described in the bullets above; the snippet's `AGENT` variable carries
|
|
51
|
-
the resolved name (
|
|
52
|
-
before dispatch).
|
|
53
|
-
|
|
51
|
+
the resolved name (omit ≡ explicit `inline`; both tier-substitute with a warning).
|
package/plugins/sp/plugin.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.64",
|
|
4
4
|
"description": "Spur — a local-first harness engineering toolkit that wraps mainstream coding agents with constraint checking, workflow orchestration, and history analytics.",
|
|
5
5
|
"extensions": {
|
|
6
6
|
"pi": ["./hooks/pi/guard-extension.ts"]
|