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,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: {N}
|
|
3
|
+
slug: {phase-slug}
|
|
4
|
+
status: draft
|
|
5
|
+
nyquist_compliant: false
|
|
6
|
+
wave_0_complete: false
|
|
7
|
+
created: {date}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Phase {N} — Validation Strategy
|
|
11
|
+
|
|
12
|
+
> Generated by `gsd-phase-researcher` during `/gsd-plan-phase {N}`.
|
|
13
|
+
> Updated by `gsd-plan-checker` after plan approval.
|
|
14
|
+
> Governs feedback sampling during `/gsd-execute-phase {N}`.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Test Infrastructure
|
|
19
|
+
|
|
20
|
+
| Property | Value |
|
|
21
|
+
|----------|-------|
|
|
22
|
+
| **Framework** | {pytest 7.x / jest 29.x / vitest / go test / other} |
|
|
23
|
+
| **Config file** | {path/to/pytest.ini or "none — Wave 0 installs"} |
|
|
24
|
+
| **Quick run command** | `{e.g., pytest -x --tb=short}` |
|
|
25
|
+
| **Full suite command** | `{e.g., pytest tests/ --tb=short}` |
|
|
26
|
+
| **Estimated runtime** | ~{N} seconds |
|
|
27
|
+
| **CI pipeline** | {.github/workflows/test.yml — exists / needs creation} |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Nyquist Sampling Rate
|
|
32
|
+
|
|
33
|
+
> The minimum feedback frequency required to reliably catch errors in this phase.
|
|
34
|
+
|
|
35
|
+
- **After every task commit:** Run `{quick run command}`
|
|
36
|
+
- **After every plan wave:** Run `{full suite command}`
|
|
37
|
+
- **Before `/gsd-verify-work`:** Full suite must be green
|
|
38
|
+
- **Maximum acceptable task feedback latency:** {N} seconds
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Per-task Verification Map
|
|
43
|
+
|
|
44
|
+
| task ID | Plan | Wave | Requirement | Test Type | Automated Command | File Exists | Status |
|
|
45
|
+
|---------|------|------|-------------|-----------|-------------------|-------------|--------|
|
|
46
|
+
| {N}-01-01 | 01 | 1 | REQ-{XX} | unit | `pytest tests/test_{module}.py::test_{name} -x` | ✅ / ❌ W0 | ⬜ pending |
|
|
47
|
+
| {N}-01-02 | 01 | 1 | REQ-{XX} | integration | `pytest tests/test_{flow}.py -x` | ✅ / ❌ W0 | ⬜ pending |
|
|
48
|
+
| {N}-02-01 | 02 | 2 | REQ-{XX} | smoke | `curl -s {endpoint} \| grep {expected}` | ✅ N/A | ⬜ pending |
|
|
49
|
+
|
|
50
|
+
*Status values: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky*
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Wave 0 Requirements
|
|
55
|
+
|
|
56
|
+
> Test scaffolding committed BEFORE any implementation task. Executor runs Wave 0 first.
|
|
57
|
+
|
|
58
|
+
- [ ] `{tests/test_file.py}` — stubs for REQ-{XX}, REQ-{XX}
|
|
59
|
+
- [ ] `{tests/conftest.py}` — shared fixtures
|
|
60
|
+
- [ ] `{framework install}` — if no framework detected
|
|
61
|
+
|
|
62
|
+
*If none required: "Existing infrastructure covers all phase requirements — no Wave 0 test tasks needed."*
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Manual-Only Verifications
|
|
67
|
+
|
|
68
|
+
> Behaviors that genuinely cannot be automated, with justification.
|
|
69
|
+
> These are surfaced during `/gsd-verify-work` UAT.
|
|
70
|
+
|
|
71
|
+
| Behavior | Requirement | Why Manual | Test Instructions |
|
|
72
|
+
|----------|-------------|------------|-------------------|
|
|
73
|
+
| {behavior} | REQ-{XX} | {reason: visual, third-party auth, physical device...} | {step-by-step} |
|
|
74
|
+
|
|
75
|
+
*If none: "All phase behaviors have automated verification coverage."*
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Validation Sign-Off
|
|
80
|
+
|
|
81
|
+
Updated by `gsd-plan-checker` when plans are approved:
|
|
82
|
+
|
|
83
|
+
- [ ] All tasks have `<automated>` verify commands or Wave 0 dependencies
|
|
84
|
+
- [ ] No 3 consecutive implementation tasks without automated verify (sampling continuity)
|
|
85
|
+
- [ ] Wave 0 test files cover all MISSING references
|
|
86
|
+
- [ ] No watch-mode flags in any automated command
|
|
87
|
+
- [ ] Feedback latency per task: < {N}s ✅
|
|
88
|
+
- [ ] `nyquist_compliant: true` set in frontmatter
|
|
89
|
+
|
|
90
|
+
**Plan-checker approval:** {pending / approved on YYYY-MM-DD}
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Execution Tracking
|
|
95
|
+
|
|
96
|
+
Updated during `/gsd-execute-phase {N}`:
|
|
97
|
+
|
|
98
|
+
| Wave | Tasks | Tests Run | Pass | Fail | Sampling Status |
|
|
99
|
+
|------|-------|-----------|------|------|-----------------|
|
|
100
|
+
| 0 | {N} | — | — | — | scaffold |
|
|
101
|
+
| 1 | {N} | {command} | {N} | {N} | ✅ sampled |
|
|
102
|
+
| 2 | {N} | {command} | {N} | {N} | ✅ sampled |
|
|
103
|
+
|
|
104
|
+
**Phase validation complete:** {pending / YYYY-MM-DD HH:MM}
|
|
@@ -15,7 +15,7 @@ Template for `.planning/codebase/STRUCTURE.md` - captures physical file organiza
|
|
|
15
15
|
|
|
16
16
|
## Directory Layout
|
|
17
17
|
|
|
18
|
-
[ASCII tree of top-level directories with purpose]
|
|
18
|
+
[ASCII box-drawing tree of top-level directories with purpose - use ├── └── │ characters for tree structure only]
|
|
19
19
|
|
|
20
20
|
```
|
|
21
21
|
[project-root]/
|
|
@@ -127,7 +127,7 @@ get-shit-done/
|
|
|
127
127
|
├── bin/ # Executable entry points
|
|
128
128
|
├── commands/ # Slash command definitions
|
|
129
129
|
│ └── gsd/ # GSD-specific commands
|
|
130
|
-
├── get-shit-done/ #
|
|
130
|
+
├── get-shit-done/ # skill resources
|
|
131
131
|
│ ├── references/ # Principle documents
|
|
132
132
|
│ ├── templates/ # File templates
|
|
133
133
|
│ └── workflows/ # Multi-step procedures
|
|
@@ -186,14 +186,14 @@ get-shit-done/
|
|
|
186
186
|
|
|
187
187
|
**Documentation:**
|
|
188
188
|
- `README.md` - User-facing installation and usage guide
|
|
189
|
-
- `
|
|
189
|
+
- `OPENCODE.md` - Instructions for OpenCode when working in this repo
|
|
190
190
|
|
|
191
191
|
## Naming Conventions
|
|
192
192
|
|
|
193
193
|
**Files:**
|
|
194
194
|
- kebab-case.md: Markdown documents
|
|
195
195
|
- kebab-case.js: JavaScript source files
|
|
196
|
-
- UPPERCASE.md: Important project files (README,
|
|
196
|
+
- UPPERCASE.md: Important project files (README, OPENCODE, CHANGELOG)
|
|
197
197
|
|
|
198
198
|
**Directories:**
|
|
199
199
|
- kebab-case: All directories
|
|
@@ -247,7 +247,7 @@ get-shit-done/
|
|
|
247
247
|
|
|
248
248
|
<guidelines>
|
|
249
249
|
**What belongs in STRUCTURE.md:**
|
|
250
|
-
- Directory layout (ASCII tree)
|
|
250
|
+
- Directory layout (ASCII box-drawing tree for structure visualization)
|
|
251
251
|
- Purpose of each directory
|
|
252
252
|
- Key file locations (entry points, configs, core logic)
|
|
253
253
|
- Naming conventions
|
|
@@ -267,7 +267,7 @@ get-shit-done/
|
|
|
267
267
|
- Locate entry points, configs, and main logic areas
|
|
268
268
|
- Keep directory tree concise (max 2-3 levels)
|
|
269
269
|
|
|
270
|
-
**ASCII
|
|
270
|
+
**Tree format (ASCII box-drawing characters for structure only):**
|
|
271
271
|
```
|
|
272
272
|
root/
|
|
273
273
|
├── dir1/ # Purpose
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mode": "interactive",
|
|
3
|
+
"depth": "standard",
|
|
4
|
+
"workflow": {
|
|
5
|
+
"research": true,
|
|
6
|
+
"plan_check": true,
|
|
7
|
+
"verifier": true,
|
|
8
|
+
"auto_advance": false,
|
|
9
|
+
"nyquist_validation": false
|
|
10
|
+
},
|
|
11
|
+
"planning": {
|
|
12
|
+
"commit_docs": true,
|
|
13
|
+
"search_gitignored": false
|
|
14
|
+
},
|
|
15
|
+
"parallelization": {
|
|
16
|
+
"enabled": true,
|
|
17
|
+
"plan_level": true,
|
|
18
|
+
"task_level": false,
|
|
19
|
+
"skip_checkpoints": true,
|
|
20
|
+
"max_concurrent_agents": 3,
|
|
21
|
+
"min_plans_for_parallel": 2
|
|
22
|
+
},
|
|
23
|
+
"gates": {
|
|
24
|
+
"confirm_project": true,
|
|
25
|
+
"confirm_phases": true,
|
|
26
|
+
"confirm_roadmap": true,
|
|
27
|
+
"confirm_breakdown": true,
|
|
28
|
+
"confirm_plan": true,
|
|
29
|
+
"execute_next_plan": true,
|
|
30
|
+
"issues_review": true,
|
|
31
|
+
"confirm_transition": true
|
|
32
|
+
},
|
|
33
|
+
"safety": {
|
|
34
|
+
"always_confirm_destructive": true,
|
|
35
|
+
"always_confirm_external_services": true
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Phase Context Template
|
|
2
2
|
|
|
3
|
-
Template for `.planning/phases/XX-name/{
|
|
3
|
+
Template for `.planning/phases/XX-name/{phase_num}-CONTEXT.md` - captures implementation decisions for a phase.
|
|
4
4
|
|
|
5
5
|
**Purpose:** Document decisions that downstream agents need. Researcher uses this to know WHAT to investigate. Planner uses this to know WHAT choices are locked vs flexible.
|
|
6
6
|
|
|
@@ -275,16 +275,8 @@ The output should answer: "What does the researcher need to investigate? What ch
|
|
|
275
275
|
- "Fast and responsive"
|
|
276
276
|
- "Easy to use"
|
|
277
277
|
|
|
278
|
-
**Sections explained:**
|
|
279
|
-
|
|
280
|
-
- **Domain** — The scope anchor. Copied/derived from ROADMAP.md. Fixed boundary.
|
|
281
|
-
- **Decisions** — Organized by areas discussed (NOT predefined categories). Section headers come from the actual discussion — "Layout style", "Flag design", "Grouping criteria", etc.
|
|
282
|
-
- **OpenCode's Discretion** — Explicit acknowledgment of what OpenCode can decide during implementation.
|
|
283
|
-
- **Specifics** — Product references, examples, "like X but..." statements.
|
|
284
|
-
- **Deferred** — Ideas captured but explicitly out of scope. Prevents scope creep while preserving good ideas.
|
|
285
|
-
|
|
286
278
|
**After creation:**
|
|
287
|
-
- File lives in phase directory: `.planning/phases/XX-name/{
|
|
279
|
+
- File lives in phase directory: `.planning/phases/XX-name/{phase_num}-CONTEXT.md`
|
|
288
280
|
- `gsd-phase-researcher` uses decisions to focus investigation
|
|
289
281
|
- `gsd-planner` uses decisions + research to create executable tasks
|
|
290
282
|
- Downstream agents should NOT need to ask the user again about captured decisions
|
|
@@ -20,17 +20,17 @@ last_updated: 2025-01-15T14:30:00Z
|
|
|
20
20
|
<completed_work>
|
|
21
21
|
[What got done this session - be specific]
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
23
|
+
- task 1: [name] - Done
|
|
24
|
+
- task 2: [name] - Done
|
|
25
|
+
- task 3: [name] - In progress, [what's done on it]
|
|
26
26
|
</completed_work>
|
|
27
27
|
|
|
28
28
|
<remaining_work>
|
|
29
29
|
[What's left in this phase]
|
|
30
30
|
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
31
|
+
- task 3: [name] - [what's left to do]
|
|
32
|
+
- task 4: [name] - Not started
|
|
33
|
+
- task 5: [name] - Not started
|
|
34
34
|
</remaining_work>
|
|
35
35
|
|
|
36
36
|
<decisions_made>
|
|
@@ -53,7 +53,7 @@ Create: .planning/debug/{slug}.md
|
|
|
53
53
|
|
|
54
54
|
**From /gsd-debug:**
|
|
55
55
|
```python
|
|
56
|
-
|
|
56
|
+
task(
|
|
57
57
|
prompt=filled_template,
|
|
58
58
|
subagent_type="gsd-debugger",
|
|
59
59
|
description="Debug {slug}"
|
|
@@ -62,7 +62,7 @@ Task(
|
|
|
62
62
|
|
|
63
63
|
**From diagnose-issues (UAT):**
|
|
64
64
|
```python
|
|
65
|
-
|
|
65
|
+
task(prompt=template, subagent_type="gsd-debugger", description="Debug UAT-001")
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
---
|
|
@@ -35,7 +35,7 @@ Output: DISCOVERY.md with recommendation
|
|
|
35
35
|
|
|
36
36
|
<discovery_scope>
|
|
37
37
|
<include>
|
|
38
|
-
- [
|
|
38
|
+
- [question to answer]
|
|
39
39
|
- [Area to investigate]
|
|
40
40
|
- [Specific comparison if needed]
|
|
41
41
|
</include>
|
|
@@ -51,21 +51,21 @@ Output: DISCOVERY.md with recommendation
|
|
|
51
51
|
**Source Priority:**
|
|
52
52
|
1. **Context7 MCP** - For library/framework documentation (current, authoritative)
|
|
53
53
|
2. **Official Docs** - For platform-specific or non-indexed libraries
|
|
54
|
-
3. **
|
|
54
|
+
3. **websearch** - For comparisons, trends, community patterns (verify all findings)
|
|
55
55
|
|
|
56
56
|
**Quality Checklist:**
|
|
57
57
|
Before completing discovery, verify:
|
|
58
58
|
- [ ] All claims have authoritative sources (Context7 or official docs)
|
|
59
59
|
- [ ] Negative claims ("X is not possible") verified with official documentation
|
|
60
|
-
- [ ] API syntax/configuration from Context7 or official docs (never
|
|
61
|
-
- [ ]
|
|
60
|
+
- [ ] API syntax/configuration from Context7 or official docs (never websearch alone)
|
|
61
|
+
- [ ] websearch findings cross-checked with authoritative sources
|
|
62
62
|
- [ ] Recent updates/changelogs checked for breaking changes
|
|
63
63
|
- [ ] Alternative approaches considered (not just first solution found)
|
|
64
64
|
|
|
65
65
|
**Confidence Levels:**
|
|
66
66
|
- HIGH: Context7 or official docs confirm
|
|
67
|
-
- MEDIUM:
|
|
68
|
-
- LOW:
|
|
67
|
+
- MEDIUM: websearch + Context7/official docs confirm
|
|
68
|
+
- LOW: websearch only or training knowledge only (mark for validation)
|
|
69
69
|
|
|
70
70
|
</discovery_protocol>
|
|
71
71
|
|
|
@@ -39,7 +39,7 @@ Plans:
|
|
|
39
39
|
|
|
40
40
|
**For decimal phases, include (INSERTED) marker:**
|
|
41
41
|
|
|
42
|
-
### Phase 2.1: Critical Security
|
|
42
|
+
### Phase 2.1: Critical Security patch (INSERTED)
|
|
43
43
|
|
|
44
44
|
**Goal**: Fix authentication bypass vulnerability
|
|
45
45
|
**Depends on**: Phase 2
|
|
@@ -47,7 +47,7 @@ Plans:
|
|
|
47
47
|
|
|
48
48
|
Plans:
|
|
49
49
|
|
|
50
|
-
- [x] 02.1-01:
|
|
50
|
+
- [x] 02.1-01: patch auth vulnerability
|
|
51
51
|
|
|
52
52
|
**Details:**
|
|
53
53
|
{{PHASE_DETAILS_FROM_ROADMAP}}
|
|
@@ -58,7 +58,7 @@ Plans:
|
|
|
58
58
|
|
|
59
59
|
**Decimal Phases:**
|
|
60
60
|
|
|
61
|
-
- Phase 2.1: Critical Security
|
|
61
|
+
- Phase 2.1: Critical Security patch (inserted after Phase 2 for urgent fix)
|
|
62
62
|
- Phase 5.1: Performance Hotfix (inserted after Phase 5 for production issue)
|
|
63
63
|
|
|
64
64
|
**Key Decisions:**
|
|
@@ -20,6 +20,7 @@ wave: N # Execution wave (1, 2, 3...). Pre-computed at plan
|
|
|
20
20
|
depends_on: [] # Plan IDs this plan requires (e.g., ["01-01"]).
|
|
21
21
|
files_modified: [] # Files this plan modifies.
|
|
22
22
|
autonomous: true # false if plan has checkpoints requiring user interaction
|
|
23
|
+
requirements: [] # REQUIRED — Requirement IDs from ROADMAP this plan addresses. MUST NOT be empty.
|
|
23
24
|
user_setup: [] # Human-required setup OpenCode cannot automate (see below)
|
|
24
25
|
|
|
25
26
|
# Goal-backward verification (derived during planning, verified after execution)
|
|
@@ -60,7 +61,7 @@ Output: [What artifacts will be created]
|
|
|
60
61
|
<tasks>
|
|
61
62
|
|
|
62
63
|
<task type="auto">
|
|
63
|
-
<name>
|
|
64
|
+
<name>task 1: [Action-oriented name]</name>
|
|
64
65
|
<files>path/to/file.ext, another/file.ext</files>
|
|
65
66
|
<action>[Specific implementation - what to do, how to do it, what to avoid and WHY]</action>
|
|
66
67
|
<verify>[Command or check to prove it worked]</verify>
|
|
@@ -68,7 +69,7 @@ Output: [What artifacts will be created]
|
|
|
68
69
|
</task>
|
|
69
70
|
|
|
70
71
|
<task type="auto">
|
|
71
|
-
<name>
|
|
72
|
+
<name>task 2: [Action-oriented name]</name>
|
|
72
73
|
<files>path/to/file.ext</files>
|
|
73
74
|
<action>[Specific implementation]</action>
|
|
74
75
|
<verify>[Command or check]</verify>
|
|
@@ -129,6 +130,7 @@ After completion, create `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md`
|
|
|
129
130
|
| `depends_on` | Yes | Array of plan IDs this plan requires. |
|
|
130
131
|
| `files_modified` | Yes | Files this plan touches. |
|
|
131
132
|
| `autonomous` | Yes | `true` if no checkpoints, `false` if has checkpoints |
|
|
133
|
+
| `requirements` | Yes | **MUST** list requirement IDs from ROADMAP. Every roadmap requirement MUST appear in at least one plan. |
|
|
132
134
|
| `user_setup` | No | Array of human-required setup items (external services) |
|
|
133
135
|
| `must_haves` | Yes | Goal-backward verification criteria (see below) |
|
|
134
136
|
|
|
@@ -272,7 +274,7 @@ See `~/.config/opencode/get-shit-done/references/tdd.md` for TDD plan structure.
|
|
|
272
274
|
|
|
273
275
|
---
|
|
274
276
|
|
|
275
|
-
##
|
|
277
|
+
## task Types
|
|
276
278
|
|
|
277
279
|
| Type | Use For | Autonomy |
|
|
278
280
|
|------|---------|----------|
|
|
@@ -320,7 +322,7 @@ Output: User model, API endpoints, and UI components.
|
|
|
320
322
|
|
|
321
323
|
<tasks>
|
|
322
324
|
<task type="auto">
|
|
323
|
-
<name>
|
|
325
|
+
<name>task 1: Create User model</name>
|
|
324
326
|
<files>src/features/user/model.ts</files>
|
|
325
327
|
<action>Define User type with id, email, name, createdAt. Export TypeScript interface.</action>
|
|
326
328
|
<verify>tsc --noEmit passes</verify>
|
|
@@ -328,7 +330,7 @@ Output: User model, API endpoints, and UI components.
|
|
|
328
330
|
</task>
|
|
329
331
|
|
|
330
332
|
<task type="auto">
|
|
331
|
-
<name>
|
|
333
|
+
<name>task 2: Create User API endpoints</name>
|
|
332
334
|
<files>src/features/user/api.ts</files>
|
|
333
335
|
<action>GET /users (list), GET /users/:id (single), POST /users (create). Use User type from model.</action>
|
|
334
336
|
<verify>curl tests pass for all endpoints</verify>
|
|
@@ -386,7 +388,7 @@ Output: Working dashboard component.
|
|
|
386
388
|
|
|
387
389
|
<tasks>
|
|
388
390
|
<task type="auto">
|
|
389
|
-
<name>
|
|
391
|
+
<name>task 1: Build Dashboard layout</name>
|
|
390
392
|
<files>src/components/Dashboard.tsx</files>
|
|
391
393
|
<action>Create responsive grid with UserList and ProductList components. Use Tailwind for styling.</action>
|
|
392
394
|
<verify>npm run build succeeds</verify>
|
|
@@ -553,7 +555,7 @@ must_haves:
|
|
|
553
555
|
|
|
554
556
|
**Why this matters:**
|
|
555
557
|
|
|
556
|
-
|
|
558
|
+
task completion ≠ Goal achievement. A task "create chat component" can complete by creating a placeholder. The `must_haves` field captures what must actually work, enabling verification to catch gaps before they compound.
|
|
557
559
|
|
|
558
560
|
**Verification flow:**
|
|
559
561
|
|
|
@@ -22,14 +22,14 @@ Template for spawning gsd-planner agent. The agent contains all planning experti
|
|
|
22
22
|
@.planning/REQUIREMENTS.md
|
|
23
23
|
|
|
24
24
|
**Phase Context (if exists):**
|
|
25
|
-
@.planning/phases/{phase_dir}/{
|
|
25
|
+
@.planning/phases/{phase_dir}/{phase_num}-CONTEXT.md
|
|
26
26
|
|
|
27
27
|
**Research (if exists):**
|
|
28
|
-
@.planning/phases/{phase_dir}/{
|
|
28
|
+
@.planning/phases/{phase_dir}/{phase_num}-RESEARCH.md
|
|
29
29
|
|
|
30
30
|
**Gap Closure (if --gaps mode):**
|
|
31
|
-
@.planning/phases/{phase_dir}/{
|
|
32
|
-
@.planning/phases/{phase_dir}/{
|
|
31
|
+
@.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md
|
|
32
|
+
@.planning/phases/{phase_dir}/{phase_num}-UAT.md
|
|
33
33
|
|
|
34
34
|
</planning_context>
|
|
35
35
|
|
|
@@ -70,7 +70,7 @@ Before returning PLANNING COMPLETE:
|
|
|
70
70
|
|
|
71
71
|
**From /gsd-plan-phase (standard mode):**
|
|
72
72
|
```python
|
|
73
|
-
|
|
73
|
+
task(
|
|
74
74
|
prompt=filled_template,
|
|
75
75
|
subagent_type="gsd-planner",
|
|
76
76
|
description="Plan Phase {phase}"
|
|
@@ -79,7 +79,7 @@ Task(
|
|
|
79
79
|
|
|
80
80
|
**From /gsd-plan-phase --gaps (gap closure mode):**
|
|
81
81
|
```python
|
|
82
|
-
|
|
82
|
+
task(
|
|
83
83
|
prompt=filled_template, # with mode: gap_closure
|
|
84
84
|
subagent_type="gsd-planner",
|
|
85
85
|
description="Plan gaps for Phase {phase}"
|
|
@@ -177,7 +177,7 @@ src/
|
|
|
177
177
|
<guidelines>
|
|
178
178
|
|
|
179
179
|
**System Overview:**
|
|
180
|
-
- Use ASCII diagrams for clarity
|
|
180
|
+
- Use ASCII box-drawing diagrams for clarity (├── └── │ ─ for structure visualization only)
|
|
181
181
|
- Show major components and their relationships
|
|
182
182
|
- Don't over-detail — this is conceptual, not implementation
|
|
183
183
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Research Template
|
|
2
2
|
|
|
3
|
-
Template for `.planning/phases/XX-name/{
|
|
3
|
+
Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive ecosystem research before planning.
|
|
4
4
|
|
|
5
5
|
**Purpose:** Document what OpenCode needs to know to implement a phase well - not just "which library" but "how do experts build this."
|
|
6
6
|
|
|
@@ -15,6 +15,29 @@ Template for `.planning/phases/XX-name/{phase}-RESEARCH.md` - comprehensive ecos
|
|
|
15
15
|
**Domain:** [primary technology/problem domain]
|
|
16
16
|
**Confidence:** [HIGH/MEDIUM/LOW]
|
|
17
17
|
|
|
18
|
+
<user_constraints>
|
|
19
|
+
## User Constraints (from CONTEXT.md)
|
|
20
|
+
|
|
21
|
+
**CRITICAL:** If CONTEXT.md exists from /gsd-discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
|
|
22
|
+
|
|
23
|
+
### Locked Decisions
|
|
24
|
+
[Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
|
|
25
|
+
- [Decision 1]
|
|
26
|
+
- [Decision 2]
|
|
27
|
+
|
|
28
|
+
### OpenCode's Discretion
|
|
29
|
+
[Copy from CONTEXT.md - areas where researcher/planner can choose]
|
|
30
|
+
- [Area 1]
|
|
31
|
+
- [Area 2]
|
|
32
|
+
|
|
33
|
+
### Deferred Ideas (OUT OF SCOPE)
|
|
34
|
+
[Copy from CONTEXT.md - do NOT research or plan these]
|
|
35
|
+
- [Deferred 1]
|
|
36
|
+
- [Deferred 2]
|
|
37
|
+
|
|
38
|
+
**If no CONTEXT.md exists:** write "No user constraints - all decisions at OpenCode's discretion"
|
|
39
|
+
</user_constraints>
|
|
40
|
+
|
|
18
41
|
<research_summary>
|
|
19
42
|
## Summary
|
|
20
43
|
|
|
@@ -170,12 +193,12 @@ What's changed recently:
|
|
|
170
193
|
|
|
171
194
|
Things that couldn't be fully resolved:
|
|
172
195
|
|
|
173
|
-
1. **[
|
|
196
|
+
1. **[question]**
|
|
174
197
|
- What we know: [partial info]
|
|
175
198
|
- What's unclear: [the gap]
|
|
176
199
|
- Recommendation: [how to handle during planning/execution]
|
|
177
200
|
|
|
178
|
-
2. **[
|
|
201
|
+
2. **[question]**
|
|
179
202
|
- What we know: [partial info]
|
|
180
203
|
- What's unclear: [the gap]
|
|
181
204
|
- Recommendation: [how to handle]
|
|
@@ -189,10 +212,10 @@ Things that couldn't be fully resolved:
|
|
|
189
212
|
- [Official docs URL] - [what was checked]
|
|
190
213
|
|
|
191
214
|
### Secondary (MEDIUM confidence)
|
|
192
|
-
- [
|
|
215
|
+
- [websearch verified with official source] - [finding + verification]
|
|
193
216
|
|
|
194
217
|
### Tertiary (LOW confidence - needs validation)
|
|
195
|
-
- [
|
|
218
|
+
- [websearch only] - [finding, marked for validation during implementation]
|
|
196
219
|
</sources>
|
|
197
220
|
|
|
198
221
|
<metadata>
|
|
@@ -524,6 +547,6 @@ function useVehicleControls(rigidBodyRef) {
|
|
|
524
547
|
- Code examples can be referenced in task actions
|
|
525
548
|
|
|
526
549
|
**After creation:**
|
|
527
|
-
- File lives in phase directory: `.planning/phases/XX-name/{
|
|
550
|
+
- File lives in phase directory: `.planning/phases/XX-name/{phase_num}-RESEARCH.md`
|
|
528
551
|
- Referenced during planning workflow
|
|
529
552
|
- plan-phase loads it automatically when present
|
|
@@ -29,7 +29,7 @@ Decimal phases appear between their surrounding integers in numeric order.
|
|
|
29
29
|
### Phase 1: [Name]
|
|
30
30
|
**Goal**: [What this phase delivers]
|
|
31
31
|
**Depends on**: Nothing (first phase)
|
|
32
|
-
**Requirements**: [REQ-01, REQ-02, REQ-03]
|
|
32
|
+
**Requirements**: [REQ-01, REQ-02, REQ-03] <!-- brackets optional, parser handles both formats -->
|
|
33
33
|
**Success Criteria** (what must be TRUE):
|
|
34
34
|
1. [Observable behavior from user perspective]
|
|
35
35
|
2. [Observable behavior from user perspective]
|
|
@@ -174,33 +174,3 @@ It's a DIGEST, not an archive. If accumulated context grows too large:
|
|
|
174
174
|
The goal is "read once, know where we are" — if it's too long, that fails.
|
|
175
175
|
|
|
176
176
|
</size_constraint>
|
|
177
|
-
|
|
178
|
-
<guidelines>
|
|
179
|
-
|
|
180
|
-
**When created:**
|
|
181
|
-
- During project initialization (after ROADMAP.md)
|
|
182
|
-
- Reference PROJECT.md (extract core value and current focus)
|
|
183
|
-
- Initialize empty sections
|
|
184
|
-
|
|
185
|
-
**When read:**
|
|
186
|
-
- Every workflow starts by reading STATE.md
|
|
187
|
-
- Then read PROJECT.md for full context
|
|
188
|
-
- Provides instant context restoration
|
|
189
|
-
|
|
190
|
-
**When updated:**
|
|
191
|
-
- After each plan execution (update position, note decisions, update issues/blockers)
|
|
192
|
-
- After phase transitions (update progress bar, clear resolved blockers, refresh project reference)
|
|
193
|
-
|
|
194
|
-
**Size management:**
|
|
195
|
-
- Keep under 100 lines total
|
|
196
|
-
- Recent decisions only in STATE.md (full log in PROJECT.md)
|
|
197
|
-
- Keep only active blockers
|
|
198
|
-
|
|
199
|
-
**Sections:**
|
|
200
|
-
- Project Reference: Pointer to PROJECT.md with core value
|
|
201
|
-
- Current Position: Where we are now (phase, plan, status)
|
|
202
|
-
- Performance Metrics: Velocity tracking
|
|
203
|
-
- Accumulated Context: Recent decisions, pending todos, blockers
|
|
204
|
-
- Session Continuity: Resume information
|
|
205
|
-
|
|
206
|
-
</guidelines>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: XX-name
|
|
3
|
+
plan: YY
|
|
4
|
+
subsystem: [primary category]
|
|
5
|
+
tags: [searchable tech]
|
|
6
|
+
requires:
|
|
7
|
+
- phase: [prior phase]
|
|
8
|
+
provides: [what that phase built]
|
|
9
|
+
provides:
|
|
10
|
+
- [bullet list of what was built/delivered]
|
|
11
|
+
affects: [list of phase names or keywords]
|
|
12
|
+
tech-stack:
|
|
13
|
+
added: [libraries/tools]
|
|
14
|
+
patterns: [architectural/code patterns]
|
|
15
|
+
key-files:
|
|
16
|
+
created: [important files created]
|
|
17
|
+
modified: [important files modified]
|
|
18
|
+
key-decisions:
|
|
19
|
+
- "Decision 1"
|
|
20
|
+
patterns-established:
|
|
21
|
+
- "Pattern 1: description"
|
|
22
|
+
duration: Xmin
|
|
23
|
+
completed: YYYY-MM-DD
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Phase [X]: [Name] Summary (Complex)
|
|
27
|
+
|
|
28
|
+
**[Substantive one-liner describing outcome]**
|
|
29
|
+
|
|
30
|
+
## Performance
|
|
31
|
+
- **Duration:** [time]
|
|
32
|
+
- **Tasks:** [count completed]
|
|
33
|
+
- **Files modified:** [count]
|
|
34
|
+
|
|
35
|
+
## Accomplishments
|
|
36
|
+
- [Key outcome 1]
|
|
37
|
+
- [Key outcome 2]
|
|
38
|
+
|
|
39
|
+
## task Commits
|
|
40
|
+
1. **task 1: [task name]** - `hash`
|
|
41
|
+
2. **task 2: [task name]** - `hash`
|
|
42
|
+
3. **task 3: [task name]** - `hash`
|
|
43
|
+
|
|
44
|
+
## Files Created/Modified
|
|
45
|
+
- `path/to/file.ts` - What it does
|
|
46
|
+
- `path/to/another.ts` - What it does
|
|
47
|
+
|
|
48
|
+
## Decisions Made
|
|
49
|
+
[Key decisions with brief rationale]
|
|
50
|
+
|
|
51
|
+
## Deviations from Plan (Auto-fixed)
|
|
52
|
+
[Detailed auto-fix records per GSD deviation rules]
|
|
53
|
+
|
|
54
|
+
## Issues Encountered
|
|
55
|
+
[Problems during planned work and resolutions]
|
|
56
|
+
|
|
57
|
+
## Next Phase Readiness
|
|
58
|
+
[What's ready for next phase]
|
|
59
|
+
[Blockers or concerns]
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
duration: Xmin
|
|
17
|
+
completed: YYYY-MM-DD
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Phase [X]: [Name] Summary (Minimal)
|
|
21
|
+
|
|
22
|
+
**[Substantive one-liner describing outcome]**
|
|
23
|
+
|
|
24
|
+
## Performance
|
|
25
|
+
- **Duration:** [time]
|
|
26
|
+
- **Tasks:** [count]
|
|
27
|
+
- **Files modified:** [count]
|
|
28
|
+
|
|
29
|
+
## Accomplishments
|
|
30
|
+
- [Most important outcome]
|
|
31
|
+
- [Second key accomplishment]
|
|
32
|
+
|
|
33
|
+
## task Commits
|
|
34
|
+
1. **task 1: [task name]** - `hash`
|
|
35
|
+
2. **task 2: [task name]** - `hash`
|
|
36
|
+
|
|
37
|
+
## Files Created/Modified
|
|
38
|
+
- `path/to/file.ts` - What it does
|
|
39
|
+
|
|
40
|
+
## Next Phase Readiness
|
|
41
|
+
[Ready for next phase]
|