gsdd-cli 0.1.0 → 0.2.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 +8 -8
- package/agents/DISTILLATION.md +116 -3
- package/agents/README.md +9 -0
- package/agents/approach-explorer.md +361 -0
- package/agents/planner.md +20 -5
- package/bin/adapters/claude.mjs +41 -11
- package/bin/adapters/codex.mjs +20 -1
- package/bin/adapters/opencode.mjs +37 -11
- package/bin/lib/init.mjs +383 -379
- package/bin/lib/models.mjs +27 -10
- package/distilled/DESIGN.md +80 -7
- package/distilled/README.md +169 -169
- package/distilled/templates/agents.block.md +1 -1
- package/distilled/templates/approach.md +232 -0
- package/distilled/templates/delegates/approach-explorer.md +25 -0
- package/distilled/templates/delegates/plan-checker.md +7 -1
- package/distilled/workflows/plan.md +82 -12
- package/package.json +9 -1
package/bin/lib/models.mjs
CHANGED
|
@@ -16,7 +16,7 @@ export const DEFAULT_GIT_PROTOCOL = {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
export const VALID_MODEL_PROFILES = ['quality', 'balanced', 'budget'];
|
|
19
|
-
export const PORTABLE_AGENT_IDS = ['plan-checker'];
|
|
19
|
+
export const PORTABLE_AGENT_IDS = ['plan-checker', 'approach-explorer'];
|
|
20
20
|
export const MODEL_RUNTIME_IDS = ['claude', 'opencode', 'codex'];
|
|
21
21
|
export const MODEL_ID_PATTERN = /^[a-zA-Z0-9._\/:@-]+$/;
|
|
22
22
|
|
|
@@ -30,7 +30,7 @@ export function buildDefaultConfig({ autoAdvance = false } = {}) {
|
|
|
30
30
|
parallelization: true,
|
|
31
31
|
commitDocs: true,
|
|
32
32
|
modelProfile: 'balanced',
|
|
33
|
-
workflow: { research: true, planCheck: true, verifier: true },
|
|
33
|
+
workflow: { research: true, discuss: false, planCheck: true, verifier: true },
|
|
34
34
|
gitProtocol: { ...DEFAULT_GIT_PROTOCOL },
|
|
35
35
|
initVersion: 'v1.1',
|
|
36
36
|
};
|
|
@@ -157,9 +157,11 @@ export function cmdModels(...modelArgs) {
|
|
|
157
157
|
function cmdModelsShow() {
|
|
158
158
|
const cwd = process.cwd();
|
|
159
159
|
const config = loadProjectModelConfig(cwd);
|
|
160
|
-
const
|
|
160
|
+
const ocCheckerOverride = getRuntimeModelOverride(config, 'opencode', 'plan-checker');
|
|
161
|
+
const ocExplorerOverride = getRuntimeModelOverride(config, 'opencode', 'approach-explorer');
|
|
161
162
|
const ocDetected = detectOpenCodeConfiguredModel(cwd);
|
|
162
|
-
const
|
|
163
|
+
const codexCheckerOverride = getRuntimeModelOverride(config, 'codex', 'plan-checker');
|
|
164
|
+
const codexExplorerOverride = getRuntimeModelOverride(config, 'codex', 'approach-explorer');
|
|
163
165
|
output({
|
|
164
166
|
modelProfile: normalizeModelProfile(config.modelProfile),
|
|
165
167
|
agentModelProfiles: config.agentModelProfiles || {},
|
|
@@ -172,26 +174,41 @@ function cmdModelsShow() {
|
|
|
172
174
|
agentId: 'plan-checker',
|
|
173
175
|
profileMap: CLAUDE_MODEL_PROFILES,
|
|
174
176
|
}),
|
|
177
|
+
'approach-explorer': getRuntimeAgentModelState({
|
|
178
|
+
config,
|
|
179
|
+
runtime: 'claude',
|
|
180
|
+
agentId: 'approach-explorer',
|
|
181
|
+
profileMap: CLAUDE_MODEL_PROFILES,
|
|
182
|
+
}),
|
|
175
183
|
},
|
|
176
184
|
opencode: {
|
|
177
185
|
'plan-checker': {
|
|
178
|
-
mode:
|
|
179
|
-
model:
|
|
186
|
+
mode: ocCheckerOverride ? 'override' : 'inherit',
|
|
187
|
+
model: ocCheckerOverride,
|
|
188
|
+
runtimeDetectedModel: ocDetected,
|
|
189
|
+
},
|
|
190
|
+
'approach-explorer': {
|
|
191
|
+
mode: ocExplorerOverride ? 'override' : 'inherit',
|
|
192
|
+
model: ocExplorerOverride,
|
|
180
193
|
runtimeDetectedModel: ocDetected,
|
|
181
194
|
},
|
|
182
195
|
},
|
|
183
196
|
codex: {
|
|
184
197
|
'plan-checker': {
|
|
185
|
-
mode:
|
|
186
|
-
model:
|
|
198
|
+
mode: codexCheckerOverride ? 'override' : 'inherit',
|
|
199
|
+
model: codexCheckerOverride,
|
|
200
|
+
},
|
|
201
|
+
'approach-explorer': {
|
|
202
|
+
mode: codexExplorerOverride ? 'override' : 'inherit',
|
|
203
|
+
model: codexExplorerOverride,
|
|
187
204
|
},
|
|
188
205
|
},
|
|
189
206
|
},
|
|
190
207
|
detectedRuntimeModels: {
|
|
191
208
|
opencode: ocDetected,
|
|
192
209
|
},
|
|
193
|
-
hints: !
|
|
194
|
-
opencode: 'OpenCode currently inherits its runtime model unless you set an explicit override. Use gsdd models set --runtime opencode --agent
|
|
210
|
+
hints: (!ocCheckerOverride || !ocExplorerOverride) ? {
|
|
211
|
+
opencode: 'OpenCode currently inherits its runtime model unless you set an explicit override. Use gsdd models set --runtime opencode --agent <agent-id> --model <provider/model-id> to inject an explicit agent model.',
|
|
195
212
|
} : undefined,
|
|
196
213
|
});
|
|
197
214
|
}
|
package/distilled/DESIGN.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
## Table of Contents
|
|
10
10
|
|
|
11
11
|
1. [4-File Codebase Standard](#1-4-file-codebase-standard)
|
|
12
|
-
2. [Agent Consolidation: 11 to
|
|
12
|
+
2. [Agent Consolidation: 11 to 10](#2-agent-consolidation-11-to-10)
|
|
13
13
|
3. [Two-Layer Architecture: Roles and Delegates](#3-two-layer-architecture-roles-and-delegates)
|
|
14
14
|
4. [Zero-Hop Security Propagation](#4-zero-hop-security-propagation)
|
|
15
15
|
5. [Conditional Synthesizer](#5-conditional-synthesizer)
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
26. [Session Continuity Contract Hardening](#26-session-continuity-contract-hardening)
|
|
37
37
|
27. [Consumer-Ready Surface Completion](#27-consumer-ready-surface-completion)
|
|
38
38
|
28. [Workflow Completion Routing](#28-workflow-completion-routing)
|
|
39
|
+
29. [Approach Exploration](#29-approach-exploration)
|
|
39
40
|
|
|
40
41
|
---
|
|
41
42
|
|
|
@@ -64,11 +65,11 @@
|
|
|
64
65
|
|
|
65
66
|
---
|
|
66
67
|
|
|
67
|
-
## 2. Agent Consolidation: 11 to
|
|
68
|
+
## 2. Agent Consolidation: 11 to 10
|
|
68
69
|
|
|
69
70
|
**GSD:** 11 specialized agent files, each scoped to a single concern.
|
|
70
71
|
|
|
71
|
-
**GSDD:**
|
|
72
|
+
**GSDD:** 10 canonical roles. 2 mergers, 1 extraction, 1 addition (approach-explorer, D29).
|
|
72
73
|
|
|
73
74
|
**Merger table:**
|
|
74
75
|
|
|
@@ -1001,7 +1002,7 @@ Permission values: ALLOW (role can access), DENY (explicit rejection required),
|
|
|
1001
1002
|
|
|
1002
1003
|
**GSD:** Orchestrator subagent prompts were embedded inline in workflow files or referenced indirectly through agent role contracts. No explicit thin-wrapper layer. Scope and context were implicit in the orchestrator's prompt shaping.
|
|
1003
1004
|
|
|
1004
|
-
**GSDD:** Extracted
|
|
1005
|
+
**GSDD:** Extracted 11 delegates as explicit thin-wrapper files in `distilled/templates/delegates/`. A delegate is a sub-agent instruction wrapper scoped to a specific orchestrator task, carrying a bounded input/output contract. Eleven delegates cover 4 canonical roles: mapper × 4 focus-scoped variants, researcher × 4 dimension-scoped variants, synthesizer × 1 (via `researcher-synthesizer.md`), one fresh-context adversarial reviewer (`plan-checker.md`, new in D9, no GSD equivalent), and one interactive approach explorer (`approach-explorer.md`, recovers GSD discuss-phase leverage with research enhancement). Executor, verifier, integration-checker, planner, and roadmapper are invoked directly from orchestrator workflows without thin-wrapper delegates.
|
|
1005
1006
|
|
|
1006
1007
|
**Why "delegates":** In multi-agent orchestration literature (Anthropic multi-agent guidance, OpenAI harness engineering, OpenDev terminal-agents paper arXiv 2603.05344), a delegate is a sub-agent invoked by an orchestrator with:
|
|
1007
1008
|
1. A single, bounded responsibility (not a general-purpose role)
|
|
@@ -1041,7 +1042,7 @@ This is acceptable because:
|
|
|
1041
1042
|
2. The clarity gain outweighs the reading cost
|
|
1042
1043
|
3. Delegate independence enables better testing and quality gates
|
|
1043
1044
|
|
|
1044
|
-
**
|
|
1045
|
+
**11 delegates:**
|
|
1045
1046
|
|
|
1046
1047
|
| Delegate | Purpose | Wrapped Role |
|
|
1047
1048
|
|----------|---------|--------------|
|
|
@@ -1055,6 +1056,7 @@ This is acceptable because:
|
|
|
1055
1056
|
| `researcher-pitfalls.md` | Research domain pitfalls and risks | researcher (dimension: pitfalls) |
|
|
1056
1057
|
| `researcher-synthesizer.md` | Synthesize research into roadmap implications | synthesizer |
|
|
1057
1058
|
| `plan-checker.md` | Fresh-context adversarial plan review | planner (adversarial, new in D9) |
|
|
1059
|
+
| `approach-explorer.md` | Interactive approach exploration and user alignment | approach-explorer (interactive, recovers GSD discuss-phase) |
|
|
1058
1060
|
|
|
1059
1061
|
**Evidence:**
|
|
1060
1062
|
|
|
@@ -1124,7 +1126,7 @@ This is acceptable because:
|
|
|
1124
1126
|
- G18 guard suite mechanically prevents recurrence: asserts every WORKFLOWS entry appears in `agents.block.md`
|
|
1125
1127
|
- CHANGELOG and README synced to actual counts (assertions, design decisions, PRs, test suites)
|
|
1126
1128
|
|
|
1127
|
-
**Why this is high-leverage:** The framework machinery is mechanically sound (800+ assertions, 10 workflows,
|
|
1129
|
+
**Why this is high-leverage:** The framework machinery is mechanically sound (800+ assertions, 10 workflows, 10 roles, 3 native adapters, 23 design decisions). But an incomplete AGENTS.md map is functionally broken governance -- agents succeed or fail based on the harness, not the LLM.
|
|
1128
1130
|
|
|
1129
1131
|
**Evidence:**
|
|
1130
1132
|
|
|
@@ -1139,7 +1141,7 @@ This is acceptable because:
|
|
|
1139
1141
|
|
|
1140
1142
|
## 25. Consumer First-Run Experience
|
|
1141
1143
|
|
|
1142
|
-
**Problem:** GSDD's internal architecture is complete (24 design decisions, 800+ tests, 10 workflows,
|
|
1144
|
+
**Problem:** GSDD's internal architecture is complete (24 design decisions, 800+ tests, 10 workflows, 10 roles), but consumer-facing surfaces don't honestly guide first-time users. Two independent audits identified this as the single largest barrier to adoption.
|
|
1143
1145
|
|
|
1144
1146
|
**Decision:** Make all consumer-facing surfaces (README, agents.block.md, post-init CLI output) honestly distinguish between native-capable and governance-only platforms, and provide platform-specific invocation guidance at every consumer touchpoint.
|
|
1145
1147
|
|
|
@@ -1275,6 +1277,77 @@ GSDD's `<completion>` pattern is vendor-agnostic (GSD's `/clear` is Claude-speci
|
|
|
1275
1277
|
|
|
1276
1278
|
---
|
|
1277
1279
|
|
|
1280
|
+
## 29. Approach Exploration
|
|
1281
|
+
|
|
1282
|
+
**GSD baseline:** Three separate workflows handle pre-planning user alignment:
|
|
1283
|
+
|
|
1284
|
+
| GSD workflow | Purpose | Output |
|
|
1285
|
+
|---|---|---|
|
|
1286
|
+
| `discuss-phase.md` (541 lines) | Gray area identification, 4-question batched loops per area, deferred ideas capture | `CONTEXT.md` |
|
|
1287
|
+
| `list-phase-assumptions.md` (179 lines) | 5-dimension assumption surfacing (technical approach, implementation order, scope boundaries, risks, dependencies) | Conversational only (no file output) |
|
|
1288
|
+
| `discovery-phase.md` | 3-level research (Quick/Standard/Deep) with domain exploration | `DISCOVERY.md` |
|
|
1289
|
+
|
|
1290
|
+
Combined, these three workflows provided genuine leverage: the planner could not silently converge on a single approach without user input. GSD's initial GSDD distillation dropped all three, removing this alignment step entirely. The planner was left to infer approaches without user validation.
|
|
1291
|
+
|
|
1292
|
+
**Problem:** Without approach exploration, the planner explores no alternatives, surfaces no assumptions, and captures no user decisions. The user's first chance to disagree with approach choices is after implementation — too late for efficient correction.
|
|
1293
|
+
|
|
1294
|
+
**GSDD decision:** Recover the discuss-phase leverage as a single role (`agents/approach-explorer.md`) embedded in the plan workflow, with a hybrid interaction architecture:
|
|
1295
|
+
|
|
1296
|
+
1. **Primary path (inline + research subagents):** Conversation runs in the plan workflow's main context (required for user interactivity). For each technical gray area, a read-only research subagent spawns, reads codebase/docs, and returns a compressed ~1000-token structured summary. Only summaries enter the conversation context, not raw file reads.
|
|
1297
|
+
|
|
1298
|
+
2. **Native agent optimization:** Runtimes with interactive subagent support (Claude Code with `AskUserQuestion`, Codex interactive agents, OpenCode `mode: agent`) can run the full exploration as a native agent. Falls back to the inline primary path if unavailable.
|
|
1299
|
+
|
|
1300
|
+
Both paths produce identical output: `{padded_phase}-APPROACH.md` in the phase directory.
|
|
1301
|
+
|
|
1302
|
+
**Key enhancements over GSD:**
|
|
1303
|
+
|
|
1304
|
+
| Enhancement | GSD pattern | GSDD pattern | Why |
|
|
1305
|
+
|---|---|---|---|
|
|
1306
|
+
| Gray area classification | All areas treated identically | Taste / technical / hybrid classification | Taste decisions need no research; technical ones do. Asking "what color?" the same way as "JWT vs sessions?" wastes context and user time |
|
|
1307
|
+
| Questioning style | Rigid 4-question batched loop | Adaptive convergence (2-6 questions depending on complexity) | Fixed batch sizes don't match decision complexity. Some areas resolve in 2 questions, others need 6 |
|
|
1308
|
+
| Pre-question research | No research before asking | Research subagent per technical area returns structured summary before asking | Users make better decisions when presented with researched options and trade-offs |
|
|
1309
|
+
| Quality gate | None | Self-check before writing APPROACH.md (concrete decisions, no vague language, source backing, scope compliance) | Prevents weak outputs that force re-asking during planning |
|
|
1310
|
+
| Intermediate persistence | No persistence until final output | Confirmed decisions written to disk incrementally | Protects against context limits in long conversations |
|
|
1311
|
+
| Context loading | "Read everything" | JIT extraction guidance (e.g., "From SPEC.md read ONLY locked decisions") | Prevents context pollution with irrelevant content |
|
|
1312
|
+
| Plan-checker integration | None | New `approach_alignment` dimension in plan-checker | Verifies plans honor approach decisions, not just requirements |
|
|
1313
|
+
| Delegation option | Not available | "Agent's Discretion" — user can explicitly delegate choices to the agent | Reduces user fatigue on areas where they have no strong preference |
|
|
1314
|
+
|
|
1315
|
+
**Role contract design:** Ground-up rewrite applying prompt engineering best practices:
|
|
1316
|
+
|
|
1317
|
+
- XML semantic structure (`<role>`, `<algorithm>`, `<examples>`, `<anti_patterns>`, `<quality_guarantees>`) matching the planner role pattern
|
|
1318
|
+
- 3 few-shot conversation examples (taste decision, technical decision with research, hybrid with delegation)
|
|
1319
|
+
- Vendor-neutral throughout — no tool-specific references in the role contract
|
|
1320
|
+
- Anti-patterns placed early for high attention weight
|
|
1321
|
+
|
|
1322
|
+
**Architecture rationale — why hybrid:**
|
|
1323
|
+
|
|
1324
|
+
The approach explorer needs two capabilities with opposite context requirements:
|
|
1325
|
+
- **Conversation** needs the main context (for user interaction)
|
|
1326
|
+
- **Research** generates thousands of tokens of raw content the conversation doesn't need
|
|
1327
|
+
|
|
1328
|
+
Isolating research in subagents and returning compressed summaries follows the Compress and Isolate patterns from context engineering literature. The research subagent prompt template lives in the role contract (`<research_subagent_prompt>` section of `agents/approach-explorer.md`) — co-located with the algorithm it serves, and referenced by the portable workflow rather than inlined. The main context budget stays manageable: ~1000 tokens orchestration + ~4000 tokens research summaries (4 areas × ~1000) + ~4000 tokens conversation + ~500 tokens APPROACH.md = ~9500 tokens. The 1000-token budget (matching Anthropic CE's recommended floor) gives research subagents room for the structured format (Name/Pro/Con/Source) plus recommendation reasoning, source verification, and enough project-specific context that the main agent can handle follow-up questions without re-querying the subagent.
|
|
1329
|
+
|
|
1330
|
+
**Evidence:**
|
|
1331
|
+
|
|
1332
|
+
1. Anthropic "Building effective agents" (2025): sub-agents perform deep technical work, returning condensed summaries to the orchestrator — "find the smallest set of high-signal tokens"
|
|
1333
|
+
2. Anthropic prompting best practices (2025): XML tags for semantic structure, role preamble, few-shot examples, adaptive thinking
|
|
1334
|
+
3. LangChain "Context Engineering for Agents" (2025): Write/Select/Compress/Isolate patterns — "isolate: split context across separate processes", "compress: summarize at agent-agent boundaries"
|
|
1335
|
+
4. Agent Skills specification (agentskills.io): progressive disclosure, SKILL.md format with metadata-first structure
|
|
1336
|
+
5. OpenAI meta-prompting (2025): LLM-as-judge evaluation, specification-based output quality verification
|
|
1337
|
+
6. GSD source: `get-shit-done/workflows/discuss-phase.md` (gray area identification, AskUserQuestion interaction, deferred ideas)
|
|
1338
|
+
7. GSD source: `get-shit-done/workflows/list-phase-assumptions.md` (5-dimension assumption surfacing with confidence levels)
|
|
1339
|
+
8. GSD source: `get-shit-done/workflows/discovery-phase.md` (3-level research workflow)
|
|
1340
|
+
|
|
1341
|
+
**Trade-offs:**
|
|
1342
|
+
|
|
1343
|
+
- Benefit: planner receives locked user decisions instead of guessing approaches; plan-checker can verify approach alignment; context stays lean via research isolation
|
|
1344
|
+
- Cost: adds one interactive step before planning (~5-15 minutes of user time per phase); hybrid architecture is more complex than a single monolithic workflow
|
|
1345
|
+
- Mitigation: `workflow.discuss: true|false` toggle in `.planning/config.json` allows skipping with explicit `reduced_alignment` reporting; taste areas skip research entirely. Default is `false` (opt-in) to stay consistent with GSDD's stripped-down identity; users enable it explicitly
|
|
1346
|
+
|
|
1347
|
+
**GSDD implementation:** `agents/approach-explorer.md` (role contract), `distilled/templates/delegates/approach-explorer.md` (thin delegate), `distilled/templates/approach.md` (output template), `distilled/workflows/plan.md` (`<approach_exploration>` section), `agents/planner.md` (`<approach_decisions>` section), `distilled/templates/delegates/plan-checker.md` (`approach_alignment` dimension), `bin/adapters/claude.mjs` + `bin/adapters/opencode.mjs` + `bin/adapters/codex.mjs` (native agent rendering)
|
|
1348
|
+
|
|
1349
|
+
---
|
|
1350
|
+
|
|
1278
1351
|
## Maintenance
|
|
1279
1352
|
|
|
1280
1353
|
This document is updated when:
|
package/distilled/README.md
CHANGED
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
# GSDD (Get Shit Done Distilled)
|
|
2
|
-
|
|
3
|
-
Lightweight Spec-Driven Development (SDD) for AI-assisted engineering.
|
|
4
|
-
|
|
5
|
-
Distilled from GSD (Get Shit Done): keep rigor and leverage, drop ceremony.
|
|
6
|
-
|
|
7
|
-
## What This Is
|
|
8
|
-
|
|
9
|
-
GSDD is a small set of workflow sources plus a CLI (`gsdd`) that:
|
|
10
|
-
- scaffolds a project planning workspace (`.planning/`)
|
|
11
|
-
- generates portable workflow entrypoints as skills (`.agents/skills/gsdd-*/SKILL.md`)
|
|
12
|
-
- optionally generates tool-specific adapters for runtimes that need extra native surfaces (root `AGENTS.md`, Claude skills + plan-command alias + native agents, OpenCode commands + native agents)
|
|
13
|
-
|
|
14
|
-
## Quick Start
|
|
15
|
-
|
|
16
|
-
Run in your project root:
|
|
17
|
-
```bash
|
|
18
|
-
npx gsdd-cli init
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Optional adapters:
|
|
22
|
-
```bash
|
|
23
|
-
npx gsdd-cli init --tools claude
|
|
24
|
-
npx gsdd-cli init --tools opencode
|
|
25
|
-
npx gsdd-cli init --tools codex
|
|
26
|
-
npx gsdd-cli init --tools agents
|
|
27
|
-
npx gsdd-cli init --tools all
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Notes:
|
|
31
|
-
- `gsdd init` always generates open-standard skills at `.agents/skills/gsdd-*`. This is also the primary Codex CLI surface.
|
|
32
|
-
- `--tools claude` also generates native agents at `.claude/agents/gsdd-*.md` and a compatibility plan command alias at `.claude/commands/gsdd-plan.md`.
|
|
33
|
-
- `--tools opencode` also generates native agents at `.opencode/agents/gsdd-*.md`.
|
|
34
|
-
- `--tools codex` generates `.codex/agents/gsdd-plan-checker.toml`; the portable `.agents/skills/gsdd-plan/` surface remains the Codex entry path.
|
|
35
|
-
- Root `AGENTS.md` is only written when explicitly requested (`--tools agents` or `--tools all`).
|
|
36
|
-
|
|
37
|
-
## The Workflow
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
gsdd init -> bootstrap (create .planning/, copy templates, generate skills/adapters)
|
|
41
|
-
/gsdd:new-project -> .planning/SPEC.md + .planning/ROADMAP.md (questioning + codebase audit + research)
|
|
42
|
-
/gsdd:plan N -> phases/N/PLAN.md (task breakdown + research)
|
|
43
|
-
/gsdd:execute N -> code changes (plan execution with quality gates)
|
|
44
|
-
/gsdd:verify N -> VERIFICATION.md (goal-backward validation)
|
|
45
|
-
... repeat plan/execute/verify per phase ...
|
|
46
|
-
/gsdd:quick -> .planning/quick/NNN/ (sub-hour task outside phases)
|
|
47
|
-
/gsdd:pause -> .planning/.continue-here.md (session checkpoint)
|
|
48
|
-
/gsdd:resume -> restore context, route to next action
|
|
49
|
-
/gsdd:progress -> show status, route to next action
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Current Status (updated 2026-03-20)
|
|
53
|
-
|
|
54
|
-
| Workflow | Status | Notes |
|
|
55
|
-
|----------|--------|-------|
|
|
56
|
-
| `new-project.md` | [OK] Defined, source-audited | Covers greenfield + brownfield + milestone context |
|
|
57
|
-
| `plan.md` | [OK] Defined, source-audited | Portable workflow defines the planner contract and supports independent plan checking through generated native adapters |
|
|
58
|
-
| `execute.md` | [OK] Source-audited | Mandatory read enforcement, auth-gate routing, deviation-rule examples, and substantive summary quality gate |
|
|
59
|
-
| `verify.md` | [OK] Source-audited | 5 gap closures against hardened verifier role contract: grouped-gap guidance, orphan detection, frontmatter enforcement, verification basis emphasis, requirements coverage chain |
|
|
60
|
-
| `audit-milestone.md` | [OK] Defined, source-audited | Aggregates phase verification, cross-phase integration audit, auth protection checks, requirement reconciliation, and orphan detection into `MILESTONE-AUDIT.md` |
|
|
61
|
-
| `quick.md` | [OK] | Quick-work lane for sub-hour tasks outside the phase cycle (D11) |
|
|
62
|
-
| `pause.md` | [OK] Source-audited | Session checkpoint writer with conversational handoff (D12) |
|
|
63
|
-
| `resume.md` | [OK] Source-audited | Session context restorer with priority-ordered routing (D12) |
|
|
64
|
-
| `progress.md` | [OK] Source-audited | Read-only status reporter with 6 named route branches, recent work, between-milestones detection (D12) |
|
|
65
|
-
| `map-codebase.md` | [OK] Defined, source-audited | Standalone codebase mapping/refresh |
|
|
66
|
-
|
|
67
|
-
Architecture notes:
|
|
68
|
-
- `bin/gsdd.mjs` remains the thin generator entrypoint, while vendor-specific rendering lives in adapter modules.
|
|
69
|
-
- Codex CLI uses the always-generated `.agents/skills/gsdd-*` surface as its entry path and can add a native `.codex/agents/gsdd-plan-checker.toml` checker agent.
|
|
70
|
-
- Portable lifecycle contracts now align to the roadmap template status grammar: `[ ]`, `[-]`, `[x]`.
|
|
71
|
-
- Phase verification and milestone integration audit are treated as separate concerns.
|
|
72
|
-
- Canonical role contracts use bounded sections, typed output examples, and checklist-driven completion where those structures materially improve downstream reliability.
|
|
73
|
-
|
|
74
|
-
## Init Workflow Agent Count (by config)
|
|
75
|
-
|
|
76
|
-
| Mode | Mappers | Researchers | Synthesizer | Total |
|
|
77
|
-
|------|---------|-------------|-------------|-------|
|
|
78
|
-
| Brownfield, first run, research balanced/deep | 4 | 4 | 1 | 9 |
|
|
79
|
-
| Brownfield, first run, research fast | 4 | 4 | 0 (inline) | 8 |
|
|
80
|
-
| Brownfield, subsequent run, research balanced/deep | 0 (maps exist) | 4 | 1 | 5 |
|
|
81
|
-
| Greenfield, research balanced/deep | 0 | 4 | 1 | 5 |
|
|
82
|
-
| Greenfield, research fast | 0 | 4 | 0 (inline) | 4 |
|
|
83
|
-
| Any, no research | 0-4 | 0 | 0 | 0-4 |
|
|
84
|
-
|
|
85
|
-
Note: `parallelization: false` keeps the same mapper/researcher set but runs them sequentially.
|
|
86
|
-
|
|
87
|
-
## What Gets Created (Project Output)
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
.planning/
|
|
91
|
-
SPEC.md
|
|
92
|
-
ROADMAP.md
|
|
93
|
-
config.json
|
|
94
|
-
templates/ # copied from distilled/templates/
|
|
95
|
-
phases/ # phase plans and summaries
|
|
96
|
-
research/ # optional research outputs
|
|
97
|
-
.agents/skills/
|
|
98
|
-
gsdd-new-project/SKILL.md
|
|
99
|
-
gsdd-plan/SKILL.md
|
|
100
|
-
gsdd-execute/SKILL.md
|
|
101
|
-
gsdd-verify/SKILL.md
|
|
102
|
-
gsdd-audit-milestone/SKILL.md
|
|
103
|
-
gsdd-quick/SKILL.md
|
|
104
|
-
gsdd-pause/SKILL.md
|
|
105
|
-
gsdd-resume/SKILL.md
|
|
106
|
-
gsdd-progress/SKILL.md
|
|
107
|
-
gsdd-map-codebase/SKILL.md
|
|
108
|
-
.claude/agents/
|
|
109
|
-
gsdd-plan-checker.md # native-capable checker agent generated from the active plan-checker contract
|
|
110
|
-
.claude/commands/
|
|
111
|
-
gsdd-plan.md # compatibility alias to the Claude skill-primary plan entry
|
|
112
|
-
.claude/skills/
|
|
113
|
-
gsdd-plan/SKILL.md # Claude-native skill-primary planner -> checker surface
|
|
114
|
-
.opencode/agents/
|
|
115
|
-
gsdd-plan-checker.md # native-capable checker agent generated from the active plan-checker contract
|
|
116
|
-
.opencode/commands/
|
|
117
|
-
gsdd-plan.md # OpenCode-native specialized planner -> checker command surface
|
|
118
|
-
.codex/agents/
|
|
119
|
-
gsdd-plan-checker.toml # Codex-native checker agent (read-only, high reasoning effort)
|
|
120
|
-
.planning/
|
|
121
|
-
quick/ # quick task directories and LOG.md
|
|
122
|
-
.continue-here.md # session checkpoint (created by pause)
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## Files In This Framework
|
|
126
|
-
|
|
127
|
-
```
|
|
128
|
-
distilled/
|
|
129
|
-
DESIGN.md # design decisions and rationale (
|
|
130
|
-
SKILL.md # primary entry point (plain markdown)
|
|
131
|
-
workflows/
|
|
132
|
-
new-project.md
|
|
133
|
-
map-codebase.md
|
|
134
|
-
plan.md
|
|
135
|
-
progress.md
|
|
136
|
-
execute.md
|
|
137
|
-
verify.md
|
|
138
|
-
audit-milestone.md
|
|
139
|
-
quick.md
|
|
140
|
-
pause.md
|
|
141
|
-
resume.md
|
|
142
|
-
templates/
|
|
143
|
-
spec.md
|
|
144
|
-
roadmap.md
|
|
145
|
-
agents.md # full AGENTS.md template (for tool adapters)
|
|
146
|
-
agents.block.md # bounded block payload for root AGENTS.md insertion
|
|
147
|
-
delegates/ # delegate instruction files (copied to .planning/templates/delegates/)
|
|
148
|
-
mapper-tech.md
|
|
149
|
-
mapper-arch.md
|
|
150
|
-
mapper-quality.md
|
|
151
|
-
mapper-concerns.md
|
|
152
|
-
plan-checker.md
|
|
153
|
-
researcher-stack.md
|
|
154
|
-
researcher-features.md
|
|
155
|
-
researcher-architecture.md
|
|
156
|
-
researcher-pitfalls.md
|
|
157
|
-
researcher-synthesizer.md
|
|
158
|
-
research/
|
|
159
|
-
stack.md
|
|
160
|
-
features.md
|
|
161
|
-
architecture.md
|
|
162
|
-
pitfalls.md
|
|
163
|
-
summary.md
|
|
164
|
-
codebase/
|
|
165
|
-
stack.md
|
|
166
|
-
architecture.md
|
|
167
|
-
conventions.md
|
|
168
|
-
concerns.md
|
|
169
|
-
```
|
|
1
|
+
# GSDD (Get Shit Done Distilled)
|
|
2
|
+
|
|
3
|
+
Lightweight Spec-Driven Development (SDD) for AI-assisted engineering.
|
|
4
|
+
|
|
5
|
+
Distilled from GSD (Get Shit Done): keep rigor and leverage, drop ceremony.
|
|
6
|
+
|
|
7
|
+
## What This Is
|
|
8
|
+
|
|
9
|
+
GSDD is a small set of workflow sources plus a CLI (`gsdd`) that:
|
|
10
|
+
- scaffolds a project planning workspace (`.planning/`)
|
|
11
|
+
- generates portable workflow entrypoints as skills (`.agents/skills/gsdd-*/SKILL.md`)
|
|
12
|
+
- optionally generates tool-specific adapters for runtimes that need extra native surfaces (root `AGENTS.md`, Claude skills + plan-command alias + native agents, OpenCode commands + native agents)
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
Run in your project root:
|
|
17
|
+
```bash
|
|
18
|
+
npx gsdd-cli init
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Optional adapters:
|
|
22
|
+
```bash
|
|
23
|
+
npx gsdd-cli init --tools claude
|
|
24
|
+
npx gsdd-cli init --tools opencode
|
|
25
|
+
npx gsdd-cli init --tools codex
|
|
26
|
+
npx gsdd-cli init --tools agents
|
|
27
|
+
npx gsdd-cli init --tools all
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Notes:
|
|
31
|
+
- `gsdd init` always generates open-standard skills at `.agents/skills/gsdd-*`. This is also the primary Codex CLI surface.
|
|
32
|
+
- `--tools claude` also generates native agents at `.claude/agents/gsdd-*.md` and a compatibility plan command alias at `.claude/commands/gsdd-plan.md`.
|
|
33
|
+
- `--tools opencode` also generates native agents at `.opencode/agents/gsdd-*.md`.
|
|
34
|
+
- `--tools codex` generates `.codex/agents/gsdd-plan-checker.toml`; the portable `.agents/skills/gsdd-plan/` surface remains the Codex entry path.
|
|
35
|
+
- Root `AGENTS.md` is only written when explicitly requested (`--tools agents` or `--tools all`).
|
|
36
|
+
|
|
37
|
+
## The Workflow
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
gsdd init -> bootstrap (create .planning/, copy templates, generate skills/adapters)
|
|
41
|
+
/gsdd:new-project -> .planning/SPEC.md + .planning/ROADMAP.md (questioning + codebase audit + research)
|
|
42
|
+
/gsdd:plan N -> phases/N/PLAN.md (task breakdown + research)
|
|
43
|
+
/gsdd:execute N -> code changes (plan execution with quality gates)
|
|
44
|
+
/gsdd:verify N -> VERIFICATION.md (goal-backward validation)
|
|
45
|
+
... repeat plan/execute/verify per phase ...
|
|
46
|
+
/gsdd:quick -> .planning/quick/NNN/ (sub-hour task outside phases)
|
|
47
|
+
/gsdd:pause -> .planning/.continue-here.md (session checkpoint)
|
|
48
|
+
/gsdd:resume -> restore context, route to next action
|
|
49
|
+
/gsdd:progress -> show status, route to next action
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Current Status (updated 2026-03-20)
|
|
53
|
+
|
|
54
|
+
| Workflow | Status | Notes |
|
|
55
|
+
|----------|--------|-------|
|
|
56
|
+
| `new-project.md` | [OK] Defined, source-audited | Covers greenfield + brownfield + milestone context |
|
|
57
|
+
| `plan.md` | [OK] Defined, source-audited | Portable workflow defines the planner contract and supports independent plan checking through generated native adapters |
|
|
58
|
+
| `execute.md` | [OK] Source-audited | Mandatory read enforcement, auth-gate routing, deviation-rule examples, and substantive summary quality gate |
|
|
59
|
+
| `verify.md` | [OK] Source-audited | 5 gap closures against hardened verifier role contract: grouped-gap guidance, orphan detection, frontmatter enforcement, verification basis emphasis, requirements coverage chain |
|
|
60
|
+
| `audit-milestone.md` | [OK] Defined, source-audited | Aggregates phase verification, cross-phase integration audit, auth protection checks, requirement reconciliation, and orphan detection into `MILESTONE-AUDIT.md` |
|
|
61
|
+
| `quick.md` | [OK] | Quick-work lane for sub-hour tasks outside the phase cycle (D11) |
|
|
62
|
+
| `pause.md` | [OK] Source-audited | Session checkpoint writer with conversational handoff (D12) |
|
|
63
|
+
| `resume.md` | [OK] Source-audited | Session context restorer with priority-ordered routing (D12) |
|
|
64
|
+
| `progress.md` | [OK] Source-audited | Read-only status reporter with 6 named route branches, recent work, between-milestones detection (D12) |
|
|
65
|
+
| `map-codebase.md` | [OK] Defined, source-audited | Standalone codebase mapping/refresh |
|
|
66
|
+
|
|
67
|
+
Architecture notes:
|
|
68
|
+
- `bin/gsdd.mjs` remains the thin generator entrypoint, while vendor-specific rendering lives in adapter modules.
|
|
69
|
+
- Codex CLI uses the always-generated `.agents/skills/gsdd-*` surface as its entry path and can add a native `.codex/agents/gsdd-plan-checker.toml` checker agent.
|
|
70
|
+
- Portable lifecycle contracts now align to the roadmap template status grammar: `[ ]`, `[-]`, `[x]`.
|
|
71
|
+
- Phase verification and milestone integration audit are treated as separate concerns.
|
|
72
|
+
- Canonical role contracts use bounded sections, typed output examples, and checklist-driven completion where those structures materially improve downstream reliability.
|
|
73
|
+
|
|
74
|
+
## Init Workflow Agent Count (by config)
|
|
75
|
+
|
|
76
|
+
| Mode | Mappers | Researchers | Synthesizer | Total |
|
|
77
|
+
|------|---------|-------------|-------------|-------|
|
|
78
|
+
| Brownfield, first run, research balanced/deep | 4 | 4 | 1 | 9 |
|
|
79
|
+
| Brownfield, first run, research fast | 4 | 4 | 0 (inline) | 8 |
|
|
80
|
+
| Brownfield, subsequent run, research balanced/deep | 0 (maps exist) | 4 | 1 | 5 |
|
|
81
|
+
| Greenfield, research balanced/deep | 0 | 4 | 1 | 5 |
|
|
82
|
+
| Greenfield, research fast | 0 | 4 | 0 (inline) | 4 |
|
|
83
|
+
| Any, no research | 0-4 | 0 | 0 | 0-4 |
|
|
84
|
+
|
|
85
|
+
Note: `parallelization: false` keeps the same mapper/researcher set but runs them sequentially.
|
|
86
|
+
|
|
87
|
+
## What Gets Created (Project Output)
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
.planning/
|
|
91
|
+
SPEC.md
|
|
92
|
+
ROADMAP.md
|
|
93
|
+
config.json
|
|
94
|
+
templates/ # copied from distilled/templates/
|
|
95
|
+
phases/ # phase plans and summaries
|
|
96
|
+
research/ # optional research outputs
|
|
97
|
+
.agents/skills/
|
|
98
|
+
gsdd-new-project/SKILL.md
|
|
99
|
+
gsdd-plan/SKILL.md
|
|
100
|
+
gsdd-execute/SKILL.md
|
|
101
|
+
gsdd-verify/SKILL.md
|
|
102
|
+
gsdd-audit-milestone/SKILL.md
|
|
103
|
+
gsdd-quick/SKILL.md
|
|
104
|
+
gsdd-pause/SKILL.md
|
|
105
|
+
gsdd-resume/SKILL.md
|
|
106
|
+
gsdd-progress/SKILL.md
|
|
107
|
+
gsdd-map-codebase/SKILL.md
|
|
108
|
+
.claude/agents/
|
|
109
|
+
gsdd-plan-checker.md # native-capable checker agent generated from the active plan-checker contract
|
|
110
|
+
.claude/commands/
|
|
111
|
+
gsdd-plan.md # compatibility alias to the Claude skill-primary plan entry
|
|
112
|
+
.claude/skills/
|
|
113
|
+
gsdd-plan/SKILL.md # Claude-native skill-primary planner -> checker surface
|
|
114
|
+
.opencode/agents/
|
|
115
|
+
gsdd-plan-checker.md # native-capable checker agent generated from the active plan-checker contract
|
|
116
|
+
.opencode/commands/
|
|
117
|
+
gsdd-plan.md # OpenCode-native specialized planner -> checker command surface
|
|
118
|
+
.codex/agents/
|
|
119
|
+
gsdd-plan-checker.toml # Codex-native checker agent (read-only, high reasoning effort)
|
|
120
|
+
.planning/
|
|
121
|
+
quick/ # quick task directories and LOG.md
|
|
122
|
+
.continue-here.md # session checkpoint (created by pause)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Files In This Framework
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
distilled/
|
|
129
|
+
DESIGN.md # design decisions and rationale (29 decisions, evidence-backed)
|
|
130
|
+
SKILL.md # primary entry point (plain markdown)
|
|
131
|
+
workflows/
|
|
132
|
+
new-project.md
|
|
133
|
+
map-codebase.md
|
|
134
|
+
plan.md
|
|
135
|
+
progress.md
|
|
136
|
+
execute.md
|
|
137
|
+
verify.md
|
|
138
|
+
audit-milestone.md
|
|
139
|
+
quick.md
|
|
140
|
+
pause.md
|
|
141
|
+
resume.md
|
|
142
|
+
templates/
|
|
143
|
+
spec.md
|
|
144
|
+
roadmap.md
|
|
145
|
+
agents.md # full AGENTS.md template (for tool adapters)
|
|
146
|
+
agents.block.md # bounded block payload for root AGENTS.md insertion
|
|
147
|
+
delegates/ # delegate instruction files (copied to .planning/templates/delegates/)
|
|
148
|
+
mapper-tech.md
|
|
149
|
+
mapper-arch.md
|
|
150
|
+
mapper-quality.md
|
|
151
|
+
mapper-concerns.md
|
|
152
|
+
plan-checker.md
|
|
153
|
+
researcher-stack.md
|
|
154
|
+
researcher-features.md
|
|
155
|
+
researcher-architecture.md
|
|
156
|
+
researcher-pitfalls.md
|
|
157
|
+
researcher-synthesizer.md
|
|
158
|
+
research/
|
|
159
|
+
stack.md
|
|
160
|
+
features.md
|
|
161
|
+
architecture.md
|
|
162
|
+
pitfalls.md
|
|
163
|
+
summary.md
|
|
164
|
+
codebase/
|
|
165
|
+
stack.md
|
|
166
|
+
architecture.md
|
|
167
|
+
conventions.md
|
|
168
|
+
concerns.md
|
|
169
|
+
```
|
|
@@ -6,7 +6,7 @@ Edit the source template in the GSDD framework instead.
|
|
|
6
6
|
### What This Project Uses
|
|
7
7
|
- Framework: GSDD (Spec-Driven Development)
|
|
8
8
|
- Planning dir: `.planning/` (specs, roadmaps, plans, research, templates)
|
|
9
|
-
- Lifecycle: `bootstrap (gsdd init) -> new-project -> [plan -> execute -> verify] x N -> audit-milestone` for roadmap work
|
|
9
|
+
- Lifecycle: `bootstrap (gsdd init) -> new-project -> [discuss-approach -> plan -> execute -> verify] x N -> audit-milestone` for roadmap work
|
|
10
10
|
- Supporting workflows: quick (sub-hour tasks), map-codebase (codebase analysis), pause/resume (session management), progress (status query)
|
|
11
11
|
|
|
12
12
|
### Rules You MUST Follow
|