gsd-opencode 1.22.0 → 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.
Files changed (157) hide show
  1. package/agents/gsd-advisor-researcher.md +112 -0
  2. package/agents/gsd-assumptions-analyzer.md +110 -0
  3. package/agents/gsd-codebase-mapper.md +1 -2
  4. package/agents/gsd-debugger.md +119 -2
  5. package/agents/gsd-executor.md +25 -4
  6. package/agents/gsd-integration-checker.md +1 -2
  7. package/agents/gsd-nyquist-auditor.md +1 -2
  8. package/agents/gsd-phase-researcher.md +151 -5
  9. package/agents/gsd-plan-checker.md +71 -5
  10. package/agents/gsd-planner.md +50 -4
  11. package/agents/gsd-project-researcher.md +29 -3
  12. package/agents/gsd-research-synthesizer.md +1 -2
  13. package/agents/gsd-roadmapper.md +30 -2
  14. package/agents/gsd-ui-auditor.md +445 -0
  15. package/agents/gsd-ui-checker.md +305 -0
  16. package/agents/gsd-ui-researcher.md +368 -0
  17. package/agents/gsd-user-profiler.md +173 -0
  18. package/agents/gsd-verifier.md +124 -4
  19. package/commands/gsd/gsd-add-backlog.md +76 -0
  20. package/commands/gsd/gsd-audit-uat.md +24 -0
  21. package/commands/gsd/gsd-autonomous.md +41 -0
  22. package/commands/gsd/gsd-debug.md +5 -0
  23. package/commands/gsd/gsd-discuss-phase.md +10 -36
  24. package/commands/gsd/gsd-do.md +30 -0
  25. package/commands/gsd/gsd-execute-phase.md +20 -2
  26. package/commands/gsd/gsd-fast.md +30 -0
  27. package/commands/gsd/gsd-forensics.md +56 -0
  28. package/commands/gsd/gsd-list-workspaces.md +19 -0
  29. package/commands/gsd/gsd-manager.md +39 -0
  30. package/commands/gsd/gsd-milestone-summary.md +51 -0
  31. package/commands/gsd/gsd-new-workspace.md +44 -0
  32. package/commands/gsd/gsd-next.md +24 -0
  33. package/commands/gsd/gsd-note.md +34 -0
  34. package/commands/gsd/gsd-plan-phase.md +3 -1
  35. package/commands/gsd/gsd-plant-seed.md +28 -0
  36. package/commands/gsd/gsd-pr-branch.md +25 -0
  37. package/commands/gsd/gsd-profile-user.md +46 -0
  38. package/commands/gsd/gsd-quick.md +4 -2
  39. package/commands/gsd/gsd-reapply-patches.md +10 -6
  40. package/commands/gsd/gsd-remove-workspace.md +26 -0
  41. package/commands/gsd/gsd-research-phase.md +5 -0
  42. package/commands/gsd/gsd-resume-work.md +1 -1
  43. package/commands/gsd/gsd-review-backlog.md +61 -0
  44. package/commands/gsd/gsd-review.md +37 -0
  45. package/commands/gsd/gsd-session-report.md +19 -0
  46. package/commands/gsd/gsd-set-profile.md +24 -23
  47. package/commands/gsd/gsd-ship.md +23 -0
  48. package/commands/gsd/gsd-stats.md +18 -0
  49. package/commands/gsd/gsd-thread.md +127 -0
  50. package/commands/gsd/gsd-ui-phase.md +34 -0
  51. package/commands/gsd/gsd-ui-review.md +32 -0
  52. package/commands/gsd/gsd-workstreams.md +66 -0
  53. package/get-shit-done/bin/gsd-tools.cjs +410 -84
  54. package/get-shit-done/bin/lib/commands.cjs +429 -18
  55. package/get-shit-done/bin/lib/config.cjs +318 -45
  56. package/get-shit-done/bin/lib/core.cjs +822 -84
  57. package/get-shit-done/bin/lib/frontmatter.cjs +78 -41
  58. package/get-shit-done/bin/lib/init.cjs +836 -104
  59. package/get-shit-done/bin/lib/milestone.cjs +44 -33
  60. package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
  61. package/get-shit-done/bin/lib/phase.cjs +293 -306
  62. package/get-shit-done/bin/lib/profile-output.cjs +952 -0
  63. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  64. package/get-shit-done/bin/lib/roadmap.cjs +55 -24
  65. package/get-shit-done/bin/lib/security.cjs +382 -0
  66. package/get-shit-done/bin/lib/state.cjs +363 -53
  67. package/get-shit-done/bin/lib/template.cjs +2 -2
  68. package/get-shit-done/bin/lib/uat.cjs +282 -0
  69. package/get-shit-done/bin/lib/verify.cjs +104 -36
  70. package/get-shit-done/bin/lib/workstream.cjs +491 -0
  71. package/get-shit-done/references/checkpoints.md +12 -10
  72. package/get-shit-done/references/decimal-phase-calculation.md +2 -3
  73. package/get-shit-done/references/git-integration.md +47 -0
  74. package/get-shit-done/references/model-profile-resolution.md +2 -0
  75. package/get-shit-done/references/model-profiles.md +62 -16
  76. package/get-shit-done/references/phase-argument-parsing.md +2 -2
  77. package/get-shit-done/references/planning-config.md +3 -1
  78. package/get-shit-done/references/user-profiling.md +681 -0
  79. package/get-shit-done/references/workstream-flag.md +58 -0
  80. package/get-shit-done/templates/UAT.md +21 -3
  81. package/get-shit-done/templates/UI-SPEC.md +100 -0
  82. package/get-shit-done/templates/claude-md.md +122 -0
  83. package/get-shit-done/templates/config.json +10 -3
  84. package/get-shit-done/templates/context.md +61 -6
  85. package/get-shit-done/templates/dev-preferences.md +21 -0
  86. package/get-shit-done/templates/discussion-log.md +63 -0
  87. package/get-shit-done/templates/phase-prompt.md +46 -5
  88. package/get-shit-done/templates/project.md +2 -0
  89. package/get-shit-done/templates/state.md +2 -2
  90. package/get-shit-done/templates/user-profile.md +146 -0
  91. package/get-shit-done/workflows/add-phase.md +2 -2
  92. package/get-shit-done/workflows/add-tests.md +4 -4
  93. package/get-shit-done/workflows/add-todo.md +3 -3
  94. package/get-shit-done/workflows/audit-milestone.md +13 -5
  95. package/get-shit-done/workflows/audit-uat.md +109 -0
  96. package/get-shit-done/workflows/autonomous.md +891 -0
  97. package/get-shit-done/workflows/check-todos.md +2 -2
  98. package/get-shit-done/workflows/cleanup.md +4 -4
  99. package/get-shit-done/workflows/complete-milestone.md +9 -6
  100. package/get-shit-done/workflows/diagnose-issues.md +15 -3
  101. package/get-shit-done/workflows/discovery-phase.md +2 -2
  102. package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
  103. package/get-shit-done/workflows/discuss-phase.md +411 -38
  104. package/get-shit-done/workflows/do.md +104 -0
  105. package/get-shit-done/workflows/execute-phase.md +405 -18
  106. package/get-shit-done/workflows/execute-plan.md +77 -12
  107. package/get-shit-done/workflows/fast.md +105 -0
  108. package/get-shit-done/workflows/forensics.md +265 -0
  109. package/get-shit-done/workflows/health.md +28 -6
  110. package/get-shit-done/workflows/help.md +124 -7
  111. package/get-shit-done/workflows/insert-phase.md +2 -2
  112. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  113. package/get-shit-done/workflows/list-workspaces.md +56 -0
  114. package/get-shit-done/workflows/manager.md +362 -0
  115. package/get-shit-done/workflows/map-codebase.md +74 -13
  116. package/get-shit-done/workflows/milestone-summary.md +223 -0
  117. package/get-shit-done/workflows/new-milestone.md +120 -18
  118. package/get-shit-done/workflows/new-project.md +178 -39
  119. package/get-shit-done/workflows/new-workspace.md +237 -0
  120. package/get-shit-done/workflows/next.md +97 -0
  121. package/get-shit-done/workflows/node-repair.md +92 -0
  122. package/get-shit-done/workflows/note.md +156 -0
  123. package/get-shit-done/workflows/pause-work.md +62 -8
  124. package/get-shit-done/workflows/plan-milestone-gaps.md +4 -5
  125. package/get-shit-done/workflows/plan-phase.md +332 -33
  126. package/get-shit-done/workflows/plant-seed.md +169 -0
  127. package/get-shit-done/workflows/pr-branch.md +129 -0
  128. package/get-shit-done/workflows/profile-user.md +450 -0
  129. package/get-shit-done/workflows/progress.md +145 -20
  130. package/get-shit-done/workflows/quick.md +205 -49
  131. package/get-shit-done/workflows/remove-phase.md +2 -2
  132. package/get-shit-done/workflows/remove-workspace.md +90 -0
  133. package/get-shit-done/workflows/research-phase.md +11 -3
  134. package/get-shit-done/workflows/resume-project.md +35 -16
  135. package/get-shit-done/workflows/review.md +228 -0
  136. package/get-shit-done/workflows/session-report.md +146 -0
  137. package/get-shit-done/workflows/set-profile.md +2 -2
  138. package/get-shit-done/workflows/settings.md +80 -11
  139. package/get-shit-done/workflows/ship.md +228 -0
  140. package/get-shit-done/workflows/stats.md +60 -0
  141. package/get-shit-done/workflows/transition.md +147 -20
  142. package/get-shit-done/workflows/ui-phase.md +302 -0
  143. package/get-shit-done/workflows/ui-review.md +165 -0
  144. package/get-shit-done/workflows/update.md +108 -25
  145. package/get-shit-done/workflows/validate-phase.md +15 -8
  146. package/get-shit-done/workflows/verify-phase.md +16 -5
  147. package/get-shit-done/workflows/verify-work.md +72 -18
  148. package/package.json +1 -1
  149. package/skills/gsd-audit-milestone/SKILL.md +29 -0
  150. package/skills/gsd-cleanup/SKILL.md +19 -0
  151. package/skills/gsd-complete-milestone/SKILL.md +131 -0
  152. package/skills/gsd-discuss-phase/SKILL.md +54 -0
  153. package/skills/gsd-execute-phase/SKILL.md +49 -0
  154. package/skills/gsd-plan-phase/SKILL.md +37 -0
  155. package/skills/gsd-ui-phase/SKILL.md +24 -0
  156. package/skills/gsd-ui-review/SKILL.md +24 -0
  157. package/skills/gsd-verify-work/SKILL.md +30 -0
