gsd-opencode 1.10.2 → 1.20.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/agents/gsd-codebase-mapper.md +29 -3
- package/agents/gsd-debugger.md +19 -21
- package/agents/gsd-executor.md +213 -528
- package/agents/gsd-integration-checker.md +20 -0
- package/agents/gsd-phase-researcher.md +189 -267
- package/agents/gsd-plan-checker.md +278 -279
- package/agents/gsd-planner.md +299 -490
- package/agents/gsd-project-researcher.md +103 -345
- package/agents/gsd-research-synthesizer.md +5 -22
- package/agents/gsd-roadmapper.md +43 -6
- package/agents/gsd-verifier.md +158 -377
- package/{lib → bin/dm/lib}/constants.js +10 -3
- package/{src → bin/dm/src}/commands/install.js +5 -4
- package/{src → bin/dm/src}/commands/uninstall.js +3 -1
- package/{src → bin/dm/src}/services/backup-manager.js +1 -1
- package/{src → bin/dm/src}/services/config.js +1 -1
- package/{src → bin/dm/src}/services/file-ops.js +20 -4
- package/{src → bin/dm/src}/services/health-checker.js +3 -1
- package/{src → bin/dm/src}/services/repair-service.js +3 -1
- package/{src → bin/dm/src}/services/settings.js +1 -1
- package/{src → bin/dm/src}/services/update-service.js +2 -2
- package/bin/gsd-install.js +0 -0
- package/bin/gsd.js +9 -9
- package/commands/gsd/gsd-add-phase.md +43 -0
- package/commands/gsd/gsd-add-todo.md +47 -0
- package/commands/gsd/gsd-audit-milestone.md +36 -0
- package/commands/gsd/gsd-check-todos.md +45 -0
- package/commands/gsd/gsd-cleanup.md +18 -0
- package/commands/gsd/{complete-milestone.md → gsd-complete-milestone.md} +1 -1
- package/commands/gsd/{debug.md → gsd-debug.md} +16 -21
- package/commands/gsd/{discuss-phase.md → gsd-discuss-phase.md} +6 -9
- package/commands/gsd/gsd-execute-phase.md +41 -0
- package/commands/gsd/gsd-health.md +22 -0
- package/commands/gsd/gsd-help.md +22 -0
- package/commands/gsd/gsd-insert-phase.md +32 -0
- package/commands/gsd/gsd-join-discord.md +18 -0
- package/commands/gsd/{list-phase-assumptions.md → gsd-list-phase-assumptions.md} +3 -7
- package/commands/gsd/{map-codebase.md → gsd-map-codebase.md} +3 -3
- package/commands/gsd/gsd-new-milestone.md +44 -0
- package/commands/gsd/gsd-new-project.md +42 -0
- package/commands/gsd/gsd-pause-work.md +38 -0
- package/commands/gsd/gsd-plan-milestone-gaps.md +34 -0
- package/commands/gsd/gsd-plan-phase.md +44 -0
- package/commands/gsd/gsd-progress.md +24 -0
- package/commands/gsd/gsd-quick.md +41 -0
- package/commands/gsd/gsd-reapply-patches.md +119 -0
- package/commands/gsd/gsd-remove-phase.md +31 -0
- package/commands/gsd/{research-phase.md → gsd-research-phase.md} +38 -49
- package/commands/gsd/{resume-work.md → gsd-resume-work.md} +2 -2
- package/commands/gsd/gsd-set-profile.md +34 -0
- package/commands/gsd/gsd-settings.md +36 -0
- package/commands/gsd/gsd-update.md +37 -0
- package/commands/gsd/gsd-verify-work.md +38 -0
- package/get-shit-done/bin/gsd-tools.cjs +553 -0
- package/get-shit-done/bin/gsd-tools.test.cjs +2346 -0
- package/get-shit-done/bin/lib/commands.cjs +556 -0
- package/get-shit-done/bin/lib/config.cjs +162 -0
- package/get-shit-done/bin/lib/core.cjs +377 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +299 -0
- package/get-shit-done/bin/lib/init.cjs +694 -0
- package/get-shit-done/bin/lib/milestone.cjs +215 -0
- package/get-shit-done/bin/lib/phase.cjs +877 -0
- package/get-shit-done/bin/lib/roadmap.cjs +298 -0
- package/get-shit-done/bin/lib/state.cjs +490 -0
- package/get-shit-done/bin/lib/template.cjs +222 -0
- package/get-shit-done/bin/lib/verify.cjs +772 -0
- package/get-shit-done/references/checkpoints.md +62 -364
- package/get-shit-done/references/decimal-phase-calculation.md +65 -0
- package/get-shit-done/references/git-integration.md +10 -16
- package/get-shit-done/references/git-planning-commit.md +38 -0
- package/get-shit-done/references/model-profile-resolution.md +34 -0
- package/get-shit-done/references/model-profiles.md +54 -66
- package/get-shit-done/references/phase-argument-parsing.md +61 -0
- package/get-shit-done/references/planning-config.md +112 -10
- package/get-shit-done/references/questioning.md +4 -0
- package/get-shit-done/references/ui-brand.md +1 -1
- package/get-shit-done/templates/UAT.md +1 -1
- package/get-shit-done/templates/VALIDATION.md +104 -0
- package/get-shit-done/templates/codebase/structure.md +6 -6
- package/get-shit-done/templates/config.json +37 -0
- package/get-shit-done/templates/context.md +2 -10
- package/get-shit-done/templates/continue-here.md +6 -6
- package/get-shit-done/templates/debug-subagent-prompt.md +2 -2
- package/get-shit-done/templates/discovery.md +6 -6
- package/get-shit-done/templates/milestone-archive.md +3 -3
- package/get-shit-done/templates/phase-prompt.md +9 -7
- package/get-shit-done/templates/planner-subagent-prompt.md +6 -6
- package/get-shit-done/templates/research-project/ARCHITECTURE.md +1 -1
- package/get-shit-done/templates/research.md +29 -6
- package/get-shit-done/templates/roadmap.md +1 -1
- package/get-shit-done/templates/state.md +0 -30
- package/get-shit-done/templates/summary-complex.md +59 -0
- package/get-shit-done/templates/summary-minimal.md +41 -0
- package/get-shit-done/templates/summary-standard.md +48 -0
- package/get-shit-done/templates/summary.md +16 -37
- package/get-shit-done/templates/user-setup.md +1 -13
- package/get-shit-done/templates/verification-report.md +5 -5
- package/get-shit-done/workflows/add-phase.md +111 -0
- package/{commands/gsd → get-shit-done/workflows}/add-todo.md +24 -60
- package/{commands/gsd → get-shit-done/workflows}/audit-milestone.md +83 -63
- package/{commands/gsd → get-shit-done/workflows}/check-todos.md +21 -73
- package/get-shit-done/workflows/cleanup.md +152 -0
- package/get-shit-done/workflows/complete-milestone.md +251 -312
- package/get-shit-done/workflows/diagnose-issues.md +6 -31
- package/get-shit-done/workflows/discovery-phase.md +11 -11
- package/get-shit-done/workflows/discuss-phase.md +156 -49
- package/get-shit-done/workflows/execute-phase.md +238 -396
- package/get-shit-done/workflows/execute-plan.md +180 -1609
- package/get-shit-done/workflows/health.md +156 -0
- package/{commands/gsd → get-shit-done/workflows}/help.md +33 -35
- package/get-shit-done/workflows/insert-phase.md +129 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +3 -3
- package/get-shit-done/workflows/map-codebase.md +73 -80
- package/get-shit-done/workflows/new-milestone.md +382 -0
- package/{commands/gsd → get-shit-done/workflows}/new-project.md +281 -234
- package/get-shit-done/workflows/oc-set-profile.md +320 -0
- package/{commands/gsd → get-shit-done/workflows}/pause-work.md +31 -43
- package/{commands/gsd → get-shit-done/workflows}/plan-milestone-gaps.md +29 -50
- package/get-shit-done/workflows/plan-phase.md +478 -0
- package/{commands/gsd → get-shit-done/workflows}/progress.md +64 -47
- package/get-shit-done/workflows/quick.md +453 -0
- package/get-shit-done/workflows/remove-phase.md +154 -0
- package/get-shit-done/workflows/research-phase.md +73 -0
- package/get-shit-done/workflows/resume-project.md +17 -26
- package/get-shit-done/workflows/set-profile.md +80 -0
- package/get-shit-done/workflows/settings.md +213 -0
- package/get-shit-done/workflows/transition.md +84 -104
- package/{commands/gsd → get-shit-done/workflows}/update.md +70 -28
- package/get-shit-done/workflows/verify-phase.md +106 -492
- package/get-shit-done/workflows/verify-work.md +26 -53
- package/package.json +7 -4
- package/rules/gsd-oc-work-hard.md +36 -0
- package/skills/gsd-oc-select-model/SKILL.md +348 -0
- package/skills/gsd-oc-select-model/scripts/select-models.cjs +268 -0
- package/agents/gsd-set-model.md +0 -287
- package/agents/gsd-set-profile.md +0 -239
- package/agents/gsd-settings.md +0 -749
- package/bin/install.js +0 -323
- package/commands/gsd/add-phase.md +0 -207
- package/commands/gsd/execute-phase.md +0 -339
- package/commands/gsd/insert-phase.md +0 -227
- package/commands/gsd/new-milestone.md +0 -721
- package/commands/gsd/plan-phase.md +0 -525
- package/commands/gsd/quick.md +0 -309
- package/commands/gsd/remove-phase.md +0 -349
- package/commands/gsd/set-model.md +0 -77
- package/commands/gsd/set-profile.md +0 -46
- package/commands/gsd/settings.md +0 -33
- package/commands/gsd/verify-work.md +0 -219
- package/commands/gsd/whats-new.md +0 -124
- /package/{src → bin/dm/src}/commands/check.js +0 -0
- /package/{src → bin/dm/src}/commands/config.js +0 -0
- /package/{src → bin/dm/src}/commands/list.js +0 -0
- /package/{src → bin/dm/src}/commands/repair.js +0 -0
- /package/{src → bin/dm/src}/commands/update.js +0 -0
- /package/{src → bin/dm/src}/services/manifest-manager.js +0 -0
- /package/{src → bin/dm/src}/services/migration-service.js +0 -0
- /package/{src → bin/dm/src}/services/scope-manager.js +0 -0
- /package/{src → bin/dm/src}/services/structure-detector.js +0 -0
- /package/{src → bin/dm/src}/utils/hash.js +0 -0
- /package/{src → bin/dm/src}/utils/interactive.js +0 -0
- /package/{src → bin/dm/src}/utils/logger.js +0 -0
- /package/{src → bin/dm/src}/utils/npm-registry.js +0 -0
- /package/{src → bin/dm/src}/utils/path-resolver.js +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: XX-name
|
|
3
|
+
plan: YY
|
|
4
|
+
subsystem: [primary category]
|
|
5
|
+
tags: [searchable tech]
|
|
6
|
+
provides:
|
|
7
|
+
- [bullet list of what was built/delivered]
|
|
8
|
+
affects: [list of phase names or keywords]
|
|
9
|
+
tech-stack:
|
|
10
|
+
added: [libraries/tools]
|
|
11
|
+
patterns: [architectural/code patterns]
|
|
12
|
+
key-files:
|
|
13
|
+
created: [important files created]
|
|
14
|
+
modified: [important files modified]
|
|
15
|
+
key-decisions:
|
|
16
|
+
- "Decision 1"
|
|
17
|
+
duration: Xmin
|
|
18
|
+
completed: YYYY-MM-DD
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Phase [X]: [Name] Summary
|
|
22
|
+
|
|
23
|
+
**[Substantive one-liner describing outcome]**
|
|
24
|
+
|
|
25
|
+
## Performance
|
|
26
|
+
- **Duration:** [time]
|
|
27
|
+
- **Tasks:** [count completed]
|
|
28
|
+
- **Files modified:** [count]
|
|
29
|
+
|
|
30
|
+
## Accomplishments
|
|
31
|
+
- [Key outcome 1]
|
|
32
|
+
- [Key outcome 2]
|
|
33
|
+
|
|
34
|
+
## task Commits
|
|
35
|
+
1. **task 1: [task name]** - `hash`
|
|
36
|
+
2. **task 2: [task name]** - `hash`
|
|
37
|
+
3. **task 3: [task name]** - `hash`
|
|
38
|
+
|
|
39
|
+
## Files Created/Modified
|
|
40
|
+
- `path/to/file.ts` - What it does
|
|
41
|
+
- `path/to/another.ts` - What it does
|
|
42
|
+
|
|
43
|
+
## Decisions & Deviations
|
|
44
|
+
[Key decisions or "None - followed plan as specified"]
|
|
45
|
+
[Minor deviations if any, or "None"]
|
|
46
|
+
|
|
47
|
+
## Next Phase Readiness
|
|
48
|
+
[What's ready for next phase]
|
|
@@ -38,6 +38,8 @@ patterns-established:
|
|
|
38
38
|
- "Pattern 1: description"
|
|
39
39
|
- "Pattern 2: description"
|
|
40
40
|
|
|
41
|
+
requirements-completed: [] # REQUIRED — Copy ALL requirement IDs from this plan's `requirements` frontmatter field.
|
|
42
|
+
|
|
41
43
|
# Metrics
|
|
42
44
|
duration: Xmin
|
|
43
45
|
completed: YYYY-MM-DD
|
|
@@ -60,13 +62,13 @@ completed: YYYY-MM-DD
|
|
|
60
62
|
- [Second key accomplishment]
|
|
61
63
|
- [Third if applicable]
|
|
62
64
|
|
|
63
|
-
##
|
|
65
|
+
## task Commits
|
|
64
66
|
|
|
65
67
|
Each task was committed atomically:
|
|
66
68
|
|
|
67
|
-
1. **
|
|
68
|
-
2. **
|
|
69
|
-
3. **
|
|
69
|
+
1. **task 1: [task name]** - `abc123f` (feat/fix/test/refactor)
|
|
70
|
+
2. **task 2: [task name]** - `def456g` (feat/fix/test/refactor)
|
|
71
|
+
3. **task 3: [task name]** - `hij789k` (feat/fix/test/refactor)
|
|
70
72
|
|
|
71
73
|
**Plan metadata:** `lmn012o` (docs: complete plan)
|
|
72
74
|
|
|
@@ -88,7 +90,7 @@ _Note: TDD tasks may have multiple commits (test → feat → refactor)_
|
|
|
88
90
|
### Auto-fixed Issues
|
|
89
91
|
|
|
90
92
|
**1. [Rule X - Category] Brief description**
|
|
91
|
-
- **Found during:**
|
|
93
|
+
- **Found during:** task [N] ([task name])
|
|
92
94
|
- **Issue:** [What was wrong]
|
|
93
95
|
- **Fix:** [What was done]
|
|
94
96
|
- **Files modified:** [file paths]
|
|
@@ -199,20 +201,20 @@ The one-liner should tell someone what actually shipped.
|
|
|
199
201
|
### Auto-fixed Issues
|
|
200
202
|
|
|
201
203
|
**1. [Rule 2 - Missing Critical] Added password hashing with bcrypt**
|
|
202
|
-
- **Found during:**
|
|
204
|
+
- **Found during:** task 2 (Login endpoint implementation)
|
|
203
205
|
- **Issue:** Plan didn't specify password hashing - storing plaintext would be critical security flaw
|
|
204
206
|
- **Fix:** Added bcrypt hashing on registration, comparison on login with salt rounds 10
|
|
205
207
|
- **Files modified:** src/app/api/auth/login/route.ts, src/lib/auth.ts
|
|
206
208
|
- **Verification:** Password hash test passes, plaintext never stored
|
|
207
|
-
- **Committed in:** abc123f (
|
|
209
|
+
- **Committed in:** abc123f (task 2 commit)
|
|
208
210
|
|
|
209
211
|
**2. [Rule 3 - Blocking] Installed missing jose dependency**
|
|
210
|
-
- **Found during:**
|
|
212
|
+
- **Found during:** task 4 (JWT token generation)
|
|
211
213
|
- **Issue:** jose package not in package.json, import failing
|
|
212
214
|
- **Fix:** Ran `npm install jose`
|
|
213
215
|
- **Files modified:** package.json, package-lock.json
|
|
214
216
|
- **Verification:** Import succeeds, build passes
|
|
215
|
-
- **Committed in:** def456g (
|
|
217
|
+
- **Committed in:** def456g (task 4 commit)
|
|
216
218
|
|
|
217
219
|
---
|
|
218
220
|
|
|
@@ -233,37 +235,14 @@ The one-liner should tell someone what actually shipped.
|
|
|
233
235
|
</example>
|
|
234
236
|
|
|
235
237
|
<guidelines>
|
|
236
|
-
**
|
|
237
|
-
|
|
238
|
-
-
|
|
239
|
-
- Documents what actually happened vs what was planned
|
|
240
|
-
|
|
241
|
-
**Frontmatter completion:**
|
|
242
|
-
- MANDATORY: Complete all frontmatter fields during summary creation
|
|
243
|
-
- See <frontmatter_guidance> for field purposes
|
|
244
|
-
- Frontmatter enables automatic context assembly for future planning
|
|
245
|
-
|
|
246
|
-
**One-liner requirements:**
|
|
247
|
-
- Must be substantive (describe what shipped, not "phase complete")
|
|
248
|
-
- Should tell someone what was accomplished
|
|
249
|
-
- Examples: "JWT auth with refresh rotation using jose library" not "Authentication implemented"
|
|
250
|
-
|
|
251
|
-
**Performance tracking:**
|
|
252
|
-
- Include duration, start/end timestamps
|
|
253
|
-
- Used for velocity metrics in STATE.md
|
|
254
|
-
|
|
255
|
-
**Deviations section:**
|
|
256
|
-
- Documents unplanned work handled via deviation rules
|
|
257
|
-
- Separate from "Issues Encountered" (which is planned work problems)
|
|
258
|
-
- Auto-fixed issues: What was wrong, how fixed, verification
|
|
238
|
+
**Frontmatter:** MANDATORY - complete all fields. Enables automatic context assembly for future planning.
|
|
239
|
+
|
|
240
|
+
**One-liner:** Must be substantive. "JWT auth with refresh rotation using jose library" not "Authentication implemented".
|
|
259
241
|
|
|
260
242
|
**Decisions section:**
|
|
261
|
-
- Key decisions made during execution
|
|
262
|
-
- Include rationale (why this choice)
|
|
243
|
+
- Key decisions made during execution with rationale
|
|
263
244
|
- Extracted to STATE.md accumulated context
|
|
264
245
|
- Use "None - followed plan as specified" if no deviations
|
|
265
246
|
|
|
266
|
-
**After creation:**
|
|
267
|
-
- STATE.md updated with position, decisions, issues
|
|
268
|
-
- Next plan can reference decisions made
|
|
247
|
+
**After creation:** STATE.md updated with position, decisions, issues.
|
|
269
248
|
</guidelines>
|
|
@@ -304,20 +304,8 @@ curl -X POST http://localhost:3000/api/test-email \
|
|
|
304
304
|
|
|
305
305
|
## Guidelines
|
|
306
306
|
|
|
307
|
-
**
|
|
308
|
-
- Environment variable names and where to find values
|
|
309
|
-
- Account creation URLs (if new service)
|
|
310
|
-
- Dashboard configuration steps
|
|
311
|
-
- Verification commands to confirm setup works
|
|
312
|
-
- Local development alternatives (e.g., `stripe listen`)
|
|
313
|
-
|
|
314
|
-
**Do NOT include:**
|
|
315
|
-
- Actual secret values (never)
|
|
316
|
-
- Steps OpenCode can automate (package installs, code changes, file creation)
|
|
317
|
-
- Generic instructions ("set up your environment")
|
|
307
|
+
**Never include:** Actual secret values. Steps OpenCode can automate (package installs, code changes).
|
|
318
308
|
|
|
319
309
|
**Naming:** `{phase}-USER-SETUP.md` matches the phase number pattern.
|
|
320
|
-
|
|
321
310
|
**Status tracking:** User marks checkboxes and updates status line when complete.
|
|
322
|
-
|
|
323
311
|
**Searchability:** `grep -r "USER-SETUP" .planning/` finds all phases with user requirements.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Verification Report Template
|
|
2
2
|
|
|
3
|
-
Template for `.planning/phases/XX-name/{
|
|
3
|
+
Template for `.planning/phases/XX-name/{phase_num}-VERIFICATION.md` — phase goal verification results.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -124,8 +124,8 @@ None — all verifiable items checked programmatically.
|
|
|
124
124
|
**Objective:** {What this fixes}
|
|
125
125
|
|
|
126
126
|
**Tasks:**
|
|
127
|
-
1. {
|
|
128
|
-
2. {
|
|
127
|
+
1. {task to fix gap 1}
|
|
128
|
+
2. {task to fix gap 2}
|
|
129
129
|
3. {Verification task}
|
|
130
130
|
|
|
131
131
|
**Estimated scope:** {Small / Medium}
|
|
@@ -137,8 +137,8 @@ None — all verifiable items checked programmatically.
|
|
|
137
137
|
**Objective:** {What this fixes}
|
|
138
138
|
|
|
139
139
|
**Tasks:**
|
|
140
|
-
1. {
|
|
141
|
-
2. {
|
|
140
|
+
1. {task}
|
|
141
|
+
2. {task}
|
|
142
142
|
|
|
143
143
|
**Estimated scope:** {Small / Medium}
|
|
144
144
|
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Add a new integer phase to the end of the current milestone in the roadmap. Automatically calculates next phase number, creates phase directory, and updates roadmap structure.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="parse_arguments">
|
|
12
|
+
Parse the command arguments:
|
|
13
|
+
- $ARGUMENTS become the phase description
|
|
14
|
+
- Example: `/gsd-add-phase Add authentication` → description = "Add authentication"
|
|
15
|
+
- Example: `/gsd-add-phase Fix critical performance issues` → description = "Fix critical performance issues"
|
|
16
|
+
|
|
17
|
+
If no arguments provided:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
ERROR: Phase description required
|
|
21
|
+
Usage: /gsd-add-phase <description>
|
|
22
|
+
Example: /gsd-add-phase Add authentication system
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Exit.
|
|
26
|
+
</step>
|
|
27
|
+
|
|
28
|
+
<step name="init_context">
|
|
29
|
+
Load phase operation context:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init phase-op "0")
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Check `roadmap_exists` from init JSON. If false:
|
|
36
|
+
```
|
|
37
|
+
ERROR: No roadmap found (.planning/ROADMAP.md)
|
|
38
|
+
Run /gsd-new-project to initialize.
|
|
39
|
+
```
|
|
40
|
+
Exit.
|
|
41
|
+
</step>
|
|
42
|
+
|
|
43
|
+
<step name="add_phase">
|
|
44
|
+
**Delegate the phase addition to gsd-tools:**
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
RESULT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs phase add "${description}")
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The CLI handles:
|
|
51
|
+
- Finding the highest existing integer phase number
|
|
52
|
+
- Calculating next phase number (max + 1)
|
|
53
|
+
- Generating slug from description
|
|
54
|
+
- Creating the phase directory (`.planning/phases/{NN}-{slug}/`)
|
|
55
|
+
- Inserting the phase entry into ROADMAP.md with Goal, Depends on, and Plans sections
|
|
56
|
+
|
|
57
|
+
Extract from result: `phase_number`, `padded`, `name`, `slug`, `directory`.
|
|
58
|
+
</step>
|
|
59
|
+
|
|
60
|
+
<step name="update_project_state">
|
|
61
|
+
Update STATE.md to reflect the new phase:
|
|
62
|
+
|
|
63
|
+
1. read `.planning/STATE.md`
|
|
64
|
+
2. Under "## Accumulated Context" → "### Roadmap Evolution" add entry:
|
|
65
|
+
```
|
|
66
|
+
- Phase {N} added: {description}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
If "Roadmap Evolution" section doesn't exist, create it.
|
|
70
|
+
</step>
|
|
71
|
+
|
|
72
|
+
<step name="completion">
|
|
73
|
+
Present completion summary:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Phase {N} added to current milestone:
|
|
77
|
+
- Description: {description}
|
|
78
|
+
- Directory: .planning/phases/{phase-num}-{slug}/
|
|
79
|
+
- Status: Not planned yet
|
|
80
|
+
|
|
81
|
+
Roadmap updated: .planning/ROADMAP.md
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## ▶ Next Up
|
|
86
|
+
|
|
87
|
+
**Phase {N}: {description}**
|
|
88
|
+
|
|
89
|
+
`/gsd-plan-phase {N}`
|
|
90
|
+
|
|
91
|
+
*`/new` first → fresh context window*
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
**Also available:**
|
|
96
|
+
- `/gsd-add-phase <description>` — add another phase
|
|
97
|
+
- Review roadmap
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
```
|
|
101
|
+
</step>
|
|
102
|
+
|
|
103
|
+
</process>
|
|
104
|
+
|
|
105
|
+
<success_criteria>
|
|
106
|
+
- [ ] `gsd-tools phase add` executed successfully
|
|
107
|
+
- [ ] Phase directory created
|
|
108
|
+
- [ ] Roadmap updated with new phase entry
|
|
109
|
+
- [ ] STATE.md updated with roadmap evolution note
|
|
110
|
+
- [ ] User informed of next steps
|
|
111
|
+
</success_criteria>
|
|
@@ -1,38 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
argument-hint: [optional description]
|
|
5
|
-
tools:
|
|
6
|
-
- read
|
|
7
|
-
- write
|
|
8
|
-
- bash
|
|
9
|
-
- glob
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
<objective>
|
|
13
|
-
Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work.
|
|
1
|
+
<purpose>
|
|
2
|
+
Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work. Enables "thought → capture → continue" flow without losing context.
|
|
3
|
+
</purpose>
|
|
14
4
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<context>
|
|
19
|
-
@.planning/STATE.md
|
|
20
|
-
</context>
|
|
5
|
+
<required_reading>
|
|
6
|
+
read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
21
8
|
|
|
22
9
|
<process>
|
|
23
10
|
|
|
24
|
-
<step name="
|
|
11
|
+
<step name="init_context">
|
|
12
|
+
Load todo context:
|
|
13
|
+
|
|
25
14
|
```bash
|
|
26
|
-
|
|
15
|
+
INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init todos)
|
|
27
16
|
```
|
|
28
|
-
</step>
|
|
29
17
|
|
|
30
|
-
|
|
18
|
+
Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
|
|
19
|
+
|
|
20
|
+
Ensure directories exist:
|
|
31
21
|
```bash
|
|
32
|
-
|
|
22
|
+
mkdir -p .planning/todos/pending .planning/todos/done
|
|
33
23
|
```
|
|
34
24
|
|
|
35
|
-
Note existing areas for consistency in infer_area step.
|
|
25
|
+
Note existing areas from the todos array for consistency in infer_area step.
|
|
36
26
|
</step>
|
|
37
27
|
|
|
38
28
|
<step name="extract_content">
|
|
@@ -71,6 +61,7 @@ Use existing area from step 2 if similar match exists.
|
|
|
71
61
|
|
|
72
62
|
<step name="check_duplicates">
|
|
73
63
|
```bash
|
|
64
|
+
# Search for key words from title in existing todos
|
|
74
65
|
grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null
|
|
75
66
|
```
|
|
76
67
|
|
|
@@ -88,14 +79,14 @@ If overlapping, use question:
|
|
|
88
79
|
</step>
|
|
89
80
|
|
|
90
81
|
<step name="create_file">
|
|
82
|
+
Use values from init context: `timestamp` and `date` are already available.
|
|
83
|
+
|
|
84
|
+
Generate slug for the title:
|
|
91
85
|
```bash
|
|
92
|
-
|
|
93
|
-
date_prefix=$(date "+%Y-%m-%d")
|
|
86
|
+
slug=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs generate-slug "$title" --raw)
|
|
94
87
|
```
|
|
95
88
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
write to `.planning/todos/pending/${date_prefix}-${slug}.md`:
|
|
89
|
+
write to `.planning/todos/pending/${date}-${slug}.md`:
|
|
99
90
|
|
|
100
91
|
```markdown
|
|
101
92
|
---
|
|
@@ -119,34 +110,18 @@ files:
|
|
|
119
110
|
<step name="update_state">
|
|
120
111
|
If `.planning/STATE.md` exists:
|
|
121
112
|
|
|
122
|
-
1.
|
|
113
|
+
1. Use `todo_count` from init context (or re-run `init todos` if count changed)
|
|
123
114
|
2. Update "### Pending Todos" under "## Accumulated Context"
|
|
124
115
|
</step>
|
|
125
116
|
|
|
126
117
|
<step name="git_commit">
|
|
127
118
|
Commit the todo and any updated state:
|
|
128
119
|
|
|
129
|
-
**Check planning config:**
|
|
130
|
-
|
|
131
120
|
```bash
|
|
132
|
-
|
|
133
|
-
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
121
|
+
node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
|
|
134
122
|
```
|
|
135
123
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
git add .planning/todos/pending/[filename]
|
|
142
|
-
[ -f .planning/STATE.md ] && git add .planning/STATE.md
|
|
143
|
-
git commit -m "$(cat <<'EOF'
|
|
144
|
-
docs: capture todo - [title]
|
|
145
|
-
|
|
146
|
-
Area: [area]
|
|
147
|
-
EOF
|
|
148
|
-
)"
|
|
149
|
-
```
|
|
124
|
+
Tool respects `commit_docs` config and gitignore automatically.
|
|
150
125
|
|
|
151
126
|
Confirm: "Committed: docs: capture todo - [title]"
|
|
152
127
|
</step>
|
|
@@ -171,17 +146,6 @@ Would you like to:
|
|
|
171
146
|
|
|
172
147
|
</process>
|
|
173
148
|
|
|
174
|
-
<output>
|
|
175
|
-
- `.planning/todos/pending/[date]-[slug].md`
|
|
176
|
-
- Updated `.planning/STATE.md` (if exists)
|
|
177
|
-
</output>
|
|
178
|
-
|
|
179
|
-
<anti_patterns>
|
|
180
|
-
- Don't create todos for work in current plan (that's deviation rule territory)
|
|
181
|
-
- Don't create elaborate solution sections — captures ideas, not plans
|
|
182
|
-
- Don't block on missing information — "TBD" is fine
|
|
183
|
-
</anti_patterns>
|
|
184
|
-
|
|
185
149
|
<success_criteria>
|
|
186
150
|
- [ ] Directory structure exists
|
|
187
151
|
- [ ] Todo file created with valid frontmatter
|
|
@@ -1,67 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
argument-hint: "[version]"
|
|
5
|
-
tools:
|
|
6
|
-
- read
|
|
7
|
-
- glob
|
|
8
|
-
- grep
|
|
9
|
-
- bash
|
|
10
|
-
|
|
11
|
-
- write
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
<objective>
|
|
15
|
-
Verify milestone achieved its definition of done. Check requirements coverage, cross-phase integration, and end-to-end flows.
|
|
16
|
-
|
|
17
|
-
**This command IS the orchestrator.** Reads existing VERIFICATION.md files (phases already verified during execute-phase), aggregates tech debt and deferred gaps, then spawns integration checker for cross-phase wiring.
|
|
18
|
-
</objective>
|
|
19
|
-
|
|
20
|
-
<execution_context>
|
|
21
|
-
<!-- Spawns gsd-integration-checker agent which has all audit expertise baked in -->
|
|
22
|
-
</execution_context>
|
|
23
|
-
|
|
24
|
-
<context>
|
|
25
|
-
Version: `$ARGUMENTS` (optional — defaults to current milestone)
|
|
26
|
-
|
|
27
|
-
**Original Intent:**
|
|
28
|
-
@.planning/PROJECT.md
|
|
29
|
-
@.planning/REQUIREMENTS.md
|
|
30
|
-
|
|
31
|
-
**Planned Work:**
|
|
32
|
-
@.planning/ROADMAP.md
|
|
33
|
-
@.planning/config.json (if exists)
|
|
1
|
+
<purpose>
|
|
2
|
+
Verify milestone achieved its definition of done by aggregating phase verifications, checking cross-phase integration, and assessing requirements coverage. Reads existing VERIFICATION.md files (phases already verified during execute-phase), aggregates tech debt and deferred gaps, then spawns integration checker for cross-phase wiring.
|
|
3
|
+
</purpose>
|
|
34
4
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
</context>
|
|
5
|
+
<required_reading>
|
|
6
|
+
read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
39
8
|
|
|
40
9
|
<process>
|
|
41
10
|
|
|
42
|
-
## 0.
|
|
43
|
-
|
|
44
|
-
read model profile for agent spawning:
|
|
11
|
+
## 0. Initialize Milestone Context
|
|
45
12
|
|
|
46
13
|
```bash
|
|
47
|
-
|
|
14
|
+
INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init milestone-op)
|
|
48
15
|
```
|
|
49
16
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
**Model lookup table:**
|
|
17
|
+
Extract from init JSON: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `commit_docs`.
|
|
53
18
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
Store resolved model for use in Task call below.
|
|
19
|
+
Resolve integration checker model:
|
|
20
|
+
```bash
|
|
21
|
+
CHECKER_MODEL=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs resolve-model gsd-integration-checker --raw)
|
|
22
|
+
```
|
|
59
23
|
|
|
60
24
|
## 1. Determine Milestone Scope
|
|
61
25
|
|
|
62
26
|
```bash
|
|
63
|
-
# Get phases in milestone
|
|
64
|
-
|
|
27
|
+
# Get phases in milestone (sorted numerically, handles decimals)
|
|
28
|
+
node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs phases list
|
|
65
29
|
```
|
|
66
30
|
|
|
67
31
|
- Parse version from arguments or detect current from ROADMAP.md
|
|
@@ -74,9 +38,10 @@ ls -d .planning/phases/*/ | sort -V
|
|
|
74
38
|
For each phase directory, read the VERIFICATION.md:
|
|
75
39
|
|
|
76
40
|
```bash
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
#
|
|
41
|
+
# For each phase, use find-phase to resolve the directory (handles archived phases)
|
|
42
|
+
PHASE_INFO=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs find-phase 01 --raw)
|
|
43
|
+
# Extract directory from JSON, then read VERIFICATION.md from that directory
|
|
44
|
+
# Repeat for each phase number from ROADMAP.md
|
|
80
45
|
```
|
|
81
46
|
|
|
82
47
|
From each VERIFICATION.md, extract:
|
|
@@ -92,14 +57,21 @@ If a phase is missing VERIFICATION.md, flag it as "unverified phase" — this is
|
|
|
92
57
|
|
|
93
58
|
With phase context collected:
|
|
94
59
|
|
|
60
|
+
Extract `MILESTONE_REQ_IDS` from REQUIREMENTS.md traceability table — all REQ-IDs assigned to phases in this milestone.
|
|
61
|
+
|
|
95
62
|
```
|
|
96
|
-
|
|
63
|
+
task(
|
|
97
64
|
prompt="Check cross-phase integration and E2E flows.
|
|
98
65
|
|
|
99
66
|
Phases: {phase_dirs}
|
|
100
67
|
Phase exports: {from SUMMARYs}
|
|
101
68
|
API routes: {routes created}
|
|
102
69
|
|
|
70
|
+
Milestone Requirements:
|
|
71
|
+
{MILESTONE_REQ_IDS — list each REQ-ID with description and assigned phase}
|
|
72
|
+
|
|
73
|
+
MUST map each integration finding to affected requirement IDs where applicable.
|
|
74
|
+
|
|
103
75
|
Verify cross-phase wiring and E2E user flows.",
|
|
104
76
|
subagent_type="gsd-integration-checker",
|
|
105
77
|
model="{integration_checker_model}"
|
|
@@ -112,12 +84,48 @@ Combine:
|
|
|
112
84
|
- Phase-level gaps and tech debt (from step 2)
|
|
113
85
|
- Integration checker's report (wiring gaps, broken flows)
|
|
114
86
|
|
|
115
|
-
## 5. Check Requirements Coverage
|
|
87
|
+
## 5. Check Requirements Coverage (3-Source Cross-Reference)
|
|
88
|
+
|
|
89
|
+
MUST cross-reference three independent sources for each requirement:
|
|
90
|
+
|
|
91
|
+
### 5a. Parse REQUIREMENTS.md Traceability Table
|
|
92
|
+
|
|
93
|
+
Extract all REQ-IDs mapped to milestone phases from the traceability table:
|
|
94
|
+
- Requirement ID, description, assigned phase, current status, checked-off state (`[x]` vs `[ ]`)
|
|
95
|
+
|
|
96
|
+
### 5b. Parse Phase VERIFICATION.md Requirements Tables
|
|
97
|
+
|
|
98
|
+
For each phase's VERIFICATION.md, extract the expanded requirements table:
|
|
99
|
+
- Requirement | Source Plan | Description | Status | Evidence
|
|
100
|
+
- Map each entry back to its REQ-ID
|
|
101
|
+
|
|
102
|
+
### 5c. Extract SUMMARY.md Frontmatter Cross-Check
|
|
103
|
+
|
|
104
|
+
For each phase's SUMMARY.md, extract `requirements-completed` from YAML frontmatter:
|
|
105
|
+
```bash
|
|
106
|
+
for summary in .planning/phases/*-*/*-SUMMARY.md; do
|
|
107
|
+
node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs summary-extract "$summary" --fields requirements_completed | jq -r '.requirements_completed'
|
|
108
|
+
done
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 5d. Status Determination Matrix
|
|
112
|
+
|
|
113
|
+
For each REQ-ID, determine status using all three sources:
|
|
114
|
+
|
|
115
|
+
| VERIFICATION.md Status | SUMMARY Frontmatter | REQUIREMENTS.md | → Final Status |
|
|
116
|
+
|------------------------|---------------------|-----------------|----------------|
|
|
117
|
+
| passed | listed | `[x]` | **satisfied** |
|
|
118
|
+
| passed | listed | `[ ]` | **satisfied** (update checkbox) |
|
|
119
|
+
| passed | missing | any | **partial** (verify manually) |
|
|
120
|
+
| gaps_found | any | any | **unsatisfied** |
|
|
121
|
+
| missing | listed | any | **partial** (verification gap) |
|
|
122
|
+
| missing | missing | any | **unsatisfied** |
|
|
123
|
+
|
|
124
|
+
### 5e. FAIL Gate and Orphan Detection
|
|
125
|
+
|
|
126
|
+
**REQUIRED:** Any `unsatisfied` requirement MUST force `gaps_found` status on the milestone audit.
|
|
116
127
|
|
|
117
|
-
|
|
118
|
-
- Find owning phase
|
|
119
|
-
- Check phase verification status
|
|
120
|
-
- Determine: satisfied | partial | unsatisfied
|
|
128
|
+
**Orphan detection:** Requirements present in REQUIREMENTS.md traceability table but absent from ALL phase VERIFICATION.md files MUST be flagged as orphaned. Orphaned requirements are treated as `unsatisfied` — they were assigned but never verified by any phase.
|
|
121
129
|
|
|
122
130
|
## 6. Aggregate into v{version}-MILESTONE-AUDIT.md
|
|
123
131
|
|
|
@@ -134,7 +142,14 @@ scores:
|
|
|
134
142
|
integration: N/M
|
|
135
143
|
flows: N/M
|
|
136
144
|
gaps: # Critical blockers
|
|
137
|
-
requirements:
|
|
145
|
+
requirements:
|
|
146
|
+
- id: "{REQ-ID}"
|
|
147
|
+
status: "unsatisfied | partial | orphaned"
|
|
148
|
+
phase: "{assigned phase}"
|
|
149
|
+
claimed_by_plans: ["{plan files that reference this requirement}"]
|
|
150
|
+
completed_by_plans: ["{plan files whose SUMMARY marks it complete}"]
|
|
151
|
+
verification_status: "passed | gaps_found | missing | orphaned"
|
|
152
|
+
evidence: "{specific evidence or lack thereof}"
|
|
138
153
|
integration: [...]
|
|
139
154
|
flows: [...]
|
|
140
155
|
tech_debt: # Non-critical, deferred
|
|
@@ -270,8 +285,13 @@ All requirements met. No critical blockers. Accumulated tech debt needs review.
|
|
|
270
285
|
<success_criteria>
|
|
271
286
|
- [ ] Milestone scope identified
|
|
272
287
|
- [ ] All phase VERIFICATION.md files read
|
|
288
|
+
- [ ] SUMMARY.md `requirements-completed` frontmatter extracted for each phase
|
|
289
|
+
- [ ] REQUIREMENTS.md traceability table parsed for all milestone REQ-IDs
|
|
290
|
+
- [ ] 3-source cross-reference completed (VERIFICATION + SUMMARY + traceability)
|
|
291
|
+
- [ ] Orphaned requirements detected (in traceability but absent from all VERIFICATIONs)
|
|
273
292
|
- [ ] Tech debt and deferred gaps aggregated
|
|
274
|
-
- [ ] Integration checker spawned
|
|
275
|
-
- [ ] v{version}-MILESTONE-AUDIT.md created
|
|
293
|
+
- [ ] Integration checker spawned with milestone requirement IDs
|
|
294
|
+
- [ ] v{version}-MILESTONE-AUDIT.md created with structured requirement gap objects
|
|
295
|
+
- [ ] FAIL gate enforced — any unsatisfied requirement forces gaps_found status
|
|
276
296
|
- [ ] Results presented with actionable next steps
|
|
277
297
|
</success_criteria>
|