gsd-opencode 1.22.1 → 1.30.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-advisor-researcher.md +112 -0
- package/agents/gsd-assumptions-analyzer.md +110 -0
- package/agents/gsd-codebase-mapper.md +0 -2
- package/agents/gsd-debugger.md +118 -2
- package/agents/gsd-executor.md +24 -4
- package/agents/gsd-integration-checker.md +0 -2
- package/agents/gsd-nyquist-auditor.md +0 -2
- package/agents/gsd-phase-researcher.md +150 -5
- package/agents/gsd-plan-checker.md +70 -5
- package/agents/gsd-planner.md +49 -4
- package/agents/gsd-project-researcher.md +28 -3
- package/agents/gsd-research-synthesizer.md +0 -2
- package/agents/gsd-roadmapper.md +29 -2
- package/agents/gsd-ui-auditor.md +445 -0
- package/agents/gsd-ui-checker.md +305 -0
- package/agents/gsd-ui-researcher.md +368 -0
- package/agents/gsd-user-profiler.md +173 -0
- package/agents/gsd-verifier.md +123 -4
- package/commands/gsd/gsd-add-backlog.md +76 -0
- package/commands/gsd/gsd-audit-uat.md +24 -0
- package/commands/gsd/gsd-autonomous.md +41 -0
- package/commands/gsd/gsd-debug.md +5 -0
- package/commands/gsd/gsd-discuss-phase.md +10 -36
- package/commands/gsd/gsd-do.md +30 -0
- package/commands/gsd/gsd-execute-phase.md +20 -2
- package/commands/gsd/gsd-fast.md +30 -0
- package/commands/gsd/gsd-forensics.md +56 -0
- package/commands/gsd/gsd-list-workspaces.md +19 -0
- package/commands/gsd/gsd-manager.md +39 -0
- package/commands/gsd/gsd-milestone-summary.md +51 -0
- package/commands/gsd/gsd-new-workspace.md +44 -0
- package/commands/gsd/gsd-next.md +24 -0
- package/commands/gsd/gsd-note.md +34 -0
- package/commands/gsd/gsd-plan-phase.md +3 -1
- package/commands/gsd/gsd-plant-seed.md +28 -0
- package/commands/gsd/gsd-pr-branch.md +25 -0
- package/commands/gsd/gsd-profile-user.md +46 -0
- package/commands/gsd/gsd-quick.md +4 -2
- package/commands/gsd/gsd-reapply-patches.md +9 -8
- package/commands/gsd/gsd-remove-workspace.md +26 -0
- package/commands/gsd/gsd-research-phase.md +5 -0
- package/commands/gsd/gsd-review-backlog.md +61 -0
- package/commands/gsd/gsd-review.md +37 -0
- package/commands/gsd/gsd-session-report.md +19 -0
- package/commands/gsd/gsd-set-profile.md +24 -23
- package/commands/gsd/gsd-ship.md +23 -0
- package/commands/gsd/gsd-stats.md +18 -0
- package/commands/gsd/gsd-thread.md +127 -0
- package/commands/gsd/gsd-ui-phase.md +34 -0
- package/commands/gsd/gsd-ui-review.md +32 -0
- package/commands/gsd/gsd-workstreams.md +66 -0
- package/get-shit-done/bin/gsd-tools.cjs +410 -84
- package/get-shit-done/bin/lib/commands.cjs +429 -18
- package/get-shit-done/bin/lib/config.cjs +318 -45
- package/get-shit-done/bin/lib/core.cjs +822 -84
- package/get-shit-done/bin/lib/frontmatter.cjs +78 -41
- package/get-shit-done/bin/lib/init.cjs +836 -104
- package/get-shit-done/bin/lib/milestone.cjs +44 -33
- package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
- package/get-shit-done/bin/lib/phase.cjs +293 -306
- package/get-shit-done/bin/lib/profile-output.cjs +952 -0
- package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
- package/get-shit-done/bin/lib/roadmap.cjs +55 -24
- package/get-shit-done/bin/lib/security.cjs +382 -0
- package/get-shit-done/bin/lib/state.cjs +363 -53
- package/get-shit-done/bin/lib/template.cjs +2 -2
- package/get-shit-done/bin/lib/uat.cjs +282 -0
- package/get-shit-done/bin/lib/verify.cjs +104 -36
- package/get-shit-done/bin/lib/workstream.cjs +491 -0
- package/get-shit-done/references/checkpoints.md +12 -10
- package/get-shit-done/references/decimal-phase-calculation.md +2 -3
- package/get-shit-done/references/git-integration.md +47 -0
- package/get-shit-done/references/model-profile-resolution.md +2 -0
- package/get-shit-done/references/model-profiles.md +62 -16
- package/get-shit-done/references/phase-argument-parsing.md +2 -2
- package/get-shit-done/references/planning-config.md +3 -1
- package/get-shit-done/references/user-profiling.md +681 -0
- package/get-shit-done/references/workstream-flag.md +58 -0
- package/get-shit-done/templates/UAT.md +21 -3
- package/get-shit-done/templates/UI-SPEC.md +100 -0
- package/get-shit-done/templates/claude-md.md +122 -0
- package/get-shit-done/templates/config.json +10 -3
- package/get-shit-done/templates/context.md +61 -6
- package/get-shit-done/templates/dev-preferences.md +21 -0
- package/get-shit-done/templates/discussion-log.md +63 -0
- package/get-shit-done/templates/phase-prompt.md +46 -5
- package/get-shit-done/templates/project.md +2 -0
- package/get-shit-done/templates/state.md +2 -2
- package/get-shit-done/templates/user-profile.md +146 -0
- package/get-shit-done/workflows/add-phase.md +2 -2
- package/get-shit-done/workflows/add-tests.md +4 -4
- package/get-shit-done/workflows/add-todo.md +3 -3
- package/get-shit-done/workflows/audit-milestone.md +13 -5
- package/get-shit-done/workflows/audit-uat.md +109 -0
- package/get-shit-done/workflows/autonomous.md +891 -0
- package/get-shit-done/workflows/check-todos.md +2 -2
- package/get-shit-done/workflows/cleanup.md +4 -4
- package/get-shit-done/workflows/complete-milestone.md +9 -6
- package/get-shit-done/workflows/diagnose-issues.md +15 -3
- package/get-shit-done/workflows/discovery-phase.md +3 -3
- package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
- package/get-shit-done/workflows/discuss-phase.md +411 -38
- package/get-shit-done/workflows/do.md +104 -0
- package/get-shit-done/workflows/execute-phase.md +405 -18
- package/get-shit-done/workflows/execute-plan.md +77 -12
- package/get-shit-done/workflows/fast.md +105 -0
- package/get-shit-done/workflows/forensics.md +265 -0
- package/get-shit-done/workflows/health.md +28 -6
- package/get-shit-done/workflows/help.md +124 -7
- package/get-shit-done/workflows/insert-phase.md +2 -2
- package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
- package/get-shit-done/workflows/list-workspaces.md +56 -0
- package/get-shit-done/workflows/manager.md +362 -0
- package/get-shit-done/workflows/map-codebase.md +74 -13
- package/get-shit-done/workflows/milestone-summary.md +223 -0
- package/get-shit-done/workflows/new-milestone.md +120 -18
- package/get-shit-done/workflows/new-project.md +178 -39
- package/get-shit-done/workflows/new-workspace.md +237 -0
- package/get-shit-done/workflows/next.md +97 -0
- package/get-shit-done/workflows/node-repair.md +92 -0
- package/get-shit-done/workflows/note.md +156 -0
- package/get-shit-done/workflows/pause-work.md +62 -8
- package/get-shit-done/workflows/plan-milestone-gaps.md +4 -5
- package/get-shit-done/workflows/plan-phase.md +332 -33
- package/get-shit-done/workflows/plant-seed.md +169 -0
- package/get-shit-done/workflows/pr-branch.md +129 -0
- package/get-shit-done/workflows/profile-user.md +450 -0
- package/get-shit-done/workflows/progress.md +145 -20
- package/get-shit-done/workflows/quick.md +205 -49
- package/get-shit-done/workflows/remove-phase.md +2 -2
- package/get-shit-done/workflows/remove-workspace.md +90 -0
- package/get-shit-done/workflows/research-phase.md +11 -3
- package/get-shit-done/workflows/resume-project.md +35 -16
- package/get-shit-done/workflows/review.md +228 -0
- package/get-shit-done/workflows/session-report.md +146 -0
- package/get-shit-done/workflows/set-profile.md +2 -2
- package/get-shit-done/workflows/settings.md +79 -10
- package/get-shit-done/workflows/ship.md +228 -0
- package/get-shit-done/workflows/stats.md +60 -0
- package/get-shit-done/workflows/transition.md +147 -20
- package/get-shit-done/workflows/ui-phase.md +302 -0
- package/get-shit-done/workflows/ui-review.md +165 -0
- package/get-shit-done/workflows/update.md +108 -25
- package/get-shit-done/workflows/validate-phase.md +15 -8
- package/get-shit-done/workflows/verify-phase.md +16 -5
- package/get-shit-done/workflows/verify-work.md +72 -18
- package/package.json +1 -1
- package/skills/gsd-audit-milestone/SKILL.md +29 -0
- package/skills/gsd-cleanup/SKILL.md +19 -0
- package/skills/gsd-complete-milestone/SKILL.md +131 -0
- package/skills/gsd-discuss-phase/SKILL.md +54 -0
- package/skills/gsd-execute-phase/SKILL.md +49 -0
- package/skills/gsd-plan-phase/SKILL.md +37 -0
- package/skills/gsd-ui-phase/SKILL.md +24 -0
- package/skills/gsd-ui-review/SKILL.md +24 -0
- package/skills/gsd-verify-work/SKILL.md +30 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-user-profiler
|
|
3
|
+
description: Analyzes extracted session messages across 8 behavioral dimensions to produce a scored developer profile with confidence levels and evidence. Spawned by profile orchestration workflows.
|
|
4
|
+
mode: subagent
|
|
5
|
+
tools:
|
|
6
|
+
read: true
|
|
7
|
+
color: "#FF00FF"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<role>
|
|
11
|
+
You are a GSD user profiler. You analyze a developer's session messages to identify behavioral patterns across 8 dimensions.
|
|
12
|
+
|
|
13
|
+
You are spawned by the profile orchestration workflow (Phase 3) or by write-profile during standalone profiling.
|
|
14
|
+
|
|
15
|
+
Your job: Apply the heuristics defined in the user-profiling reference document to score each dimension with evidence and confidence. Return structured JSON analysis.
|
|
16
|
+
|
|
17
|
+
CRITICAL: You must apply the rubric defined in the reference document. Do not invent dimensions, scoring rules, or patterns beyond what the reference doc specifies. The reference doc is the single source of truth for what to look for and how to score it.
|
|
18
|
+
</role>
|
|
19
|
+
|
|
20
|
+
<input>
|
|
21
|
+
You receive extracted session messages as JSONL content (from the profile-sample output).
|
|
22
|
+
|
|
23
|
+
Each message has the following structure:
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"sessionId": "string",
|
|
27
|
+
"projectPath": "encoded-path-string",
|
|
28
|
+
"projectName": "human-readable-project-name",
|
|
29
|
+
"timestamp": "ISO-8601",
|
|
30
|
+
"content": "message text (max 500 chars for profiling)"
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Key characteristics of the input:
|
|
35
|
+
- Messages are already filtered to genuine user messages only (system messages, tool results, and OpenCode responses are excluded)
|
|
36
|
+
- Each message is truncated to 500 characters for profiling purposes
|
|
37
|
+
- Messages are project-proportionally sampled -- no single project dominates
|
|
38
|
+
- Recency weighting has been applied during sampling (recent sessions are overrepresented)
|
|
39
|
+
- Typical input size: 100-150 representative messages across all projects
|
|
40
|
+
</input>
|
|
41
|
+
|
|
42
|
+
<reference>
|
|
43
|
+
@get-shit-done/references/user-profiling.md
|
|
44
|
+
|
|
45
|
+
This is the detection heuristics rubric. read it in full before analyzing any messages. It defines:
|
|
46
|
+
- The 8 dimensions and their rating spectrums
|
|
47
|
+
- Signal patterns to look for in messages
|
|
48
|
+
- Detection heuristics for classifying ratings
|
|
49
|
+
- Confidence scoring thresholds
|
|
50
|
+
- Evidence curation rules
|
|
51
|
+
- Output schema
|
|
52
|
+
</reference>
|
|
53
|
+
|
|
54
|
+
<process>
|
|
55
|
+
|
|
56
|
+
<step name="load_rubric">
|
|
57
|
+
read the user-profiling reference document at `get-shit-done/references/user-profiling.md` to load:
|
|
58
|
+
- All 8 dimension definitions with rating spectrums
|
|
59
|
+
- Signal patterns and detection heuristics per dimension
|
|
60
|
+
- Confidence scoring thresholds (HIGH: 10+ signals across 2+ projects, MEDIUM: 5-9, LOW: <5, UNSCORED: 0)
|
|
61
|
+
- Evidence curation rules (combined Signal+Example format, 3 quotes per dimension, ~100 char quotes)
|
|
62
|
+
- Sensitive content exclusion patterns
|
|
63
|
+
- Recency weighting guidelines
|
|
64
|
+
- Output schema
|
|
65
|
+
</step>
|
|
66
|
+
|
|
67
|
+
<step name="read_messages">
|
|
68
|
+
read all provided session messages from the input JSONL content.
|
|
69
|
+
|
|
70
|
+
While reading, build a mental index:
|
|
71
|
+
- Group messages by project for cross-project consistency assessment
|
|
72
|
+
- Note message timestamps for recency weighting
|
|
73
|
+
- Flag messages that are log pastes, session context dumps, or large code blocks (deprioritize for evidence)
|
|
74
|
+
- Count total genuine messages to determine threshold mode (full >50, hybrid 20-50, insufficient <20)
|
|
75
|
+
</step>
|
|
76
|
+
|
|
77
|
+
<step name="analyze_dimensions">
|
|
78
|
+
For each of the 8 dimensions defined in the reference document:
|
|
79
|
+
|
|
80
|
+
1. **Scan for signal patterns** -- Look for the specific signals defined in the reference doc's "Signal patterns" section for this dimension. Count occurrences.
|
|
81
|
+
|
|
82
|
+
2. **Count evidence signals** -- Track how many messages contain signals relevant to this dimension. Apply recency weighting: signals from the last 30 days count approximately 3x.
|
|
83
|
+
|
|
84
|
+
3. **Select evidence quotes** -- Choose up to 3 representative quotes per dimension:
|
|
85
|
+
- Use the combined format: **Signal:** [interpretation] / **Example:** "[~100 char quote]" -- project: [name]
|
|
86
|
+
- Prefer quotes from different projects to demonstrate cross-project consistency
|
|
87
|
+
- Prefer recent quotes over older ones when both demonstrate the same pattern
|
|
88
|
+
- Prefer natural language messages over log pastes or context dumps
|
|
89
|
+
- Check each candidate quote against sensitive content patterns (Layer 1 filtering)
|
|
90
|
+
|
|
91
|
+
4. **Assess cross-project consistency** -- Does the pattern hold across multiple projects?
|
|
92
|
+
- If the same rating applies across 2+ projects: `cross_project_consistent: true`
|
|
93
|
+
- If the pattern varies by project: `cross_project_consistent: false`, describe the split in the summary
|
|
94
|
+
|
|
95
|
+
5. **Apply confidence scoring** -- Use the thresholds from the reference doc:
|
|
96
|
+
- HIGH: 10+ signals (weighted) across 2+ projects
|
|
97
|
+
- MEDIUM: 5-9 signals OR consistent within 1 project only
|
|
98
|
+
- LOW: <5 signals OR mixed/contradictory signals
|
|
99
|
+
- UNSCORED: 0 relevant signals detected
|
|
100
|
+
|
|
101
|
+
6. **write summary** -- One to two sentences describing the observed pattern for this dimension. Include context-dependent notes if applicable.
|
|
102
|
+
|
|
103
|
+
7. **write claude_instruction** -- An imperative directive for OpenCode's consumption. This tells OpenCode how to behave based on the profile finding:
|
|
104
|
+
- MUST be imperative: "Provide concise explanations with code" not "You tend to prefer brief explanations"
|
|
105
|
+
- MUST be actionable: OpenCode should be able to follow this instruction directly
|
|
106
|
+
- For LOW confidence dimensions: include a hedging instruction: "Try X -- ask if this matches their preference"
|
|
107
|
+
- For UNSCORED dimensions: use a neutral fallback: "No strong preference detected. Ask the developer when this dimension is relevant."
|
|
108
|
+
</step>
|
|
109
|
+
|
|
110
|
+
<step name="filter_sensitive">
|
|
111
|
+
After selecting all evidence quotes, perform a final pass checking for sensitive content patterns:
|
|
112
|
+
|
|
113
|
+
- `sk-` (API key prefixes)
|
|
114
|
+
- `Bearer ` (auth token headers)
|
|
115
|
+
- `password` (credential references)
|
|
116
|
+
- `secret` (secret values)
|
|
117
|
+
- `token` (when used as a credential value, not a concept)
|
|
118
|
+
- `api_key` or `API_KEY`
|
|
119
|
+
- Full absolute file paths containing usernames (e.g., `/Users/john/`, `/home/john/`)
|
|
120
|
+
|
|
121
|
+
If any selected quote contains these patterns:
|
|
122
|
+
1. Replace it with the next best quote that does not contain sensitive content
|
|
123
|
+
2. If no clean replacement exists, reduce the evidence count for that dimension
|
|
124
|
+
3. Record the exclusion in the `sensitive_excluded` metadata array
|
|
125
|
+
</step>
|
|
126
|
+
|
|
127
|
+
<step name="assemble_output">
|
|
128
|
+
Construct the complete analysis JSON matching the exact schema defined in the reference document's Output Schema section.
|
|
129
|
+
|
|
130
|
+
Verify before returning:
|
|
131
|
+
- All 8 dimensions are present in the output
|
|
132
|
+
- Each dimension has all required fields (rating, confidence, evidence_count, cross_project_consistent, evidence_quotes, summary, claude_instruction)
|
|
133
|
+
- Rating values match the defined spectrums (no invented ratings)
|
|
134
|
+
- Confidence values are one of: HIGH, MEDIUM, LOW, UNSCORED
|
|
135
|
+
- claude_instruction fields are imperative directives, not descriptions
|
|
136
|
+
- sensitive_excluded array is populated (empty array if nothing was excluded)
|
|
137
|
+
- message_threshold reflects the actual message count
|
|
138
|
+
|
|
139
|
+
Wrap the JSON in `<analysis>` tags for reliable extraction by the orchestrator.
|
|
140
|
+
</step>
|
|
141
|
+
|
|
142
|
+
</process>
|
|
143
|
+
|
|
144
|
+
<output>
|
|
145
|
+
Return the complete analysis JSON wrapped in `<analysis>` tags.
|
|
146
|
+
|
|
147
|
+
Format:
|
|
148
|
+
```
|
|
149
|
+
<analysis>
|
|
150
|
+
{
|
|
151
|
+
"profile_version": "1.0",
|
|
152
|
+
"analyzed_at": "...",
|
|
153
|
+
...full JSON matching reference doc schema...
|
|
154
|
+
}
|
|
155
|
+
</analysis>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
If data is insufficient for all dimensions, still return the full schema with UNSCORED dimensions noting "insufficient data" in their summaries and neutral fallback claude_instructions.
|
|
159
|
+
|
|
160
|
+
Do NOT return markdown commentary, explanations, or caveats outside the `<analysis>` tags. The orchestrator parses the tags programmatically.
|
|
161
|
+
</output>
|
|
162
|
+
|
|
163
|
+
<constraints>
|
|
164
|
+
- Never select evidence quotes containing sensitive patterns (sk-, Bearer, password, secret, token as credential, api_key, full file paths with usernames)
|
|
165
|
+
- Never invent evidence or fabricate quotes -- every quote must come from actual session messages
|
|
166
|
+
- Never rate a dimension HIGH without 10+ signals (weighted) across 2+ projects
|
|
167
|
+
- Never invent dimensions beyond the 8 defined in the reference document
|
|
168
|
+
- Weight recent messages approximately 3x (last 30 days) per reference doc guidelines
|
|
169
|
+
- Report context-dependent splits rather than forcing a single rating when contradictory signals exist across projects
|
|
170
|
+
- claude_instruction fields must be imperative directives, not descriptions -- the profile is an instruction document for OpenCode's consumption
|
|
171
|
+
- Deprioritize log pastes, session context dumps, and large code blocks when selecting evidence
|
|
172
|
+
- When evidence is genuinely insufficient, report UNSCORED with "insufficient data" -- do not guess
|
|
173
|
+
</constraints>
|
package/agents/gsd-verifier.md
CHANGED
|
@@ -9,8 +9,6 @@ tools:
|
|
|
9
9
|
grep: true
|
|
10
10
|
glob: true
|
|
11
11
|
color: "#008000"
|
|
12
|
-
skills:
|
|
13
|
-
- gsd-verifier-workflow
|
|
14
12
|
# hooks:
|
|
15
13
|
# PostToolUse:
|
|
16
14
|
# - matcher: "write|edit"
|
|
@@ -208,6 +206,63 @@ grep -r "$artifact_name" "${search_path:-src/}" --include="*.ts" --include="*.ts
|
|
|
208
206
|
| ✓ | ✗ | - | ✗ STUB |
|
|
209
207
|
| ✗ | - | - | ✗ MISSING |
|
|
210
208
|
|
|
209
|
+
## Step 4b: Data-Flow Trace (Level 4)
|
|
210
|
+
|
|
211
|
+
Artifacts that pass Levels 1-3 (exist, substantive, wired) can still be hollow if their data source produces empty or hardcoded values. Level 4 traces upstream from the artifact to verify real data flows through the wiring.
|
|
212
|
+
|
|
213
|
+
**When to run:** For each artifact that passes Level 3 (WIRED) and renders dynamic data (components, pages, dashboards — not utilities or configs).
|
|
214
|
+
|
|
215
|
+
**How:**
|
|
216
|
+
|
|
217
|
+
1. **Identify the data variable** — what state/prop does the artifact render?
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Find state variables that are rendered in JSX/TSX
|
|
221
|
+
grep -n -E "useState|useQuery|useSWR|useStore|props\." "$artifact" 2>/dev/null
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
2. **Trace the data source** — where does that variable get populated?
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
# Find the fetch/query that populates the state
|
|
228
|
+
grep -n -A 5 "set${STATE_VAR}\|${STATE_VAR}\s*=" "$artifact" 2>/dev/null | grep -E "fetch|axios|query|store|dispatch|props\."
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
3. **Verify the source produces real data** — does the API/store return actual data or static/empty values?
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# Check the API route or data source for real DB queries vs static returns
|
|
235
|
+
grep -n -E "prisma\.|db\.|query\(|findMany|findOne|select|FROM" "$source_file" 2>/dev/null
|
|
236
|
+
# Flag: static returns with no query
|
|
237
|
+
grep -n -E "return.*json\(\s*\[\]|return.*json\(\s*\{\}" "$source_file" 2>/dev/null
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
4. **Check for disconnected props** — props passed to child components that are hardcoded empty at the call site
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Find where the component is used and check prop values
|
|
244
|
+
grep -r -A 3 "<${COMPONENT_NAME}" "${search_path:-src/}" --include="*.tsx" 2>/dev/null | grep -E "=\{(\[\]|\{\}|null|''|\"\")\}"
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Data-flow status:**
|
|
248
|
+
|
|
249
|
+
| Data Source | Produces Real Data | Status |
|
|
250
|
+
| ---------- | ------------------ | ------ |
|
|
251
|
+
| DB query found | Yes | ✓ FLOWING |
|
|
252
|
+
| Fetch exists, static fallback only | No | ⚠️ STATIC |
|
|
253
|
+
| No data source found | N/A | ✗ DISCONNECTED |
|
|
254
|
+
| Props hardcoded empty at call site | No | ✗ HOLLOW_PROP |
|
|
255
|
+
|
|
256
|
+
**Final Artifact Status (updated with Level 4):**
|
|
257
|
+
|
|
258
|
+
| Exists | Substantive | Wired | Data Flows | Status |
|
|
259
|
+
| ------ | ----------- | ----- | ---------- | ------ |
|
|
260
|
+
| ✓ | ✓ | ✓ | ✓ | ✓ VERIFIED |
|
|
261
|
+
| ✓ | ✓ | ✓ | ✗ | ⚠️ HOLLOW — wired but data disconnected |
|
|
262
|
+
| ✓ | ✓ | ✗ | - | ⚠️ ORPHANED |
|
|
263
|
+
| ✓ | ✗ | - | - | ✗ STUB |
|
|
264
|
+
| ✗ | - | - | - | ✗ MISSING |
|
|
265
|
+
|
|
211
266
|
## Step 5: Verify Key Links (Wiring)
|
|
212
267
|
|
|
213
268
|
Key links are critical connections. If broken, the goal fails even with all artifacts present.
|
|
@@ -314,15 +369,67 @@ Run anti-pattern detection on each file:
|
|
|
314
369
|
```bash
|
|
315
370
|
# TODO/FIXME/placeholder comments
|
|
316
371
|
grep -n -E "TODO|FIXME|XXX|HACK|PLACEHOLDER" "$file" 2>/dev/null
|
|
317
|
-
grep -n -E "placeholder|coming soon|will be here" "$file" -i 2>/dev/null
|
|
372
|
+
grep -n -E "placeholder|coming soon|will be here|not yet implemented|not available" "$file" -i 2>/dev/null
|
|
318
373
|
# Empty implementations
|
|
319
374
|
grep -n -E "return null|return \{\}|return \[\]|=> \{\}" "$file" 2>/dev/null
|
|
375
|
+
# Hardcoded empty data (common stub patterns)
|
|
376
|
+
grep -n -E "=\s*\[\]|=\s*\{\}|=\s*null|=\s*undefined" "$file" 2>/dev/null | grep -v -E "(test|spec|mock|fixture|\.test\.|\.spec\.)" 2>/dev/null
|
|
377
|
+
# Props with hardcoded empty values (React/Vue/Svelte stub indicators)
|
|
378
|
+
grep -n -E "=\{(\[\]|\{\}|null|undefined|''|\"\")\}" "$file" 2>/dev/null
|
|
320
379
|
# Console.log only implementations
|
|
321
380
|
grep -n -B 2 -A 2 "console\.log" "$file" 2>/dev/null | grep -E "^\s*(const|function|=>)"
|
|
322
381
|
```
|
|
323
382
|
|
|
383
|
+
**Stub classification:** A grep match is a STUB only when the value flows to rendering or user-visible output AND no other code path populates it with real data. A test helper, type default, or initial state that gets overwritten by a fetch/store is NOT a stub. Check for data-fetching (useEffect, fetch, query, useSWR, useQuery, subscribe) that writes to the same variable before flagging.
|
|
384
|
+
|
|
324
385
|
Categorize: 🛑 Blocker (prevents goal) | ⚠️ Warning (incomplete) | ℹ️ Info (notable)
|
|
325
386
|
|
|
387
|
+
## Step 7b: Behavioral Spot-Checks
|
|
388
|
+
|
|
389
|
+
Anti-pattern scanning (Step 7) checks for code smells. Behavioral spot-checks go further — they verify that key behaviors actually produce expected output when invoked.
|
|
390
|
+
|
|
391
|
+
**When to run:** For phases that produce runnable code (APIs, CLI tools, build scripts, data pipelines). Skip for documentation-only or config-only phases.
|
|
392
|
+
|
|
393
|
+
**How:**
|
|
394
|
+
|
|
395
|
+
1. **Identify checkable behaviors** from must-haves truths. Select 2-4 that can be tested with a single command:
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
# API endpoint returns non-empty data
|
|
399
|
+
curl -s http://localhost:$PORT/api/$ENDPOINT 2>/dev/null | node -e "let b='';process.stdin.setEncoding('utf8');process.stdin.on('data',c=>b+=c);process.stdin.on('end',()=>{const d=JSON.parse(b);process.exit(Array.isArray(d)?(d.length>0?0:1):(Object.keys(d).length>0?0:1))})"
|
|
400
|
+
|
|
401
|
+
# CLI command produces expected output
|
|
402
|
+
node $CLI_PATH --help 2>&1 | grep -q "$EXPECTED_SUBCOMMAND"
|
|
403
|
+
|
|
404
|
+
# Build produces output files
|
|
405
|
+
ls $BUILD_OUTPUT_DIR/*.{js,css} 2>/dev/null | wc -l
|
|
406
|
+
|
|
407
|
+
# Module exports expected functions
|
|
408
|
+
node -e "const m = require('$MODULE_PATH'); console.log(typeof m.$FUNCTION_NAME)" 2>/dev/null | grep -q "function"
|
|
409
|
+
|
|
410
|
+
# Test suite passes (if tests exist for this phase's code)
|
|
411
|
+
npm test -- --grep "$PHASE_TEST_PATTERN" 2>&1 | grep -q "passing"
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
2. **Run each check** and record pass/fail:
|
|
415
|
+
|
|
416
|
+
**Spot-check status:**
|
|
417
|
+
|
|
418
|
+
| Behavior | Command | Result | Status |
|
|
419
|
+
| -------- | ------- | ------ | ------ |
|
|
420
|
+
| {truth} | {command} | {output} | ✓ PASS / ✗ FAIL / ? SKIP |
|
|
421
|
+
|
|
422
|
+
3. **Classification:**
|
|
423
|
+
- ✓ PASS: Command succeeded and output matches expected
|
|
424
|
+
- ✗ FAIL: Command failed or output is empty/wrong — flag as gap
|
|
425
|
+
- ? SKIP: Can't test without running server/external service — route to human verification (Step 8)
|
|
426
|
+
|
|
427
|
+
**Spot-check constraints:**
|
|
428
|
+
- Each check must complete in under 10 seconds
|
|
429
|
+
- Do not start servers or services — only test what's already runnable
|
|
430
|
+
- Do not modify state (no writes, no mutations, no side effects)
|
|
431
|
+
- If the project has no runnable entry points yet, skip with: "Step 7b: SKIPPED (no runnable entry points)"
|
|
432
|
+
|
|
326
433
|
## Step 8: Identify Human Verification Needs
|
|
327
434
|
|
|
328
435
|
**Always needs human:** Visual appearance, user flow completion, real-time behavior, external service integration, performance feel, error message clarity.
|
|
@@ -440,6 +547,16 @@ human_verification: # Only if status: human_needed
|
|
|
440
547
|
| From | To | Via | Status | Details |
|
|
441
548
|
| ---- | --- | --- | ------ | ------- |
|
|
442
549
|
|
|
550
|
+
### Data-Flow Trace (Level 4)
|
|
551
|
+
|
|
552
|
+
| Artifact | Data Variable | Source | Produces Real Data | Status |
|
|
553
|
+
| -------- | ------------- | ------ | ------------------ | ------ |
|
|
554
|
+
|
|
555
|
+
### Behavioral Spot-Checks
|
|
556
|
+
|
|
557
|
+
| Behavior | Command | Result | Status |
|
|
558
|
+
| -------- | ------- | ------ | ------ |
|
|
559
|
+
|
|
443
560
|
### Requirements Coverage
|
|
444
561
|
|
|
445
562
|
| Requirement | Source Plan | Description | Status | Evidence |
|
|
@@ -503,7 +620,7 @@ Automated checks passed. Awaiting human verification.
|
|
|
503
620
|
|
|
504
621
|
**DO NOT trust SUMMARY claims.** Verify the component actually renders messages, not a placeholder.
|
|
505
622
|
|
|
506
|
-
**DO NOT assume existence = implementation.** Need level 2 (substantive)
|
|
623
|
+
**DO NOT assume existence = implementation.** Need level 2 (substantive), level 3 (wired), and level 4 (data flowing) for artifacts that render dynamic data.
|
|
507
624
|
|
|
508
625
|
**DO NOT skip key link verification.** 80% of stubs hide here — pieces exist but aren't connected.
|
|
509
626
|
|
|
@@ -575,9 +692,11 @@ return <div>No messages</div> // Always shows "no messages"
|
|
|
575
692
|
- [ ] If initial: must-haves established (from frontmatter or derived)
|
|
576
693
|
- [ ] All truths verified with status and evidence
|
|
577
694
|
- [ ] All artifacts checked at all three levels (exists, substantive, wired)
|
|
695
|
+
- [ ] Data-flow trace (Level 4) run on wired artifacts that render dynamic data
|
|
578
696
|
- [ ] All key links verified
|
|
579
697
|
- [ ] Requirements coverage assessed (if applicable)
|
|
580
698
|
- [ ] Anti-patterns scanned and categorized
|
|
699
|
+
- [ ] Behavioral spot-checks run on runnable code (or skipped with reason)
|
|
581
700
|
- [ ] Human verification items identified
|
|
582
701
|
- [ ] Overall status determined
|
|
583
702
|
- [ ] Gaps structured in YAML frontmatter (if gaps_found)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-add-backlog
|
|
3
|
+
description: Add an idea to the backlog parking lot (999.x numbering)
|
|
4
|
+
argument-hint: <description>
|
|
5
|
+
permissions:
|
|
6
|
+
read: true
|
|
7
|
+
write: true
|
|
8
|
+
bash: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<objective>
|
|
12
|
+
Add a backlog item to the roadmap using 999.x numbering. Backlog items are
|
|
13
|
+
unsequenced ideas that aren't ready for active planning — they live outside
|
|
14
|
+
the normal phase sequence and accumulate context over time.
|
|
15
|
+
</objective>
|
|
16
|
+
|
|
17
|
+
<process>
|
|
18
|
+
|
|
19
|
+
1. **read ROADMAP.md** to find existing backlog entries:
|
|
20
|
+
```bash
|
|
21
|
+
cat .planning/ROADMAP.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
2. **Find next backlog number:**
|
|
25
|
+
```bash
|
|
26
|
+
NEXT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" phase next-decimal 999 --raw)
|
|
27
|
+
```
|
|
28
|
+
If no 999.x phases exist, start at 999.1.
|
|
29
|
+
|
|
30
|
+
3. **Create the phase directory:**
|
|
31
|
+
```bash
|
|
32
|
+
SLUG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" generate-slug "$ARGUMENTS")
|
|
33
|
+
mkdir -p ".planning/phases/${NEXT}-${SLUG}"
|
|
34
|
+
touch ".planning/phases/${NEXT}-${SLUG}/.gitkeep"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
4. **Add to ROADMAP.md** under a `## Backlog` section. If the section doesn't exist, create it at the end:
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
## Backlog
|
|
41
|
+
|
|
42
|
+
### Phase {NEXT}: {description} (BACKLOG)
|
|
43
|
+
|
|
44
|
+
**Goal:** [Captured for future planning]
|
|
45
|
+
**Requirements:** TBD
|
|
46
|
+
**Plans:** 0 plans
|
|
47
|
+
|
|
48
|
+
Plans:
|
|
49
|
+
- [ ] TBD (promote with /gsd-review-backlog when ready)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
5. **Commit:**
|
|
53
|
+
```bash
|
|
54
|
+
node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs: add backlog item ${NEXT} — ${ARGUMENTS}" --files .planning/ROADMAP.md ".planning/phases/${NEXT}-${SLUG}/.gitkeep"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
6. **Report:**
|
|
58
|
+
```
|
|
59
|
+
## 📋 Backlog Item Added
|
|
60
|
+
|
|
61
|
+
Phase {NEXT}: {description}
|
|
62
|
+
Directory: .planning/phases/{NEXT}-{slug}/
|
|
63
|
+
|
|
64
|
+
This item lives in the backlog parking lot.
|
|
65
|
+
Use /gsd-discuss-phase {NEXT} to explore it further.
|
|
66
|
+
Use /gsd-review-backlog to promote items to active milestone.
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
</process>
|
|
70
|
+
|
|
71
|
+
<notes>
|
|
72
|
+
- 999.x numbering keeps backlog items out of the active phase sequence
|
|
73
|
+
- Phase directories are created immediately, so /gsd-discuss-phase and /gsd-plan-phase work on them
|
|
74
|
+
- No `Depends on:` field — backlog items are unsequenced by definition
|
|
75
|
+
- Sparse numbering is fine (999.1, 999.3) — always uses next-decimal
|
|
76
|
+
</notes>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-audit-uat
|
|
3
|
+
description: Cross-phase audit of all outstanding UAT and verification items
|
|
4
|
+
permissions:
|
|
5
|
+
read: true
|
|
6
|
+
glob: true
|
|
7
|
+
grep: true
|
|
8
|
+
bash: true
|
|
9
|
+
---
|
|
10
|
+
<objective>
|
|
11
|
+
Scan all phases for pending, skipped, blocked, and human_needed UAT items. Cross-reference against codebase to detect stale documentation. Produce prioritized human test plan.
|
|
12
|
+
</objective>
|
|
13
|
+
|
|
14
|
+
<execution_context>
|
|
15
|
+
@$HOME/.config/opencode/get-shit-done/workflows/audit-uat.md
|
|
16
|
+
</execution_context>
|
|
17
|
+
|
|
18
|
+
<context>
|
|
19
|
+
Core planning files are loaded in-workflow via CLI.
|
|
20
|
+
|
|
21
|
+
**Scope:**
|
|
22
|
+
glob: .planning/phases/*/*-UAT.md
|
|
23
|
+
glob: .planning/phases/*/*-VERIFICATION.md
|
|
24
|
+
</context>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-autonomous
|
|
3
|
+
description: Run all remaining phases autonomously — discuss→plan→execute per phase
|
|
4
|
+
argument-hint: "[--from N]"
|
|
5
|
+
permissions:
|
|
6
|
+
read: true
|
|
7
|
+
write: true
|
|
8
|
+
bash: true
|
|
9
|
+
glob: true
|
|
10
|
+
grep: true
|
|
11
|
+
question: true
|
|
12
|
+
task: true
|
|
13
|
+
---
|
|
14
|
+
<objective>
|
|
15
|
+
Execute all remaining milestone phases autonomously. For each phase: discuss → plan → execute. Pauses only for user decisions (grey area acceptance, blockers, validation requests).
|
|
16
|
+
|
|
17
|
+
Uses ROADMAP.md phase discovery and skill() flat invocations for each phase command. After all phases complete: milestone audit → complete → cleanup.
|
|
18
|
+
|
|
19
|
+
**Creates/Updates:**
|
|
20
|
+
- `.planning/STATE.md` — updated after each phase
|
|
21
|
+
- `.planning/ROADMAP.md` — progress updated after each phase
|
|
22
|
+
- Phase artifacts — CONTEXT.md, PLANs, SUMMARYs per phase
|
|
23
|
+
|
|
24
|
+
**After:** Milestone is complete and cleaned up.
|
|
25
|
+
</objective>
|
|
26
|
+
|
|
27
|
+
<execution_context>
|
|
28
|
+
@$HOME/.config/opencode/get-shit-done/workflows/autonomous.md
|
|
29
|
+
@$HOME/.config/opencode/get-shit-done/references/ui-brand.md
|
|
30
|
+
</execution_context>
|
|
31
|
+
|
|
32
|
+
<context>
|
|
33
|
+
Optional flag: `--from N` — start from phase N instead of the first incomplete phase.
|
|
34
|
+
|
|
35
|
+
Project context, phase list, and state are resolved inside the workflow using init commands (`gsd-tools.cjs init milestone-op`, `gsd-tools.cjs roadmap analyze`). No upfront context loading needed.
|
|
36
|
+
</context>
|
|
37
|
+
|
|
38
|
+
<process>
|
|
39
|
+
Execute the autonomous workflow from @$HOME/.config/opencode/get-shit-done/workflows/autonomous.md end-to-end.
|
|
40
|
+
Preserve all workflow gates (phase discovery, per-phase execution, blocker handling, progress display).
|
|
41
|
+
</process>
|
|
@@ -17,6 +17,11 @@ Debug issues using scientific method with subagent isolation.
|
|
|
17
17
|
**Why subagent:** Investigation burns context fast (reading files, forming hypotheses, testing). Fresh 200k context per investigation. Main context stays lean for user interaction.
|
|
18
18
|
</objective>
|
|
19
19
|
|
|
20
|
+
<available_agent_types>
|
|
21
|
+
Valid GSD subagent types (use exact names — do not fall back to 'general'):
|
|
22
|
+
- gsd-debugger — Diagnoses and fixes issues
|
|
23
|
+
</available_agent_types>
|
|
24
|
+
|
|
20
25
|
<context>
|
|
21
26
|
User's issue: $ARGUMENTS
|
|
22
27
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsd-discuss-phase
|
|
3
|
-
description: Gather phase context through adaptive questioning before planning
|
|
4
|
-
argument-hint: "<phase> [--auto]"
|
|
3
|
+
description: Gather phase context through adaptive questioning before planning. Use --auto to skip interactive questions (OpenCode picks recommended defaults).
|
|
4
|
+
argument-hint: "<phase> [--auto] [--batch] [--analyze] [--text]"
|
|
5
5
|
permissions:
|
|
6
6
|
read: true
|
|
7
7
|
write: true
|
|
@@ -30,6 +30,7 @@ Extract implementation decisions that downstream agents need — researcher and
|
|
|
30
30
|
|
|
31
31
|
<execution_context>
|
|
32
32
|
@$HOME/.config/opencode/get-shit-done/workflows/discuss-phase.md
|
|
33
|
+
@$HOME/.config/opencode/get-shit-done/workflows/discuss-phase-assumptions.md
|
|
33
34
|
@$HOME/.config/opencode/get-shit-done/templates/context.md
|
|
34
35
|
</execution_context>
|
|
35
36
|
|
|
@@ -40,43 +41,16 @@ Context files are resolved in-workflow using `init phase-op` and roadmap/state t
|
|
|
40
41
|
</context>
|
|
41
42
|
|
|
42
43
|
<process>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
5. **Analyze phase** — Check prior decisions, skip already-decided areas, generate remaining gray areas
|
|
48
|
-
6. **Present gray areas** — Multi-select: which to discuss? Annotate with prior decisions + code context
|
|
49
|
-
7. **Deep-dive each area** — 4 questions per area, code-informed options, Context7 for library choices
|
|
50
|
-
8. **write CONTEXT.md** — Sections match areas discussed + code_context section
|
|
51
|
-
9. Offer next steps (research or plan)
|
|
44
|
+
**Mode routing:**
|
|
45
|
+
```bash
|
|
46
|
+
DISCUSS_MODE=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow.discuss_mode 2>/dev/null || echo "discuss")
|
|
47
|
+
```
|
|
52
48
|
|
|
53
|
-
|
|
54
|
-
- Phase boundary from ROADMAP.md is FIXED
|
|
55
|
-
- Discussion clarifies HOW to implement, not WHETHER to add more
|
|
56
|
-
- If user suggests new capabilities: "That's its own phase. I'll note it for later."
|
|
57
|
-
- Capture deferred ideas — don't lose them, don't act on them
|
|
49
|
+
If `DISCUSS_MODE` is `"assumptions"`: read and execute @$HOME/.config/opencode/get-shit-done/workflows/discuss-phase-assumptions.md end-to-end.
|
|
58
50
|
|
|
59
|
-
|
|
60
|
-
Gray areas depend on what's being built. Analyze the phase goal:
|
|
61
|
-
- Something users SEE → layout, density, interactions, states
|
|
62
|
-
- Something users CALL → responses, errors, auth, versioning
|
|
63
|
-
- Something users RUN → output format, flags, modes, error handling
|
|
64
|
-
- Something users READ → structure, tone, depth, flow
|
|
65
|
-
- Something being ORGANIZED → criteria, grouping, naming, exceptions
|
|
51
|
+
If `DISCUSS_MODE` is `"discuss"` (or unset, or any other value): read and execute @$HOME/.config/opencode/get-shit-done/workflows/discuss-phase.md end-to-end.
|
|
66
52
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
**Probing depth:**
|
|
70
|
-
- Ask 4 questions per area before checking
|
|
71
|
-
- "More questions about [area], or move to next?"
|
|
72
|
-
- If more → ask 4 more, check again
|
|
73
|
-
- After all areas → "Ready to create context?"
|
|
74
|
-
|
|
75
|
-
**Do NOT ask about (OpenCode handles these):**
|
|
76
|
-
- Technical implementation
|
|
77
|
-
- Architecture choices
|
|
78
|
-
- Performance concerns
|
|
79
|
-
- Scope expansion
|
|
53
|
+
**MANDATORY:** The execution_context files listed above ARE the instructions. read the workflow file BEFORE taking any action. The objective and success_criteria sections in this command file are summaries — the workflow file contains the complete step-by-step process with all required behaviors, config checks, and interaction patterns. Do not improvise from the summary.
|
|
80
54
|
</process>
|
|
81
55
|
|
|
82
56
|
<success_criteria>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-do
|
|
3
|
+
description: Route freeform text to the right GSD command automatically
|
|
4
|
+
argument-hint: "<description of what you want to do>"
|
|
5
|
+
permissions:
|
|
6
|
+
read: true
|
|
7
|
+
bash: true
|
|
8
|
+
question: true
|
|
9
|
+
---
|
|
10
|
+
<objective>
|
|
11
|
+
Analyze freeform natural language input and dispatch to the most appropriate GSD command.
|
|
12
|
+
|
|
13
|
+
Acts as a smart dispatcher — never does the work itself. Matches intent to the best GSD command using routing rules, confirms the match, then hands off.
|
|
14
|
+
|
|
15
|
+
Use when you know what you want but don't know which `/gsd-*` command to run.
|
|
16
|
+
</objective>
|
|
17
|
+
|
|
18
|
+
<execution_context>
|
|
19
|
+
@$HOME/.config/opencode/get-shit-done/workflows/do.md
|
|
20
|
+
@$HOME/.config/opencode/get-shit-done/references/ui-brand.md
|
|
21
|
+
</execution_context>
|
|
22
|
+
|
|
23
|
+
<context>
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</context>
|
|
26
|
+
|
|
27
|
+
<process>
|
|
28
|
+
Execute the do workflow from @$HOME/.config/opencode/get-shit-done/workflows/do.md end-to-end.
|
|
29
|
+
Route user intent to the best GSD command and invoke it.
|
|
30
|
+
</process>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsd-execute-phase
|
|
3
3
|
description: Execute all plans in a phase with wave-based parallelization
|
|
4
|
-
argument-hint: "<phase-number> [--gaps-only]"
|
|
4
|
+
argument-hint: "<phase-number> [--wave N] [--gaps-only] [--interactive]"
|
|
5
5
|
permissions:
|
|
6
6
|
read: true
|
|
7
7
|
write: true
|
|
@@ -18,6 +18,15 @@ Execute all plans in a phase using wave-based parallel execution.
|
|
|
18
18
|
|
|
19
19
|
Orchestrator stays lean: discover plans, analyze dependencies, group into waves, spawn subagents, collect results. Each subagent loads the full execute-plan context and handles its own plan.
|
|
20
20
|
|
|
21
|
+
Optional wave filter:
|
|
22
|
+
- `--wave N` executes only Wave `N` for pacing, quota management, or staged rollout
|
|
23
|
+
- phase verification/completion still only happens when no incomplete plans remain after the selected wave finishes
|
|
24
|
+
|
|
25
|
+
Flag handling rule:
|
|
26
|
+
- The optional flags documented below are available behaviors, not implied active behaviors
|
|
27
|
+
- A flag is active only when its literal token appears in `$ARGUMENTS`
|
|
28
|
+
- If a documented flag is absent from `$ARGUMENTS`, treat it as inactive
|
|
29
|
+
|
|
21
30
|
Context budget: ~15% orchestrator, 100% fresh per subagent.
|
|
22
31
|
</objective>
|
|
23
32
|
|
|
@@ -29,8 +38,17 @@ Context budget: ~15% orchestrator, 100% fresh per subagent.
|
|
|
29
38
|
<context>
|
|
30
39
|
Phase: $ARGUMENTS
|
|
31
40
|
|
|
32
|
-
**
|
|
41
|
+
**Available optional flags (documentation only — not automatically active):**
|
|
42
|
+
- `--wave N` — Execute only Wave `N` in the phase. Use when you want to pace execution or stay inside usage limits.
|
|
33
43
|
- `--gaps-only` — Execute only gap closure plans (plans with `gap_closure: true` in frontmatter). Use after verify-work creates fix plans.
|
|
44
|
+
- `--interactive` — Execute plans sequentially inline (no subagents) with user checkpoints between tasks. Lower token usage, pair-programming style. Best for small phases, bug fixes, and verification gaps.
|
|
45
|
+
|
|
46
|
+
**Active flags must be derived from `$ARGUMENTS`:**
|
|
47
|
+
- `--wave N` is active only if the literal `--wave` token is present in `$ARGUMENTS`
|
|
48
|
+
- `--gaps-only` is active only if the literal `--gaps-only` token is present in `$ARGUMENTS`
|
|
49
|
+
- `--interactive` is active only if the literal `--interactive` token is present in `$ARGUMENTS`
|
|
50
|
+
- If none of these tokens appear, run the standard full-phase execution flow with no flag-specific filtering
|
|
51
|
+
- Do not infer that a flag is active just because it is documented in this prompt
|
|
34
52
|
|
|
35
53
|
Context files are resolved inside the workflow via `gsd-tools init execute-phase` and per-subagent `<files_to_read>` blocks.
|
|
36
54
|
</context>
|