@@ -0,0 +1,146 @@
1
+ # Developer Profile
2
+
3
+ > This profile was generated from session analysis. It contains behavioral directives
4
+ > for OpenCode to follow when working with this developer. HIGH confidence dimensions
5
+ > should be acted on directly. LOW confidence dimensions should be approached with
6
+ > hedging ("Based on your profile, I'll try X -- let me know if that's off").
7
+
8
+ **Generated:** {{generated_at}}
9
+ **Source:** {{data_source}}
10
+ **Projects Analyzed:** {{projects_list}}
11
+ **Messages Analyzed:** {{message_count}}
12
+
13
+ ---
14
+
15
+ ## Quick Reference
16
+
17
+ {{summary_instructions}}
18
+
19
+ ---
20
+
21
+ ## Communication Style
22
+
23
+ **Rating:** {{communication_style.rating}} | **Confidence:** {{communication_style.confidence}}
24
+
25
+ **Directive:** {{communication_style.claude_instruction}}
26
+
27
+ {{communication_style.summary}}
28
+
29
+ **Evidence:**
30
+
31
+ {{communication_style.evidence}}
32
+
33
+ ---
34
+
35
+ ## Decision Speed
36
+
37
+ **Rating:** {{decision_speed.rating}} | **Confidence:** {{decision_speed.confidence}}
38
+
39
+ **Directive:** {{decision_speed.claude_instruction}}
40
+
41
+ {{decision_speed.summary}}
42
+
43
+ **Evidence:**
44
+
45
+ {{decision_speed.evidence}}
46
+
47
+ ---
48
+
49
+ ## Explanation Depth
50
+
51
+ **Rating:** {{explanation_depth.rating}} | **Confidence:** {{explanation_depth.confidence}}
52
+
53
+ **Directive:** {{explanation_depth.claude_instruction}}
54
+
55
+ {{explanation_depth.summary}}
56
+
57
+ **Evidence:**
58
+
59
+ {{explanation_depth.evidence}}
60
+
61
+ ---
62
+
63
+ ## Debugging Approach
64
+
65
+ **Rating:** {{debugging_approach.rating}} | **Confidence:** {{debugging_approach.confidence}}
66
+
67
+ **Directive:** {{debugging_approach.claude_instruction}}
68
+
69
+ {{debugging_approach.summary}}
70
+
71
+ **Evidence:**
72
+
73
+ {{debugging_approach.evidence}}
74
+
75
+ ---
76
+
77
+ ## UX Philosophy
78
+
79
+ **Rating:** {{ux_philosophy.rating}} | **Confidence:** {{ux_philosophy.confidence}}
80
+
81
+ **Directive:** {{ux_philosophy.claude_instruction}}
82
+
83
+ {{ux_philosophy.summary}}
84
+
85
+ **Evidence:**
86
+
87
+ {{ux_philosophy.evidence}}
88
+
89
+ ---
90
+
91
+ ## Vendor Philosophy
92
+
93
+ **Rating:** {{vendor_philosophy.rating}} | **Confidence:** {{vendor_philosophy.confidence}}
94
+
95
+ **Directive:** {{vendor_philosophy.claude_instruction}}
96
+
97
+ {{vendor_philosophy.summary}}
98
+
99
+ **Evidence:**
100
+
101
+ {{vendor_philosophy.evidence}}
102
+
103
+ ---
104
+
105
+ ## Frustration Triggers
106
+
107
+ **Rating:** {{frustration_triggers.rating}} | **Confidence:** {{frustration_triggers.confidence}}
108
+
109
+ **Directive:** {{frustration_triggers.claude_instruction}}
110
+
111
+ {{frustration_triggers.summary}}
112
+
113
+ **Evidence:**
114
+
115
+ {{frustration_triggers.evidence}}
116
+
117
+ ---
118
+
119
+ ## Learning Style
120
+
121
+ **Rating:** {{learning_style.rating}} | **Confidence:** {{learning_style.confidence}}
122
+
123
+ **Directive:** {{learning_style.claude_instruction}}
124
+
125
+ {{learning_style.summary}}
126
+
127
+ **Evidence:**
128
+
129
+ {{learning_style.evidence}}
130
+
131
+ ---
132
+
133
+ ## Profile Metadata
134
+
135
+ | Field | Value |
136
+ |-------|-------|
137
+ | Profile Version | {{profile_version}} |
138
+ | Generated | {{generated_at}} |
139
+ | Source | {{data_source}} |
140
+ | Projects | {{projects_count}} |
141
+ | Messages | {{message_count}} |
142
+ | Dimensions Scored | {{dimensions_scored}}/8 |
143
+ | High Confidence | {{high_confidence_count}} |
144
+ | Medium Confidence | {{medium_confidence_count}} |
145
+ | Low Confidence | {{low_confidence_count}} |
146
+ | Sensitive Content Excluded | {{sensitive_excluded_summary}} |
@@ -1,6 +1,6 @@
1
- <purpose>
1
+ <objective>
2
2
  Add a new integer phase to the end of the current milestone in the roadmap. Automatically calculates next phase number, creates phase directory, and updates roadmap structure.
