@gobing-ai/spur 0.3.63 → 0.3.65
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 +2995 -6832
- package/config/rules/boundary/sp-runtime-path.yaml +45 -35
- package/config/rules/surface/check-cli-surface.yaml +7 -5
- package/config/workflows/history-anatomy.yaml +39 -8
- package/package.json +9 -9
- package/plugins/sp/README.md +17 -10
- package/plugins/sp/agents/expert-spur.md +20 -4
- package/plugins/sp/commands/dev-find-issue.md +5 -2
- 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 +1 -1
- package/plugins/sp/commands/dev-plan.md +1 -1
- package/plugins/sp/commands/dev-review-session.md +36 -0
- 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 +4 -2
- package/plugins/sp/references/roles.md +8 -5
- package/plugins/sp/scripts/history-anatomy-cache.mjs +3 -2
- package/plugins/sp/scripts/history-anatomy-cache.ts +7 -2
- package/plugins/sp/skills/dogfood-testing/SKILL.md +22 -1
- package/plugins/sp/skills/history-anatomy/references/report-contract.md +8 -0
- 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/session-review/SKILL.md +106 -0
- package/plugins/sp/skills/spur-cli/references/agent.md +1 -1
- 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 +27 -5
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +22 -30
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +73 -28
- 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 +15 -12
- package/spur.js +1152 -816
- package/web/_astro/{BoardApp.CKolAjUz.js → BoardApp.BEtcJqde.js} +62 -62
- package/web/_astro/BoardApp.DBEin4N5.js +1 -0
- package/web/_astro/{TaskDetail.Bre7G4gC.js → TaskDetail.ClAbCXom.js} +1 -1
- package/web/_astro/arc.CCvf51_y.js +1 -0
- package/web/_astro/architectureDiagram-3BPJPVTR.C0cb0J5M.js +36 -0
- package/web/_astro/{blockDiagram-GPEHLZMM.CCGHeRVi.js → blockDiagram-GPEHLZMM.CIyjqoCE.js} +4 -4
- package/web/_astro/{c4Diagram-AAUBKEIU.CpqewGmd.js → c4Diagram-AAUBKEIU.fs14IuFs.js} +1 -1
- package/web/_astro/channel.BGn_DUCD.js +1 -0
- package/web/_astro/chunk-2J33WTMH.CaBKv4ZO.js +1 -0
- package/web/_astro/{chunk-4BX2VUAB.ifGXoUA3.js → chunk-4BX2VUAB.BOllTPto.js} +1 -1
- package/web/_astro/chunk-55IACEB6.ChEof0O4.js +1 -0
- package/web/_astro/{chunk-727SXJPM.DzPE41OS.js → chunk-727SXJPM.Co2kdjD8.js} +2 -2
- package/web/_astro/{chunk-AQP2D5EJ.UF2QRXYF.js → chunk-AQP2D5EJ.SWmfcnog.js} +2 -2
- package/web/_astro/{chunk-FMBD7UC4.D2zXKa1R.js → chunk-FMBD7UC4.rDAFifF3.js} +1 -1
- package/web/_astro/chunk-ND2GUHAM.BCnoXKCw.js +1 -0
- package/web/_astro/{chunk-QZHKN3VN.nUKFBiLD.js → chunk-QZHKN3VN.RSmy2hDO.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.DZg9K9mO.js → classDiagram-4FO5ZUOK.Be7PEfrX.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.DZg9K9mO.js → classDiagram-v2-Q7XG4LA2.Be7PEfrX.js} +1 -1
- package/web/_astro/{client.CdFpTatq.js → client.yhYJvxCU.js} +1 -1
- package/web/_astro/cose-bilkent-S5V4N54A.BkUp2aSK.js +1 -0
- package/web/_astro/cynefin-OW5HDTMX.BegGGlUV.js +166 -0
- package/web/_astro/cytoscape.esm.DzSz-X2X.js +321 -0
- package/web/_astro/dagre-BM42HDAG.BkUdjsaC.js +4 -0
- package/web/_astro/{defaultLocale.CrowFXzY.js → defaultLocale.DX6XiGOO.js} +1 -1
- package/web/_astro/diagram-2AECGRRQ.E9vugt3-.js +43 -0
- package/web/_astro/diagram-5GNKFQAL.Dj4yeHXB.js +10 -0
- package/web/_astro/diagram-KO2AKTUF.Buaquwli.js +3 -0
- package/web/_astro/diagram-LMA3HP47.BV3dgGgm.js +24 -0
- package/web/_astro/diagram-OG6HWLK6.Cnx3s-tc.js +24 -0
- package/web/_astro/{erDiagram-TEJ5UH35.CF2U-pQZ.js → erDiagram-TEJ5UH35.DKK_abu4.js} +3 -3
- package/web/_astro/{flowDiagram-I6XJVG4X.BJK4M3in.js → flowDiagram-I6XJVG4X.BNuu9fbm.js} +4 -4
- package/web/_astro/ganttDiagram-6RSMTGT7.b16KUMjy.js +292 -0
- package/web/_astro/gitGraphDiagram-PVQCEYII.Kh41lbG5.js +106 -0
- package/web/_astro/{graph.D2o_JWn5.js → graph.-OzhPTMs.js} +1 -1
- package/web/_astro/{index.A0eX93qW.js → index.De90oHcH.js} +1 -1
- package/web/_astro/infoDiagram-5YYISTIA.DEWBXkp-.js +2 -0
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.BmWDZtwF.js → ishikawaDiagram-YF4QCWOH.DiAdmcL6.js} +4 -4
- package/web/_astro/{journeyDiagram-JHISSGLW.CpB1YWDP.js → journeyDiagram-JHISSGLW.D1Ki7IRm.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.k-fukQX9.js → kanban-definition-UN3LZRKU.CWUhrQpc.js} +21 -21
- package/web/_astro/layout.owoKPs3z.js +1 -0
- package/web/_astro/linear.BaFsgcCe.js +1 -0
- package/web/_astro/{mermaid.core.DnpzzuPU.js → mermaid.core.CHw_AsGy.js} +5 -5
- package/web/_astro/{mindmap-definition-RKZ34NQL.D9NnlLBu.js → mindmap-definition-RKZ34NQL.UIhghgmN.js} +8 -8
- package/web/_astro/ordinal.DBvzRdQf.js +1 -0
- package/web/_astro/pieDiagram-4H26LBE5.D05l3JUA.js +30 -0
- package/web/_astro/{quadrantDiagram-W4KKPZXB.BkAygRlm.js → quadrantDiagram-W4KKPZXB.BcWIhIcE.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.CX8ibmwc.js → requirementDiagram-4Y6WPE33.B1rYvKGn.js} +1 -1
- package/web/_astro/sankeyDiagram-5OEKKPKP.CKylVRC4.js +40 -0
- package/web/_astro/{sequenceDiagram-3UESZ5HK.veO8c2tk.js → sequenceDiagram-3UESZ5HK.Dm3uA_s4.js} +3 -3
- package/web/_astro/stateDiagram-AJRCARHV.Bgca_BLe.js +1 -0
- package/web/_astro/stateDiagram-v2-BHNVJYJU.C1T7YFrG.js +1 -0
- package/web/_astro/{timeline-definition-PNZ67QCA.DayoPp_2.js → timeline-definition-PNZ67QCA.ZOHJn3Sn.js} +4 -4
- package/web/_astro/vennDiagram-CIIHVFJN.DegZitjD.js +34 -0
- package/web/_astro/{wardleyDiagram-YWT4CUSO.lIAjSkZJ.js → wardleyDiagram-YWT4CUSO.BDsC115d.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.D8_2K6U1.js → xychartDiagram-2RQKCTM6.D0MO70ea.js} +4 -4
- package/web/index.html +1 -1
- package/web/_astro/BoardApp.DXD--ybM.js +0 -1
- package/web/_astro/arc.7luwOGiC.js +0 -1
- package/web/_astro/architectureDiagram-3BPJPVTR.F6KaHXp-.js +0 -36
- package/web/_astro/channel.DxfOFf1l.js +0 -1
- package/web/_astro/chunk-2J33WTMH.CB9vKa5F.js +0 -1
- package/web/_astro/chunk-55IACEB6.VIaRo7l8.js +0 -1
- package/web/_astro/chunk-ND2GUHAM.Cb9bDyvx.js +0 -1
- package/web/_astro/cose-bilkent-S5V4N54A.D9STo90d.js +0 -1
- package/web/_astro/cytoscape.esm.D3_iZ_3b.js +0 -321
- package/web/_astro/dagre-BM42HDAG.D3IbwhHz.js +0 -4
- package/web/_astro/diagram-2AECGRRQ.BWTDxBe9.js +0 -43
- package/web/_astro/diagram-5GNKFQAL.XnXlonHG.js +0 -10
- package/web/_astro/diagram-KO2AKTUF.CywOngCO.js +0 -3
- package/web/_astro/diagram-LMA3HP47.DY1D21Iu.js +0 -24
- package/web/_astro/diagram-OG6HWLK6.DQxb59KA.js +0 -24
- package/web/_astro/ganttDiagram-6RSMTGT7.BSniMzdB.js +0 -292
- package/web/_astro/gitGraphDiagram-PVQCEYII.Dxg-yRov.js +0 -106
- package/web/_astro/infoDiagram-5YYISTIA.BY4CgO_n.js +0 -2
- package/web/_astro/layout.DNLMvjEt.js +0 -1
- package/web/_astro/linear.BNNCobvI.js +0 -1
- package/web/_astro/ordinal.BYWQX77i.js +0 -1
- package/web/_astro/pieDiagram-4H26LBE5.CKhoMiyC.js +0 -30
- package/web/_astro/sankeyDiagram-5OEKKPKP.Dvurpa0Y.js +0 -40
- package/web/_astro/stateDiagram-AJRCARHV.DpMr4CO3.js +0 -1
- package/web/_astro/stateDiagram-v2-BHNVJYJU.CKjso86_.js +0 -1
- package/web/_astro/vennDiagram-CIIHVFJN.XNHf04O9.js +0 -34
- package/web/_astro/wardley-L42UT6IY.CpM_031g.js +0 -161
|
@@ -1,41 +1,51 @@
|
|
|
1
1
|
$schema: "@gobing-ai/spur/schemas/rule-file.schema.json"
|
|
2
|
-
# Runtime-path boundary rule (task 0217, R6) — zero
|
|
3
|
-
# references in agent-facing
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
2
|
+
# Runtime-path boundary rule (task 0217, R6) — zero
|
|
3
|
+
# `config/(plugins|rules|tasks|templates|workflows)` references in agent-facing
|
|
4
|
+
# instructions and runtime source code. `config/` is the build-time bundled-asset
|
|
5
|
+
# source-of-truth (ADR-015); `.spur/` is the runtime configuration directory that
|
|
6
|
+
# agents and runtime code MUST reference. A `config/...` literal in scope teaches
|
|
7
|
+
# the wrong convention and propagates confusion into every project created via
|
|
8
|
+
# `/sp:spur-init`.
|
|
7
9
|
#
|
|
8
|
-
# Blanket scope (all file types across apps/packages/plugins/sp) chosen
|
|
9
|
-
# even build-time JSDoc and test-fixture `config/` literals are
|
|
10
|
-
# than false-positive triage. See task 0217
|
|
10
|
+
# Blanket scope (all file types across apps/packages/plugins/sp) chosen
|
|
11
|
+
# deliberately: even build-time JSDoc and test-fixture `config/` literals are
|
|
12
|
+
# caught, forcing rephrase rather than false-positive triage. See task 0217
|
|
13
|
+
# Design "Standing enforcement (R6)" for rationale.
|
|
11
14
|
#
|
|
12
|
-
# This is a STANDING gate (not transitional like rg-migration.yaml) — it runs on
|
|
15
|
+
# This is a STANDING gate (not transitional like rg-migration.yaml) — it runs on
|
|
16
|
+
# every pre-check.
|
|
13
17
|
include:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
- "apps/**"
|
|
19
|
+
- "packages/**"
|
|
20
|
+
- "plugins/sp/**"
|
|
17
21
|
exclude:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
- "**/node_modules/**"
|
|
23
|
+
- "**/dist/**"
|
|
24
|
+
# `.pi-lens/cache/` holds autogenerated project snapshots (absolute paths that
|
|
25
|
+
# legitimately contain `config/...` substrings). Not source — exclude to avoid
|
|
26
|
+
# triaging snapshot noise every pre-check.
|
|
27
|
+
- "**/.pi-lens/**"
|
|
28
|
+
# `.spur/` runtime dirs hold run records, agent sessions, and captured test
|
|
29
|
+
# output (e.g. e2e failed-agent dumps embedding real source diffs). Not
|
|
30
|
+
# source — same class as the .pi-lens exclusion above.
|
|
31
|
+
- "**/.spur/**"
|
|
32
|
+
# Package build artifacts: `build:bundle` copies repo-root config/ →
|
|
33
|
+
# apps/cli/config/ (and legacy spur-cli/config/). Those trees are the ADR-015
|
|
34
|
+
# SSOT payload itself and legitimately contain `config/...` documentation /
|
|
35
|
+
# self-references — not runtime paths.
|
|
36
|
+
- "apps/cli/config/**"
|
|
37
|
+
- "apps/cli/spur-cli/**"
|
|
29
38
|
rules:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
- id: sp-runtime-path
|
|
40
|
+
description: >
|
|
41
|
+
Use `.spur/` paths for runtime configuration references, not `config/`.
|
|
42
|
+
`config/` is the build-time bundled-asset source-of-truth (ADR-015);
|
|
43
|
+
`.spur/` is the runtime directory. Agent-facing instructions
|
|
44
|
+
(`plugins/sp/`) and runtime code (`apps/`, `packages/`) MUST NOT contain
|
|
45
|
+
literal `config/plugins`, `config/rules`, `config/tasks`,
|
|
46
|
+
`config/templates`, or `config/workflows` path references.
|
|
47
|
+
severity: error
|
|
48
|
+
evaluator:
|
|
49
|
+
type: rg
|
|
50
|
+
config:
|
|
51
|
+
pattern: "config/(plugins|rules|tasks|templates|workflows)"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
$schema: "@gobing-ai/spur/schemas/rule-file.schema.json"
|
|
2
2
|
# CLI surface consistency — structural checks that every command file follows
|
|
3
3
|
# the registerXxxCommand convention and that --json claims are backed by real
|
|
4
|
-
# output serialization (toJson or JSON.stringify).
|
|
4
|
+
# output serialization (toEnvelopeJson, toJson, or JSON.stringify).
|
|
5
5
|
#
|
|
6
6
|
# Part of the recommended-pre-check preset. Run:
|
|
7
7
|
# spur rule run --preset recommended-pre-check
|
|
@@ -11,7 +11,8 @@ include:
|
|
|
11
11
|
|
|
12
12
|
exclude:
|
|
13
13
|
- "apps/cli/src/commands/stubs.ts"
|
|
14
|
-
- "apps/cli/src/commands/shared-options.ts" # option registry, not a command
|
|
14
|
+
- "apps/cli/src/commands/shared-options.ts" # option registry, not a command
|
|
15
|
+
# module (consistency.test.ts excludes it too)
|
|
15
16
|
|
|
16
17
|
rules:
|
|
17
18
|
- id: cli-register-pattern
|
|
@@ -27,11 +28,12 @@ rules:
|
|
|
27
28
|
|
|
28
29
|
- id: cli-json-output
|
|
29
30
|
description: >
|
|
30
|
-
Command files that register --json options must call
|
|
31
|
-
JSON.stringify() to produce
|
|
31
|
+
Command files that register --json options must call toEnvelopeJson()
|
|
32
|
+
(ADR-091 envelope seam), toJson(), or JSON.stringify() to produce
|
|
33
|
+
machine-readable output.
|
|
32
34
|
severity: error
|
|
33
35
|
evaluator:
|
|
34
36
|
type: rg
|
|
35
37
|
config:
|
|
36
|
-
pattern: "toJson\\b|JSON\\.stringify\\b"
|
|
38
|
+
pattern: "toEnvelopeJson\\b|toJson\\b|JSON\\.stringify\\b"
|
|
37
39
|
mode: require
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
# start -> resolve-scope -> resolve-paths -> analyze -> cache-probe
|
|
15
15
|
# (hit -> refresh-provenance -> publish -> published)
|
|
16
16
|
# (miss -> render -> enrich -> structure-gate -> validate -> stamp -> publish)
|
|
17
|
-
# (
|
|
17
|
+
# (structure-gate FAIL -> correct (max 2 total) -> structure-gate; exhausted -> failed)
|
|
18
|
+
# (validate FAIL -> correct (max 2 total) -> structure-gate ...; exhausted -> failed)
|
|
18
19
|
# (any all-paths failure -> failed)
|
|
19
20
|
#
|
|
20
21
|
# `analyze` precedes `cache-probe` deliberately: ADR-079 makes cache validity a DERIVED fact, so
|
|
@@ -131,12 +132,12 @@ states:
|
|
|
131
132
|
options:
|
|
132
133
|
command: >-
|
|
133
134
|
mkdir -p .spur/run;
|
|
134
|
-
. .spur/run/$__runId-paths.
|
|
135
|
+
. .spur/run/$__runId-paths.txt;
|
|
135
136
|
$spurBin history analyze --out .spur/run/$__runId-history-anatomy-current.json --since "$HA_SINCE" --until "$HA_UNTIL" --json
|
|
136
137
|
- kind: shell
|
|
137
138
|
options:
|
|
138
139
|
command: >-
|
|
139
|
-
. .spur/run/$__runId-paths.
|
|
140
|
+
. .spur/run/$__runId-paths.txt;
|
|
140
141
|
$spurBin history analyze --out .spur/run/$__runId-history-anatomy-baseline.json --since "$HA_BASELINE_SINCE" --until "$HA_BASELINE_UNTIL" --json 2>/dev/null || true
|
|
141
142
|
|
|
142
143
|
- id: cache-probe
|
|
@@ -229,14 +230,37 @@ states:
|
|
|
229
230
|
|
|
230
231
|
- id: correct
|
|
231
232
|
description: >
|
|
232
|
-
|
|
233
|
-
|
|
233
|
+
A two-pass correction budget (0690). onEnter increments the counter; retry edges guard on
|
|
234
|
+
the run-scoped correction-count file < 2 (`vars.correctionCount` is the declared home; the
|
|
235
|
+
file is the live bound), and a failure after the second repair takes the -> failed edge. The
|
|
236
|
+
counter is shared by the structure-gate and validate FAIL edges, so a structure repair can
|
|
237
|
+
still be followed by one validation-driven repair. The
|
|
238
|
+
model half re-authors the candidate in place from the gate findings and validation notes —
|
|
239
|
+
re-anchoring evidence rows to a backticked .md/.ts/.json path or path:line, stripping
|
|
240
|
+
placeholders, restoring the canonical twelve-section order, and reconciling quantitative
|
|
241
|
+
claims against the current/baseline artifacts — before the deterministic gate re-runs.
|
|
234
242
|
onEnter:
|
|
235
243
|
- kind: shell
|
|
236
244
|
options:
|
|
237
245
|
command: >-
|
|
238
246
|
n=$(cat .spur/run/$__runId-correction-count 2>/dev/null || echo 0) &&
|
|
239
247
|
printf '%s\n' "$((n + 1))" > .spur/run/$__runId-correction-count
|
|
248
|
+
- kind: shell
|
|
249
|
+
options:
|
|
250
|
+
command: >-
|
|
251
|
+
git status --porcelain > .spur/run/$__runId-baseline-correct.txt || true
|
|
252
|
+
- kind: agent.run
|
|
253
|
+
options:
|
|
254
|
+
agent: ${vars.agent}
|
|
255
|
+
input: "Repair .spur/run/${vars.__runId}-candidate.md in place. Read its structure-gate findings, optional validation notes, references/report-contract.md, and the references/operations.md validate rubric; fix every violation. Use a backticked `.md`/`.ts`/`.json` path or a `path:line` anchor, never `current #/...`; remove placeholders and empty rows; restore the twelve-section order; ensure every problem and positive finding carries the full field set; verify every quantitative claim (counts, durations, percentages, distributions) and every current/baseline full-digest match against .spur/run/${vars.__runId}-history-anatomy-current.json and -baseline.json. Overwrite only the candidate; never launch a workflow."
|
|
256
|
+
# Declared Layer-1 role (0538 R2): repair reuses enrich-class judgment.
|
|
257
|
+
role: reviewer
|
|
258
|
+
expectFile: .spur/run/${vars.__runId}-candidate.md
|
|
259
|
+
timeoutMs: ${vars.stepTimeoutMs}
|
|
260
|
+
- kind: shell
|
|
261
|
+
options:
|
|
262
|
+
command: >-
|
|
263
|
+
node "$(superskill script path sp history-anatomy-cache.mjs)" assert-clean --baseline .spur/run/$__runId-baseline-correct.txt --expect .spur/run/$__runId-candidate.md
|
|
240
264
|
|
|
241
265
|
- id: refresh-provenance
|
|
242
266
|
description: >
|
|
@@ -352,7 +376,14 @@ transitions:
|
|
|
352
376
|
command: 'grep -q "^PASS$" .spur/run/$__runId-structure-gate.txt 2>/dev/null'
|
|
353
377
|
- from: structure-gate
|
|
354
378
|
to: failed
|
|
355
|
-
description: Structure gate FAIL — never publish a malformed candidate.
|
|
379
|
+
description: Structure gate FAIL with the correction cap exhausted — never publish a malformed candidate.
|
|
380
|
+
guard:
|
|
381
|
+
kind: shell
|
|
382
|
+
options:
|
|
383
|
+
command: '! grep -q "^PASS$" .spur/run/$__runId-structure-gate.txt 2>/dev/null && test "$(cat .spur/run/$__runId-correction-count 2>/dev/null || echo 0)" -ge 2'
|
|
384
|
+
- from: structure-gate
|
|
385
|
+
to: correct
|
|
386
|
+
description: Structure gate FAIL under the shared two-pass correction cap (0690).
|
|
356
387
|
guard:
|
|
357
388
|
kind: always
|
|
358
389
|
|
|
@@ -365,11 +396,11 @@ transitions:
|
|
|
365
396
|
command: 'grep -q "Verdict: PASS" .spur/run/$__runId-validation.txt 2>/dev/null'
|
|
366
397
|
- from: validate
|
|
367
398
|
to: correct
|
|
368
|
-
description: Validation FAIL under the correction cap
|
|
399
|
+
description: Validation FAIL under the shared two-pass correction cap.
|
|
369
400
|
guard:
|
|
370
401
|
kind: shell
|
|
371
402
|
options:
|
|
372
|
-
command: '! grep -q "Verdict: PASS" .spur/run/$__runId-validation.txt 2>/dev/null && test "$(cat .spur/run/$__runId-correction-count 2>/dev/null || echo 0)" -lt
|
|
403
|
+
command: '! grep -q "Verdict: PASS" .spur/run/$__runId-validation.txt 2>/dev/null && test "$(cat .spur/run/$__runId-correction-count 2>/dev/null || echo 0)" -lt 2'
|
|
373
404
|
- from: validate
|
|
374
405
|
to: failed
|
|
375
406
|
description: Validation FAIL with the correction cap exhausted — terminate without publishing.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gobing-ai/spur",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.65",
|
|
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.46",
|
|
57
|
+
"@gobing-ai/ts-ai-runner": "^0.4.46",
|
|
58
|
+
"@gobing-ai/ts-dual-workflow-engine": "^0.4.46",
|
|
59
|
+
"@gobing-ai/ts-infra": "^0.4.46",
|
|
60
|
+
"@gobing-ai/ts-llm-jsonl-importer": "^0.4.46",
|
|
61
|
+
"@gobing-ai/ts-rule-engine": "^0.4.46",
|
|
62
|
+
"@gobing-ai/ts-runtime": "^0.4.46",
|
|
63
|
+
"@gobing-ai/ts-utils": "^0.4.46",
|
|
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
|
@@ -129,13 +129,14 @@ list this README is checked against.
|
|
|
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
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
|
+
| `dev-review-session` | Review the active coding-agent session inline — compact outcome, resolved/open issues with evidence, proposal-only improvements, and next actions; forwards to sp:session-review |
|
|
132
133
|
| `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
134
|
| `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
135
|
| `dev-fixall` | Fix all lint, type, and test errors systematically across the working tree |
|
|
135
136
|
| `dev-simplify` | Simplify recently-changed code for clarity without changing behavior — incremental, test-after-each, revert on regression |
|
|
136
137
|
| `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
138
|
| `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
|
|
139
|
+
| `dev-gitmsg` | Generate conventional commit message(s) from the current change set via one bounded diff capture, optionally commit |
|
|
139
140
|
| `dev-gtd` | Get things done — quality gate (auto-fix) → conventional commit → push → gh verify in one flow; optional act CI simulation via `--act` |
|
|
140
141
|
| `dev-changelog` | Generate changelog from git commits |
|
|
141
142
|
|
|
@@ -173,7 +174,8 @@ and verification (`sp:code-verification`) — plus a CLI facade (`sp:spur-cli`,
|
|
|
173
174
|
`spur` noun) and standalone technique skills (`sp:next-router`, `sp:test-driven-development`, `sp:brainstorm`,
|
|
174
175
|
`sp:wayfinder`, `sp:sys-debugging`, `sp:code-review`, `sp:code-simplification`, `sp:code-improvement`,
|
|
175
176
|
`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`,
|
|
177
|
+
`sp:daily-summary`, `sp:reverse-engineering`, `sp:issue-finding`, `sp:conflict-finding`,
|
|
178
|
+
`sp:indexed-context`, `sp:session-review`, `sp:redesign-web-ui`). See
|
|
177
179
|
[skills/spur-dev/SKILL.md](skills/spur-dev/SKILL.md)'s Step routing table for which skill owns which
|
|
178
180
|
pipeline step.
|
|
179
181
|
|
|
@@ -181,7 +183,7 @@ pipeline step.
|
|
|
181
183
|
|
|
182
184
|
```
|
|
183
185
|
plugins/sp/
|
|
184
|
-
├── skills/ # Domain knowledge + workflow docs (
|
|
186
|
+
├── skills/ # Domain knowledge + workflow docs (32 skills)
|
|
185
187
|
│ ├── brainstorm/ # Structured ideation workflow
|
|
186
188
|
│ │ ├── agents/openai.yaml
|
|
187
189
|
│ │ ├── examples/ideation-example.md
|
|
@@ -239,14 +241,17 @@ plugins/sp/
|
|
|
239
241
|
│ │ └── references/{authority-resolution.md, comparison-protocol.md, finding-contract.md, remediation-routing.md}
|
|
240
242
|
│ ├── next-feature/ # Prompt-first feature frontier prioritizer (backs /sp:dev-find-next)
|
|
241
243
|
│ │ └── references/{signal-derivation.md, ranking-rubric.md, proposal-contract.md, handoff-routing.md}
|
|
244
|
+
│ ├── redesign-web-ui/ # Existing-UI visual upgrade past generic AI defaults
|
|
245
|
+
│ │ └── references/{audit-checklist, upgrade-techniques}.md
|
|
242
246
|
│ ├── history-anatomy/ # Diagnostic interpretation owner over already-imported history (backs /sp:dev-find-issue)
|
|
243
247
|
│ │ └── references/{modes.md, report-contract.md, operations.md}
|
|
248
|
+
│ ├── session-review/ # Inline, report-only review of the active coding-agent session
|
|
244
249
|
│ ├── sys-architecture/ # Architecture / ADR judgment competency
|
|
245
250
|
│ │ └── references/decision-method.md
|
|
246
251
|
│ ├── sys-debugging/ # Structured debugging protocol
|
|
247
252
|
│ │ └── references/debugging-protocol.md
|
|
248
253
|
│ └── wayfinder/ # Multi-session investigation maps (SKILL.md only)
|
|
249
|
-
├── commands/ #
|
|
254
|
+
├── commands/ # 39 slash-command wrappers — the SSOT (hand-editable thin wrappers; see Commands below)
|
|
250
255
|
├── agents/ # 4 specialist subagents (expert-spur, super-coder, super-planner, super-reviewer)
|
|
251
256
|
├── hooks/ # hooks.json + task-write-guard.{ts,test.ts} + context-{session-start,post-tool,session-stop}.ts
|
|
252
257
|
│ # + careful-guard.{ts,test.ts} + context-hooks.test.ts + token-estimate.test.ts
|
|
@@ -284,8 +289,8 @@ Tier 3 — Execution Layer (spur CLI + Guard Scripts)
|
|
|
284
289
|
The single source of truth for domain knowledge and workflow documentation. Each skill is a
|
|
285
290
|
self-contained knowledge module that teaches the agent how to operate one slice of the Spur CLI
|
|
286
291
|
surface or run one workflow. All skills target the same five core platforms: `claude-code`, `codex`,
|
|
287
|
-
`antigravity`, `opencode`, `openclaw`;
|
|
288
|
-
`
|
|
292
|
+
`antigravity`, `opencode`, `openclaw`; selected read-only and review skills additionally declare
|
|
293
|
+
`pi`.
|
|
289
294
|
|
|
290
295
|
| Skill | Ver | Domain |
|
|
291
296
|
| --------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
@@ -319,6 +324,8 @@ surface or run one workflow. All skills target the same five core platforms: `cl
|
|
|
319
324
|
| `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
325
|
| `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
326
|
| `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 |
|
|
327
|
+
| `session-review` | 1.0 | Inline review of the active coding-agent session — compact outcomes, evidence-backed resolved/open issue classification, proposal-only improvements, and next actions; no workflow, import, delegation, or mutation |
|
|
328
|
+
| `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
329
|
|
|
323
330
|
#### Bounded coexistence and retirement gate — `sp:issue-finding` (HA-S1 0661)
|
|
324
331
|
|
|
@@ -351,11 +358,11 @@ Skills contain zero validation logic — the CLI is the gate.
|
|
|
351
358
|
|
|
352
359
|
Thin slash-command wrappers that parse user arguments and delegate to the corresponding skill. Each
|
|
353
360
|
command is a user-facing entry point that bridges natural language to skill invocation. There are
|
|
354
|
-
**
|
|
361
|
+
**39 commands** (see the Command index above for the full list), organized by the surface they wrap:
|
|
355
362
|
|
|
356
363
|
| Prefix | Count | Delegates to | Purpose |
|
|
357
364
|
| ------------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
358
|
-
| `dev-*` |
|
|
365
|
+
| `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 |
|
|
359
366
|
| `rule-*` | 3 | `sp:spur-cli` | The rule surface — `rule-add`, `rule-refine`, `rule-scan` |
|
|
360
367
|
| `workflow-*` | 2 | `sp:spur-cli` | The workflow surface — `workflow-add`, `workflow-refine` |
|
|
361
368
|
| `spur-init` | 1 | `sp:doc-evolve` | Project bootstrap (`spur init`) with doc-evolve integration |
|
|
@@ -365,7 +372,7 @@ Each command file contains:
|
|
|
365
372
|
- YAML frontmatter (`description`, `argument-hint`, `allowed-tools`).
|
|
366
373
|
- A delegation block: `Skill(skill="sp:<skill-name>", args="<operation> $ARGUMENTS")`.
|
|
367
374
|
|
|
368
|
-
**Commands as SSOT (ADR-032).** The
|
|
375
|
+
**Commands as SSOT (ADR-032).** The 39 `.md` files in `commands/` are the authoritative,
|
|
369
376
|
hand-editable source for the operator command surface. Per-platform adapters are **install-time
|
|
370
377
|
output** owned by `superskill` (`superskill install sp`) and never committed here. Plugin `sp` ships
|
|
371
378
|
no per-platform artifacts — only the platform-independent thin wrappers.
|
|
@@ -494,7 +501,7 @@ the hard gate that the soft skill cannot enforce on its own.
|
|
|
494
501
|
```mermaid
|
|
495
502
|
graph TB
|
|
496
503
|
subgraph "User entry points"
|
|
497
|
-
CMD["Commands<br/>
|
|
504
|
+
CMD["Commands<br/>39 slash commands<br/>/sp:dev-plan, /sp:dev-runall, /sp:dev-review-session, /sp:rule-add, ..."]
|
|
498
505
|
AGENT["Agents<br/>4 subagents<br/>expert-spur, super-coder, super-planner, super-reviewer"]
|
|
499
506
|
HOOK["PreToolUse hook<br/>Write|Edit matcher"]
|
|
500
507
|
end
|
|
@@ -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,5 +1,5 @@
|
|
|
1
1
|
---
|
|
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,
|
|
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 historical issues, post-mortem, performance analysis, history-anatomy, run the daily report, ad-hoc diagnosis"
|
|
3
3
|
role: reviewer
|
|
4
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"]
|
|
@@ -15,6 +15,9 @@ exposes the `enrich` and `validate` operations the `history-anatomy.yaml` workfl
|
|
|
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.
|
|
17
17
|
|
|
18
|
+
For an immediate review of the active conversation, route to `/sp:dev-review-session`; this command
|
|
19
|
+
owns imported-history windows, recurrence, trends, and quantitative forensics only.
|
|
20
|
+
|
|
18
21
|
## Argument Flags
|
|
19
22
|
|
|
20
23
|
| Flag | Description | Default |
|
|
@@ -25,7 +28,7 @@ evidence validation. This command never triggers an import.
|
|
|
25
28
|
| `--since` `<RFC3339>` | Inclusive lower bound (ad-hoc; required). | omitted |
|
|
26
29
|
| `--until` `<RFC3339>` | Inclusive upper bound (ad-hoc; required). | omitted |
|
|
27
30
|
| `--recompute` | Force the full analyze/render/enrich/validate path; records disposition forced-recompute. | off |
|
|
28
|
-
| `--agent` `<auto\|name>` | Execution surface selector. This target is engine-driven (headless)
|
|
31
|
+
| `--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
32
|
| `--output` `<path>` | Explicit report output path (ad-hoc; default writes to the run directory). | run dir |
|
|
30
33
|
|
|
31
34
|
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` /
|
|
@@ -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` `<auto\|name>` | Who runs the model-bearing ideation. The pipeline's `agent.run` stages are headless — they always dispatch a subprocess
|
|
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
|
|
|
@@ -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 |
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Review the active coding-agent session immediately: summarize outcomes, distinguish resolved and open issues with evidence, and propose bounded improvements. Triggers: review this session, session wrap-up, immediate retrospective, what happened, what was resolved"
|
|
3
|
+
role: reviewer
|
|
4
|
+
argument-hint: "[<focus>]"
|
|
5
|
+
allowed-tools: ["Bash", "Read", "Grep", "Glob", "Skill"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Dev Review Session
|
|
9
|
+
|
|
10
|
+
Wraps the **sp:session-review** skill for a lightweight, report-only review of the active host
|
|
11
|
+
session. It uses the current conversation plus read-only repository evidence, runs inline so the
|
|
12
|
+
session context is preserved, and never launches a workflow, imports history, creates a task, or
|
|
13
|
+
applies a remediation.
|
|
14
|
+
|
|
15
|
+
## Argument Flags
|
|
16
|
+
|
|
17
|
+
| Flag | Description | Default |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| `[<focus>]` | Optional question or operation to emphasize without excluding material session outcomes. | full active session |
|
|
20
|
+
|
|
21
|
+
For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
/sp:dev-review-session
|
|
27
|
+
/sp:dev-review-session "why the verification loop repeated"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Implementation
|
|
31
|
+
|
|
32
|
+
Invoke the skill directly in the active host session; do not delegate to a subagent or subprocess.
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Skill(skill="sp:session-review", args="$ARGUMENTS")
|
|
36
|
+
```
|
|
@@ -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,
|