@gobing-ai/spur 0.3.78 → 0.3.80
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/templates/AGENTS.md +26 -23
- package/config/templates/docs/00_ADR.md +13 -23
- package/config/templates/docs/01_PRD.md +5 -2
- package/config/templates/docs/02_ROADMAP.md +9 -13
- package/config/templates/docs/03_ARCHITECTURE.md +2 -2
- package/config/templates/docs/04_DESIGN.md +12 -31
- package/config/templates/docs/05_FEATURES.md +6 -18
- package/config/templates/docs/99_PROJECT_CONSTITUTION.md +162 -394
- package/package.json +9 -9
- package/plugins/sp/README.md +12 -7
- package/plugins/sp/agents/super-reviewer.md +43 -8
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/scripts/verify-answer-lint.ts +21 -3
- package/plugins/sp/skills/conflict-finding/SKILL.md +6 -0
- package/plugins/sp/skills/daily-summary/SKILL.md +1 -1
- package/plugins/sp/skills/doc-evolve/SKILL.md +26 -40
- package/plugins/sp/skills/doc-evolve/references/operations.md +17 -30
- package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +17 -1
- package/plugins/sp/skills/spur-cli/references/tasks.md +31 -1
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +14 -0
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +3 -3
- package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +12 -0
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +46 -4
- package/spur.js +363 -258
|
@@ -90,35 +90,39 @@ Invoke CLI: `spur <noun> <verb> … --json` (or the project’s documented dev e
|
|
|
90
90
|
|
|
91
91
|
## Documentation
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
authority first, then derived docs, then this file.
|
|
93
|
+
Read [the constitution](docs/99_PROJECT_CONSTITUTION.md) before key-document edits.
|
|
94
|
+
It owns document responsibilities and maintenance; `00` owns architectural choices,
|
|
95
|
+
`01` product scope, and root `DESIGN.md` UI/UX. Use **`sp:doc-evolve`** for drift,
|
|
96
|
+
sync and contract checks. Follow host/operator precedence.
|
|
98
97
|
|
|
99
98
|
### Doc map
|
|
100
99
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
| `
|
|
104
|
-
| `
|
|
105
|
-
| `docs/
|
|
106
|
-
| `docs/
|
|
107
|
-
| `docs/
|
|
108
|
-
| `docs/
|
|
109
|
-
| `docs/
|
|
110
|
-
| `
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
100
|
+
| File | Owns | Update when |
|
|
101
|
+
| --- | --- | --- |
|
|
102
|
+
| `AGENTS.md` | ENTRY: orientation, commands, constraints, owner links | Essential repo facts or routing change |
|
|
103
|
+
| `DESIGN.md` | UI/UX: tokens, components, layout, interaction, accessibility | Shared UI design changes |
|
|
104
|
+
| `docs/00_ADR.md` | WHY: lasting architectural choices and tradeoffs | A meaningful cross-module boundary or invariant changes |
|
|
105
|
+
| `docs/01_PRD.md` | WHAT: vision, users, capability scope | Scope changes |
|
|
106
|
+
| `docs/02_ROADMAP.md` | WHEN: phases, dependencies, exits | Phase commitments or sequencing change |
|
|
107
|
+
| `docs/03_ARCHITECTURE.md` | HOW: current topology, data flow, runtime, invariants | Mechanisms or boundaries change |
|
|
108
|
+
| `docs/04_DESIGN.md` + `docs/design/` | SURFACE: index and non-UI contracts | CLI/API/config/schema or boundary behavior changes |
|
|
109
|
+
| `docs/05_FEATURES.md` + `docs/features/` | STATUS: entry to tool-owned feature records | Feature tool updates lifecycle/acceptance |
|
|
110
|
+
| `docs/99_PROJECT_CONSTITUTION.md` | PROCESS: stable document-governance metadata | Authorized responsibility, authority or maintenance correction |
|
|
111
|
+
|
|
112
|
+
**Placement guard:** feature approvals, task progress and test receipts do not belong in ADRs.
|
|
113
|
+
Preserve ADR numbers and decision history when condensing. Tasks own execution evidence;
|
|
114
|
+
existing context/learning storage owns lessons. Do not append either to the constitution.
|
|
115
|
+
A constitution edit needs a specific governance defect and operator-authorized scope (§6.8).
|
|
116
|
+
Update only owners whose facts changed; portable changes also update init templates.
|
|
117
|
+
Keep `04` an index and `05` a pointer to the generated feature index, without duplicate ledgers.
|
|
114
118
|
|
|
115
119
|
---
|
|
116
120
|
|
|
117
121
|
## Design system
|
|
118
122
|
|
|
119
|
-
**Conditional contract:**
|
|
120
|
-
|
|
121
|
-
|
|
123
|
+
**Conditional contract:** Read root `DESIGN.md` before UI work when present; otherwise use
|
|
124
|
+
established UI conventions. It owns visual and interaction design. Non-UI contracts belong in
|
|
125
|
+
`docs/04_DESIGN.md` and its satellites; system mechanisms belong in `docs/03_ARCHITECTURE.md`.
|
|
122
126
|
|
|
123
127
|
---
|
|
124
128
|
|
|
@@ -183,8 +187,7 @@ catalog here or maintain generated per-platform capability copies in the project
|
|
|
183
187
|
`BREAKING CHANGE:` footer.
|
|
184
188
|
- Never commit secrets or `.env*`.
|
|
185
189
|
- Surgical changes only — no drive-by refactors or speculative abstractions.
|
|
186
|
-
- Surface changes
|
|
187
|
-
sync-check when unsure.
|
|
190
|
+
- Surface changes update their owning design satellite (T3); feature changes use the feature tool (T4).
|
|
188
191
|
- **One writer per working tree.** Two agent sessions in one checkout overwrite each other silently
|
|
189
192
|
— the symptom reads as a model regression. Parallel agent work uses git worktree isolation (one
|
|
190
193
|
branch + one tree per agent).
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Architecture Decision Records
|
|
3
3
|
doc: 00_ADR
|
|
4
|
-
owns: WHY —
|
|
4
|
+
owns: WHY — lasting architectural choices, context and tradeoffs
|
|
5
5
|
authority: authoritative
|
|
6
|
-
version: 1.
|
|
6
|
+
version: 1.1.0
|
|
7
7
|
owner: _(project owner)_
|
|
8
8
|
updated_at: {{init-date}}
|
|
9
9
|
read_before: any structural change
|
|
@@ -13,30 +13,20 @@ sync: [T1, T2]
|
|
|
13
13
|
|
|
14
14
|
# Architecture Decision Records
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Architectural choices only; admission and editorial rules: constitution §6.1.
|
|
17
|
+
Record context, the chosen alternative, material tradeoffs/consequences and a detail link.
|
|
18
|
+
Feature approvals, task updates and test receipts stay in their owning records.
|
|
19
|
+
Preserve every issued ADR number, title and decision history.
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
<!-- No decision is pre-accepted by scaffolding. Add a real founding decision when made.
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
## ADR-NNN: <Architectural choice>
|
|
21
24
|
|
|
22
|
-
**
|
|
25
|
+
**Status:** Accepted | Accepted (design) · **Date:** YYYY-MM-DD
|
|
23
26
|
|
|
24
|
-
**
|
|
27
|
+
**Decision.** <Lasting boundary or invariant selected among meaningful alternatives.>
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
Add new ADRs here. Entry shape (per 99 §6.1):
|
|
29
|
+
**Why / tradeoff.** <Context, strongest reason, and material cost or consequence.>
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
**Status:** Accepted | Accepted (design) | Superseded by ADR-MMM | Skipped · **Date:** YYYY-MM-DD
|
|
32
|
-
|
|
33
|
-
**Decision.** <What was decided — the smallest complete statement of the choice.>
|
|
34
|
-
|
|
35
|
-
**Why.** <One line. The single strongest reason.>
|
|
36
|
-
|
|
37
|
-
**Detail:** <pointer into 03/04/plans — depth never lives here.>
|
|
38
|
-
|
|
39
|
-
A decision that reverses a prior ADR adds a new entry that says "supersedes ADR-NNN".
|
|
40
|
-
An Amendment records the decision delta + one-line reason — not the mechanism. Implementation
|
|
41
|
-
paths, detailed semantics, and multi-paragraph rationale belong in 03/04, not in the amendment.
|
|
42
|
-
-->
|
|
31
|
+
**Detail:** <Owning architecture/design reference.>
|
|
32
|
+
-->
|
|
@@ -3,7 +3,7 @@ name: Product Requirements Document
|
|
|
3
3
|
doc: 01_PRD
|
|
4
4
|
owns: WHAT — product vision, users, scope (in / out / deferred)
|
|
5
5
|
authority: authoritative-on-scope
|
|
6
|
-
version: 1.
|
|
6
|
+
version: 1.1.0
|
|
7
7
|
owner: _(project owner)_
|
|
8
8
|
updated_at: {{init-date}}
|
|
9
9
|
read_before: adding a command or feature
|
|
@@ -39,4 +39,7 @@ _(One sentence: what this product is and who it is for.)_
|
|
|
39
39
|
|
|
40
40
|
### Out of scope
|
|
41
41
|
|
|
42
|
-
- _(explicitly excluded capability — prevents scope creep)_
|
|
42
|
+
- _(explicitly excluded capability — prevents scope creep)_
|
|
43
|
+
|
|
44
|
+
<!-- Capability scope only. Delivery state belongs in feature records, sequencing in 02,
|
|
45
|
+
and implementation in 03/04. Do not duplicate command catalogs or task updates. -->
|
|
@@ -3,28 +3,24 @@ name: Roadmap
|
|
|
3
3
|
doc: 02_ROADMAP
|
|
4
4
|
owns: WHEN — phases, current vs deferred, sequencing
|
|
5
5
|
authority: derived
|
|
6
|
-
version: 1.
|
|
6
|
+
version: 1.1.0
|
|
7
7
|
derived_from: [00_ADR, 01_PRD]
|
|
8
8
|
owner: _(project owner)_
|
|
9
9
|
updated_at: {{init-date}}
|
|
10
10
|
read_before: placing work in a phase
|
|
11
11
|
edit_rules: 99 §6.3
|
|
12
|
-
sync: [T5]
|
|
12
|
+
sync: [T5, T6]
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
# Roadmap
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Phase goals, order, dependencies and exits only. Detailed feature state belongs in the
|
|
18
|
+
feature tool's index; task progress belongs in task records (constitution §6.3).
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|-------|--------|-------|----------------|
|
|
21
|
-
| Phase 0 — Foundation | ✅ done | _(list the real, shipped deliverable names)_ | _(what must be true to exit)_ |
|
|
22
|
-
| Phase 1 — _(name)_ | ⏳ planned | _(items)_ | _(what must be true to exit)_ |
|
|
20
|
+
## Phase 0 — Foundation
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
_(Goal and dependencies, based on actual project scope.)_
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
Insert sub-phases (1.5) rather than renumbering existing ones.
|
|
30
|
-
-->
|
|
24
|
+
- [ ] _(Coarse deliverable; use its real name and link to the feature.)_
|
|
25
|
+
|
|
26
|
+
**Exit:** _(Observable conditions required to complete this phase.)_
|
|
@@ -3,7 +3,7 @@ name: Architecture
|
|
|
3
3
|
doc: 03_ARCHITECTURE
|
|
4
4
|
owns: HOW — module boundaries, data flow, runtime model, invariants
|
|
5
5
|
authority: derived
|
|
6
|
-
version: 1.
|
|
6
|
+
version: 1.1.0
|
|
7
7
|
derived_from: [00_ADR, 01_PRD]
|
|
8
8
|
owner: _(project owner)_
|
|
9
9
|
updated_at: {{init-date}}
|
|
@@ -30,5 +30,5 @@ _(Describe the primary data path: input → processing → output. Name the seam
|
|
|
30
30
|
|
|
31
31
|
<!--
|
|
32
32
|
Describes the CURRENT architecture only. Future/accepted designs go in sections explicitly
|
|
33
|
-
titled "(accepted design — ADR-NNN; not yet built)".
|
|
33
|
+
titled "(accepted design — ADR-NNN; not yet built)". Keep command/schema detail in 04 satellites and task delivery receipts in task records.
|
|
34
34
|
-->
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Design
|
|
3
3
|
doc: 04_DESIGN
|
|
4
|
-
owns: SURFACE —
|
|
4
|
+
owns: SURFACE — index of non-UI CLI, API, config, schema and boundary contracts
|
|
5
5
|
authority: derived
|
|
6
|
-
version: 1.
|
|
6
|
+
version: 1.1.0
|
|
7
7
|
derived_from: [00_ADR, 01_PRD]
|
|
8
8
|
owner: _(project owner)_
|
|
9
9
|
updated_at: {{init-date}}
|
|
@@ -14,38 +14,19 @@ sync: [T3, T9]
|
|
|
14
14
|
|
|
15
15
|
# Design
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
> Edit order: satellite first, then index row — same change (T9).
|
|
17
|
+
Non-UI contract index (constitution §6.5). Keep signatures, schemas, defaults, errors
|
|
18
|
+
and boundary behavior in the owning `docs/design/<slug>.md` satellite.
|
|
20
19
|
|
|
21
20
|
## UI/UX boundary & DESIGN.md
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
Root `DESIGN.md`, when present, owns UI/UX visual and interaction design.
|
|
23
|
+
Architecture mechanisms belong in `03_ARCHITECTURE.md`.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
## Surface map
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
| Area | Contract reference |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| _(Existing CLI/API/config/schema area)_ | _(Link to its owning satellite when created)_ |
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
_(command) <positional> [--flag <value>] [--json]
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
| Command | Description | Design doc |
|
|
38
|
-
|---------|-------------|------------|
|
|
39
|
-
| _(command)_ | _(one-line description)_ | `docs/design/_(slug)_.md` |
|
|
40
|
-
|
|
41
|
-
## 2. Configuration keys
|
|
42
|
-
|
|
43
|
-
| Key | Type | Default | Description |
|
|
44
|
-
|-----|------|---------|-------------|
|
|
45
|
-
| _(key)_ | _(type)_ | _(default)_ | _(description)_ |
|
|
46
|
-
|
|
47
|
-
<!--
|
|
48
|
-
Shapes only — rationale lives in 00/03. Behavioral notes are shapes ("resolving zero rules exits 1"
|
|
49
|
-
— keep); justifications are not ("...because a silent gate is the worst failure mode" — cut).
|
|
50
|
-
Transcribe command signatures from the code registrations, never from memory.
|
|
51
|
-
-->
|
|
31
|
+
Update a satellite when its contract changes; update this index only when its pointers change.
|
|
32
|
+
Do not create a satellite merely to hold task receipts or duplicate an existing contract.
|
|
@@ -3,7 +3,7 @@ name: Features
|
|
|
3
3
|
doc: 05_FEATURES
|
|
4
4
|
owns: STATUS — feature decomposition + state; index over docs/features/
|
|
5
5
|
authority: derived
|
|
6
|
-
version: 1.
|
|
6
|
+
version: 1.1.0
|
|
7
7
|
derived_from: [00_ADR, 01_PRD]
|
|
8
8
|
owner: _(project owner)_
|
|
9
9
|
updated_at: {{init-date}}
|
|
@@ -14,21 +14,9 @@ sync: [T4, T9]
|
|
|
14
14
|
|
|
15
15
|
# Features
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
Entry to feature decomposition, acceptance criteria and lifecycle state (constitution §6.6).
|
|
18
|
+
Use the configured feature tool to create records and generate its index.
|
|
19
|
+
Once generated, link that index here. Do not maintain a second status table or invent seed features.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
✅ done · 🔶 partial · ⏳ planned · 💤 deferred
|
|
24
|
-
|
|
25
|
-
## Feature tree
|
|
26
|
-
|
|
27
|
-
| ID | Feature | Status | Parent | Notes | Satellite |
|
|
28
|
-
|----|---------|--------|--------|-------|-----------|
|
|
29
|
-
| F1 | _(root feature)_ | ⏳ planned | — | _(one-line scope)_ | `docs/features/F1__(slug)_.md` |
|
|
30
|
-
|
|
31
|
-
<!--
|
|
32
|
-
Never trust a row you have not verified — check status against code before citing or building on it.
|
|
33
|
-
One item per satellite; <feature-id> is the stable grep anchor. Renaming is a tool operation.
|
|
34
|
-
-->
|
|
21
|
+
<!-- Feature records and generated index regions are tool-owned. Never raw-edit them.
|
|
22
|
+
Verify lifecycle claims against current task/implementation evidence before relying on them. -->
|