3
- </purpose>
3
+ </objective>
4
4
 
5
5
  <required_reading>
6
6
  read all files referenced by the invoking prompt's execution_context before starting.
@@ -1,8 +1,8 @@
1
- <purpose>
1
+ <objective>
2
2
  Generate unit and E2E tests for a completed phase based on its SUMMARY.md, CONTEXT.md, and implementation. Classifies each changed file into TDD (unit), E2E (browser), or Skip categories, presents a test plan for user approval, then generates tests following RED-GREEN conventions.
3
3
 
4
4
  Users currently hand-craft `/gsd-quick` prompts for test generation after each phase. This workflow standardizes the process with proper classification, quality gates, and gap reporting.
5
- </purpose>
5
+ </objective>
6
6
 
7
7
  <required_reading>
8
8
  read all files referenced by the invoking prompt's execution_context before starting.
@@ -146,7 +146,7 @@ find . -type d -name "*test*" -o -name "*spec*" -o -name "*__tests__*" 2>/dev/nu
146
146
  # Find existing test files for convention matching
147
147
  find . -type f \( -name "*.test.*" -o -name "*.spec.*" -o -name "*Tests.fs" -o -name "*Test.fs" \) 2>/dev/null | head -20
148
148
  # Check for test runners
149
- ls package.json *.sln 2>/dev/null
149
+ ls package.json *.sln 2>/dev/null || true
150
150
  ```
151
151
 
152
152
  Identify:
@@ -243,7 +243,7 @@ For each approved E2E test:
243
243
 
244
244
  1. **Check for existing tests** covering the same scenario:
245
245
  ```bash
