gsdd-cli 0.3.1 → 0.18.0
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/README.md +131 -67
- package/agents/DISTILLATION.md +15 -13
- package/agents/README.md +1 -1
- package/agents/planner.md +2 -0
- package/bin/adapters/agents.mjs +1 -0
- package/bin/adapters/claude.mjs +20 -4
- package/bin/adapters/codex.mjs +9 -1
- package/bin/adapters/opencode.mjs +20 -5
- package/bin/gsdd.mjs +24 -7
- package/bin/lib/cli-utils.mjs +1 -1
- package/bin/lib/evidence-contract.mjs +112 -0
- package/bin/lib/file-ops.mjs +161 -0
- package/bin/lib/health-truth.mjs +186 -0
- package/bin/lib/health.mjs +72 -67
- package/bin/lib/init-flow.mjs +50 -3
- package/bin/lib/init-prompts.mjs +22 -83
- package/bin/lib/init-runtime.mjs +47 -25
- package/bin/lib/init.mjs +3 -3
- package/bin/lib/lifecycle-preflight.mjs +333 -0
- package/bin/lib/lifecycle-state.mjs +293 -0
- package/bin/lib/models.mjs +19 -4
- package/bin/lib/phase.mjs +159 -18
- package/bin/lib/plan-constants.mjs +30 -0
- package/bin/lib/provenance.mjs +165 -0
- package/bin/lib/rendering.mjs +8 -0
- package/bin/lib/runtime-freshness.mjs +239 -0
- package/bin/lib/session-fingerprint.mjs +106 -0
- package/bin/lib/templates.mjs +17 -0
- package/distilled/DESIGN.md +733 -49
- package/distilled/EVIDENCE-INDEX.md +402 -0
- package/distilled/README.md +73 -33
- package/distilled/SKILL.md +89 -85
- package/distilled/templates/agents.block.md +13 -84
- package/distilled/templates/agents.md +0 -7
- package/distilled/templates/delegates/plan-checker.md +6 -3
- package/distilled/workflows/audit-milestone.md +56 -6
- package/distilled/workflows/complete-milestone.md +333 -0
- package/distilled/workflows/execute.md +201 -19
- package/distilled/workflows/map-codebase.md +17 -4
- package/distilled/workflows/new-milestone.md +262 -0
- package/distilled/workflows/new-project.md +7 -6
- package/distilled/workflows/pause.md +40 -6
- package/distilled/workflows/plan-milestone-gaps.md +183 -0
- package/distilled/workflows/plan.md +77 -11
- package/distilled/workflows/progress.md +107 -29
- package/distilled/workflows/quick.md +23 -12
- package/distilled/workflows/resume.md +135 -12
- package/distilled/workflows/verify-work.md +260 -0
- package/distilled/workflows/verify.md +159 -33
- package/docs/BROWNFIELD-PROOF.md +95 -0
- package/docs/RUNTIME-SUPPORT.md +77 -0
- package/docs/USER-GUIDE.md +439 -0
- package/docs/VERIFICATION-DISCIPLINE.md +59 -0
- package/docs/claude/context-monitor.md +98 -0
- package/docs/proof/consumer-node-cli/README.md +37 -0
- package/docs/proof/consumer-node-cli/ROADMAP.md +14 -0
- package/docs/proof/consumer-node-cli/SPEC.md +17 -0
- package/docs/proof/consumer-node-cli/brief.md +9 -0
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-PLAN.md +34 -0
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-SUMMARY.md +10 -0
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-VERIFICATION.md +30 -0
- package/package.json +38 -29
package/README.md
CHANGED
|
@@ -1,40 +1,84 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# Workspine
|
|
4
4
|
|
|
5
|
-
**
|
|
6
|
-
|
|
7
|
-
Extracted from [Get Shit Done](https://github.com/gsd-build/get-shit-done). Same long-horizon delivery spine — fewer moving parts.
|
|
5
|
+
**AI development that stays consistent across agents and sessions.** Plans are checked, work is verified, and progress is tracked in the repo.
|
|
8
6
|
|
|
9
7
|
[](https://www.npmjs.com/package/gsdd-cli)
|
|
10
8
|
[](LICENSE)
|
|
11
|
-
[](tests/)
|
|
12
9
|
|
|
13
10
|
```bash
|
|
14
11
|
npx gsdd-cli init
|
|
15
12
|
```
|
|
16
13
|
|
|
17
|
-
**
|
|
14
|
+
**Directly validated today:** Claude Code, Codex CLI, and OpenCode.
|
|
15
|
+
**Qualified support:** Cursor, Copilot, and Gemini CLI support the same core workflow through the shared `.agents/skills/` surface; this release does not claim the same runtime proof or ergonomics.
|
|
18
16
|
|
|
19
17
|
</div>
|
|
20
18
|
|
|
19
|
+
One repo-native spine for planning, checking, execution, verification, and handoff — so AI-assisted work survives cold starts, runtime switches, and session loss.
|
|
20
|
+
|
|
21
21
|
---
|
|
22
22
|
|
|
23
23
|
## What This Is
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Workspine is a repo-native delivery spine for long-horizon AI-assisted software work. It keeps planning, execution, verification, handoff, and progress state in the repo so work survives cold starts, runtime switches, and session loss.
|
|
26
|
+
|
|
27
|
+
Workspine is the product name. The package, CLI commands, workflow prefixes, and workspace directory remain `gsdd-cli`, `gsdd`, `gsdd-*`, and `.planning/` — these are retained technical contracts, not rename residue.
|
|
28
|
+
|
|
29
|
+
### Lineage
|
|
30
|
+
|
|
31
|
+
Workspine began as a fork of [Get Shit Done](https://github.com/gsd-build/get-shit-done), whose long-horizon delivery spine proved the problem was real. Since the fork, upstream GSD has continued evolving into a broad multi-runtime framework — as of April 2026, GSD v1 documents 81 commands and 78 workflows across 33 agents. Workspine took a different path: 14 public workflow surfaces, generated runtime adapters from a portable core, evidence-gated closure, and provenance-aware continuity. The trade-off is deliberate: a narrower surface with stricter closure and fewer moving parts for the human operator.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## What's Different
|
|
36
|
+
|
|
37
|
+
### Context survives cold starts, tool switches, and session loss
|
|
38
|
+
|
|
39
|
+
Planning, phase artifacts, verification reports, and handoff checkpoints live in `.planning/`. When you switch runtimes or come back after a week, the repo still knows what was planned, what was executed, what was verified, and where you stopped.
|
|
40
|
+
|
|
41
|
+
<details>
|
|
42
|
+
<summary>How it works</summary>
|
|
43
|
+
|
|
44
|
+
Three-layer continuity model: durable project truth (SPEC, ROADMAP, design decisions), live workflow state (phase plans, summaries, checkpoints), and compressed judgment (active constraints, anti-regression rules). Pause/resume workflows write and read these layers explicitly. No session memory required.
|
|
45
|
+
|
|
46
|
+
</details>
|
|
47
|
+
|
|
48
|
+
### Done means verified, not merely generated
|
|
49
|
+
|
|
50
|
+
Verification is a separate workflow with a separate context window, not a checkbox at the end of execution. It checks three levels — do the files exist, is the code substantive (not stubs), and is it actually wired into the system — plus an anti-pattern scan.
|
|
51
|
+
|
|
52
|
+
<details>
|
|
53
|
+
<summary>How it works</summary>
|
|
54
|
+
|
|
55
|
+
`gsdd-verify` runs after execution and produces a typed verification report. `gsdd-audit-milestone` checks cross-phase integration, requirement coverage, and end-to-end flows. Evidence-gated closure prevents marking work done without the right evidence kinds (code, test, runtime, delivery, human).
|
|
56
|
+
|
|
57
|
+
</details>
|
|
58
|
+
|
|
59
|
+
### Rules that must be consistent are enforced by code, not by memory
|
|
26
60
|
|
|
27
|
-
-
|
|
28
|
-
- **Codebase mapping** — 4 parallel mappers produce STACK, ARCHITECTURE, CONVENTIONS, CONCERNS
|
|
29
|
-
- **Scoped planning** — research, backward planning, fresh-context adversarial plan checking
|
|
30
|
-
- **Execution** — wave-based parallel execution with fresh context per plan
|
|
31
|
-
- **Verification** — Exists/Substantive/Wired gate, anti-pattern scan
|
|
32
|
-
- **Milestone audit** — cross-phase integration, requirements coverage, E2E flows
|
|
33
|
-
- **Session management** — pause work with checkpoint, resume with context restoration and routing
|
|
61
|
+
1,381 tests across 13 test files guard properties that PRs repeatedly broke: delegate-role reference integrity, workflow vendor-API cleanliness, artifact schema consistency, plan-checker dimension coverage, and cross-document drift.
|
|
34
62
|
|
|
35
|
-
|
|
63
|
+
<details>
|
|
64
|
+
<summary>How it works</summary>
|
|
36
65
|
|
|
37
|
-
|
|
66
|
+
Invariant suites (I-series), guard suites (G-series), and scenario suites (S-series) run on every change. Each assertion includes a `FIX:` instruction so failures are actionable. 52 documented design decisions in `distilled/DESIGN.md` record the rationale with evidence trails.
|
|
67
|
+
|
|
68
|
+
</details>
|
|
69
|
+
|
|
70
|
+
### Smaller surface, stricter closure
|
|
71
|
+
|
|
72
|
+
14 workflows. 10 roles. One CLI. Lifecycle progression goes through deterministic preflight gates — not conversational inference. Plans are checked by a separate agent in a separate context before execution begins. Closure requires evidence, not just file existence.
|
|
73
|
+
|
|
74
|
+
<details>
|
|
75
|
+
<summary>How it works</summary>
|
|
76
|
+
|
|
77
|
+
`gsdd-plan` is terminal: it writes planning artifacts and stops. Execution requires an explicit `gsdd-execute` transition. `lifecycle-preflight` evaluates eligibility from repo artifacts before allowing state changes. `phase-status` is the only explicit ROADMAP mutator. `progress` is read-only.
|
|
78
|
+
|
|
79
|
+
</details>
|
|
80
|
+
|
|
81
|
+
**Target user:** Developer or small team that wants one durable delivery spine across coding runtimes, with explicit checks and repo-native proof instead of a dashboard or orchestration control plane.
|
|
38
82
|
|
|
39
83
|
---
|
|
40
84
|
|
|
@@ -59,22 +103,44 @@ In a terminal, `gsdd init` now opens a guided install wizard:
|
|
|
59
103
|
- Step 3: configure planning defaults in the same guided flow
|
|
60
104
|
|
|
61
105
|
Portable `.agents/skills/gsdd-*` skills are always generated. The wizard controls extra native adapters and optional governance, not the portable baseline.
|
|
106
|
+
When those generated surfaces exist locally, `gsdd health` checks them against current render output instead of asking you to trust manual review.
|
|
107
|
+
|
|
108
|
+
### Launch Proof Status
|
|
109
|
+
|
|
110
|
+
- **Directly validated:** Claude Code, Codex CLI, and OpenCode have recorded `plan -> execute -> verify` evidence for the core lifecycle.
|
|
111
|
+
- **Qualified support:** Cursor, Copilot, and Gemini CLI support the same core workflow through the shared `.agents/skills/` surface; this release does not claim the same runtime proof or ergonomics.
|
|
112
|
+
- **Runtime-surface freshness:** Installed generated skills and native adapters are renderer-checked locally; repair stays deterministic through `npx gsdd-cli update`.
|
|
113
|
+
|
|
114
|
+
Start with the public proof pack:
|
|
62
115
|
|
|
63
|
-
|
|
116
|
+
- [Brownfield proof](docs/BROWNFIELD-PROOF.md)
|
|
117
|
+
- [Exported consumer proof pack](docs/proof/consumer-node-cli/README.md)
|
|
118
|
+
- [Runtime support matrix](docs/RUNTIME-SUPPORT.md)
|
|
119
|
+
- [Verification discipline](docs/VERIFICATION-DISCIPLINE.md)
|
|
64
120
|
|
|
65
|
-
|
|
121
|
+
### Quickstart (after init)
|
|
122
|
+
|
|
123
|
+
Runtime floor: Node 20+.
|
|
124
|
+
|
|
125
|
+
Your tool determines how you invoke workflows:
|
|
66
126
|
|
|
67
127
|
- **Claude Code / OpenCode / Cursor / Copilot / Gemini:** Use slash commands directly — `/gsdd-new-project`, `/gsdd-plan`, etc.
|
|
68
|
-
- **Codex CLI:** Use skill references — `$gsdd-new-project`, `$gsdd-plan`, etc.
|
|
128
|
+
- **Codex CLI:** Use skill references — `$gsdd-new-project`, `$gsdd-plan`, etc. `$gsdd-plan` writes the plan and stops; start a separate `$gsdd-execute` run when you want implementation to begin.
|
|
69
129
|
- **Other AI tools:** Open `.agents/skills/gsdd-<workflow>/SKILL.md` and follow the instructions.
|
|
70
130
|
|
|
71
|
-
If you generate the root `AGENTS.md` block, it adds
|
|
131
|
+
If you generate the root `AGENTS.md` block, it adds the framework's behavioral governance. For Cursor, Copilot, and Gemini, that governance is optional discipline on top of native skill discovery — not the mechanism that makes workflows discoverable.
|
|
72
132
|
|
|
73
|
-
|
|
133
|
+
### Choose Your Starting Workflow
|
|
134
|
+
|
|
135
|
+
| Situation | Start here | Why |
|
|
136
|
+
|----------|------------|-----|
|
|
137
|
+
| Greenfield project, or brownfield work that is fuzzy / broad / milestone-shaped | `gsdd-new-project` | This is the full initializer. On brownfield repos it will run codebase mapping internally when it needs it. |
|
|
138
|
+
| Brownfield repo and the bounded change is already concrete | `gsdd-quick` | This is the bounded-change lane. It can use existing codebase maps when present and otherwise builds a just-enough inline brownfield baseline. |
|
|
139
|
+
| Brownfield repo is unfamiliar, risky, or you want a deeper baseline before choosing the lane | `gsdd-map-codebase` | This is the deeper orientation pass. Use it when the inline quick baseline would be too weak, then continue with `gsdd-quick` or `gsdd-new-project`. |
|
|
74
140
|
|
|
75
141
|
### Platform Adapters
|
|
76
142
|
|
|
77
|
-
|
|
143
|
+
Workspine generates adapters for whichever tools you use:
|
|
78
144
|
|
|
79
145
|
```bash
|
|
80
146
|
npx gsdd-cli init # Guided install wizard (detected runtimes preselected)
|
|
@@ -86,14 +152,14 @@ npx gsdd-cli init --tools cursor # Backward-compatible AGENTS.md governance
|
|
|
86
152
|
npx gsdd-cli init --tools all # All of the above
|
|
87
153
|
```
|
|
88
154
|
|
|
89
|
-
| Platform |
|
|
90
|
-
|
|
91
|
-
| **All** (default) |
|
|
92
|
-
| **Claude Code** |
|
|
93
|
-
| **OpenCode** |
|
|
94
|
-
| **Codex CLI** |
|
|
95
|
-
| **Cursor / Copilot / Gemini** |
|
|
96
|
-
| **Other AI tools** |
|
|
155
|
+
| Platform | Public claim | What's generated |
|
|
156
|
+
|----------|--------------|-----------------|
|
|
157
|
+
| **All** (default) | Shared portable surface | `.agents/skills/gsdd-*/SKILL.md` — portable workflow entrypoints (always generated) |
|
|
158
|
+
| **Claude Code** | Directly validated | `.claude/skills/`, `.claude/commands/`, `.claude/agents/` — native workflow surfaces, freshness-checked when generated locally |
|
|
159
|
+
| **OpenCode** | Directly validated | `.opencode/commands/`, `.opencode/agents/` — native workflow surfaces, freshness-checked when generated locally |
|
|
160
|
+
| **Codex CLI** | Directly validated | Portable skill entry plus `.codex/agents/gsdd-plan-checker.toml`; planning stays locked until explicit `$gsdd-execute`, and installed surfaces are freshness-checked locally |
|
|
161
|
+
| **Cursor / Copilot / Gemini** | Same core workflow | Skills-native discovery from `.agents/skills/`; optional root `AGENTS.md` block adds behavioral governance, and the generated skill surface is freshness-checked locally |
|
|
162
|
+
| **Other AI tools** | Fallback only | Open `.agents/skills/gsdd-*/SKILL.md` directly |
|
|
97
163
|
|
|
98
164
|
### Updating
|
|
99
165
|
|
|
@@ -103,7 +169,7 @@ npx gsdd-cli update --tools claude # Update specific platform only
|
|
|
103
169
|
npx gsdd-cli update --templates # Refresh .planning/templates/ and role contracts from framework source
|
|
104
170
|
```
|
|
105
171
|
|
|
106
|
-
###
|
|
172
|
+
### Non-Interactive Mode (CI / Automation)
|
|
107
173
|
|
|
108
174
|
For non-interactive environments:
|
|
109
175
|
|
|
@@ -112,7 +178,7 @@ npx gsdd-cli init --auto --tools claude
|
|
|
112
178
|
npx gsdd-cli init --auto --tools claude --brief path/to/PRD.md
|
|
113
179
|
```
|
|
114
180
|
|
|
115
|
-
`--auto` skips interactive
|
|
181
|
+
`--auto` skips the interactive install wizard and uses default configuration. It does **not** run downstream workflows (`new-project`, `plan`, `execute`, `verify`) — those are always explicit. `--brief` copies a project document to `.planning/PROJECT_BRIEF.md` for `new-project` to consume.
|
|
116
182
|
|
|
117
183
|
If you already know exactly what to generate, `--tools ...` remains the manual path. The wizard is the primary onboarding UX; flags remain the advanced/headless contract.
|
|
118
184
|
|
|
@@ -142,7 +208,7 @@ init → [plan → execute → verify] × N phases → audit-milestone → done
|
|
|
142
208
|
Run the `gsdd-new-project` workflow. The system:
|
|
143
209
|
|
|
144
210
|
1. **Questions** — asks until it understands your idea (goals, constraints, tech, edge cases)
|
|
145
|
-
2. **Codebase
|
|
211
|
+
2. **Codebase map** — if brownfield and a deeper baseline is needed, maps the codebase across stack, architecture, conventions, and concerns; users do not need to pre-run `map-codebase` before `new-project`
|
|
146
212
|
3. **Research** — spawns parallel researchers to investigate the domain (configurable depth: fast/balanced/deep)
|
|
147
213
|
4. **Spec + Roadmap** — produces `SPEC.md` (living specification) and `ROADMAP.md` (phased delivery plan)
|
|
148
214
|
|
|
@@ -158,7 +224,9 @@ Run `gsdd-plan` for the current phase. The system:
|
|
|
158
224
|
2. **Plans** — creates atomic task plans with XML structure
|
|
159
225
|
3. **Checks** — a separate agent in a fresh context window reviews the plan against 7 dimensions (requirement coverage, task completeness, dependency correctness, key-link completeness, scope sanity, must-have quality, context compliance). If the plan fails, it revises and re-checks — up to 3 cycles before escalating to the human. Output is typed JSON so orchestration is machine-parseable, not prompt-dependent.
|
|
160
226
|
|
|
161
|
-
Each plan is small enough to execute in a fresh context window. The checker runs in a separate context from the planner — this is the [ICLR-validated](https://arxiv.org/abs/2310.
|
|
227
|
+
Each plan is small enough to execute in a fresh context window. The checker runs in a separate context from the planner — this is the [ICLR-validated](https://arxiv.org/abs/2310.01798) pattern for catching blind spots the planner inherits from its own reasoning.
|
|
228
|
+
|
|
229
|
+
`gsdd-plan` is terminal for the current run: it writes planning artifacts only. Execution begins only after an explicit `gsdd-execute` / `/gsdd-execute` / `$gsdd-execute` transition, depending on the runtime.
|
|
162
230
|
|
|
163
231
|
**Creates:** Phase plans in `.planning/phases/`
|
|
164
232
|
|
|
@@ -225,17 +293,21 @@ Use for: bug fixes, small features, config changes, one-off tasks.
|
|
|
225
293
|
|
|
226
294
|
## Workflows
|
|
227
295
|
|
|
228
|
-
|
|
296
|
+
Workspine has 14 workflows, run via generated skills or adapters:
|
|
229
297
|
|
|
230
298
|
| Workflow | What it does |
|
|
231
299
|
|----------|--------------|
|
|
232
|
-
| `gsdd-new-project` | Full initialization: questioning,
|
|
233
|
-
| `gsdd-map-codebase` |
|
|
300
|
+
| `gsdd-new-project` | Full initialization: questioning, brownfield audit when needed, research, spec, roadmap |
|
|
301
|
+
| `gsdd-map-codebase` | Deeper brownfield orientation and refresh before `quick` or `new-project` |
|
|
234
302
|
| `gsdd-plan` | Research + plan + check for a phase |
|
|
235
303
|
| `gsdd-execute` | Execute phase plan: implement tasks, verify changes |
|
|
236
304
|
| `gsdd-verify` | Verify completed phase: 3-level checks, anti-pattern scan |
|
|
305
|
+
| `gsdd-verify-work` | Conversational UAT testing: validate user-facing behavior with structured gap tracking |
|
|
237
306
|
| `gsdd-audit-milestone` | Audit milestone: cross-phase integration, requirements coverage, E2E flows |
|
|
238
|
-
| `gsdd-
|
|
307
|
+
| `gsdd-complete-milestone` | Archive shipped milestone, evolve spec, collapse roadmap |
|
|
308
|
+
| `gsdd-new-milestone` | Start next milestone: gather goals, define requirements, create roadmap phases |
|
|
309
|
+
| `gsdd-plan-milestone-gaps` | Create gap-closure phases from audit results |
|
|
310
|
+
| `gsdd-quick` | Quick task: bounded brownfield change lane with inline baseline when full mapping is unnecessary |
|
|
239
311
|
| `gsdd-pause` | Pause work: save session context to checkpoint for seamless resumption |
|
|
240
312
|
| `gsdd-resume` | Resume work: restore context from artifacts and route to next action |
|
|
241
313
|
| `gsdd-progress` | Show project status and route to next action |
|
|
@@ -257,7 +329,9 @@ Workflows are agent skills or commands, not plain shell utilities. How you invok
|
|
|
257
329
|
| `gsdd init [--tools <platform>]` | Set up `.planning/`, generate adapters |
|
|
258
330
|
| `gsdd update [--tools <platform>] [--templates]` | Regenerate adapters; `--templates` refreshes `.planning/templates/` and role contracts |
|
|
259
331
|
| `gsdd health [--json]` | Check workspace integrity (healthy/degraded/broken) |
|
|
332
|
+
| `gsdd file-op <copy\|delete\|regex-sub>` | Run deterministic workspace-confined file copy, delete, and regex substitution |
|
|
260
333
|
| `gsdd find-phase [N]` | Show phase info as JSON (for agent consumption) |
|
|
334
|
+
| `gsdd phase-status <N> <status>` | Update a single ROADMAP phase status through the status-aware helper |
|
|
261
335
|
| `gsdd verify <N>` | Run artifact checks for phase N |
|
|
262
336
|
| `gsdd scaffold phase <N> [name]` | Create a new phase plan file |
|
|
263
337
|
| `gsdd models [show\|profile\|set\|...]` | Inspect and manage model profile propagation |
|
|
@@ -269,7 +343,7 @@ Workflows are agent skills or commands, not plain shell utilities. How you invok
|
|
|
269
343
|
|
|
270
344
|
### Roles (10 canonical)
|
|
271
345
|
|
|
272
|
-
|
|
346
|
+
Workspine consolidates GSD's agent surface into 10 roles with durable contracts:
|
|
273
347
|
|
|
274
348
|
| Role | Responsibility |
|
|
275
349
|
|------|---------------|
|
|
@@ -281,6 +355,7 @@ GSDD consolidates GSD's agent surface into 10 roles with durable contracts:
|
|
|
281
355
|
| **Verifier** | Phase verification — Exists/Substantive/Wired gate |
|
|
282
356
|
| **Roadmapper** | Roadmap generation from spec |
|
|
283
357
|
| **Integration Checker** | Cross-phase wiring, API coverage, auth protection, E2E flows |
|
|
358
|
+
| **Approach Explorer** | Implementation approach alignment before planning begins |
|
|
284
359
|
| **Debugger** | Utility role for systematic debugging |
|
|
285
360
|
|
|
286
361
|
### Two-Layer Architecture
|
|
@@ -292,15 +367,15 @@ GSDD consolidates GSD's agent surface into 10 roles with durable contracts:
|
|
|
292
367
|
|
|
293
368
|
### Adapter Architecture
|
|
294
369
|
|
|
295
|
-
|
|
370
|
+
Workspine generates vendor-specific files from vendor-agnostic markdown — it does not convert from one vendor format to another. This means every adapter gets first-class output shaped to its platform's native capabilities.
|
|
296
371
|
|
|
297
|
-
| Adapter |
|
|
298
|
-
|
|
299
|
-
| **Claude Code** |
|
|
300
|
-
| **OpenCode** |
|
|
301
|
-
| **Codex CLI** |
|
|
302
|
-
| **Cursor / Copilot / Gemini** |
|
|
303
|
-
| **agents** (`--tools agents`) |
|
|
372
|
+
| Adapter | Evidence posture | Strategy |
|
|
373
|
+
|---------|------------------|----------|
|
|
374
|
+
| **Claude Code** | Directly validated | Skill-primary plan surface, thin command alias, native `gsdd-plan-checker` agent |
|
|
375
|
+
| **OpenCode** | Directly validated | Specialized `/gsdd-plan` command (`subtask: false`), hidden `gsdd-plan-checker` subagent (`mode: subagent`) |
|
|
376
|
+
| **Codex CLI** | Directly validated | Portable skill as entry surface, `.codex/agents/gsdd-plan-checker.toml` (read-only, high reasoning effort), explicit `$gsdd-execute` unlock |
|
|
377
|
+
| **Cursor / Copilot / Gemini** | Same core workflow | Runtime discovers `.agents/skills/` natively; optional root `AGENTS.md` block adds behavioral governance only |
|
|
378
|
+
| **agents** (`--tools agents`) | Governance-only helper | Root `AGENTS.md` block for tools that benefit from governance or need open-standard fallback guidance |
|
|
304
379
|
|
|
305
380
|
All adapters render the plan-checker from a single source (`distilled/templates/delegates/plan-checker.md`). Each adapter shapes the output to its platform's native mechanics, and the portable skill remains the shared workflow source.
|
|
306
381
|
|
|
@@ -323,7 +398,7 @@ Model IDs pass through a two-layer injection guard: a regex whitelist (`/^[a-zA-
|
|
|
323
398
|
|
|
324
399
|
### Advisory Git Protocol
|
|
325
400
|
|
|
326
|
-
|
|
401
|
+
Workspine does not impose commit formats, branch naming, or one-commit-per-task rules. Git guidance is advisory — repository and team conventions take precedence:
|
|
327
402
|
|
|
328
403
|
- **Branching** — follow existing repo conventions
|
|
329
404
|
- **Commits** — group changes logically, no framework-imposed format
|
|
@@ -375,8 +450,8 @@ Optional model-control keys:
|
|
|
375
450
|
|
|
376
451
|
Runtime behavior:
|
|
377
452
|
- Claude translates semantic tiers to native aliases for the checker agent.
|
|
378
|
-
- OpenCode inherits its runtime model by default;
|
|
379
|
-
- Codex inherits its session model by default;
|
|
453
|
+
- OpenCode inherits its runtime model by default; Workspine only injects an exact OpenCode `model:` when you set an explicit runtime override.
|
|
454
|
+
- Codex inherits its session model by default; Workspine only injects an explicit `model` in the TOML when you set an explicit runtime override.
|
|
380
455
|
|
|
381
456
|
CLI:
|
|
382
457
|
- `gsdd models show`
|
|
@@ -415,6 +490,7 @@ Advisory defaults, overridden by repo conventions:
|
|
|
415
490
|
| Problem | What to do |
|
|
416
491
|
|---------|------------|
|
|
417
492
|
| Workspace feels broken | `gsdd health` — checks errors, warnings, info |
|
|
493
|
+
| `gsdd health` reports generated runtime-surface drift | `npx gsdd-cli update` (or `npx gsdd-cli update --tools <runtime>`) — regenerates installed skills/adapters from current render output |
|
|
418
494
|
| Lost track of progress | Run `gsdd-progress` — reads artifacts, shows status |
|
|
419
495
|
| Need context from last session | Run `gsdd-resume` — restores state, routes to next action |
|
|
420
496
|
| Plans seem wrong | Check `workflow.research: true` in config |
|
|
@@ -428,7 +504,7 @@ For detailed troubleshooting and recovery procedures, see the [User Guide](docs/
|
|
|
428
504
|
|
|
429
505
|
## Design Decisions
|
|
430
506
|
|
|
431
|
-
|
|
507
|
+
This repo records 52 documented design decisions relative to GSD, each with evidence from source files and external research. See [`distilled/DESIGN.md`](distilled/DESIGN.md) for the full rationale.
|
|
432
508
|
|
|
433
509
|
Key choices:
|
|
434
510
|
- **4-file codebase standard** — drop state that rots (STRUCTURE, INTEGRATIONS, TESTING), keep rules that don't
|
|
@@ -446,7 +522,7 @@ Key choices:
|
|
|
446
522
|
|
|
447
523
|
## Testing
|
|
448
524
|
|
|
449
|
-
|
|
525
|
+
The framework has 1,381 tests across 13 test files — named suites that guard properties PRs repeatedly fixed manually. These are not unit tests for application code; they are invariant checks on the specification itself.
|
|
450
526
|
|
|
451
527
|
### Invariant Suites (I-series)
|
|
452
528
|
|
|
@@ -458,7 +534,7 @@ Structural contracts that prevent drift between roles, delegates, workflows, and
|
|
|
458
534
|
| **I2** | Role section structure — 10 roles have role def, scope, output format, success criteria |
|
|
459
535
|
| **I3** | Delegate thinness — no leaked role-contract sections in delegates |
|
|
460
536
|
| **I3-gate** | New-project approval gates — required human checkpoints present |
|
|
461
|
-
| **I4** | Workflow references —
|
|
537
|
+
| **I4** | Workflow references — 14 workflows, all delegate/role refs resolve |
|
|
462
538
|
| **I5** | Session management — no vendor APIs, no STATE.md, checkpoint contract |
|
|
463
539
|
| **I5b** | Session workflow scope boundaries |
|
|
464
540
|
| **I6** | Artifact schema definitions |
|
|
@@ -518,26 +594,14 @@ Golden-path eval tests that verify artifact-chain contracts across end-to-end wo
|
|
|
518
594
|
| Health | Pre-init guard, all check categories, verdict logic, JSON/human output |
|
|
519
595
|
|
|
520
596
|
```bash
|
|
521
|
-
npm
|
|
597
|
+
npm test
|
|
522
598
|
```
|
|
523
599
|
|
|
524
600
|
---
|
|
525
601
|
|
|
526
|
-
## Relationship to GSD
|
|
527
|
-
|
|
528
|
-
GSDD is a distilled fork of [Get Shit Done](https://github.com/gsd-build/get-shit-done). It is **not** a full replacement for current upstream GSD.
|
|
529
|
-
|
|
530
|
-
**What GSDD preserves** (~76% of core method): the long-horizon delivery spine — persistent artifacts, codebase mapping, scoped planning, execution, verification, and milestone auditing.
|
|
531
|
-
|
|
532
|
-
**What GSDD does not cover** (~44% of full upstream surface): GSD currently exposes 32 workflow files and 11 agent files including discovery modes, a settings flow, extra operator ergonomics, and broader session-management/control-plane surface area. GSDD intentionally does not recreate this full surface.
|
|
533
|
-
|
|
534
|
-
**The trade-off:** Fewer moving parts for the human operator. Cleaner role contracts and a simpler artifact model. But reduced operator comfort and limited control-plane features (no telemetry, no artifact linting). Health diagnostics are available via `gsdd health`.
|
|
535
|
-
|
|
536
|
-
---
|
|
537
|
-
|
|
538
602
|
## Credits
|
|
539
603
|
|
|
540
|
-
|
|
604
|
+
Workspine is a fork of [Get Shit Done](https://github.com/gsd-build/get-shit-done) by [Lex Christopherson](https://github.com/glittercowboy), licensed under MIT. Original git history is retained for attribution.
|
|
541
605
|
|
|
542
606
|
---
|
|
543
607
|
|
package/agents/DISTILLATION.md
CHANGED
|
@@ -356,21 +356,23 @@ Do not add speculative content. Every entry must reference actual source files a
|
|
|
356
356
|
|
|
357
357
|
Cross-source best practices applied to GSDD role contracts, audited against 6 external resources. These principles govern how role contracts should be written and revised. Ranked by impact.
|
|
358
358
|
|
|
359
|
+
> **Source note:** "Anthropic CE" in this section refers to Anthropic's "Building effective agents" (Dec 2024) for orchestration and sub-agent patterns, and LangChain's "Context Engineering for Agents" (2025) for Write/Select/Compress/Isolate context management patterns. They are cited separately where attribution is precise.
|
|
360
|
+
|
|
359
361
|
### Architecture-Level (highest leverage)
|
|
360
362
|
|
|
361
363
|
| Principle | What It Means | Source | GSDD Implementation |
|
|
362
364
|
|-----------|--------------|--------|---------------------|
|
|
363
|
-
| **Context isolation** | Research and heavy reads go in subagents; only compressed summaries enter the main context | Anthropic
|
|
364
|
-
| **JIT context loading** | Never say "read everything." Specify what to extract from each file |
|
|
365
|
-
| **Intermediate persistence** | For long interactions, write confirmed state to disk incrementally | Anthropic
|
|
366
|
-
| **Progressive disclosure** | Don't front-load all context; let agents discover incrementally |
|
|
365
|
+
| **Context isolation** | Research and heavy reads go in subagents; only compressed summaries enter the main context | Anthropic "Building effective agents" (Dec 2024): orchestrator-worker pattern — sub-agents do deep technical work and return condensed summaries | Approach explorer research subagents return ~1000-token summaries; plan-checker runs in fresh context |
|
|
366
|
+
| **JIT context loading** | Never say "read everything." Specify what to extract from each file | LangChain "Context Engineering for Agents" (2025): Select step of Write/Select/Compress/Isolate — load only the specific content needed, not full files | `<input_contract>` with extraction guidance: "From SPEC.md read ONLY locked decisions" |
|
|
367
|
+
| **Intermediate persistence** | For long interactions, write confirmed state to disk incrementally | Anthropic BEA: agent memory outside context window. LangChain CE: Write pattern — confirmed state persisted to disk | Approach explorer writes decisions to disk as they're confirmed during conversation |
|
|
368
|
+
| **Progressive disclosure** | Don't front-load all context; let agents discover incrementally | LangChain CE: Compress/Isolate patterns — agents assemble understanding incrementally rather than loading everything upfront | Gray areas presented individually; research loaded per area on demand |
|
|
367
369
|
|
|
368
370
|
### Prompt Structure (medium leverage)
|
|
369
371
|
|
|
370
372
|
| Principle | What It Means | Source | GSDD Implementation |
|
|
371
373
|
|-----------|--------------|--------|---------------------|
|
|
372
374
|
| **XML semantic structure** | Use XML tags to separate role, instructions, examples, inputs, outputs, anti-patterns | Anthropic Claude: "XML tags help Claude parse complex prompts unambiguously" | All roles use `<role>`, most use `<quality_guarantees>`, `<anti_patterns>`. Approach-explorer adds `<algorithm>`, `<examples>`, `<scope_guardrail>` |
|
|
373
|
-
| **Anti-patterns early** | Place "don't do this" instructions near the top, after role definition | Anthropic
|
|
375
|
+
| **Anti-patterns early** | Place "don't do this" instructions near the top, after role definition | Anthropic Claude prompting docs: critical information at the beginning receives more attention (primacy effect in long-context prompts) | `<anti_patterns>` placed immediately after `<role>` in all roles that have them |
|
|
374
376
|
| **Few-shot examples** | Show the pattern of interaction, not just output format | Anthropic Claude: "3-5 examples for best results." Examples in `<example>` tags | Approach-explorer: 3 examples. Other roles use inline format examples within algorithm sections |
|
|
375
377
|
| **Self-check before output** | Run an explicit checklist before producing the final artifact | OpenAI: "verification loops." Anthropic Claude: "Ask Claude to self-check" | Approach-explorer step 7; planner `<plan_self_check>`; executor completion verification |
|
|
376
378
|
| **Scope boundaries with heuristics** | Don't just list in/out of scope — give the agent a judgment rule | Novel, validated in approach-explorer | "Does this clarify implementation within the phase, or does it add a capability that could be its own phase?" |
|
|
@@ -379,7 +381,7 @@ Cross-source best practices applied to GSDD role contracts, audited against 6 ex
|
|
|
379
381
|
|
|
380
382
|
| Principle | What It Means | Source | GSDD Implementation |
|
|
381
383
|
|-----------|--------------|--------|---------------------|
|
|
382
|
-
| **Authority language: intentional leverage** | Anthropic Claude
|
|
384
|
+
| **Authority language: intentional leverage** | Anthropic Claude warns "CRITICAL:" can overtrigger on newer models. GSDD decision: **keep CRITICAL: for mandatory initial-read** — a genuine compliance-critical instruction where skipping causes cascading failures. Emphasis markers work when rare and specific (signal-to-noise principle: one CRITICAL: in a role contract is a load-bearing gate; ten would be noise). Use normal language for algorithm steps, scope guidance, and quality rules. | Anthropic Claude prompting docs (overtriggering caution) + technical writing signal-to-noise principle. GSDD applies the caution selectively: only compliance-critical context gates use CRITICAL: | `CRITICAL: Mandatory initial read` kept in all 7 roles. `NEVER` kept for security (mapper secret protection). Normal language used for algorithm steps, scope guidance, and quality rules |
|
|
383
385
|
| **Tell what to do, not just what not to do** | Anti-patterns alone are insufficient; pair with positive instructions | Anthropic Claude: "Tell Claude what to do instead of what not to do" | Every role has both `<anti_patterns>` AND positive algorithm/process sections |
|
|
384
386
|
| **Context for instructions** | Explain WHY a rule exists so the agent can generalize | Anthropic Claude: "Providing context or motivation behind your instructions helps Claude better understand your goals" | Research quality rules explain WHY: "Training data is a hypothesis. Verify before asserting." |
|
|
385
387
|
|
|
@@ -394,17 +396,17 @@ These patterns emerged from GSDD's specific needs and were validated through imp
|
|
|
394
396
|
| **5-dimension assumption surfacing** | Forces transparency about inferences vs. confirmed facts, with confidence levels | Approach-explorer step 6 |
|
|
395
397
|
| **Agent's Discretion delegation** | User can explicitly say "you decide" — reduces fatigue on low-stakes choices | Approach-explorer step 4, planner `<approach_decisions>` |
|
|
396
398
|
| **Domain classification table** | SEE/CALL/RUN/READ/ORGANIZED determines gray area focus per phase type | Approach-explorer step 2 |
|
|
397
|
-
| **Degrees of freedom mapping** | Taste=high freedom, technical=low freedom (research-constrained).
|
|
399
|
+
| **Degrees of freedom mapping** | Taste=high freedom, technical=low freedom (research-constrained). GSDD-originated: applies statistical degrees-of-freedom concept to prompt design scope | Approach-explorer classification system |
|
|
398
400
|
|
|
399
401
|
### Source Ranking
|
|
400
402
|
|
|
401
403
|
Sources are ranked by soundness for agent prompt design. Higher-ranked sources take precedence when sources disagree.
|
|
402
404
|
|
|
403
|
-
1. **Anthropic —
|
|
404
|
-
2. **
|
|
405
|
-
3. **
|
|
406
|
-
4. **
|
|
407
|
-
5. **OpenAI Cookbook — Meta-Prompting** — Narrow scope: LLM-as-judge evaluation, iterative prompt refinement. Useful technique, not a framework.
|
|
405
|
+
1. **Anthropic — "Building effective agents" (Dec 2024)** — Agent architecture patterns with production evidence (Claude Code). Most authoritative for orchestrator-worker design, sub-agent fresh context, and task decomposition.
|
|
406
|
+
2. **LangChain — "Context Engineering for Agents" (2025)** — Write/Select/Compress/Isolate framework. Most authoritative for context window management, JIT loading, and information flow patterns.
|
|
407
|
+
3. **Anthropic — Claude Prompting Best Practices (Claude 4.6)** — Model-specific, up-to-date. Critical for behavioral warnings (overtriggering, subagent overuse). Supersedes general guidance for Claude-targeted agents.
|
|
408
|
+
4. **OpenAI — Prompt Guidance (GPT-5.4)** — Deepest general-purpose reference. Novel concepts: completeness contracts, verification loops, tool persistence rules, empty result recovery. Model-specific but patterns transfer.
|
|
409
|
+
5. **OpenAI Cookbook — Meta-Prompting** — Narrow scope: LLM-as-judge evaluation, iterative prompt refinement. Useful technique, not a framework. See also: Suzgun & Kalai "Meta-Prompting" (2024, arXiv 2401.12954).
|
|
408
410
|
6. **JBurlison/MetaPrompts** — Structural skeleton (agent/skill/prompt/instruction hierarchy). Minimal actual guidance on prompt quality.
|
|
409
411
|
|
|
410
412
|
### Key Discrepancy Resolution
|
|
@@ -413,7 +415,7 @@ When sources conflict, these resolutions apply:
|
|
|
413
415
|
|
|
414
416
|
| Conflict | Resolution | Why |
|
|
415
417
|
|----------|------------|-----|
|
|
416
|
-
| Authority language ("YOU MUST" vs. normal) | Keep CRITICAL: for mandatory initial-read (compliance-critical). Use normal language elsewhere |
|
|
418
|
+
| Authority language ("YOU MUST" vs. normal) | Keep CRITICAL: for mandatory initial-read (compliance-critical). Use normal language elsewhere | Emphasis markers work when rare and specific (signal-to-noise). Anthropic's overtriggering concern applies to general guidance; a single CRITICAL: for a mandatory context gate is a load-bearing instruction, not noise |
|
|
417
419
|
| Example count (2 vs. 3-5) | Target 3+ for conversational agents; inline format examples are sufficient for structured output agents | Anthropic's 3-5 recommendation is general; interactive roles benefit more than output-only roles |
|
|
418
420
|
| Subagent return size (200 vs. 1000-2000 tokens) | Use 300-500 tokens | Anthropic's 1000-2000 is upper bound; 200 was too tight for structured approach summaries with trade-offs |
|
|
419
421
|
| "Don't invent alternatives" vs. "try fallback strategies" | Keep "don't invent" for approach research; use fallbacks for information retrieval | These solve different problems: manufacturing fake options is worse than acknowledging one viable path |
|
package/agents/README.md
CHANGED
package/agents/planner.md
CHANGED
|
@@ -238,6 +238,8 @@ Before returning, self-check against the checker dimensions:
|
|
|
238
238
|
5. scope sanity
|
|
239
239
|
6. must-have quality
|
|
240
240
|
7. context compliance
|
|
241
|
+
8. goal achievement
|
|
242
|
+
9. approach alignment (when APPROACH.md exists)
|
|
241
243
|
|
|
242
244
|
Task completeness rules:
|
|
243
245
|
- every task has files, action, verify, and done
|
package/bin/adapters/agents.mjs
CHANGED
package/bin/adapters/claude.mjs
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
|
+
import {
|
|
4
|
+
PLAN_CHECK_DIMENSIONS,
|
|
5
|
+
MAX_CHECKER_CYCLES,
|
|
6
|
+
CHECKER_STATUSES,
|
|
7
|
+
} from '../lib/plan-constants.mjs';
|
|
3
8
|
|
|
4
9
|
const CLAUDE_MODEL_PROFILES = {
|
|
5
10
|
quality: 'opus',
|
|
@@ -75,7 +80,7 @@ Execution flow:
|
|
|
75
80
|
"summary": "One sentence overall assessment",
|
|
76
81
|
"issues": [
|
|
77
82
|
{
|
|
78
|
-
"dimension": "
|
|
83
|
+
"dimension": "${PLAN_CHECK_DIMENSIONS.join(' | ')}",
|
|
79
84
|
"severity": "blocker | warning",
|
|
80
85
|
"description": "What is wrong",
|
|
81
86
|
"plan": "01-PLAN",
|
|
@@ -84,10 +89,10 @@ Execution flow:
|
|
|
84
89
|
}
|
|
85
90
|
]
|
|
86
91
|
}
|
|
87
|
-
Status must be either "
|
|
92
|
+
Status must be either "${CHECKER_STATUSES[0]}" or "${CHECKER_STATUSES[1]}".
|
|
88
93
|
9. If the checker returns \`passed\`, finish and summarize.
|
|
89
94
|
10. If the checker returns \`issues_found\`, revise the existing plan files only where needed, then run the checker again.
|
|
90
|
-
11. Maximum
|
|
95
|
+
11. Maximum ${MAX_CHECKER_CYCLES} checker cycles total. If blockers remain after cycle ${MAX_CHECKER_CYCLES}, stop and escalate to the user instead of pretending the plan is ready.
|
|
91
96
|
|
|
92
97
|
Return a concise orchestration summary:
|
|
93
98
|
- target phase
|
|
@@ -125,6 +130,10 @@ function createClaudeAdapter({ cwd, workflows, renderSkillContent, getDelegateCo
|
|
|
125
130
|
id: 'claude',
|
|
126
131
|
name: 'claude',
|
|
127
132
|
kind: 'native_capable',
|
|
133
|
+
subagentFiles: [
|
|
134
|
+
'.claude/agents/gsdd-plan-checker.md',
|
|
135
|
+
'.claude/agents/gsdd-approach-explorer.md',
|
|
136
|
+
],
|
|
128
137
|
detect() {
|
|
129
138
|
return existsSync(join(cwd, 'CLAUDE.md')) || existsSync(join(cwd, '.claude'));
|
|
130
139
|
},
|
|
@@ -172,4 +181,11 @@ function createClaudeAdapter({ cwd, workflows, renderSkillContent, getDelegateCo
|
|
|
172
181
|
};
|
|
173
182
|
}
|
|
174
183
|
|
|
175
|
-
export {
|
|
184
|
+
export {
|
|
185
|
+
createClaudeAdapter,
|
|
186
|
+
CLAUDE_MODEL_PROFILES,
|
|
187
|
+
renderClaudeApproachExplorer,
|
|
188
|
+
renderClaudePlanChecker,
|
|
189
|
+
renderClaudePlanCommand,
|
|
190
|
+
renderClaudePlanSkill,
|
|
191
|
+
};
|
package/bin/adapters/codex.mjs
CHANGED
|
@@ -44,6 +44,10 @@ function createCodexAdapter({
|
|
|
44
44
|
id: 'codex',
|
|
45
45
|
name: 'codex',
|
|
46
46
|
kind: 'native_capable',
|
|
47
|
+
subagentFiles: [
|
|
48
|
+
'.codex/agents/gsdd-plan-checker.toml',
|
|
49
|
+
'.codex/agents/gsdd-approach-explorer.toml',
|
|
50
|
+
],
|
|
47
51
|
detect() {
|
|
48
52
|
return existsSync(join(cwd, '.codex'));
|
|
49
53
|
},
|
|
@@ -74,4 +78,8 @@ function createCodexAdapter({
|
|
|
74
78
|
};
|
|
75
79
|
}
|
|
76
80
|
|
|
77
|
-
export {
|
|
81
|
+
export {
|
|
82
|
+
createCodexAdapter,
|
|
83
|
+
renderCodexApproachExplorer,
|
|
84
|
+
renderCodexPlanChecker,
|
|
85
|
+
};
|