@gobing-ai/spur 0.3.97 → 0.3.99
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/plugin-scripts.json +5 -0
- package/config/templates/task/brainstorm.md +1 -1
- package/config/templates/task/feature-impl.md +1 -1
- package/config/templates/task/issue.md +1 -1
- package/config/templates/task/meta.md +1 -1
- package/config/templates/task/review.md +1 -1
- package/config/templates/task/standard.md +1 -1
- package/package.json +9 -9
- package/plugins/sp/README.md +9 -9
- package/plugins/sp/lib/idea-handoff.generated.mjs +37 -4
- package/plugins/sp/lib/inline-run.generated.mjs +54 -14
- package/plugins/sp/lib/residual-scan.generated.d.mts +5 -0
- package/plugins/sp/lib/residual-scan.generated.mjs +45 -5
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/roles.md +3 -3
- package/plugins/sp/scripts/inline-run-setup.mjs +4 -2
- package/plugins/sp/scripts/inline-run-setup.ts +12 -12
- package/plugins/sp/scripts/persist-out-check.mjs +164 -0
- package/plugins/sp/scripts/persist-out-check.ts +185 -0
- package/plugins/sp/scripts/residual-scan.mjs +50 -8
- package/plugins/sp/scripts/residual-scan.ts +4 -3
- package/plugins/sp/scripts/task-diffstat.mjs +17 -5
- package/plugins/sp/scripts/task-diffstat.ts +25 -4
- package/plugins/sp/skills/code-implementation/SKILL.md +1 -1
- package/plugins/sp/skills/code-verification/SKILL.md +3 -0
- package/plugins/sp/skills/code-verification/references/verdict-schema.md +17 -1
- package/plugins/sp/skills/conflict-finding/SKILL.md +1 -1
- package/plugins/sp/skills/conflict-finding/references/authority-resolution.md +5 -3
- package/plugins/sp/skills/conflict-finding/references/remediation-routing.md +9 -8
- package/plugins/sp/skills/doc-evolve/SKILL.md +4 -3
- package/plugins/sp/skills/spur-cli/references/tasks/section-editing.md +7 -4
- package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +7 -4
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +40 -7
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +16 -13
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +217 -38
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +3 -1
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +7 -8
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +110 -3
- package/spur.js +2142 -637
- package/web/_astro/{BoardApp.vveLOdDq.js → BoardApp.BVp-LYi6.js} +101 -101
- package/web/_astro/{BoardApp.Bmv5WkJ9.js → BoardApp.i4eh_fHA.js} +1 -1
- package/web/_astro/{TaskDetail.IKc3uDYV.js → TaskDetail.C5Cu8LdB.js} +1 -1
- package/web/_astro/{arc.C63Ufg35.js → arc.Bu5XpBEz.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.CP8Hyldk.js → architectureDiagram-3BPJPVTR.9vHQTvhF.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.Bo_48MRA.js → blockDiagram-GPEHLZMM.Cn2Xl7D6.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.Ch61sw-O.js → c4Diagram-AAUBKEIU.7o0P_QDo.js} +1 -1
- package/web/_astro/channel.6IFIKBhu.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.CHpzS7xf.js → chunk-2J33WTMH.C3zZFsNt.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.DzMNNWIw.js → chunk-4BX2VUAB.CNy_M7fO.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.BqPrDw_Q.js → chunk-55IACEB6.2TiPnLBL.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.ZzBHhNw-.js → chunk-727SXJPM.5CGSyKAp.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.1_O_LLkx.js → chunk-AQP2D5EJ.w-ZIgfsK.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.GS4UHg7_.js → chunk-FMBD7UC4.BkcEyhKa.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.BnqotN4g.js → chunk-ND2GUHAM.mxKKbBG4.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.Ghuh8zoJ.js → chunk-QZHKN3VN.cyA0z9aT.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.BW9vC3zg.js → classDiagram-4FO5ZUOK.CqtUzwhX.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.BW9vC3zg.js → classDiagram-v2-Q7XG4LA2.CqtUzwhX.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.D6jNC0ti.js → cose-bilkent-S5V4N54A.BExPTopI.js} +1 -1
- package/web/_astro/{cynefin-OW5HDTMX.BOGoCs4L.js → cynefin-OW5HDTMX.Bq2i10Cn.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.8iU5VcWi.js → dagre-BM42HDAG.By_HsOuv.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.CVt88HwH.js → diagram-2AECGRRQ.BtU0b7hz.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.C9HxUUMl.js → diagram-5GNKFQAL.D00ztMdT.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.4ywkQN3t.js → diagram-KO2AKTUF.DMVJWaUN.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.C48A6gpz.js → diagram-LMA3HP47.Cxqrjg5-.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.DxFieQW4.js → diagram-OG6HWLK6.2lz_1B5h.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.CtjtQqYs.js → erDiagram-TEJ5UH35.BVQEuJ3T.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.C5zAiahU.js → flowDiagram-I6XJVG4X.Qlyo90ky.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.D_L6zsny.js → ganttDiagram-6RSMTGT7.DRwb8HHZ.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.Ignnrk3V.js → gitGraphDiagram-PVQCEYII.YfoPthfS.js} +1 -1
- package/web/_astro/{infoDiagram-5YYISTIA.DLv8-P5u.js → infoDiagram-5YYISTIA.DvFREck1.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.p0OTpwFO.js → ishikawaDiagram-YF4QCWOH.BzCj9Q0-.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.CIaBt-DD.js → journeyDiagram-JHISSGLW.BDMT_AFb.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.DGySIntq.js → kanban-definition-UN3LZRKU.D6Fh3gj9.js} +1 -1
- package/web/_astro/{linear.BATV4RXu.js → linear.Dxw00fGQ.js} +1 -1
- package/web/_astro/{mermaid.core.DzkwM3VX.js → mermaid.core.CsoxUWa0.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.3piBRRzA.js → mindmap-definition-RKZ34NQL.CN8oeHLu.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.DUNueLub.js → pieDiagram-4H26LBE5.C7ADqQ_7.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.9bihVbrt.js → quadrantDiagram-W4KKPZXB.Cw9lKyHP.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.CkjsC-YT.js → requirementDiagram-4Y6WPE33.B1ni-z4q.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.Dbq4vaoQ.js → sankeyDiagram-5OEKKPKP.BhexdjVr.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.BivrH99P.js → sequenceDiagram-3UESZ5HK.C3Rm7dpQ.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.CqLQ1Vzz.js → stateDiagram-AJRCARHV.CkuMt27u.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.DvvoLD3b.js → stateDiagram-v2-BHNVJYJU.Dc_aazUA.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.B-KR78gv.js → timeline-definition-PNZ67QCA.ja7sUFhH.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.Ck0Eieb5.js → vennDiagram-CIIHVFJN.BxIshX_K.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.CRfdd_do.js → wardleyDiagram-YWT4CUSO.DfHlC0sh.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.Ck_Jxk9C.js → xychartDiagram-2RQKCTM6.DSnhHwCh.js} +1 -1
- package/web/index.html +1 -1
- package/web/_astro/channel.BKCmJpWM.js +0 -1
|
@@ -27,7 +27,7 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
27
27
|
|
|
28
28
|
### Acceptance Criteria
|
|
29
29
|
|
|
30
|
-
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace):
|
|
30
|
+
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace). Preferred: `Scenario: AC1 — <concrete outcome> (req: R1)` blocks with Given/When/Then, declaring both `ac_altitude: task-local` and `ac_numbering: task-local` for task-local regression criteria (altitude skips only the feature-subset check; numbering makes `(req: R<n>)` count toward requirement coverage). Parsed checkbox rows `- [ ] AC1 — <title>` are supported but never bind requirements — only `Scenario:` titles read `(req: R<n>)`. Bare `- AC1` bullets are legacy unparsed records, not a traceability bypass. Requirements use `- [ ] R1. <text>`, checked at close. Keep empty if not applicable. -->
|
|
31
31
|
|
|
32
32
|
### Q&A
|
|
33
33
|
|
|
@@ -27,7 +27,7 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
27
27
|
|
|
28
28
|
### Acceptance Criteria
|
|
29
29
|
|
|
30
|
-
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace):
|
|
30
|
+
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace). Preferred: `Scenario: AC1 — <concrete outcome> (req: R1)` blocks with Given/When/Then, declaring both `ac_altitude: task-local` and `ac_numbering: task-local` for task-local regression criteria (altitude skips only the feature-subset check; numbering makes `(req: R<n>)` count toward requirement coverage). Parsed checkbox rows `- [ ] AC1 — <title>` are supported but never bind requirements — only `Scenario:` titles read `(req: R<n>)`. Bare `- AC1` bullets are legacy unparsed records, not a traceability bypass. Requirements use `- [ ] R1. <text>`, checked at close. Do not leave placeholder AC here. -->
|
|
31
31
|
|
|
32
32
|
### Q&A
|
|
33
33
|
|
|
@@ -27,7 +27,7 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
27
27
|
|
|
28
28
|
### Acceptance Criteria
|
|
29
29
|
|
|
30
|
-
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace):
|
|
30
|
+
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace). Preferred: `Scenario: AC1 — <concrete outcome> (req: R1)` blocks with Given/When/Then, declaring both `ac_altitude: task-local` and `ac_numbering: task-local` for task-local regression criteria (altitude skips only the feature-subset check; numbering makes `(req: R<n>)` count toward requirement coverage). Parsed checkbox rows `- [ ] AC1 — <title>` are supported but never bind requirements — only `Scenario:` titles read `(req: R<n>)`. Bare `- AC1` bullets are legacy unparsed records, not a traceability bypass. Requirements use `- [ ] R1. <text>`, checked at close. Use a regression scenario proving the bug is fixed. -->
|
|
31
31
|
|
|
32
32
|
### Q&A
|
|
33
33
|
|
|
@@ -27,7 +27,7 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
27
27
|
|
|
28
28
|
### Acceptance Criteria
|
|
29
29
|
|
|
30
|
-
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace):
|
|
30
|
+
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace). Preferred: `Scenario: AC1 — <concrete outcome> (req: R1)` blocks with Given/When/Then, declaring both `ac_altitude: task-local` and `ac_numbering: task-local` for task-local regression criteria (altitude skips only the feature-subset check; numbering makes `(req: R<n>)` count toward requirement coverage). Parsed checkbox rows `- [ ] AC1 — <title>` are supported but never bind requirements — only `Scenario:` titles read `(req: R<n>)`. Bare `- AC1` bullets are legacy unparsed records, not a traceability bypass. Requirements use `- [ ] R1. <text>`, checked at close. Keep empty if not applicable. -->
|
|
31
31
|
|
|
32
32
|
### Q&A
|
|
33
33
|
|
|
@@ -37,7 +37,7 @@ in the reviewed PR/commit/diff). Fix in priority order (P1 → P2 → …); re-r
|
|
|
37
37
|
|
|
38
38
|
### Acceptance Criteria
|
|
39
39
|
|
|
40
|
-
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace):
|
|
40
|
+
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace). Preferred: `Scenario: AC1 — <concrete outcome> (req: R1)` blocks with Given/When/Then, declaring both `ac_altitude: task-local` and `ac_numbering: task-local` for task-local regression criteria (altitude skips only the feature-subset check; numbering makes `(req: R<n>)` count toward requirement coverage). Parsed checkbox rows `- [ ] AC1 — <title>` are supported but never bind requirements — only `Scenario:` titles read `(req: R<n>)`. Bare `- AC1` bullets are legacy unparsed records, not a traceability bypass. Requirements use `- [ ] R1. <text>`, checked at close. Keep empty until the review task becomes executable work. -->
|
|
41
41
|
|
|
42
42
|
### Q&A
|
|
43
43
|
|
|
@@ -27,7 +27,7 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
27
27
|
|
|
28
28
|
### Acceptance Criteria
|
|
29
29
|
|
|
30
|
-
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace):
|
|
30
|
+
<!-- Number items AC1, AC2, … (never R<n> — that is the Requirements namespace). Preferred: `Scenario: AC1 — <concrete outcome> (req: R1)` blocks with Given/When/Then, declaring both `ac_altitude: task-local` and `ac_numbering: task-local` for task-local regression criteria (altitude skips only the feature-subset check; numbering makes `(req: R<n>)` count toward requirement coverage). Parsed checkbox rows `- [ ] AC1 — <title>` are supported but never bind requirements — only `Scenario:` titles read `(req: R<n>)`. Bare `- AC1` bullets are legacy unparsed records, not a traceability bypass. Requirements use `- [ ] R1. <text>`, checked at close. Keep empty if this task has no objective AC yet. -->
|
|
31
31
|
|
|
32
32
|
### Q&A
|
|
33
33
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gobing-ai/spur",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.99",
|
|
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",
|
|
@@ -57,14 +57,14 @@
|
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@commander-js/extra-typings": "^14.0.0",
|
|
60
|
-
"@gobing-ai/ts-db": "^0.5.
|
|
61
|
-
"@gobing-ai/ts-ai-runner": "^0.5.
|
|
62
|
-
"@gobing-ai/ts-dual-workflow-engine": "^0.5.
|
|
63
|
-
"@gobing-ai/ts-infra": "^0.5.
|
|
64
|
-
"@gobing-ai/ts-llm-jsonl-importer": "^0.5.
|
|
65
|
-
"@gobing-ai/ts-rule-engine": "^0.5.
|
|
66
|
-
"@gobing-ai/ts-runtime": "^0.5.
|
|
67
|
-
"@gobing-ai/ts-utils": "^0.5.
|
|
60
|
+
"@gobing-ai/ts-db": "^0.5.12",
|
|
61
|
+
"@gobing-ai/ts-ai-runner": "^0.5.12",
|
|
62
|
+
"@gobing-ai/ts-dual-workflow-engine": "^0.5.12",
|
|
63
|
+
"@gobing-ai/ts-infra": "^0.5.12",
|
|
64
|
+
"@gobing-ai/ts-llm-jsonl-importer": "^0.5.12",
|
|
65
|
+
"@gobing-ai/ts-rule-engine": "^0.5.12",
|
|
66
|
+
"@gobing-ai/ts-runtime": "^0.5.12",
|
|
67
|
+
"@gobing-ai/ts-utils": "^0.5.12",
|
|
68
68
|
"@types/bun": "1.3.14",
|
|
69
69
|
"@types/figlet": "^1.7.0",
|
|
70
70
|
"@types/node-notifier": "8.0.5",
|
package/plugins/sp/README.md
CHANGED
|
@@ -10,8 +10,8 @@ lifecycle step a deterministic entry point.
|
|
|
10
10
|
> orchestration, history analytics, and operational visibility. The `sp` plugin is the Claude Code
|
|
11
11
|
> plugin surface for that toolkit.
|
|
12
12
|
|
|
13
|
-
- **Marketplace entry:** `name: "sp"`, `
|
|
14
|
-
kept in sync with `.claude-plugin/marketplace.json
|
|
13
|
+
- **Marketplace entry:** `name: "sp"`, `source: "./plugins/sp"`; the release version lives in
|
|
14
|
+
[plugin.json](plugin.json), kept in sync with `.claude-plugin/marketplace.json`.
|
|
15
15
|
- **Owner:** Robin Min.
|
|
16
16
|
|
|
17
17
|
Read this file first for the map; read [skills/spur-dev/SKILL.md](skills/spur-dev/SKILL.md) for the
|
|
@@ -193,7 +193,7 @@ pipeline step.
|
|
|
193
193
|
|
|
194
194
|
```
|
|
195
195
|
plugins/sp/
|
|
196
|
-
├── skills/ # Domain knowledge + workflow docs (
|
|
196
|
+
├── skills/ # Domain knowledge + workflow docs (see the skills table)
|
|
197
197
|
│ ├── brainstorm/ # Structured ideation workflow
|
|
198
198
|
│ │ ├── agents/openai.yaml
|
|
199
199
|
│ │ ├── examples/ideation-example.md
|
|
@@ -270,7 +270,7 @@ plugins/sp/
|
|
|
270
270
|
│ ├── taste-refactoring-tests/ # Test-suite failure-sensitivity refactor
|
|
271
271
|
│ ├── taste-refactoring-ui/ # UI hierarchy, layout, typography + interaction refactor
|
|
272
272
|
│ └── wayfinder/ # Multi-session investigation maps (SKILL.md only)
|
|
273
|
-
├── commands/ #
|
|
273
|
+
├── commands/ # Slash-command wrappers — the SSOT (hand-editable thin wrappers; see Commands below)
|
|
274
274
|
├── agents/ # 4 specialist subagents (expert-spur, super-coder, super-planner, super-reviewer)
|
|
275
275
|
├── hooks/ # hooks.json + task-write-guard.{ts,test.ts} + context-{session-start,post-tool,session-stop}.ts
|
|
276
276
|
│ # + careful-guard.{ts,test.ts} + context-hooks.test.ts + token-estimate.test.ts
|
|
@@ -386,8 +386,8 @@ Skills contain zero validation logic — the CLI is the gate.
|
|
|
386
386
|
#### 2. Commands (`commands/`)
|
|
387
387
|
|
|
388
388
|
Thin slash-command wrappers that parse user arguments and delegate to the corresponding skill. Each
|
|
389
|
-
command is a user-facing entry point that bridges natural language to skill invocation.
|
|
390
|
-
|
|
389
|
+
command is a user-facing entry point that bridges natural language to skill invocation. The Command
|
|
390
|
+
index above lists the live inventory, organized by the surface they wrap:
|
|
391
391
|
|
|
392
392
|
| Prefix | Count | Delegates to | Purpose |
|
|
393
393
|
| ------------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
@@ -401,7 +401,7 @@ Each command file contains:
|
|
|
401
401
|
- YAML frontmatter (`description`, `argument-hint`, `allowed-tools`).
|
|
402
402
|
- A delegation block: `Skill(skill="sp:<skill-name>", args="<operation> $ARGUMENTS")`.
|
|
403
403
|
|
|
404
|
-
**Commands as SSOT (ADR-032).** The
|
|
404
|
+
**Commands as SSOT (ADR-032).** The `.md` files in `commands/` are the authoritative,
|
|
405
405
|
hand-editable source for the operator command surface. Per-platform adapters are **install-time
|
|
406
406
|
output** owned by `superskill` (`superskill install sp`) and never committed here. Plugin `sp` ships
|
|
407
407
|
no per-platform artifacts — only the platform-independent thin wrappers.
|
|
@@ -409,7 +409,7 @@ no per-platform artifacts — only the platform-independent thin wrappers.
|
|
|
409
409
|
**Thin-wrapper contract** is enforced by `scripts/commands/validate-commands.ts`:
|
|
410
410
|
|
|
411
411
|
```bash
|
|
412
|
-
bun run validate-commands # validate all
|
|
412
|
+
bun run validate-commands # validate all command wrappers
|
|
413
413
|
bun run validate-commands --json # machine-readable output
|
|
414
414
|
```
|
|
415
415
|
|
|
@@ -530,7 +530,7 @@ the hard gate that the soft skill cannot enforce on its own.
|
|
|
530
530
|
```mermaid
|
|
531
531
|
graph TB
|
|
532
532
|
subgraph "User entry points"
|
|
533
|
-
CMD["Commands<br/>
|
|
533
|
+
CMD["Commands<br/>Slash-command wrappers<br/>/sp:dev-plan, /sp:dev-runall, /sp:dev-review-session, /sp:rule-add, ..."]
|
|
534
534
|
AGENT["Agents<br/>4 subagents<br/>expert-spur, super-coder, super-planner, super-reviewer"]
|
|
535
535
|
HOOK["PreToolUse hook<br/>Write|Edit matcher"]
|
|
536
536
|
end
|