246
- grep -r "{scenario keyword}" {e2e test directory} 2>/dev/null
246
+ grep -r "{scenario keyword}" {e2e test directory} 2>/dev/null || true
247
247
  ```
248
248
  If found, extend rather than duplicate.
249
249
 
@@ -1,6 +1,6 @@
1
- <purpose>
1
+ <objective>
2
2
  Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work. Enables "thought → capture → continue" flow without losing context.
3
- </purpose>
3
+ </objective>
4
4
 
5
5
  <required_reading>
6
6
  read all files referenced by the invoking prompt's execution_context before starting.
@@ -63,7 +63,7 @@ Use existing area from step 2 if similar match exists.
63
63
  <step name="check_duplicates">
64
64
  ```bash
65
65
  # Search for key words from title in existing todos
66
- grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null
66
+ grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null || true
67
67
  ```
68
68
 
69
69
  If potential duplicate found:
@@ -1,11 +1,16 @@
1
- <purpose>
1
+ <objective>
2
2
  Verify milestone achieved its definition of done by aggregating phase verifications, checking cross-phase integration, and assessing requirements coverage. Reads existing VERIFICATION.md files (phases already verified during execute-phase), aggregates tech debt and deferred gaps, then spawns integration checker for cross-phase wiring.
3
- </purpose>
3
+ </objective>
4
4
 
5
5
  <required_reading>
6
6
  read all files referenced by the invoking prompt's execution_context before starting.
7
7
  </required_reading>
8
8
 
9
+ <available_agent_types>
10
+ Valid GSD subagent types (use exact names — do not fall back to 'general'):
11
+ - gsd-integration-checker — Checks cross-phase integration
12
+ </available_agent_types>
13
+
9
14
  <process>
10
15
 
11
16
  ## 0. Initialize Milestone Context
@@ -13,6 +18,7 @@ read all files referenced by the invoking prompt's execution_context before star
13
18
  ```bash
