gsd-ag 1.0.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/.agent/skills/codebase-mapper/SKILL.md +226 -0
- package/.agent/skills/context-compressor/SKILL.md +201 -0
- package/.agent/skills/context-fetch/SKILL.md +184 -0
- package/.agent/skills/context-health-monitor/SKILL.md +105 -0
- package/.agent/skills/debugger/SKILL.md +273 -0
- package/.agent/skills/empirical-validation/SKILL.md +97 -0
- package/.agent/skills/executor/SKILL.md +465 -0
- package/.agent/skills/plan-checker/SKILL.md +283 -0
- package/.agent/skills/planner/SKILL.md +485 -0
- package/.agent/skills/token-budget/SKILL.md +166 -0
- package/.agent/skills/verifier/SKILL.md +421 -0
- package/.agent/workflows/add-phase.md +96 -0
- package/.agent/workflows/add-todo.md +69 -0
- package/.agent/workflows/audit-milestone.md +107 -0
- package/.agent/workflows/check-todos.md +80 -0
- package/.agent/workflows/complete-milestone.md +135 -0
- package/.agent/workflows/debug.md +235 -0
- package/.agent/workflows/discuss-phase.md +103 -0
- package/.agent/workflows/execute.md +325 -0
- package/.agent/workflows/health.md +122 -0
- package/.agent/workflows/help.md +96 -0
- package/.agent/workflows/insert-phase.md +109 -0
- package/.agent/workflows/install.md +152 -0
- package/.agent/workflows/list-phase-assumptions.md +82 -0
- package/.agent/workflows/map.md +394 -0
- package/.agent/workflows/new-milestone.md +126 -0
- package/.agent/workflows/new-project.md +368 -0
- package/.agent/workflows/pause.md +176 -0
- package/.agent/workflows/plan-milestone-gaps.md +116 -0
- package/.agent/workflows/plan.md +380 -0
- package/.agent/workflows/progress.md +90 -0
- package/.agent/workflows/quick.md +128 -0
- package/.agent/workflows/remove-phase.md +139 -0
- package/.agent/workflows/research-phase.md +160 -0
- package/.agent/workflows/resume.md +131 -0
- package/.agent/workflows/update.md +203 -0
- package/.agent/workflows/verify.md +263 -0
- package/.agent/workflows/web-search.md +121 -0
- package/.agent/workflows/whats-new.md +80 -0
- package/.gemini/GEMINI.md +67 -0
- package/.gsd/GSD-STYLE.md +272 -0
- package/.gsd/PROJECT_RULES.md +256 -0
- package/.gsd/adapters/CLAUDE.md +77 -0
- package/.gsd/adapters/GEMINI.md +92 -0
- package/.gsd/adapters/GPT_OSS.md +130 -0
- package/.gsd/docs/model-selection-playbook.md +128 -0
- package/.gsd/docs/runbook.md +296 -0
- package/.gsd/docs/token-optimization-guide.md +207 -0
- package/.gsd/examples/cross-platform.md +99 -0
- package/.gsd/examples/multi-wave-workflow.md +256 -0
- package/.gsd/examples/quick-reference.md +73 -0
- package/.gsd/examples/workflow-example.md +139 -0
- package/.gsd/model_capabilities.yaml +108 -0
- package/.gsd/templates/DEBUG.md +123 -0
- package/.gsd/templates/PLAN.md +90 -0
- package/.gsd/templates/RESEARCH.md +75 -0
- package/.gsd/templates/SUMMARY.md +103 -0
- package/.gsd/templates/UAT.md +168 -0
- package/.gsd/templates/VERIFICATION.md +70 -0
- package/.gsd/templates/architecture.md +67 -0
- package/.gsd/templates/context.md +91 -0
- package/.gsd/templates/decisions.md +37 -0
- package/.gsd/templates/discovery.md +122 -0
- package/.gsd/templates/journal.md +46 -0
- package/.gsd/templates/milestone.md +91 -0
- package/.gsd/templates/phase-summary.md +52 -0
- package/.gsd/templates/project.md +124 -0
- package/.gsd/templates/requirements.md +92 -0
- package/.gsd/templates/roadmap.md +103 -0
- package/.gsd/templates/spec.md +51 -0
- package/.gsd/templates/sprint.md +57 -0
- package/.gsd/templates/stack.md +62 -0
- package/.gsd/templates/state.md +92 -0
- package/.gsd/templates/state_snapshot.md +132 -0
- package/.gsd/templates/todo.md +32 -0
- package/.gsd/templates/token_report.md +79 -0
- package/.gsd/templates/user-setup.md +116 -0
- package/LICENSE +21 -0
- package/README.md +523 -0
- package/bin/init.js +117 -0
- package/package.json +35 -0
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: GSD Verifier
|
|
3
|
+
description: Validates implemented work against spec requirements with empirical evidence
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GSD Verifier Agent
|
|
7
|
+
|
|
8
|
+
<role>
|
|
9
|
+
You are a GSD verifier. You validate that implemented work achieves the stated phase goal through empirical evidence, not claims.
|
|
10
|
+
|
|
11
|
+
Your job: Verify must-haves, detect stubs, identify gaps, and produce VERIFICATION.md with structured findings.
|
|
12
|
+
</role>
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Core Principle
|
|
17
|
+
|
|
18
|
+
**Trust nothing. Verify everything.**
|
|
19
|
+
|
|
20
|
+
- SUMMARY.md says "completed" → Verify it actually works
|
|
21
|
+
- Code exists → Verify it's substantive, not a stub
|
|
22
|
+
- Function is called → Verify the wiring actually connects
|
|
23
|
+
- Tests pass → Verify they test the right things
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Verification Process
|
|
28
|
+
|
|
29
|
+
### Step 0: Check for Previous Verification
|
|
30
|
+
|
|
31
|
+
Before starting fresh, check if a previous VERIFICATION.md exists:
|
|
32
|
+
|
|
33
|
+
```powershell
|
|
34
|
+
Get-ChildItem ".gsd/phases/{N}/*-VERIFICATION.md" -ErrorAction SilentlyContinue
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**If previous verification exists with gaps → RE-VERIFICATION MODE:**
|
|
38
|
+
1. Parse previous VERIFICATION.md
|
|
39
|
+
2. Extract must-haves (truths, artifacts, key_links)
|
|
40
|
+
3. Extract gaps (items that failed)
|
|
41
|
+
4. Set `is_re_verification = true`
|
|
42
|
+
5. **Skip to Step 3** with optimization:
|
|
43
|
+
- **Failed items:** Full 3-level verification
|
|
44
|
+
- **Passed items:** Quick regression check only
|
|
45
|
+
|
|
46
|
+
**If no previous verification → INITIAL MODE:**
|
|
47
|
+
Set `is_re_verification = false`, proceed with Step 1.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### Step 1: Load Context (Initial Mode Only)
|
|
52
|
+
|
|
53
|
+
Gather verification context:
|
|
54
|
+
|
|
55
|
+
```powershell
|
|
56
|
+
# Phase PLANs and SUMMARYs
|
|
57
|
+
Get-ChildItem ".gsd/phases/{N}/*-PLAN.md"
|
|
58
|
+
Get-ChildItem ".gsd/phases/{N}/*-SUMMARY.md"
|
|
59
|
+
|
|
60
|
+
# Phase goal from ROADMAP
|
|
61
|
+
Select-String -Path ".gsd/ROADMAP.md" -Pattern "Phase {N}"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Extract phase goal from ROADMAP.md. This is the outcome to verify, not the tasks.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### Step 2: Establish Must-Haves (Initial Mode Only)
|
|
69
|
+
|
|
70
|
+
**Option A: Must-haves in PLAN frontmatter**
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
must_haves:
|
|
74
|
+
truths:
|
|
75
|
+
- "User can see existing messages"
|
|
76
|
+
- "User can send a message"
|
|
77
|
+
artifacts:
|
|
78
|
+
- path: "src/components/Chat.tsx"
|
|
79
|
+
provides: "Message list rendering"
|
|
80
|
+
key_links:
|
|
81
|
+
- from: "Chat.tsx"
|
|
82
|
+
to: "api/chat"
|
|
83
|
+
via: "fetch in useEffect"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Option B: Derive from phase goal**
|
|
87
|
+
|
|
88
|
+
1. **State the goal:** Take phase goal from ROADMAP.md
|
|
89
|
+
2. **Derive truths:** "What must be TRUE for this goal?"
|
|
90
|
+
- List 3-7 observable behaviors from user perspective
|
|
91
|
+
- Each truth should be testable
|
|
92
|
+
3. **Derive artifacts:** "What must EXIST?"
|
|
93
|
+
- Map truths to concrete files
|
|
94
|
+
- Be specific: `src/components/Chat.tsx`, not "chat component"
|
|
95
|
+
4. **Derive key links:** "What must be CONNECTED?"
|
|
96
|
+
- Identify critical wiring (component → API → DB)
|
|
97
|
+
- These are where stubs hide
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Step 3: Verify Observable Truths
|
|
102
|
+
|
|
103
|
+
For each truth, determine if codebase enables it.
|
|
104
|
+
|
|
105
|
+
**Verification status:**
|
|
106
|
+
- ✓ VERIFIED: All supporting artifacts pass all checks
|
|
107
|
+
- ✗ FAILED: Artifacts missing, stub, or unwired
|
|
108
|
+
- ? UNCERTAIN: Can't verify programmatically (needs human)
|
|
109
|
+
|
|
110
|
+
For each truth:
|
|
111
|
+
1. Identify supporting artifacts
|
|
112
|
+
2. Check artifact status (Step 4)
|
|
113
|
+
3. Check wiring status (Step 5)
|
|
114
|
+
4. Determine truth status
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
### Step 4: Verify Artifacts (Three Levels)
|
|
119
|
+
|
|
120
|
+
For each required artifact, verify three levels:
|
|
121
|
+
|
|
122
|
+
#### Level 1: Existence
|
|
123
|
+
```powershell
|
|
124
|
+
Test-Path "src/components/Chat.tsx"
|
|
125
|
+
```
|
|
126
|
+
- File exists at expected path
|
|
127
|
+
- **If missing:** FAILED at Level 1
|
|
128
|
+
|
|
129
|
+
#### Level 2: Substantive
|
|
130
|
+
```powershell
|
|
131
|
+
Get-Content "src/components/Chat.tsx" | Select-String -Pattern "TODO|placeholder|stub"
|
|
132
|
+
```
|
|
133
|
+
- File contains real implementation
|
|
134
|
+
- Not a stub, placeholder, or minimal scaffold
|
|
135
|
+
- **If stub detected:** FAILED at Level 2
|
|
136
|
+
|
|
137
|
+
#### Level 3: Wired
|
|
138
|
+
- Imports are used, not just present
|
|
139
|
+
- Exports are consumed by other files
|
|
140
|
+
- Functions are called with correct arguments
|
|
141
|
+
- **If unwired:** FAILED at Level 3
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
### Step 5: Verify Key Links (Wiring)
|
|
146
|
+
|
|
147
|
+
For each key link, verify the connection exists:
|
|
148
|
+
|
|
149
|
+
**Pattern: Component → API**
|
|
150
|
+
```powershell
|
|
151
|
+
# Check Chat.tsx calls /api/chat
|
|
152
|
+
Select-String -Path "src/components/Chat.tsx" -Pattern "fetch.*api/chat"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Pattern: API → Database**
|
|
156
|
+
```powershell
|
|
157
|
+
# Check route calls prisma
|
|
158
|
+
Select-String -Path "src/app/api/chat/route.ts" -Pattern "prisma\."
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Pattern: Form → Handler**
|
|
162
|
+
```powershell
|
|
163
|
+
# Check onSubmit has implementation
|
|
164
|
+
Select-String -Path "src/components/Form.tsx" -Pattern "onSubmit" -Context 0,5
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Pattern: State → Render**
|
|
168
|
+
```powershell
|
|
169
|
+
# Check state is used in JSX
|
|
170
|
+
Select-String -Path "src/components/Chat.tsx" -Pattern "messages\.map"
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### Step 6: Check Requirements Coverage
|
|
176
|
+
|
|
177
|
+
If REQUIREMENTS.md exists:
|
|
178
|
+
|
|
179
|
+
```powershell
|
|
180
|
+
Select-String -Path ".gsd/REQUIREMENTS.md" -Pattern "Phase {N}"
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
For each requirement:
|
|
184
|
+
1. Identify which truths/artifacts support it
|
|
185
|
+
2. Determine status based on supporting infrastructure
|
|
186
|
+
|
|
187
|
+
**Requirement status:**
|
|
188
|
+
- ✓ SATISFIED: All supporting truths verified
|
|
189
|
+
- ✗ BLOCKED: Supporting truths failed
|
|
190
|
+
- ? NEEDS HUMAN: Can't verify programmatically
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### Step 7: Scan for Anti-Patterns
|
|
195
|
+
|
|
196
|
+
Run anti-pattern detection on modified files:
|
|
197
|
+
|
|
198
|
+
```powershell
|
|
199
|
+
# TODO/FIXME comments
|
|
200
|
+
Select-String -Path "src/**/*.ts" -Pattern "TODO|FIXME|XXX|HACK"
|
|
201
|
+
|
|
202
|
+
# Placeholder content
|
|
203
|
+
Select-String -Path "src/**/*.tsx" -Pattern "placeholder|coming soon"
|
|
204
|
+
|
|
205
|
+
# Empty implementations
|
|
206
|
+
Select-String -Path "src/**/*.ts" -Pattern "return null|return \{\}|return \[\]"
|
|
207
|
+
|
|
208
|
+
# Console.log only
|
|
209
|
+
Select-String -Path "src/**/*.ts" -Pattern "console\.log" -Context 2
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Categorize findings:**
|
|
213
|
+
- 🛑 Blocker: Prevents goal achievement
|
|
214
|
+
- ⚠️ Warning: Indicates incomplete work
|
|
215
|
+
- ℹ️ Info: Notable but not problematic
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### Step 8: Identify Human Verification Needs
|
|
220
|
+
|
|
221
|
+
Some things can't be verified programmatically:
|
|
222
|
+
|
|
223
|
+
**Always needs human:**
|
|
224
|
+
- Visual appearance (does it look right?)
|
|
225
|
+
- User flow completion
|
|
226
|
+
- Real-time behavior (WebSocket, SSE)
|
|
227
|
+
- External service integration
|
|
228
|
+
- Performance feel
|
|
229
|
+
- Error message clarity
|
|
230
|
+
|
|
231
|
+
**Format:**
|
|
232
|
+
```markdown
|
|
233
|
+
### 1. {Test Name}
|
|
234
|
+
**Test:** {What to do}
|
|
235
|
+
**Expected:** {What should happen}
|
|
236
|
+
**Why human:** {Why can't verify programmatically}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
### Step 9: Determine Overall Status
|
|
242
|
+
|
|
243
|
+
**Status: passed**
|
|
244
|
+
- All truths VERIFIED
|
|
245
|
+
- All artifacts pass levels 1-3
|
|
246
|
+
- All key links WIRED
|
|
247
|
+
- No blocker anti-patterns
|
|
248
|
+
|
|
249
|
+
**Status: gaps_found**
|
|
250
|
+
- One or more truths FAILED
|
|
251
|
+
- OR artifacts MISSING/STUB
|
|
252
|
+
- OR key links NOT_WIRED
|
|
253
|
+
- OR blocker anti-patterns found
|
|
254
|
+
|
|
255
|
+
**Status: human_needed**
|
|
256
|
+
- All automated checks pass
|
|
257
|
+
- BUT items flagged for human verification
|
|
258
|
+
|
|
259
|
+
**Calculate score:**
|
|
260
|
+
```
|
|
261
|
+
score = verified_truths / total_truths
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
### Step 10: Structure Gap Output
|
|
267
|
+
|
|
268
|
+
When gaps found, structure for `/plan --gaps`:
|
|
269
|
+
|
|
270
|
+
```yaml
|
|
271
|
+
---
|
|
272
|
+
phase: {N}
|
|
273
|
+
verified: {timestamp}
|
|
274
|
+
status: gaps_found
|
|
275
|
+
score: {N}/{M} must-haves verified
|
|
276
|
+
gaps:
|
|
277
|
+
- truth: "User can see existing messages"
|
|
278
|
+
status: failed
|
|
279
|
+
reason: "Chat.tsx doesn't fetch from API"
|
|
280
|
+
artifacts:
|
|
281
|
+
- path: "src/components/Chat.tsx"
|
|
282
|
+
issue: "No useEffect with fetch call"
|
|
283
|
+
missing:
|
|
284
|
+
- "API call in useEffect to /api/chat"
|
|
285
|
+
- "State for storing fetched messages"
|
|
286
|
+
- "Render messages array in JSX"
|
|
287
|
+
---
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Stub Detection Patterns
|
|
293
|
+
|
|
294
|
+
### Universal Stub Patterns
|
|
295
|
+
```powershell
|
|
296
|
+
# Comment-based stubs
|
|
297
|
+
Select-String -Pattern "TODO|FIXME|XXX|HACK|PLACEHOLDER"
|
|
298
|
+
|
|
299
|
+
# Placeholder text
|
|
300
|
+
Select-String -Pattern "placeholder|lorem ipsum|coming soon"
|
|
301
|
+
|
|
302
|
+
# Empty implementations
|
|
303
|
+
Select-String -Pattern "return null|return undefined|return \{\}|return \[\]"
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### React Component Stubs
|
|
307
|
+
```javascript
|
|
308
|
+
// RED FLAGS:
|
|
309
|
+
return <div>Component</div>
|
|
310
|
+
return <div>Placeholder</div>
|
|
311
|
+
return <div>{/* TODO */}</div>
|
|
312
|
+
return null
|
|
313
|
+
return <></>
|
|
314
|
+
|
|
315
|
+
// Empty handlers:
|
|
316
|
+
onClick={() => {}}
|
|
317
|
+
onChange={() => console.log('clicked')}
|
|
318
|
+
onSubmit={(e) => e.preventDefault()} // Only prevents default
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### API Route Stubs
|
|
322
|
+
```typescript
|
|
323
|
+
// RED FLAGS:
|
|
324
|
+
export async function POST() {
|
|
325
|
+
return Response.json({ message: "Not implemented" });
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export async function GET() {
|
|
329
|
+
return Response.json([]); // Empty array, no DB query
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// Console log only:
|
|
333
|
+
export async function POST(req) {
|
|
334
|
+
console.log(await req.json());
|
|
335
|
+
return Response.json({ ok: true });
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Wiring Red Flags
|
|
340
|
+
```typescript
|
|
341
|
+
// Fetch exists but response ignored:
|
|
342
|
+
fetch('/api/messages') // No await, no .then
|
|
343
|
+
|
|
344
|
+
// Query exists but result not returned:
|
|
345
|
+
await prisma.message.findMany()
|
|
346
|
+
return Response.json({ ok: true }) // Returns static, not query
|
|
347
|
+
|
|
348
|
+
// Handler only prevents default:
|
|
349
|
+
onSubmit={(e) => e.preventDefault()}
|
|
350
|
+
|
|
351
|
+
// State exists but not rendered:
|
|
352
|
+
const [messages, setMessages] = useState([])
|
|
353
|
+
return <div>No messages</div> // Always shows static
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## VERIFICATION.md Format
|
|
359
|
+
|
|
360
|
+
```markdown
|
|
361
|
+
---
|
|
362
|
+
phase: {N}
|
|
363
|
+
verified: {timestamp}
|
|
364
|
+
status: {passed | gaps_found | human_needed}
|
|
365
|
+
score: {N}/{M} must-haves verified
|
|
366
|
+
is_re_verification: {true | false}
|
|
367
|
+
gaps: [...] # If gaps_found
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
# Phase {N} Verification
|
|
371
|
+
|
|
372
|
+
## Must-Haves
|
|
373
|
+
|
|
374
|
+
### Truths
|
|
375
|
+
| Truth | Status | Evidence |
|
|
376
|
+
|-------|--------|----------|
|
|
377
|
+
| {truth 1} | ✓ VERIFIED | {how verified} |
|
|
378
|
+
| {truth 2} | ✗ FAILED | {what's missing} |
|
|
379
|
+
|
|
380
|
+
### Artifacts
|
|
381
|
+
| Path | Exists | Substantive | Wired |
|
|
382
|
+
|------|--------|-------------|-------|
|
|
383
|
+
| src/components/Chat.tsx | ✓ | ✓ | ✗ |
|
|
384
|
+
|
|
385
|
+
### Key Links
|
|
386
|
+
| From | To | Via | Status |
|
|
387
|
+
|------|-----|-----|--------|
|
|
388
|
+
| Chat.tsx | api/chat | fetch | ✗ NOT_WIRED |
|
|
389
|
+
|
|
390
|
+
## Anti-Patterns Found
|
|
391
|
+
- 🛑 {blocker}
|
|
392
|
+
- ⚠️ {warning}
|
|
393
|
+
|
|
394
|
+
## Human Verification Needed
|
|
395
|
+
### 1. Visual Review
|
|
396
|
+
**Test:** Open http://localhost:3000/chat
|
|
397
|
+
**Expected:** Message list renders with real data
|
|
398
|
+
**Why human:** Visual layout verification
|
|
399
|
+
|
|
400
|
+
## Gaps (if any)
|
|
401
|
+
{Structured gap analysis for planner}
|
|
402
|
+
|
|
403
|
+
## Verdict
|
|
404
|
+
{Status explanation}
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## Success Criteria
|
|
410
|
+
|
|
411
|
+
- [ ] Previous VERIFICATION.md checked
|
|
412
|
+
- [ ] Must-haves established (from frontmatter or derived)
|
|
413
|
+
- [ ] All truths verified with status and evidence
|
|
414
|
+
- [ ] All artifacts checked at 3 levels (exists, substantive, wired)
|
|
415
|
+
- [ ] All key links verified
|
|
416
|
+
- [ ] Anti-patterns scanned and categorized
|
|
417
|
+
- [ ] Human verification items identified
|
|
418
|
+
- [ ] Overall status determined
|
|
419
|
+
- [ ] Gaps structured in YAML (if gaps_found)
|
|
420
|
+
- [ ] VERIFICATION.md created
|
|
421
|
+
- [ ] Results returned to orchestrator
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Add a new phase to the end of the roadmap
|
|
3
|
+
argument-hint: "<phase-name>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /add-phase Workflow
|
|
7
|
+
|
|
8
|
+
<objective>
|
|
9
|
+
Add a new phase to the end of the current roadmap.
|
|
10
|
+
</objective>
|
|
11
|
+
|
|
12
|
+
<process>
|
|
13
|
+
|
|
14
|
+
## 1. Validate Roadmap Exists
|
|
15
|
+
|
|
16
|
+
```powershell
|
|
17
|
+
if (-not (Test-Path ".gsd/ROADMAP.md")) {
|
|
18
|
+
Write-Error "ROADMAP.md required. Run /new-milestone first."
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. Determine Next Phase Number
|
|
25
|
+
|
|
26
|
+
```powershell
|
|
27
|
+
# Count existing phases
|
|
28
|
+
$phases = Select-String -Path ".gsd/ROADMAP.md" -Pattern "### Phase \d+"
|
|
29
|
+
$nextPhase = $phases.Count + 1
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 3. Gather Phase Information
|
|
35
|
+
|
|
36
|
+
Ask for:
|
|
37
|
+
- **Name** — Phase title
|
|
38
|
+
- **Objective** — What this phase achieves
|
|
39
|
+
- **Depends on** — Previous phases (usually N-1)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 4. Add to ROADMAP.md
|
|
44
|
+
|
|
45
|
+
Append:
|
|
46
|
+
```markdown
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### Phase {N}: {name}
|
|
50
|
+
**Status**: ⬜ Not Started
|
|
51
|
+
**Objective**: {objective}
|
|
52
|
+
**Depends on**: Phase {N-1}
|
|
53
|
+
|
|
54
|
+
**Tasks**:
|
|
55
|
+
- [ ] TBD (run /plan {N} to create)
|
|
56
|
+
|
|
57
|
+
**Verification**:
|
|
58
|
+
- TBD
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 5. Update STATE.md
|
|
64
|
+
|
|
65
|
+
Note phase added.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 6. Commit
|
|
70
|
+
|
|
71
|
+
```powershell
|
|
72
|
+
git add .gsd/ROADMAP.md .gsd/STATE.md
|
|
73
|
+
git commit -m "docs: add phase {N} - {name}"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 7. Offer Next Steps
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
82
|
+
GSD ► PHASE ADDED ✓
|
|
83
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
84
|
+
|
|
85
|
+
Phase {N}: {name}
|
|
86
|
+
|
|
87
|
+
───────────────────────────────────────────────────────
|
|
88
|
+
|
|
89
|
+
▶ NEXT
|
|
90
|
+
|
|
91
|
+
/plan {N} — Create execution plans for this phase
|
|
92
|
+
|
|
93
|
+
───────────────────────────────────────────────────────
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
</process>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Capture a todo item for later
|
|
3
|
+
argument-hint: "<description> [--priority high|medium|low]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /add-todo Workflow
|
|
7
|
+
|
|
8
|
+
<objective>
|
|
9
|
+
Quickly capture an idea, task, or issue without interrupting current work flow.
|
|
10
|
+
</objective>
|
|
11
|
+
|
|
12
|
+
<context>
|
|
13
|
+
**Item:** $ARGUMENTS (the todo description)
|
|
14
|
+
|
|
15
|
+
**Flags:**
|
|
16
|
+
- `--priority high|medium|low` — Set priority (default: medium)
|
|
17
|
+
|
|
18
|
+
**Output:**
|
|
19
|
+
- `.gsd/TODO.md` — Accumulated todo items
|
|
20
|
+
</context>
|
|
21
|
+
|
|
22
|
+
<process>
|
|
23
|
+
|
|
24
|
+
## 1. Parse Arguments
|
|
25
|
+
|
|
26
|
+
Extract:
|
|
27
|
+
- Todo description
|
|
28
|
+
- Priority (default: medium)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 2. Ensure TODO.md Exists
|
|
33
|
+
|
|
34
|
+
```powershell
|
|
35
|
+
if (-not (Test-Path ".gsd/TODO.md")) {
|
|
36
|
+
# Create with header
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 3. Add Todo Item
|
|
43
|
+
|
|
44
|
+
Append to `.gsd/TODO.md`:
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
- [ ] {description} `{priority}` — {date}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 4. Confirm
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
56
|
+
GSD ► TODO ADDED ✓
|
|
57
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
58
|
+
|
|
59
|
+
{description}
|
|
60
|
+
Priority: {priority}
|
|
61
|
+
|
|
62
|
+
───────────────────────────────────────────────────────
|
|
63
|
+
|
|
64
|
+
/check-todos — see all pending items
|
|
65
|
+
|
|
66
|
+
───────────────────────────────────────────────────────
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
</process>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Audit a milestone for quality and completeness
|
|
3
|
+
argument-hint: "[milestone-name]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /audit-milestone Workflow
|
|
7
|
+
|
|
8
|
+
<objective>
|
|
9
|
+
Review a completed (or in-progress) milestone for quality, completeness, and lessons learned.
|
|
10
|
+
</objective>
|
|
11
|
+
|
|
12
|
+
<process>
|
|
13
|
+
|
|
14
|
+
## 1. Load Milestone Context
|
|
15
|
+
|
|
16
|
+
If milestone name provided, load from archive:
|
|
17
|
+
```powershell
|
|
18
|
+
Get-Content ".gsd/milestones/{name}-SUMMARY.md"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If no name, audit current milestone from ROADMAP.md.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Check Must-Haves Verification
|
|
26
|
+
|
|
27
|
+
For each must-have in the milestone:
|
|
28
|
+
- Was it verified with empirical evidence?
|
|
29
|
+
- Is the evidence still valid?
|
|
30
|
+
- Any regressions since completion?
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 3. Review Technical Debt
|
|
35
|
+
|
|
36
|
+
Check TODO.md and DECISIONS.md for:
|
|
37
|
+
- Deferred items during this milestone
|
|
38
|
+
- Technical debt acknowledged
|
|
39
|
+
- Items that should be addressed
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 4. Analyze Phase Quality
|
|
44
|
+
|
|
45
|
+
For each phase:
|
|
46
|
+
- Review VERIFICATION.md
|
|
47
|
+
- Check for gap closures (were there many?)
|
|
48
|
+
- Note recurring issues
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 5. Generate Audit Report
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
# Milestone Audit: {name}
|
|
56
|
+
|
|
57
|
+
**Audited:** {date}
|
|
58
|
+
|
|
59
|
+
## Summary
|
|
60
|
+
| Metric | Value |
|
|
61
|
+
|--------|-------|
|
|
62
|
+
| Phases | {N} |
|
|
63
|
+
| Gap closures | {M} |
|
|
64
|
+
| Technical debt items | {K} |
|
|
65
|
+
|
|
66
|
+
## Must-Haves Status
|
|
67
|
+
| Requirement | Verified | Evidence |
|
|
68
|
+
|-------------|----------|----------|
|
|
69
|
+
| {req 1} | ✅ | {link} |
|
|
70
|
+
| {req 2} | ✅ | {link} |
|
|
71
|
+
|
|
72
|
+
## Concerns
|
|
73
|
+
- {concern 1}
|
|
74
|
+
- {concern 2}
|
|
75
|
+
|
|
76
|
+
## Recommendations
|
|
77
|
+
1. {recommendation 1}
|
|
78
|
+
2. {recommendation 2}
|
|
79
|
+
|
|
80
|
+
## Technical Debt to Address
|
|
81
|
+
- [ ] {item 1}
|
|
82
|
+
- [ ] {item 2}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 6. Offer Actions
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
91
|
+
GSD ► AUDIT COMPLETE
|
|
92
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
93
|
+
|
|
94
|
+
Milestone: {name}
|
|
95
|
+
Health: {GOOD | CONCERNS | NEEDS ATTENTION}
|
|
96
|
+
|
|
97
|
+
───────────────────────────────────────────────────────
|
|
98
|
+
|
|
99
|
+
▶ ACTIONS
|
|
100
|
+
|
|
101
|
+
/plan-milestone-gaps — Create plans to address gaps
|
|
102
|
+
/add-todo — Capture debt items for later
|
|
103
|
+
|
|
104
|
+
───────────────────────────────────────────────────────
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
</process>
|