gsd-opencode 1.20.3 → 1.22.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 +9 -1
- package/agents/gsd-debugger.md +66 -10
- package/agents/gsd-executor.md +36 -16
- package/agents/gsd-integration-checker.md +2 -0
- package/agents/gsd-nyquist-auditor.md +178 -0
- package/agents/gsd-phase-researcher.md +28 -34
- package/agents/gsd-plan-checker.md +42 -78
- package/agents/gsd-planner.md +139 -24
- package/agents/gsd-project-researcher.md +11 -1
- package/agents/gsd-research-synthesizer.md +13 -3
- package/agents/gsd-roadmapper.md +25 -15
- package/agents/gsd-verifier.md +29 -6
- package/bin/dm/lib/constants.js +6 -1
- package/bin/dm/src/services/file-ops.js +14 -1
- package/commands/gsd/gsd-add-phase.md +6 -6
- package/commands/gsd/gsd-add-tests.md +41 -0
- package/commands/gsd/gsd-add-todo.md +7 -7
- package/commands/gsd/gsd-audit-milestone.md +9 -9
- package/commands/gsd/gsd-check-profile.md +3 -3
- package/commands/gsd/gsd-check-todos.md +7 -7
- package/commands/gsd/gsd-cleanup.md +2 -2
- package/commands/gsd/gsd-complete-milestone.md +6 -6
- package/commands/gsd/gsd-debug.md +11 -7
- package/commands/gsd/gsd-discuss-phase.md +26 -19
- package/commands/gsd/gsd-execute-phase.md +13 -13
- package/commands/gsd/gsd-health.md +7 -7
- package/commands/gsd/gsd-help.md +2 -2
- package/commands/gsd/gsd-insert-phase.md +6 -6
- package/commands/gsd/gsd-join-discord.md +1 -1
- package/commands/gsd/gsd-list-phase-assumptions.md +6 -6
- package/commands/gsd/gsd-map-codebase.md +8 -8
- package/commands/gsd/gsd-new-milestone.md +12 -12
- package/commands/gsd/gsd-new-project.md +12 -12
- package/commands/gsd/gsd-pause-work.md +6 -6
- package/commands/gsd/gsd-plan-milestone-gaps.md +9 -9
- package/commands/gsd/gsd-plan-phase.md +14 -13
- package/commands/gsd/gsd-progress.md +8 -8
- package/commands/gsd/gsd-quick.md +17 -13
- package/commands/gsd/gsd-reapply-patches.md +19 -11
- package/commands/gsd/gsd-remove-phase.md +7 -7
- package/commands/gsd/gsd-research-phase.md +12 -11
- package/commands/gsd/gsd-resume-work.md +8 -8
- package/commands/gsd/gsd-set-profile.md +6 -6
- package/commands/gsd/gsd-settings.md +7 -7
- package/commands/gsd/gsd-update.md +5 -5
- package/commands/gsd/gsd-validate-phase.md +35 -0
- package/commands/gsd/gsd-verify-work.md +11 -11
- package/get-shit-done/bin/gsd-oc-commands/allow-read-config.cjs +235 -0
- package/get-shit-done/bin/gsd-oc-tools.cjs +11 -5
- package/get-shit-done/bin/gsd-tools.cjs +45 -6
- package/get-shit-done/bin/lib/commands.cjs +11 -19
- package/get-shit-done/bin/lib/config.cjs +8 -1
- package/get-shit-done/bin/lib/core.cjs +131 -16
- package/get-shit-done/bin/lib/init.cjs +28 -12
- package/get-shit-done/bin/lib/milestone.cjs +34 -8
- package/get-shit-done/bin/lib/phase.cjs +74 -50
- package/get-shit-done/bin/lib/roadmap.cjs +7 -7
- package/get-shit-done/bin/lib/state.cjs +294 -63
- package/get-shit-done/bin/lib/template.cjs +3 -3
- package/get-shit-done/bin/lib/verify.cjs +56 -8
- package/get-shit-done/bin/test/allow-read-config.test.cjs +262 -0
- package/get-shit-done/references/checkpoints.md +1 -1
- package/get-shit-done/references/decimal-phase-calculation.md +6 -6
- package/get-shit-done/references/git-integration.md +3 -3
- package/get-shit-done/references/git-planning-commit.md +2 -2
- package/get-shit-done/references/model-profile-resolution.md +1 -1
- package/get-shit-done/references/model-profiles.md +1 -0
- package/get-shit-done/references/phase-argument-parsing.md +4 -4
- package/get-shit-done/references/planning-config.md +10 -6
- package/get-shit-done/references/questioning.md +17 -0
- package/get-shit-done/references/verification-patterns.md +1 -1
- package/get-shit-done/templates/DEBUG.md +7 -2
- package/get-shit-done/templates/VALIDATION.md +18 -46
- package/get-shit-done/templates/codebase/structure.md +3 -3
- package/get-shit-done/templates/config.json +2 -2
- package/get-shit-done/templates/context.md +14 -0
- package/get-shit-done/templates/phase-prompt.md +10 -10
- package/get-shit-done/templates/retrospective.md +54 -0
- package/get-shit-done/templates/roadmap.md +1 -1
- package/get-shit-done/workflows/add-phase.md +3 -2
- package/get-shit-done/workflows/add-tests.md +351 -0
- package/get-shit-done/workflows/add-todo.md +4 -3
- package/get-shit-done/workflows/audit-milestone.md +40 -5
- package/get-shit-done/workflows/check-todos.md +3 -2
- package/get-shit-done/workflows/cleanup.md +1 -1
- package/get-shit-done/workflows/complete-milestone.md +69 -5
- package/get-shit-done/workflows/diagnose-issues.md +2 -2
- package/get-shit-done/workflows/discovery-phase.md +6 -6
- package/get-shit-done/workflows/discuss-phase.md +194 -58
- package/get-shit-done/workflows/execute-phase.md +29 -23
- package/get-shit-done/workflows/execute-plan.md +22 -18
- package/get-shit-done/workflows/health.md +5 -2
- package/get-shit-done/workflows/help.md +4 -1
- package/get-shit-done/workflows/insert-phase.md +3 -2
- package/get-shit-done/workflows/map-codebase.md +3 -2
- package/get-shit-done/workflows/new-milestone.md +12 -10
- package/get-shit-done/workflows/new-project.md +44 -49
- package/get-shit-done/workflows/oc-set-profile.md +24 -0
- package/get-shit-done/workflows/pause-work.md +2 -2
- package/get-shit-done/workflows/plan-milestone-gaps.md +3 -3
- package/get-shit-done/workflows/plan-phase.md +155 -73
- package/get-shit-done/workflows/progress.md +8 -7
- package/get-shit-done/workflows/quick.md +158 -10
- package/get-shit-done/workflows/remove-phase.md +5 -4
- package/get-shit-done/workflows/research-phase.md +5 -4
- package/get-shit-done/workflows/resume-project.md +3 -2
- package/get-shit-done/workflows/set-profile.md +3 -2
- package/get-shit-done/workflows/settings.md +6 -6
- package/get-shit-done/workflows/transition.md +5 -5
- package/get-shit-done/workflows/update.md +45 -19
- package/get-shit-done/workflows/validate-phase.md +167 -0
- package/get-shit-done/workflows/verify-phase.md +10 -9
- package/get-shit-done/workflows/verify-work.md +18 -4
- package/package.json +1 -1
|
@@ -65,8 +65,8 @@ Gap: Flow "View dashboard" broken at data fetch
|
|
|
65
65
|
Find highest existing phase:
|
|
66
66
|
```bash
|
|
67
67
|
# Get sorted phase list, extract last one
|
|
68
|
-
PHASES=$(node
|
|
69
|
-
HIGHEST=$(
|
|
68
|
+
PHASES=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" phases list)
|
|
69
|
+
HIGHEST=$(printf '%s\n' "$PHASES" | jq -r '.directories[-1]')
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
New phases continue from there:
|
|
@@ -147,7 +147,7 @@ mkdir -p ".planning/phases/{NN}-{name}"
|
|
|
147
147
|
## 9. Commit Roadmap and Requirements Update
|
|
148
148
|
|
|
149
149
|
```bash
|
|
150
|
-
node
|
|
150
|
+
node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs(roadmap): add gap closure phases {N}-{M}" --files .planning/ROADMAP.md .planning/REQUIREMENTS.md
|
|
151
151
|
```
|
|
152
152
|
|
|
153
153
|
## 10. Offer Next Steps
|
|
@@ -5,7 +5,7 @@ Create executable phase prompts (PLAN.md files) for a roadmap phase with integra
|
|
|
5
5
|
<required_reading>
|
|
6
6
|
read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
@$HOME/.config/opencode/get-shit-done/references/ui-brand.md
|
|
9
9
|
</required_reading>
|
|
10
10
|
|
|
11
11
|
<process>
|
|
@@ -15,10 +15,11 @@ read all files referenced by the invoking prompt's execution_context before star
|
|
|
15
15
|
Load all context in one call (paths only to minimize orchestrator context):
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
INIT=$(node
|
|
18
|
+
INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init plan-phase "$PHASE")
|
|
19
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
19
20
|
```
|
|
20
21
|
|
|
21
|
-
Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `nyquist_validation_enabled`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `plan_count`, `planning_exists`, `roadmap_exists`.
|
|
22
|
+
Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `nyquist_validation_enabled`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `plan_count`, `planning_exists`, `roadmap_exists`, `phase_req_ids`.
|
|
22
23
|
|
|
23
24
|
**File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`. These are null if files don't exist.
|
|
24
25
|
|
|
@@ -26,7 +27,9 @@ Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_
|
|
|
26
27
|
|
|
27
28
|
## 2. Parse and Normalize Arguments
|
|
28
29
|
|
|
29
|
-
Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--gaps`, `--skip-verify
|
|
30
|
+
Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--gaps`, `--skip-verify`, `--prd <filepath>`).
|
|
31
|
+
|
|
32
|
+
Extract `--prd <filepath>` from $ARGUMENTS. If present, set PRD_FILE to the filepath.
|
|
30
33
|
|
|
31
34
|
**If no phase number:** Detect next unplanned phase from roadmap.
|
|
32
35
|
|
|
@@ -40,13 +43,103 @@ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
|
|
|
40
43
|
## 3. Validate Phase
|
|
41
44
|
|
|
42
45
|
```bash
|
|
43
|
-
PHASE_INFO=$(node
|
|
46
|
+
PHASE_INFO=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "${PHASE}")
|
|
44
47
|
```
|
|
45
48
|
|
|
46
49
|
**If `found` is false:** Error with available phases. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
|
|
47
50
|
|
|
51
|
+
## 3.5. Handle PRD Express Path
|
|
52
|
+
|
|
53
|
+
**Skip if:** No `--prd` flag in arguments.
|
|
54
|
+
|
|
55
|
+
**If `--prd <filepath>` provided:**
|
|
56
|
+
|
|
57
|
+
1. read the PRD file:
|
|
58
|
+
```bash
|
|
59
|
+
PRD_CONTENT=$(cat "$PRD_FILE" 2>/dev/null)
|
|
60
|
+
if [ -z "$PRD_CONTENT" ]; then
|
|
61
|
+
echo "Error: PRD file not found: $PRD_FILE"
|
|
62
|
+
exit 1
|
|
63
|
+
fi
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
2. Display banner:
|
|
67
|
+
```
|
|
68
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
69
|
+
GSD ► PRD EXPRESS PATH
|
|
70
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
71
|
+
|
|
72
|
+
Using PRD: {PRD_FILE}
|
|
73
|
+
Generating CONTEXT.md from requirements...
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
3. Parse the PRD content and generate CONTEXT.md. The orchestrator should:
|
|
77
|
+
- Extract all requirements, user stories, acceptance criteria, and constraints from the PRD
|
|
78
|
+
- Map each to a locked decision (everything in the PRD is treated as a locked decision)
|
|
79
|
+
- Identify any areas the PRD doesn't cover and mark as "OpenCode's Discretion"
|
|
80
|
+
- Create CONTEXT.md in the phase directory
|
|
81
|
+
|
|
82
|
+
4. write CONTEXT.md:
|
|
83
|
+
```markdown
|
|
84
|
+
# Phase [X]: [Name] - Context
|
|
85
|
+
|
|
86
|
+
**Gathered:** [date]
|
|
87
|
+
**Status:** Ready for planning
|
|
88
|
+
**Source:** PRD Express Path ({PRD_FILE})
|
|
89
|
+
|
|
90
|
+
<domain>
|
|
91
|
+
## Phase Boundary
|
|
92
|
+
|
|
93
|
+
[Extracted from PRD — what this phase delivers]
|
|
94
|
+
|
|
95
|
+
</domain>
|
|
96
|
+
|
|
97
|
+
<decisions>
|
|
98
|
+
## Implementation Decisions
|
|
99
|
+
|
|
100
|
+
{For each requirement/story/criterion in the PRD:}
|
|
101
|
+
### [Category derived from content]
|
|
102
|
+
- [Requirement as locked decision]
|
|
103
|
+
|
|
104
|
+
### OpenCode's Discretion
|
|
105
|
+
[Areas not covered by PRD — implementation details, technical choices]
|
|
106
|
+
|
|
107
|
+
</decisions>
|
|
108
|
+
|
|
109
|
+
<specifics>
|
|
110
|
+
## Specific Ideas
|
|
111
|
+
|
|
112
|
+
[Any specific references, examples, or concrete requirements from PRD]
|
|
113
|
+
|
|
114
|
+
</specifics>
|
|
115
|
+
|
|
116
|
+
<deferred>
|
|
117
|
+
## Deferred Ideas
|
|
118
|
+
|
|
119
|
+
[Items in PRD explicitly marked as future/v2/out-of-scope]
|
|
120
|
+
[If none: "None — PRD covers phase scope"]
|
|
121
|
+
|
|
122
|
+
</deferred>
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
*Phase: XX-name*
|
|
127
|
+
*Context gathered: [date] via PRD Express Path*
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
5. Commit:
|
|
131
|
+
```bash
|
|
132
|
+
node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs(${padded_phase}): generate context from PRD" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
6. Set `context_content` to the generated CONTEXT.md content and continue to step 5 (Handle Research).
|
|
136
|
+
|
|
137
|
+
**Effect:** This completely bypasses step 4 (Load CONTEXT.md) since we just created it. The rest of the workflow (research, planning, verification) proceeds normally with the PRD-derived context.
|
|
138
|
+
|
|
48
139
|
## 4. Load CONTEXT.md
|
|
49
140
|
|
|
141
|
+
**Skip if:** PRD express path was used (CONTEXT.md already created in step 3.5).
|
|
142
|
+
|
|
50
143
|
Check `context_path` from init JSON.
|
|
51
144
|
|
|
52
145
|
If `context_path` is not null, display: `Using phase context from: ${context_path}`
|
|
@@ -83,8 +176,7 @@ Display banner:
|
|
|
83
176
|
### Spawn gsd-phase-researcher
|
|
84
177
|
|
|
85
178
|
```bash
|
|
86
|
-
PHASE_DESC=$(node
|
|
87
|
-
PHASE_REQ_IDS=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${PHASE}" | jq -r '.section // empty' | grep -i "Requirements:" | head -1 | sed 's/.*Requirements:\*\*\s*//' | sed 's/[\[\]]//g' | tr ',' '\n' | sed 's/^ *//;s/ *$//' | grep -v '^$' | tr '\n' ',' | sed 's/,$//')
|
|
179
|
+
PHASE_DESC=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "${PHASE}" | jq -r '.section')
|
|
88
180
|
```
|
|
89
181
|
|
|
90
182
|
Research prompt:
|
|
@@ -106,7 +198,7 @@ Answer: "What do I need to know to PLAN this phase well?"
|
|
|
106
198
|
**Phase requirement IDs (MUST address):** {phase_req_ids}
|
|
107
199
|
|
|
108
200
|
**Project instructions:** read ./AGENTS.md if exists — follow project-specific guidelines
|
|
109
|
-
**Project skills:** Check .agents/skills/ directory (if exists) — read SKILL.md files, research should account for project skill patterns
|
|
201
|
+
**Project skills:** Check .OpenCode/skills/ or .agents/skills/ directory (if either exists) — read SKILL.md files, research should account for project skill patterns
|
|
110
202
|
</additional_context>
|
|
111
203
|
|
|
112
204
|
<output>
|
|
@@ -116,8 +208,8 @@ write to: {phase_dir}/{phase_num}-RESEARCH.md
|
|
|
116
208
|
|
|
117
209
|
```
|
|
118
210
|
task(
|
|
119
|
-
prompt=
|
|
120
|
-
subagent_type="
|
|
211
|
+
prompt=research_prompt,
|
|
212
|
+
subagent_type="gsd-phase-researcher",
|
|
121
213
|
model="{researcher_model}",
|
|
122
214
|
description="Research Phase {phase}"
|
|
123
215
|
)
|
|
@@ -128,30 +220,26 @@ task(
|
|
|
128
220
|
- **`## RESEARCH COMPLETE`:** Display confirmation, continue to step 6
|
|
129
221
|
- **`## RESEARCH BLOCKED`:** Display blocker, offer: 1) Provide context, 2) Skip research, 3) Abort
|
|
130
222
|
|
|
131
|
-
## 5.5. Create Validation Strategy
|
|
132
|
-
|
|
133
|
-
**Skip if:** `nyquist_validation_enabled` is false from INIT JSON.
|
|
223
|
+
## 5.5. Create Validation Strategy
|
|
134
224
|
|
|
135
|
-
|
|
225
|
+
MANDATORY unless `nyquist_validation_enabled` is false.
|
|
136
226
|
|
|
137
227
|
```bash
|
|
138
228
|
grep -l "## Validation Architecture" "${PHASE_DIR}"/*-RESEARCH.md 2>/dev/null
|
|
139
229
|
```
|
|
140
230
|
|
|
141
231
|
**If found:**
|
|
142
|
-
1. read
|
|
143
|
-
2. write to `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md`
|
|
144
|
-
3. Fill frontmatter:
|
|
145
|
-
4.
|
|
232
|
+
1. read template: `$HOME/.config/opencode/get-shit-done/templates/VALIDATION.md`
|
|
233
|
+
2. write to `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md` (use write tool)
|
|
234
|
+
3. Fill frontmatter: `{N}` → phase number, `{phase-slug}` → slug, `{date}` → current date
|
|
235
|
+
4. Verify:
|
|
146
236
|
```bash
|
|
147
|
-
|
|
237
|
+
test -f "${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md" && echo "VALIDATION_CREATED=true" || echo "VALIDATION_CREATED=false"
|
|
148
238
|
```
|
|
239
|
+
5. If `VALIDATION_CREATED=false`: STOP — do not proceed to Step 6
|
|
240
|
+
6. If `commit_docs`: `commit-docs "docs(phase-${PHASE}): add validation strategy"`
|
|
149
241
|
|
|
150
|
-
**If not found
|
|
151
|
-
```
|
|
152
|
-
⚠ Nyquist validation enabled but researcher did not produce a Validation Architecture section.
|
|
153
|
-
Continuing without validation strategy. Plans may fail Dimension 8 check.
|
|
154
|
-
```
|
|
242
|
+
**If not found:** Warn and continue — plans may fail Dimension 8.
|
|
155
243
|
|
|
156
244
|
## 6. Check Existing Plans
|
|
157
245
|
|
|
@@ -166,15 +254,30 @@ ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null
|
|
|
166
254
|
Extract from INIT JSON:
|
|
167
255
|
|
|
168
256
|
```bash
|
|
169
|
-
STATE_PATH=$(
|
|
170
|
-
ROADMAP_PATH=$(
|
|
171
|
-
REQUIREMENTS_PATH=$(
|
|
172
|
-
RESEARCH_PATH=$(
|
|
173
|
-
VERIFICATION_PATH=$(
|
|
174
|
-
UAT_PATH=$(
|
|
175
|
-
CONTEXT_PATH=$(
|
|
257
|
+
STATE_PATH=$(printf '%s\n' "$INIT" | jq -r '.state_path // empty')
|
|
258
|
+
ROADMAP_PATH=$(printf '%s\n' "$INIT" | jq -r '.roadmap_path // empty')
|
|
259
|
+
REQUIREMENTS_PATH=$(printf '%s\n' "$INIT" | jq -r '.requirements_path // empty')
|
|
260
|
+
RESEARCH_PATH=$(printf '%s\n' "$INIT" | jq -r '.research_path // empty')
|
|
261
|
+
VERIFICATION_PATH=$(printf '%s\n' "$INIT" | jq -r '.verification_path // empty')
|
|
262
|
+
UAT_PATH=$(printf '%s\n' "$INIT" | jq -r '.uat_path // empty')
|
|
263
|
+
CONTEXT_PATH=$(printf '%s\n' "$INIT" | jq -r '.context_path // empty')
|
|
176
264
|
```
|
|
177
265
|
|
|
266
|
+
## 7.5. Verify Nyquist Artifacts
|
|
267
|
+
|
|
268
|
+
Skip if `nyquist_validation_enabled` is false.
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
VALIDATION_EXISTS=$(ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null | head -1)
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
If missing and Nyquist enabled — ask user:
|
|
275
|
+
1. Re-run: `/gsd-plan-phase {PHASE} --research`
|
|
276
|
+
2. Disable Nyquist in config
|
|
277
|
+
3. Continue anyway (plans fail Dimension 8)
|
|
278
|
+
|
|
279
|
+
Proceed to Step 8 only if user selects 2 or 3.
|
|
280
|
+
|
|
178
281
|
## 8. Spawn gsd-planner Agent
|
|
179
282
|
|
|
180
283
|
Display banner:
|
|
@@ -206,7 +309,7 @@ Planner prompt:
|
|
|
206
309
|
**Phase requirement IDs (every ID MUST appear in a plan's `requirements` field):** {phase_req_ids}
|
|
207
310
|
|
|
208
311
|
**Project instructions:** read ./AGENTS.md if exists — follow project-specific guidelines
|
|
209
|
-
**Project skills:** Check .agents/skills/ directory (if exists) — read SKILL.md files, plans should account for project skill rules
|
|
312
|
+
**Project skills:** Check .OpenCode/skills/ or .agents/skills/ directory (if either exists) — read SKILL.md files, plans should account for project skill rules
|
|
210
313
|
</planning_context>
|
|
211
314
|
|
|
212
315
|
<downstream_consumer>
|
|
@@ -229,8 +332,8 @@ Output consumed by /gsd-execute-phase. Plans need:
|
|
|
229
332
|
|
|
230
333
|
```
|
|
231
334
|
task(
|
|
232
|
-
prompt=
|
|
233
|
-
subagent_type="
|
|
335
|
+
prompt=filled_prompt,
|
|
336
|
+
subagent_type="gsd-planner",
|
|
234
337
|
model="{planner_model}",
|
|
235
338
|
description="Plan Phase {phase}"
|
|
236
339
|
)
|
|
@@ -271,7 +374,7 @@ Checker prompt:
|
|
|
271
374
|
**Phase requirement IDs (MUST ALL be covered):** {phase_req_ids}
|
|
272
375
|
|
|
273
376
|
**Project instructions:** read ./AGENTS.md if exists — verify plans honor project guidelines
|
|
274
|
-
**Project skills:** Check .agents/skills/ directory (if exists) — verify plans account for project skill rules
|
|
377
|
+
**Project skills:** Check .OpenCode/skills/ or .agents/skills/ directory (if either exists) — verify plans account for project skill rules
|
|
275
378
|
</verification_context>
|
|
276
379
|
|
|
277
380
|
<expected_output>
|
|
@@ -326,8 +429,8 @@ Return what changed.
|
|
|
326
429
|
|
|
327
430
|
```
|
|
328
431
|
task(
|
|
329
|
-
prompt=
|
|
330
|
-
subagent_type="
|
|
432
|
+
prompt=revision_prompt,
|
|
433
|
+
subagent_type="gsd-planner",
|
|
331
434
|
model="{planner_model}",
|
|
332
435
|
description="Revise Phase {phase} plans"
|
|
333
436
|
)
|
|
@@ -350,12 +453,19 @@ Route to `<offer_next>` OR `auto_advance` depending on flags/config.
|
|
|
350
453
|
Check for auto-advance trigger:
|
|
351
454
|
|
|
352
455
|
1. Parse `--auto` flag from $ARGUMENTS
|
|
353
|
-
2.
|
|
456
|
+
2. **Sync chain flag with intent** — if user invoked manually (no `--auto`), clear the ephemeral chain flag from any previous interrupted `--auto` chain. This does NOT touch `workflow.auto_advance` (the user's persistent settings preference):
|
|
457
|
+
```bash
|
|
458
|
+
if [[ ! "$ARGUMENTS" =~ --auto ]]; then
|
|
459
|
+
node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
|
|
460
|
+
fi
|
|
461
|
+
```
|
|
462
|
+
3. read both the chain flag and user preference:
|
|
354
463
|
```bash
|
|
355
|
-
|
|
464
|
+
AUTO_CHAIN=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
|
|
465
|
+
AUTO_CFG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
356
466
|
```
|
|
357
467
|
|
|
358
|
-
**If `--auto` flag present OR `AUTO_CFG` is true:**
|
|
468
|
+
**If `--auto` flag present OR `AUTO_CHAIN` is true OR `AUTO_CFG` is true:**
|
|
359
469
|
|
|
360
470
|
Display banner:
|
|
361
471
|
```
|
|
@@ -363,44 +473,16 @@ Display banner:
|
|
|
363
473
|
GSD ► AUTO-ADVANCING TO EXECUTE
|
|
364
474
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
365
475
|
|
|
366
|
-
Plans ready.
|
|
476
|
+
Plans ready. Launching execute-phase...
|
|
367
477
|
```
|
|
368
478
|
|
|
369
|
-
|
|
479
|
+
Launch execute-phase using the skill tool to avoid nested task sessions (which cause runtime freezes due to deep agent nesting):
|
|
370
480
|
```
|
|
371
|
-
|
|
372
|
-
prompt="
|
|
373
|
-
<objective>
|
|
374
|
-
You are the execute-phase orchestrator. Execute all plans for Phase ${PHASE}: ${PHASE_NAME}.
|
|
375
|
-
</objective>
|
|
376
|
-
|
|
377
|
-
<execution_context>
|
|
378
|
-
@~/.config/opencode/get-shit-done/workflows/execute-phase.md
|
|
379
|
-
@~/.config/opencode/get-shit-done/references/checkpoints.md
|
|
380
|
-
@~/.config/opencode/get-shit-done/references/tdd.md
|
|
381
|
-
@~/.config/opencode/get-shit-done/references/model-profile-resolution.md
|
|
382
|
-
</execution_context>
|
|
383
|
-
|
|
384
|
-
<arguments>
|
|
385
|
-
PHASE=${PHASE}
|
|
386
|
-
ARGUMENTS='${PHASE} --auto --no-transition'
|
|
387
|
-
</arguments>
|
|
388
|
-
|
|
389
|
-
<instructions>
|
|
390
|
-
1. read execute-phase.md from execution_context for your complete workflow
|
|
391
|
-
2. Follow ALL steps: initialize, handle_branching, validate_phase, discover_and_group_plans, execute_waves, aggregate_results, close_parent_artifacts, verify_phase_goal, update_roadmap
|
|
392
|
-
3. The --no-transition flag means: after verification + roadmap update, STOP and return status. Do NOT run transition.md.
|
|
393
|
-
4. When spawning executor agents, use subagent_type='gsd-executor' with the existing @file pattern from the workflow
|
|
394
|
-
5. When spawning verifier agents, use subagent_type='gsd-verifier'
|
|
395
|
-
6. Preserve the classifyHandoffIfNeeded workaround (spot-check on that specific error)
|
|
396
|
-
7. Do NOT use the skill tool or /gsd- commands
|
|
397
|
-
</instructions>
|
|
398
|
-
",
|
|
399
|
-
subagent_type="general",
|
|
400
|
-
description="Execute Phase ${PHASE}"
|
|
401
|
-
)
|
|
481
|
+
skill(skill="gsd-execute-phase", args="${PHASE} --auto --no-transition")
|
|
402
482
|
```
|
|
403
483
|
|
|
484
|
+
The `--no-transition` flag tells execute-phase to return status after verification instead of chaining further. This keeps the auto-advance chain flat — each phase runs at the same nesting level rather than spawning deeper task agents.
|
|
485
|
+
|
|
404
486
|
**Handle execute-phase return:**
|
|
405
487
|
- **PHASE COMPLETE** → Display final summary:
|
|
406
488
|
```
|
|
@@ -12,7 +12,8 @@ read all files referenced by the invoking prompt's execution_context before star
|
|
|
12
12
|
**Load progress context (paths only):**
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
INIT=$(node
|
|
15
|
+
INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init progress)
|
|
16
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
Extract from init JSON: `project_exists`, `roadmap_exists`, `state_exists`, `phases`, `current_phase`, `next_phase`, `milestone_version`, `completed_count`, `phase_count`, `paused_at`, `state_path`, `roadmap_path`, `project_path`, `config_path`.
|
|
@@ -40,8 +41,8 @@ If missing both ROADMAP.md and PROJECT.md: suggest `/gsd-new-project`.
|
|
|
40
41
|
**Use structured extraction from gsd-tools:**
|
|
41
42
|
|
|
42
43
|
Instead of reading full files, use targeted tools to get only the data needed for the report:
|
|
43
|
-
- `ROADMAP=$(node
|
|
44
|
-
- `STATE=$(node
|
|
44
|
+
- `ROADMAP=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap analyze)`
|
|
45
|
+
- `STATE=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" state-snapshot)`
|
|
45
46
|
|
|
46
47
|
This minimizes orchestrator context usage.
|
|
47
48
|
</step>
|
|
@@ -50,7 +51,7 @@ This minimizes orchestrator context usage.
|
|
|
50
51
|
**Get comprehensive roadmap analysis (replaces manual parsing):**
|
|
51
52
|
|
|
52
53
|
```bash
|
|
53
|
-
ROADMAP=$(node
|
|
54
|
+
ROADMAP=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap analyze)
|
|
54
55
|
```
|
|
55
56
|
|
|
56
57
|
This returns structured JSON with:
|
|
@@ -69,7 +70,7 @@ Use this instead of manually reading/parsing ROADMAP.md.
|
|
|
69
70
|
- Find the 2-3 most recent SUMMARY.md files
|
|
70
71
|
- Use `summary-extract` for efficient parsing:
|
|
71
72
|
```bash
|
|
72
|
-
node
|
|
73
|
+
node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" summary-extract <path> --fields one_liner
|
|
73
74
|
```
|
|
74
75
|
- This shows "what we've been working on"
|
|
75
76
|
</step>
|
|
@@ -88,7 +89,7 @@ Use this instead of manually reading/parsing ROADMAP.md.
|
|
|
88
89
|
|
|
89
90
|
```bash
|
|
90
91
|
# Get formatted progress bar
|
|
91
|
-
PROGRESS_BAR=$(node
|
|
92
|
+
PROGRESS_BAR=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" progress bar --raw)
|
|
92
93
|
```
|
|
93
94
|
|
|
94
95
|
Present:
|
|
@@ -97,7 +98,7 @@ Present:
|
|
|
97
98
|
# [Project Name]
|
|
98
99
|
|
|
99
100
|
**Progress:** {PROGRESS_BAR}
|
|
100
|
-
**Profile:** [simple/smart/
|
|
101
|
+
**Profile:** [simple/smart/genius]
|
|
101
102
|
|
|
102
103
|
## Recent Work
|
|
103
104
|
- [Phase X, Plan Y]: [what was accomplished - 1 line from summary-extract]
|