14
19
  INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init milestone-op)
15
20
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
21
+ AGENT_SKILLS_CHECKER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-integration-checker 2>/dev/null)
16
22
  ```
17
23
 
18
24
  Extract from init JSON: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `commit_docs`.
@@ -73,7 +79,8 @@ Milestone Requirements:
73
79
 
74
80
  MUST map each integration finding to affected requirement IDs where applicable.
75
81
 
76
- Verify cross-phase wiring and E2E user flows.",
82
+ Verify cross-phase wiring and E2E user flows.
83
+ ${AGENT_SKILLS_CHECKER}",
77
84
  subagent_type="gsd-integration-checker",
78
85
  model="{integration_checker_model}"
79
86
  )
@@ -105,7 +112,8 @@ For each phase's VERIFICATION.md, extract the expanded requirements table:
105
112
  For each phase's SUMMARY.md, extract `requirements-completed` from YAML frontmatter:
106
113
  ```bash
107
114
  for summary in .planning/phases/*-*/*-SUMMARY.md; do
108
- node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" summary-extract "$summary" --fields requirements_completed | jq -r '.requirements_completed'
115
+ [ -e "$summary" ] || continue
116
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" summary-extract "$summary" --fields requirements_completed --pick requirements_completed
109
117
  done
110
118
  ```
111
119
 
@@ -133,7 +141,7 @@ For each REQ-ID, determine status using all three sources:
133
141
  Skip if `workflow.nyquist_validation` is explicitly `false` (absent = enabled).
134
142
 
135
143
  ```bash
