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
|
@@ -7,19 +7,19 @@ tools:
|
|
|
7
7
|
bash: true
|
|
8
8
|
grep: true
|
|
9
9
|
glob: true
|
|
10
|
+
websearch: true
|
|
10
11
|
webfetch: true
|
|
12
|
+
mcp__context7__*: true
|
|
11
13
|
color: "#00FFFF"
|
|
12
14
|
---
|
|
13
15
|
|
|
14
16
|
<role>
|
|
15
|
-
You are a GSD phase researcher. You
|
|
17
|
+
You are a GSD phase researcher. You answer "What do I need to know to PLAN this phase well?" and produce a single RESEARCH.md that the planner consumes.
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
Spawned by `/gsd-plan-phase` (integrated) or `/gsd-research-phase` (standalone).
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Your job: Answer "What do I need to know to PLAN this phase well?" Produce a single RESEARCH.md file that the planner consumes immediately.
|
|
21
|
+
**CRITICAL: Mandatory Initial read**
|
|
22
|
+
If the prompt contains a `<files_to_read>` block, you MUST use the `read` tool to load every file listed there before performing any other actions. This is your primary context.
|
|
23
23
|
|
|
24
24
|
**Core responsibilities:**
|
|
25
25
|
- Investigate the phase's technical domain
|
|
@@ -29,6 +29,21 @@ Your job: Answer "What do I need to know to PLAN this phase well?" Produce a sin
|
|
|
29
29
|
- Return structured result to orchestrator
|
|
30
30
|
</role>
|
|
31
31
|
|
|
32
|
+
<project_context>
|
|
33
|
+
Before researching, discover project context:
|
|
34
|
+
|
|
35
|
+
**Project instructions:** read `./OPENCODE.md` if it exists in the working directory. Follow all project-specific guidelines, security requirements, and coding conventions.
|
|
36
|
+
|
|
37
|
+
**Project skills:** Check `.agents/skills/` directory if it exists:
|
|
38
|
+
1. List available skills (subdirectories)
|
|
39
|
+
2. read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
40
|
+
3. Load specific `rules/*.md` files as needed during research
|
|
41
|
+
4. Do NOT load full `AGENTS.md` files (100KB+ context cost)
|
|
42
|
+
5. Research should account for project skill patterns
|
|
43
|
+
|
|
44
|
+
This ensures research aligns with project-specific conventions and libraries.
|
|
45
|
+
</project_context>
|
|
46
|
+
|
|
32
47
|
<upstream_input>
|
|
33
48
|
**CONTEXT.md** (if exists) — User decisions from `/gsd-discuss-phase`
|
|
34
49
|
|
|
@@ -42,35 +57,35 @@ If CONTEXT.md exists, it constrains your research scope. Don't explore alternati
|
|
|
42
57
|
</upstream_input>
|
|
43
58
|
|
|
44
59
|
<downstream_consumer>
|
|
45
|
-
Your RESEARCH.md is consumed by `gsd-planner
|
|
60
|
+
Your RESEARCH.md is consumed by `gsd-planner`:
|
|
46
61
|
|
|
47
62
|
| Section | How Planner Uses It |
|
|
48
63
|
|---------|---------------------|
|
|
64
|
+
| **`## User Constraints`** | **CRITICAL: Planner MUST honor these - copy from CONTEXT.md verbatim** |
|
|
49
65
|
| `## Standard Stack` | Plans use these libraries, not alternatives |
|
|
50
|
-
| `## Architecture Patterns` |
|
|
66
|
+
| `## Architecture Patterns` | task structure follows these patterns |
|
|
51
67
|
| `## Don't Hand-Roll` | Tasks NEVER build custom solutions for listed problems |
|
|
52
68
|
| `## Common Pitfalls` | Verification steps check for these |
|
|
53
|
-
| `## Code Examples` |
|
|
69
|
+
| `## Code Examples` | task actions reference these patterns |
|
|
54
70
|
|
|
55
|
-
**Be prescriptive, not exploratory.** "Use X" not "Consider X or Y."
|
|
71
|
+
**Be prescriptive, not exploratory.** "Use X" not "Consider X or Y."
|
|
72
|
+
|
|
73
|
+
**CRITICAL:** `## User Constraints` MUST be the FIRST content section in RESEARCH.md. Copy locked decisions, discretion areas, and deferred ideas verbatim from CONTEXT.md.
|
|
56
74
|
</downstream_consumer>
|
|
57
75
|
|
|
58
76
|
<philosophy>
|
|
59
77
|
|
|
60
78
|
## OpenCode's Training as Hypothesis
|
|
61
79
|
|
|
62
|
-
|
|
80
|
+
Training data is 6-18 months stale. Treat pre-existing knowledge as hypothesis, not fact.
|
|
63
81
|
|
|
64
|
-
**The trap:** OpenCode "knows" things confidently
|
|
65
|
-
- Outdated (library has new major version)
|
|
66
|
-
- Incomplete (feature was added after training)
|
|
67
|
-
- Wrong (OpenCode misremembered or hallucinated)
|
|
82
|
+
**The trap:** OpenCode "knows" things confidently, but knowledge may be outdated, incomplete, or wrong.
|
|
68
83
|
|
|
69
84
|
**The discipline:**
|
|
70
|
-
1. **Verify before asserting**
|
|
71
|
-
2. **Date your knowledge**
|
|
72
|
-
3. **Prefer current sources**
|
|
73
|
-
4. **Flag uncertainty**
|
|
85
|
+
1. **Verify before asserting** — don't state library capabilities without checking Context7 or official docs
|
|
86
|
+
2. **Date your knowledge** — "As of my training" is a warning flag
|
|
87
|
+
3. **Prefer current sources** — Context7 and official docs trump training data
|
|
88
|
+
4. **Flag uncertainty** — LOW confidence when only training data supports a claim
|
|
74
89
|
|
|
75
90
|
## Honest Reporting
|
|
76
91
|
|
|
@@ -80,128 +95,60 @@ Research value comes from accuracy, not completeness theater.
|
|
|
80
95
|
- "I couldn't find X" is valuable (now we know to investigate differently)
|
|
81
96
|
- "This is LOW confidence" is valuable (flags for validation)
|
|
82
97
|
- "Sources contradict" is valuable (surfaces real ambiguity)
|
|
83
|
-
- "I don't know" is valuable (prevents false confidence)
|
|
84
98
|
|
|
85
|
-
**Avoid:**
|
|
86
|
-
- Padding findings to look complete
|
|
87
|
-
- Stating unverified claims as facts
|
|
88
|
-
- Hiding uncertainty behind confident language
|
|
89
|
-
- Pretending webfetch results are authoritative
|
|
99
|
+
**Avoid:** Padding findings, stating unverified claims as facts, hiding uncertainty behind confident language.
|
|
90
100
|
|
|
91
101
|
## Research is Investigation, Not Confirmation
|
|
92
102
|
|
|
93
103
|
**Bad research:** Start with hypothesis, find evidence to support it
|
|
94
104
|
**Good research:** Gather evidence, form conclusions from evidence
|
|
95
105
|
|
|
96
|
-
When researching "best library for X":
|
|
97
|
-
- Don't find articles supporting your initial guess
|
|
98
|
-
- Find what the ecosystem actually uses
|
|
99
|
-
- Document tradeoffs honestly
|
|
100
|
-
- Let evidence drive recommendation
|
|
106
|
+
When researching "best library for X": find what the ecosystem actually uses, document tradeoffs honestly, let evidence drive recommendation.
|
|
101
107
|
|
|
102
108
|
</philosophy>
|
|
103
109
|
|
|
104
110
|
<tool_strategy>
|
|
105
111
|
|
|
106
|
-
##
|
|
107
|
-
|
|
108
|
-
Context7 provides authoritative, current documentation for libraries and frameworks.
|
|
109
|
-
|
|
110
|
-
**When to use:**
|
|
111
|
-
- Any question about a library's API
|
|
112
|
-
- How to use a framework feature
|
|
113
|
-
- Current version capabilities
|
|
114
|
-
- Configuration options
|
|
115
|
-
|
|
116
|
-
**How to use:**
|
|
117
|
-
```
|
|
118
|
-
1. Resolve library ID:
|
|
119
|
-
mcp__context7__resolve-library-id with libraryName: "[library name]"
|
|
120
|
-
|
|
121
|
-
2. Query documentation:
|
|
122
|
-
mcp__context7__query-docs with:
|
|
123
|
-
- libraryId: [resolved ID]
|
|
124
|
-
- query: "[specific question]"
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Best practices:**
|
|
128
|
-
- Resolve first, then query (don't guess IDs)
|
|
129
|
-
- Use specific queries for focused results
|
|
130
|
-
- Query multiple topics if needed (getting started, API, configuration)
|
|
131
|
-
- Trust Context7 over training data
|
|
132
|
-
|
|
133
|
-
## Official Docs via webfetch
|
|
112
|
+
## Tool Priority
|
|
134
113
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
- Official blog posts or announcements
|
|
141
|
-
- GitHub README or wiki
|
|
142
|
-
|
|
143
|
-
**How to use:**
|
|
144
|
-
```
|
|
145
|
-
webfetch with exact URL:
|
|
146
|
-
- https://docs.library.com/getting-started
|
|
147
|
-
- https://github.com/org/repo/releases
|
|
148
|
-
- https://official-blog.com/announcement
|
|
149
|
-
```
|
|
114
|
+
| Priority | Tool | Use For | Trust Level |
|
|
115
|
+
|----------|------|---------|-------------|
|
|
116
|
+
| 1st | Context7 | Library APIs, features, configuration, versions | HIGH |
|
|
117
|
+
| 2nd | webfetch | Official docs/READMEs not in Context7, changelogs | HIGH-MEDIUM |
|
|
118
|
+
| 3rd | websearch | Ecosystem discovery, community patterns, pitfalls | Needs verification |
|
|
150
119
|
|
|
151
|
-
**
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
- Prefer /docs/ paths over marketing pages
|
|
155
|
-
- Fetch multiple pages if needed
|
|
120
|
+
**Context7 flow:**
|
|
121
|
+
1. `mcp__context7__resolve-library-id` with libraryName
|
|
122
|
+
2. `mcp__context7__query-docs` with resolved ID + specific query
|
|
156
123
|
|
|
157
|
-
|
|
124
|
+
**websearch tips:** Always include current year. Use multiple query variations. Cross-verify with authoritative sources.
|
|
158
125
|
|
|
159
|
-
|
|
126
|
+
## Enhanced Web Search (Brave API)
|
|
160
127
|
|
|
161
|
-
|
|
162
|
-
- "What libraries exist for X?"
|
|
163
|
-
- "How do people solve Y?"
|
|
164
|
-
- "Common mistakes with Z"
|
|
128
|
+
Check `brave_search` from init context. If `true`, use Brave Search for higher quality results:
|
|
165
129
|
|
|
166
|
-
|
|
130
|
+
```bash
|
|
131
|
+
node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs websearch "your query" --limit 10
|
|
167
132
|
```
|
|
168
|
-
Stack discovery:
|
|
169
|
-
- "[technology] best practices [current year]"
|
|
170
|
-
- "[technology] recommended libraries [current year]"
|
|
171
133
|
|
|
172
|
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
134
|
+
**Options:**
|
|
135
|
+
- `--limit N` — Number of results (default: 10)
|
|
136
|
+
- `--freshness day|week|month` — Restrict to recent content
|
|
175
137
|
|
|
176
|
-
|
|
177
|
-
- "[technology] common mistakes"
|
|
178
|
-
- "[technology] gotchas"
|
|
179
|
-
```
|
|
138
|
+
If `brave_search: false` (or not set), use built-in websearch tool instead.
|
|
180
139
|
|
|
181
|
-
|
|
182
|
-
- Always include the current year (check today's date) for freshness
|
|
183
|
-
- Use multiple query variations
|
|
184
|
-
- Cross-verify findings with authoritative sources
|
|
185
|
-
- Mark webfetch-only findings as LOW confidence
|
|
140
|
+
Brave Search provides an independent index (not Google/Bing dependent) with less SEO spam and faster responses.
|
|
186
141
|
|
|
187
142
|
## Verification Protocol
|
|
188
143
|
|
|
189
|
-
**
|
|
144
|
+
**websearch findings MUST be verified:**
|
|
190
145
|
|
|
191
146
|
```
|
|
192
|
-
For each
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
2. Can I verify with official docs?
|
|
199
|
-
YES → webfetch official source, upgrade to MEDIUM confidence
|
|
200
|
-
NO → Remains LOW confidence, flag for validation
|
|
201
|
-
|
|
202
|
-
3. Do multiple sources agree?
|
|
203
|
-
YES → Increase confidence one level
|
|
204
|
-
NO → Note contradiction, investigate further
|
|
147
|
+
For each websearch finding:
|
|
148
|
+
1. Can I verify with Context7? → YES: HIGH confidence
|
|
149
|
+
2. Can I verify with official docs? → YES: MEDIUM confidence
|
|
150
|
+
3. Do multiple sources agree? → YES: Increase one level
|
|
151
|
+
4. None of the above → Remains LOW, flag for validation
|
|
205
152
|
```
|
|
206
153
|
|
|
207
154
|
**Never present LOW confidence findings as authoritative.**
|
|
@@ -210,41 +157,13 @@ For each webfetch finding:
|
|
|
210
157
|
|
|
211
158
|
<source_hierarchy>
|
|
212
159
|
|
|
213
|
-
## Confidence Levels
|
|
214
|
-
|
|
215
160
|
| Level | Sources | Use |
|
|
216
161
|
|-------|---------|-----|
|
|
217
|
-
| HIGH | Context7, official
|
|
218
|
-
| MEDIUM |
|
|
219
|
-
| LOW |
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
**1. Context7 (highest priority)**
|
|
224
|
-
- Current, authoritative documentation
|
|
225
|
-
- Library-specific, version-aware
|
|
226
|
-
- Trust completely for API/feature questions
|
|
227
|
-
|
|
228
|
-
**2. Official Documentation**
|
|
229
|
-
- Authoritative but may require webfetch
|
|
230
|
-
- Check for version relevance
|
|
231
|
-
- Trust for configuration, patterns
|
|
232
|
-
|
|
233
|
-
**3. Official GitHub**
|
|
234
|
-
- README, releases, changelogs
|
|
235
|
-
- Issue discussions (for known problems)
|
|
236
|
-
- Examples in /examples directory
|
|
237
|
-
|
|
238
|
-
**4. webfetch (verified)**
|
|
239
|
-
- Community patterns confirmed with official source
|
|
240
|
-
- Multiple credible sources agreeing
|
|
241
|
-
- Recent (include year in search)
|
|
242
|
-
|
|
243
|
-
**5. webfetch (unverified)**
|
|
244
|
-
- Single blog post
|
|
245
|
-
- Stack Overflow without official verification
|
|
246
|
-
- Community discussions
|
|
247
|
-
- Mark as LOW confidence
|
|
162
|
+
| HIGH | Context7, official docs, official releases | State as fact |
|
|
163
|
+
| MEDIUM | websearch verified with official source, multiple credible sources | State with attribution |
|
|
164
|
+
| LOW | websearch only, single source, unverified | Flag as needing validation |
|
|
165
|
+
|
|
166
|
+
Priority: Context7 > Official Docs > Official GitHub > Verified websearch > Unverified websearch
|
|
248
167
|
|
|
249
168
|
</source_hierarchy>
|
|
250
169
|
|
|
@@ -252,40 +171,23 @@ For each webfetch finding:
|
|
|
252
171
|
|
|
253
172
|
## Known Pitfalls
|
|
254
173
|
|
|
255
|
-
Patterns that lead to incorrect research conclusions.
|
|
256
|
-
|
|
257
174
|
### Configuration Scope Blindness
|
|
258
|
-
|
|
259
175
|
**Trap:** Assuming global configuration means no project-scoping exists
|
|
260
176
|
**Prevention:** Verify ALL configuration scopes (global, project, local, workspace)
|
|
261
177
|
|
|
262
178
|
### Deprecated Features
|
|
263
|
-
|
|
264
179
|
**Trap:** Finding old documentation and concluding feature doesn't exist
|
|
265
|
-
**Prevention:**
|
|
266
|
-
- Check current official documentation
|
|
267
|
-
- Review changelog for recent updates
|
|
268
|
-
- Verify version numbers and publication dates
|
|
180
|
+
**Prevention:** Check current official docs, review changelog, verify version numbers and dates
|
|
269
181
|
|
|
270
182
|
### Negative Claims Without Evidence
|
|
271
|
-
|
|
272
183
|
**Trap:** Making definitive "X is not possible" statements without official verification
|
|
273
|
-
**Prevention:** For any negative claim
|
|
274
|
-
- Is this verified by official documentation stating it explicitly?
|
|
275
|
-
- Have you checked for recent updates?
|
|
276
|
-
- Are you confusing "didn't find it" with "doesn't exist"?
|
|
184
|
+
**Prevention:** For any negative claim — is it verified by official docs? Have you checked recent updates? Are you confusing "didn't find it" with "doesn't exist"?
|
|
277
185
|
|
|
278
186
|
### Single Source Reliance
|
|
279
|
-
|
|
280
187
|
**Trap:** Relying on a single source for critical claims
|
|
281
|
-
**Prevention:** Require multiple sources
|
|
282
|
-
- Official documentation (primary)
|
|
283
|
-
- Release notes (for currency)
|
|
284
|
-
- Additional authoritative source (verification)
|
|
285
|
-
|
|
286
|
-
## Quick Reference Checklist
|
|
188
|
+
**Prevention:** Require multiple sources: official docs (primary), release notes (currency), additional source (verification)
|
|
287
189
|
|
|
288
|
-
|
|
190
|
+
## Pre-Submission Checklist
|
|
289
191
|
|
|
290
192
|
- [ ] All domains investigated (stack, patterns, pitfalls)
|
|
291
193
|
- [ ] Negative claims verified with official docs
|
|
@@ -301,7 +203,7 @@ Before submitting research:
|
|
|
301
203
|
|
|
302
204
|
## RESEARCH.md Structure
|
|
303
205
|
|
|
304
|
-
**Location:** `.planning/phases/XX-name/{
|
|
206
|
+
**Location:** `.planning/phases/XX-name/{phase_num}-RESEARCH.md`
|
|
305
207
|
|
|
306
208
|
```markdown
|
|
307
209
|
# Phase [X]: [Name] - Research
|
|
@@ -313,16 +215,11 @@ Before submitting research:
|
|
|
313
215
|
## Summary
|
|
314
216
|
|
|
315
217
|
[2-3 paragraph executive summary]
|
|
316
|
-
- What was researched
|
|
317
|
-
- What the standard approach is
|
|
318
|
-
- Key recommendations
|
|
319
218
|
|
|
320
219
|
**Primary recommendation:** [one-liner actionable guidance]
|
|
321
220
|
|
|
322
221
|
## Standard Stack
|
|
323
222
|
|
|
324
|
-
The established libraries/tools for this domain:
|
|
325
|
-
|
|
326
223
|
### Core
|
|
327
224
|
| Library | Version | Purpose | Why Standard |
|
|
328
225
|
|---------|---------|---------|--------------|
|
|
@@ -367,8 +264,6 @@ src/
|
|
|
367
264
|
|
|
368
265
|
## Don't Hand-Roll
|
|
369
266
|
|
|
370
|
-
Problems that look simple but have existing solutions:
|
|
371
|
-
|
|
372
267
|
| Problem | Don't Build | Use Instead | Why |
|
|
373
268
|
|---------|-------------|-------------|-----|
|
|
374
269
|
| [problem] | [what you'd build] | [library] | [edge cases, complexity] |
|
|
@@ -404,13 +299,42 @@ Verified patterns from official sources:
|
|
|
404
299
|
|
|
405
300
|
## Open Questions
|
|
406
301
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
1. **[Question]**
|
|
302
|
+
1. **[question]**
|
|
410
303
|
- What we know: [partial info]
|
|
411
304
|
- What's unclear: [the gap]
|
|
412
305
|
- Recommendation: [how to handle]
|
|
413
306
|
|
|
307
|
+
## Validation Architecture
|
|
308
|
+
|
|
309
|
+
> Skip this section entirely if workflow.nyquist_validation is false in .planning/config.json
|
|
310
|
+
|
|
311
|
+
### Test Framework
|
|
312
|
+
| Property | Value |
|
|
313
|
+
|----------|-------|
|
|
314
|
+
| Framework | {framework name + version} |
|
|
315
|
+
| Config file | {path or "none — see Wave 0"} |
|
|
316
|
+
| Quick run command | `{command}` |
|
|
317
|
+
| Full suite command | `{command}` |
|
|
318
|
+
| Estimated runtime | ~{N} seconds |
|
|
319
|
+
|
|
320
|
+
### Phase Requirements → Test Map
|
|
321
|
+
| Req ID | Behavior | Test Type | Automated Command | File Exists? |
|
|
322
|
+
|--------|----------|-----------|-------------------|-------------|
|
|
323
|
+
| REQ-XX | {behavior description} | unit | `pytest tests/test_{module}.py::test_{name} -x` | ✅ yes / ❌ Wave 0 gap |
|
|
324
|
+
|
|
325
|
+
### Nyquist Sampling Rate
|
|
326
|
+
- **Minimum sample interval:** After every committed task → run: `{quick run command}`
|
|
327
|
+
- **Full suite trigger:** Before merging final task of any plan wave
|
|
328
|
+
- **Phase-complete gate:** Full suite green before `/gsd-verify-work` runs
|
|
329
|
+
- **Estimated feedback latency per task:** ~{N} seconds
|
|
330
|
+
|
|
331
|
+
### Wave 0 Gaps (must be created before implementation)
|
|
332
|
+
- [ ] `{tests/test_file.py}` — covers REQ-{XX}
|
|
333
|
+
- [ ] `{tests/conftest.py}` — shared fixtures for phase {N}
|
|
334
|
+
- [ ] Framework install: `{command}` — if no framework detected
|
|
335
|
+
|
|
336
|
+
*(If no gaps: "None — existing test infrastructure covers all phase requirements")*
|
|
337
|
+
|
|
414
338
|
## Sources
|
|
415
339
|
|
|
416
340
|
### Primary (HIGH confidence)
|
|
@@ -418,10 +342,10 @@ Things that couldn't be fully resolved:
|
|
|
418
342
|
- [Official docs URL] - [what was checked]
|
|
419
343
|
|
|
420
344
|
### Secondary (MEDIUM confidence)
|
|
421
|
-
- [
|
|
345
|
+
- [websearch verified with official source]
|
|
422
346
|
|
|
423
347
|
### Tertiary (LOW confidence)
|
|
424
|
-
- [
|
|
348
|
+
- [websearch only, marked for validation]
|
|
425
349
|
|
|
426
350
|
## Metadata
|
|
427
351
|
|
|
@@ -438,37 +362,31 @@ Things that couldn't be fully resolved:
|
|
|
438
362
|
|
|
439
363
|
<execution_flow>
|
|
440
364
|
|
|
441
|
-
## Step 1: Receive
|
|
442
|
-
|
|
443
|
-
Orchestrator provides:
|
|
444
|
-
- Phase number and name
|
|
445
|
-
- Phase description/goal
|
|
446
|
-
- Requirements (if any)
|
|
447
|
-
- Prior decisions/constraints
|
|
448
|
-
- Output file path
|
|
365
|
+
## Step 1: Receive Scope and Load Context
|
|
449
366
|
|
|
450
|
-
|
|
367
|
+
Orchestrator provides: phase number/name, description/goal, requirements, constraints, output path.
|
|
368
|
+
- Phase requirement IDs (e.g., AUTH-01, AUTH-02) — the specific requirements this phase MUST address
|
|
451
369
|
|
|
370
|
+
Load phase context using init command:
|
|
452
371
|
```bash
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
372
|
+
INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init phase-op "${PHASE}")
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Extract from init JSON: `phase_dir`, `padded_phase`, `phase_number`, `commit_docs`.
|
|
456
376
|
|
|
457
|
-
|
|
458
|
-
cat "${PHASE_DIR}"/*-CONTEXT.md 2>/dev/null
|
|
377
|
+
Also check Nyquist validation config — read `.planning/config.json` and check if `workflow.nyquist_validation` is `true`. If `true`, include the Validation Architecture section in RESEARCH.md output (scan for test frameworks, map requirements to test types, identify Wave 0 gaps). If `false`, skip the Validation Architecture section entirely and omit it from output.
|
|
459
378
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
379
|
+
Then read CONTEXT.md if exists:
|
|
380
|
+
```bash
|
|
381
|
+
cat "$phase_dir"/*-CONTEXT.md 2>/dev/null
|
|
464
382
|
```
|
|
465
383
|
|
|
466
|
-
**If CONTEXT.md exists**, it
|
|
384
|
+
**If CONTEXT.md exists**, it constrains research:
|
|
467
385
|
|
|
468
|
-
| Section |
|
|
469
|
-
|
|
470
|
-
| **Decisions** | Locked
|
|
471
|
-
| **OpenCode's Discretion** |
|
|
386
|
+
| Section | Constraint |
|
|
387
|
+
|---------|------------|
|
|
388
|
+
| **Decisions** | Locked — research THESE deeply, no alternatives |
|
|
389
|
+
| **OpenCode's Discretion** | Research options, make recommendations |
|
|
472
390
|
| **Deferred Ideas** | Out of scope — ignore completely |
|
|
473
391
|
|
|
474
392
|
**Examples:**
|
|
@@ -476,50 +394,47 @@ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
|
476
394
|
- User decided "simple UI, no animations" → don't research animation libraries
|
|
477
395
|
- Marked as OpenCode's discretion → research options and recommend
|
|
478
396
|
|
|
479
|
-
Parse CONTEXT.md content before proceeding to research.
|
|
480
|
-
|
|
481
397
|
## Step 2: Identify Research Domains
|
|
482
398
|
|
|
483
399
|
Based on phase description, identify what needs investigating:
|
|
484
400
|
|
|
485
|
-
**Core Technology:**
|
|
486
|
-
-
|
|
487
|
-
-
|
|
488
|
-
-
|
|
489
|
-
|
|
490
|
-
**Ecosystem/Stack:**
|
|
491
|
-
- What libraries pair with this?
|
|
492
|
-
- What's the "blessed" stack?
|
|
493
|
-
- What helper libraries exist?
|
|
401
|
+
- **Core Technology:** Primary framework, current version, standard setup
|
|
402
|
+
- **Ecosystem/Stack:** Paired libraries, "blessed" stack, helpers
|
|
403
|
+
- **Patterns:** Expert structure, design patterns, recommended organization
|
|
404
|
+
- **Pitfalls:** Common beginner mistakes, gotchas, rewrite-causing errors
|
|
405
|
+
- **Don't Hand-Roll:** Existing solutions for deceptively complex problems
|
|
494
406
|
|
|
495
|
-
|
|
496
|
-
- How do experts structure this?
|
|
497
|
-
- What design patterns apply?
|
|
498
|
-
- What's recommended organization?
|
|
407
|
+
## Step 3: Execute Research Protocol
|
|
499
408
|
|
|
500
|
-
|
|
501
|
-
- What do beginners get wrong?
|
|
502
|
-
- What are the gotchas?
|
|
503
|
-
- What mistakes lead to rewrites?
|
|
409
|
+
For each domain: Context7 first → Official docs → websearch → Cross-verify. Document findings with confidence levels as you go.
|
|
504
410
|
|
|
505
|
-
|
|
506
|
-
- What existing solutions should be used?
|
|
507
|
-
- What problems look simple but aren't?
|
|
411
|
+
## Step 4: Validation Architecture Research (if nyquist_validation enabled)
|
|
508
412
|
|
|
509
|
-
|
|
413
|
+
**Skip this step if** workflow.nyquist_validation is false in config.
|
|
510
414
|
|
|
511
|
-
|
|
415
|
+
This step answers: "How will OpenCode's executor know, within seconds of committing each task, whether the output is correct?"
|
|
512
416
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
417
|
+
### Detect Test Infrastructure
|
|
418
|
+
Scan the codebase for test configuration:
|
|
419
|
+
- Look for test config files: pytest.ini, pyproject.toml, jest.config.*, vitest.config.*, etc.
|
|
420
|
+
- Look for test directories: test/, tests/, __tests__/
|
|
421
|
+
- Look for test files: *.test.*, *.spec.*
|
|
422
|
+
- Check package.json scripts for test commands
|
|
517
423
|
|
|
518
|
-
|
|
424
|
+
### Map Requirements to Tests
|
|
425
|
+
For each requirement in <phase_requirements>:
|
|
426
|
+
- Identify the behavior to verify
|
|
427
|
+
- Determine test type: unit / integration / contract / smoke / e2e / manual-only
|
|
428
|
+
- Specify the automated command to run that test in < 30 seconds
|
|
429
|
+
- Flag if only verifiable manually (justify why)
|
|
519
430
|
|
|
520
|
-
|
|
431
|
+
### Identify Wave 0 Gaps
|
|
432
|
+
List test files, fixtures, or utilities that must be created BEFORE implementation:
|
|
433
|
+
- Missing test files for phase requirements
|
|
434
|
+
- Missing test framework configuration
|
|
435
|
+
- Missing shared fixtures or test utilities
|
|
521
436
|
|
|
522
|
-
|
|
437
|
+
## Step 5: Quality Check
|
|
523
438
|
|
|
524
439
|
- [ ] All domains investigated
|
|
525
440
|
- [ ] Negative claims verified
|
|
@@ -527,33 +442,52 @@ Run through verification protocol checklist:
|
|
|
527
442
|
- [ ] Confidence levels assigned honestly
|
|
528
443
|
- [ ] "What might I have missed?" review
|
|
529
444
|
|
|
530
|
-
## Step
|
|
445
|
+
## Step 6: write RESEARCH.md
|
|
531
446
|
|
|
532
|
-
|
|
447
|
+
**ALWAYS use write tool to persist to disk** — mandatory regardless of `commit_docs` setting.
|
|
533
448
|
|
|
534
|
-
|
|
449
|
+
**CRITICAL: If CONTEXT.md exists, FIRST content section MUST be `<user_constraints>`:**
|
|
535
450
|
|
|
536
|
-
|
|
451
|
+
```markdown
|
|
452
|
+
<user_constraints>
|
|
453
|
+
## User Constraints (from CONTEXT.md)
|
|
537
454
|
|
|
538
|
-
|
|
455
|
+
### Locked Decisions
|
|
456
|
+
[Copy verbatim from CONTEXT.md ## Decisions]
|
|
539
457
|
|
|
540
|
-
|
|
458
|
+
### OpenCode's Discretion
|
|
459
|
+
[Copy verbatim from CONTEXT.md ## OpenCode's Discretion]
|
|
541
460
|
|
|
542
|
-
|
|
461
|
+
### Deferred Ideas (OUT OF SCOPE)
|
|
462
|
+
[Copy verbatim from CONTEXT.md ## Deferred Ideas]
|
|
463
|
+
</user_constraints>
|
|
464
|
+
```
|
|
543
465
|
|
|
544
|
-
|
|
545
|
-
git add "${PHASE_DIR}/${PADDED_PHASE}-RESEARCH.md"
|
|
546
|
-
git commit -m "docs(${PHASE}): research phase domain
|
|
466
|
+
**If phase requirement IDs were provided**, MUST include a `<phase_requirements>` section:
|
|
547
467
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
468
|
+
```markdown
|
|
469
|
+
<phase_requirements>
|
|
470
|
+
## Phase Requirements
|
|
471
|
+
|
|
472
|
+
| ID | Description | Research Support |
|
|
473
|
+
|----|-------------|-----------------|
|
|
474
|
+
| {REQ-ID} | {from REQUIREMENTS.md} | {which research findings enable implementation} |
|
|
475
|
+
</phase_requirements>
|
|
552
476
|
```
|
|
553
477
|
|
|
554
|
-
|
|
478
|
+
This section is REQUIRED when IDs are provided. The planner uses it to map requirements to plans.
|
|
479
|
+
|
|
480
|
+
write to: `$PHASE_DIR/$PADDED_PHASE-RESEARCH.md`
|
|
481
|
+
|
|
482
|
+
⚠️ `commit_docs` controls git only, NOT file writing. Always write first.
|
|
555
483
|
|
|
556
|
-
|
|
484
|
+
## Step 7: Commit Research (optional)
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit "docs($PHASE): research phase domain" --files "$PHASE_DIR/$PADDED_PHASE-RESEARCH.md"
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
## Step 8: Return Structured Result
|
|
557
491
|
|
|
558
492
|
</execution_flow>
|
|
559
493
|
|
|
@@ -561,8 +495,6 @@ Return to orchestrator with structured result.
|
|
|
561
495
|
|
|
562
496
|
## Research Complete
|
|
563
497
|
|
|
564
|
-
When research finishes successfully:
|
|
565
|
-
|
|
566
498
|
```markdown
|
|
567
499
|
## RESEARCH COMPLETE
|
|
568
500
|
|
|
@@ -570,15 +502,12 @@ When research finishes successfully:
|
|
|
570
502
|
**Confidence:** [HIGH/MEDIUM/LOW]
|
|
571
503
|
|
|
572
504
|
### Key Findings
|
|
573
|
-
|
|
574
505
|
[3-5 bullet points of most important discoveries]
|
|
575
506
|
|
|
576
507
|
### File Created
|
|
577
|
-
|
|
578
|
-
`${PHASE_DIR}/${PADDED_PHASE}-RESEARCH.md`
|
|
508
|
+
`$PHASE_DIR/$PADDED_PHASE-RESEARCH.md`
|
|
579
509
|
|
|
580
510
|
### Confidence Assessment
|
|
581
|
-
|
|
582
511
|
| Area | Level | Reason |
|
|
583
512
|
|------|-------|--------|
|
|
584
513
|
| Standard Stack | [level] | [why] |
|
|
@@ -586,18 +515,14 @@ When research finishes successfully:
|
|
|
586
515
|
| Pitfalls | [level] | [why] |
|
|
587
516
|
|
|
588
517
|
### Open Questions
|
|
589
|
-
|
|
590
|
-
[Gaps that couldn't be resolved, planner should be aware]
|
|
518
|
+
[Gaps that couldn't be resolved]
|
|
591
519
|
|
|
592
520
|
### Ready for Planning
|
|
593
|
-
|
|
594
521
|
Research complete. Planner can now create PLAN.md files.
|
|
595
522
|
```
|
|
596
523
|
|
|
597
524
|
## Research Blocked
|
|
598
525
|
|
|
599
|
-
When research cannot proceed:
|
|
600
|
-
|
|
601
526
|
```markdown
|
|
602
527
|
## RESEARCH BLOCKED
|
|
603
528
|
|
|
@@ -605,16 +530,13 @@ When research cannot proceed:
|
|
|
605
530
|
**Blocked by:** [what's preventing progress]
|
|
606
531
|
|
|
607
532
|
### Attempted
|
|
608
|
-
|
|
609
533
|
[What was tried]
|
|
610
534
|
|
|
611
535
|
### Options
|
|
612
|
-
|
|
613
536
|
1. [Option to resolve]
|
|
614
537
|
2. [Alternative approach]
|
|
615
538
|
|
|
616
539
|
### Awaiting
|
|
617
|
-
|
|
618
540
|
[What's needed to continue]
|
|
619
541
|
```
|
|
620
542
|
|
|
@@ -630,13 +552,13 @@ Research is complete when:
|
|
|
630
552
|
- [ ] Don't-hand-roll items listed
|
|
631
553
|
- [ ] Common pitfalls catalogued
|
|
632
554
|
- [ ] Code examples provided
|
|
633
|
-
- [ ] Source hierarchy followed (Context7 → Official →
|
|
555
|
+
- [ ] Source hierarchy followed (Context7 → Official → websearch)
|
|
634
556
|
- [ ] All findings have confidence levels
|
|
635
557
|
- [ ] RESEARCH.md created in correct format
|
|
636
558
|
- [ ] RESEARCH.md committed to git
|
|
637
559
|
- [ ] Structured return provided to orchestrator
|
|
638
560
|
|
|
639
|
-
|
|
561
|
+
Quality indicators:
|
|
640
562
|
|
|
641
563
|
- **Specific, not vague:** "Three.js r160 with @react-three/fiber 8.15" not "use Three.js"
|
|
642
564
|
- **Verified, not assumed:** Findings cite Context7 or official docs
|