136
- NYQUIST_CONFIG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config get workflow.nyquist_validation --raw 2>/dev/null)
144
+ NYQUIST_CONFIG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow.nyquist_validation --raw 2>/dev/null)
137
145
  ```
138
146
 
139
147
  If `false`: skip entirely.
@@ -0,0 +1,109 @@
1
+ <objective>
2
+ Cross-phase audit of all UAT and verification files. Finds every outstanding item (pending, skipped, blocked, human_needed), optionally verifies against the codebase to detect stale docs, and produces a prioritized human test plan.
3
+ </objective>
4
+
5
+ <process>
6
+
7
+ <step name="initialize">
8
+ Run the CLI audit:
9
+
10
+ ```bash
11
+ AUDIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" audit-uat --raw)
12
+ ```
13
+
14
+ Parse JSON for `results` array and `summary` object.
15
+
16
+ If `summary.total_items` is 0:
17
+ ```
18
+ ## All Clear
19
+
20
+ No outstanding UAT or verification items found across all phases.
21
+ All tests are passing, resolved, or diagnosed with fix plans.
22
+ ```
23
+ Stop here.
24
+ </step>
25
+
26
+ <step name="categorize">
27
+ Group items by what's actionable NOW vs. what needs prerequisites:
28
+
29
+ **Testable Now** (no external dependencies):
30
+ - `pending` — tests never run
31
+ - `human_uat` — human verification items
32
+ - `skipped_unresolved` — skipped without clear blocking reason
33
+
34
+ **Needs Prerequisites:**
35
+ - `server_blocked` — needs external server running
36
+ - `device_needed` — needs physical device (not simulator)
37
+ - `build_needed` — needs release/preview build
38
+ - `third_party` — needs external service configuration
39
+
40
+ For each item in "Testable Now", use grep/read to check if the underlying feature still exists in the codebase:
41
+ - If the test references a component/function that no longer exists → mark as `stale`
42
+ - If the test references code that has been significantly rewritten → mark as `needs_update`
43
+ - Otherwise → mark as `active`
44
+ </step>
45
+
46
+ <step name="present">
47
+ Present the audit report:
48
+
49
+ ```
50
+ ## UAT Audit Report
51
+
52
+ **{total_items} outstanding items across {total_files} files in {phase_count} phases**
53
+
54
+ ### Testable Now ({count})
55
+
56
+ | # | Phase | Test | Description | Status |
57
+ |---|-------|------|-------------|--------|
58
+ | 1 | {phase} | {test_name} | {expected} | {active/stale/needs_update} |
59
+ ...
60
+
61
+ ### Needs Prerequisites ({count})
62
+
63
+ | # | Phase | Test | Blocked By | Description |
64
+ |---|-------|------|------------|-------------|
65
+ | 1 | {phase} | {test_name} | {category} | {expected} |
66
+ ...
67
+
68
+ ### Stale (can be closed) ({count})
69
+
70
+ | # | Phase | Test | Why Stale |
71
+ |---|-------|------|-----------|
72
+ | 1 | {phase} | {test_name} | {reason} |
73
+ ...
74
+
75
+ ---
76
+
77
+ ## Recommended Actions
78
+
79
+ 1. **Close stale items:** `/gsd-verify-work {phase}` — mark stale tests as resolved
80
+ 2. **Run active tests:** Human UAT test plan below
81
+ 3. **When prerequisites met:** Retest blocked items with `/gsd-verify-work {phase}`
82
+ ```
83
+ </step>
84
+
85
+ <step name="test_plan">
86
+ Generate a human UAT test plan for "Testable Now" + "active" items only:
87
+
88
+ Group by what can be tested together (same screen, same feature, same prerequisite):
89
+
90
+ ```
91
+ ## Human UAT Test Plan
92
+
93
+ ### Group 1: {category — e.g., "Billing Flow"}
94
+ Prerequisites: {what needs to be running/configured}
95
+
96
+ 1. **{Test name}** (Phase {N})
97
+ - Navigate to: {where}
98
+ - Do: {action}
99
+ - Expected: {expected behavior}
100
+
101
+ 2. **{Test name}** (Phase {N})
102
+ ...
103
+
104
+ ### Group 2: {category}
105
+ ...
106
+ ```
107
+ </step>
108
+
109
+ </process>