gsd-cc 0.1.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/README.md +54 -0
- package/bin/install.js +209 -0
- package/package.json +29 -0
- package/skills/gsd/SKILL.md +178 -0
- package/skills/gsd/apply/.gitkeep +0 -0
- package/skills/gsd/apply/SKILL.md +182 -0
- package/skills/gsd/auto/.gitkeep +0 -0
- package/skills/gsd/auto/SKILL.md +129 -0
- package/skills/gsd/auto/auto-loop.sh +350 -0
- package/skills/gsd/checklists/.gitkeep +0 -0
- package/skills/gsd/checklists/planning-ready.md +36 -0
- package/skills/gsd/checklists/unify-complete.md +41 -0
- package/skills/gsd/discuss/.gitkeep +0 -0
- package/skills/gsd/discuss/SKILL.md +145 -0
- package/skills/gsd/plan/.gitkeep +0 -0
- package/skills/gsd/plan/SKILL.md +250 -0
- package/skills/gsd/prompts/.gitkeep +0 -0
- package/skills/gsd/prompts/apply-instructions.txt +98 -0
- package/skills/gsd/prompts/plan-instructions.txt +76 -0
- package/skills/gsd/prompts/reassess-instructions.txt +65 -0
- package/skills/gsd/prompts/unify-instructions.txt +126 -0
- package/skills/gsd/seed/SKILL.md +186 -0
- package/skills/gsd/seed/types/application/.gitkeep +0 -0
- package/skills/gsd/seed/types/application/config.md +30 -0
- package/skills/gsd/seed/types/application/guide.md +81 -0
- package/skills/gsd/seed/types/application/loadout.md +31 -0
- package/skills/gsd/seed/types/campaign/.gitkeep +0 -0
- package/skills/gsd/seed/types/campaign/config.md +27 -0
- package/skills/gsd/seed/types/campaign/guide.md +57 -0
- package/skills/gsd/seed/types/campaign/loadout.md +30 -0
- package/skills/gsd/seed/types/client/.gitkeep +0 -0
- package/skills/gsd/seed/types/client/config.md +27 -0
- package/skills/gsd/seed/types/client/guide.md +57 -0
- package/skills/gsd/seed/types/client/loadout.md +31 -0
- package/skills/gsd/seed/types/utility/.gitkeep +0 -0
- package/skills/gsd/seed/types/utility/config.md +27 -0
- package/skills/gsd/seed/types/utility/guide.md +49 -0
- package/skills/gsd/seed/types/utility/loadout.md +20 -0
- package/skills/gsd/seed/types/workflow/.gitkeep +0 -0
- package/skills/gsd/seed/types/workflow/config.md +28 -0
- package/skills/gsd/seed/types/workflow/guide.md +65 -0
- package/skills/gsd/seed/types/workflow/loadout.md +21 -0
- package/skills/gsd/status/.gitkeep +0 -0
- package/skills/gsd/status/SKILL.md +157 -0
- package/skills/gsd/templates/.gitkeep +0 -0
- package/skills/gsd/templates/PLAN.xml +65 -0
- package/skills/gsd/templates/PLANNING.md +63 -0
- package/skills/gsd/templates/STATE.md +41 -0
- package/skills/gsd/templates/UNIFY.md +43 -0
- package/skills/gsd/unify/.gitkeep +0 -0
- package/skills/gsd/unify/SKILL.md +230 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-cc-unify
|
|
3
|
+
description: >
|
|
4
|
+
Mandatory reconciliation after all tasks in a slice are done. Compares
|
|
5
|
+
plan vs. actual, documents decisions and deviations, checks boundary
|
|
6
|
+
violations, squash-merges the slice branch. Use when /gsd-cc routes here
|
|
7
|
+
(mandatory), when user says /gsd-cc-unify, or when phase is apply-complete.
|
|
8
|
+
CANNOT be skipped.
|
|
9
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /gsd-cc-unify — Mandatory Reconciliation
|
|
13
|
+
|
|
14
|
+
UNIFY is not optional. It runs after every slice. The `/gsd-cc` router blocks all other actions until UNIFY is complete. This is the single most important quality mechanism in GSD-CC.
|
|
15
|
+
|
|
16
|
+
## Why UNIFY Exists
|
|
17
|
+
|
|
18
|
+
- Without UNIFY, the next slice builds on assumptions instead of facts.
|
|
19
|
+
- Without UNIFY, decisions made during execution are lost.
|
|
20
|
+
- Without UNIFY, deferred issues accumulate invisibly.
|
|
21
|
+
- Without UNIFY, boundary violations go unnoticed.
|
|
22
|
+
|
|
23
|
+
## Enforcement
|
|
24
|
+
|
|
25
|
+
If `STATE.md` has `phase: apply-complete` and no `S{nn}-UNIFY.md` exists:
|
|
26
|
+
|
|
27
|
+
**UNIFY MUST run NOW.** Do not offer alternatives. Do not let the user skip to another slice. Do not accept "I'll do it later." Execute UNIFY immediately.
|
|
28
|
+
|
|
29
|
+
## Step 1: Load Context
|
|
30
|
+
|
|
31
|
+
Read ALL of these:
|
|
32
|
+
|
|
33
|
+
| File | Purpose |
|
|
34
|
+
|------|---------|
|
|
35
|
+
| `.gsd/S{nn}-PLAN.md` | What was planned |
|
|
36
|
+
| `.gsd/S{nn}-T{nn}-PLAN.md` | Per-task plans (all tasks in slice) |
|
|
37
|
+
| `.gsd/S{nn}-T{nn}-SUMMARY.md` | What actually happened (all tasks in slice) |
|
|
38
|
+
| `.gsd/DECISIONS.md` | Existing decisions |
|
|
39
|
+
|
|
40
|
+
Use `Glob` to find all matching files for the current slice.
|
|
41
|
+
|
|
42
|
+
## Step 2: Compare Plan vs. Actual
|
|
43
|
+
|
|
44
|
+
For each task in the slice plan, compare:
|
|
45
|
+
|
|
46
|
+
1. **Was the task completed?** (SUMMARY.md exists)
|
|
47
|
+
2. **What was planned vs. what was done?** (plan description vs. summary description)
|
|
48
|
+
3. **Was it as-planned, expanded, partial, or skipped?**
|
|
49
|
+
|
|
50
|
+
Build the Plan vs. Actual table:
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
## Plan vs. Actual
|
|
54
|
+
|
|
55
|
+
| Task | Planned | Actual | Status |
|
|
56
|
+
|------|---------|--------|--------|
|
|
57
|
+
| T01 | {from plan} | {from summary} | ✅ as planned |
|
|
58
|
+
| T02 | {from plan} | {from summary} | ✅ expanded |
|
|
59
|
+
| T03 | {from plan} | {from summary} | ⚠️ partial |
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Status meanings:
|
|
63
|
+
- **✅ as planned** — done exactly as specified
|
|
64
|
+
- **✅ expanded** — done with additional work (not a problem, just document it)
|
|
65
|
+
- **⚠️ partial** — some parts not completed (document what's missing)
|
|
66
|
+
- **❌ skipped** — not done at all (document why)
|
|
67
|
+
|
|
68
|
+
## Step 3: Evaluate Acceptance Criteria
|
|
69
|
+
|
|
70
|
+
For each AC across all tasks:
|
|
71
|
+
|
|
72
|
+
1. Read the AC from the task plan
|
|
73
|
+
2. Read the verification result from the task summary
|
|
74
|
+
3. Determine status: Pass / Partial / Fail
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
## Acceptance Criteria
|
|
78
|
+
|
|
79
|
+
| AC | Task | Status | Evidence |
|
|
80
|
+
|------|------|--------|----------|
|
|
81
|
+
| AC-1 | T01 | ✅ Pass | {from summary} |
|
|
82
|
+
| AC-2 | T01 | ✅ Pass | {from summary} |
|
|
83
|
+
| AC-3 | T02 | ⚠️ Partial | {what's missing} |
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Step 4: Document Decisions
|
|
87
|
+
|
|
88
|
+
Collect all decisions from task summaries that were NOT in the original plan:
|
|
89
|
+
|
|
90
|
+
```markdown
|
|
91
|
+
## Decisions Made
|
|
92
|
+
|
|
93
|
+
- {Decision 1} (reason: {rationale from summary})
|
|
94
|
+
- {Decision 2} (reason: {rationale})
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
If no ad-hoc decisions were made: "No additional decisions made during execution."
|
|
98
|
+
|
|
99
|
+
**Also append these decisions to `.gsd/DECISIONS.md`** under the slice heading.
|
|
100
|
+
|
|
101
|
+
## Step 5: Check Boundary Violations
|
|
102
|
+
|
|
103
|
+
For each task, compare:
|
|
104
|
+
- The `<boundaries>` from its plan (files marked DO NOT CHANGE)
|
|
105
|
+
- The `Files Changed` from its summary
|
|
106
|
+
|
|
107
|
+
If a task modified a file that was in its boundaries:
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
## Boundary Violations
|
|
111
|
+
|
|
112
|
+
- T02 modified `src/types.ts` which was listed as DO NOT CHANGE (owned by T01).
|
|
113
|
+
Reason: {if a reason was given in the summary, include it}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
If no violations: "None."
|
|
117
|
+
|
|
118
|
+
**This is a critical check.** Boundary violations indicate either a bad plan or undisciplined execution. Both need to be visible.
|
|
119
|
+
|
|
120
|
+
## Step 6: Collect Deferred Issues
|
|
121
|
+
|
|
122
|
+
From all task summaries, collect issues that were pushed to later:
|
|
123
|
+
|
|
124
|
+
```markdown
|
|
125
|
+
## Deferred
|
|
126
|
+
|
|
127
|
+
- [ ] {Issue 1} → {target slice or "later"}
|
|
128
|
+
- [ ] {Issue 2} → {target slice or "later"}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
If nothing was deferred: leave the section empty with a note "Nothing deferred."
|
|
132
|
+
|
|
133
|
+
## Step 7: Roadmap Reassessment
|
|
134
|
+
|
|
135
|
+
Based on everything learned in this slice, assess the remaining roadmap:
|
|
136
|
+
|
|
137
|
+
1. Read `.gsd/M001-ROADMAP.md`
|
|
138
|
+
2. Consider: Did this slice reveal anything that changes the plan?
|
|
139
|
+
- New requirements discovered?
|
|
140
|
+
- Approach that turned out harder/easier than expected?
|
|
141
|
+
- Dependencies that shifted?
|
|
142
|
+
- Deferred issues that need their own slice?
|
|
143
|
+
|
|
144
|
+
```markdown
|
|
145
|
+
## Reassessment
|
|
146
|
+
|
|
147
|
+
Roadmap still valid.
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
OR:
|
|
151
|
+
|
|
152
|
+
```markdown
|
|
153
|
+
## Reassessment
|
|
154
|
+
|
|
155
|
+
Roadmap needs update:
|
|
156
|
+
- {What changed and why}
|
|
157
|
+
- {Suggested adjustment}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
If the roadmap needs an update, describe what should change but do NOT modify the roadmap file. That happens in the next planning phase.
|
|
161
|
+
|
|
162
|
+
## Step 8: Quality Gate
|
|
163
|
+
|
|
164
|
+
Check against `checklists/unify-complete.md`:
|
|
165
|
+
|
|
166
|
+
Read: `~/.claude/skills/gsd/checklists/unify-complete.md`
|
|
167
|
+
(or `./.claude/skills/gsd/checklists/unify-complete.md`)
|
|
168
|
+
|
|
169
|
+
Verify ALL items pass. If any fails, fix the UNIFY document before proceeding.
|
|
170
|
+
|
|
171
|
+
## Step 9: Write UNIFY.md
|
|
172
|
+
|
|
173
|
+
Write `.gsd/S{nn}-UNIFY.md` using the template from `templates/UNIFY.md`. Include all sections from Steps 2-7.
|
|
174
|
+
|
|
175
|
+
Set frontmatter:
|
|
176
|
+
```yaml
|
|
177
|
+
---
|
|
178
|
+
slice: S{nn}
|
|
179
|
+
date: {now ISO}
|
|
180
|
+
status: {complete|partial|failed}
|
|
181
|
+
---
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Status:
|
|
185
|
+
- `complete` — all ACs pass, no critical issues
|
|
186
|
+
- `partial` — some ACs partial/failed, but slice is usable
|
|
187
|
+
- `failed` — critical issues, slice may need rework
|
|
188
|
+
|
|
189
|
+
## Step 10: Git Squash-Merge
|
|
190
|
+
|
|
191
|
+
Merge the slice branch back to main with a squash:
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
git checkout main
|
|
195
|
+
git merge --squash gsd/M{n}/S{nn}
|
|
196
|
+
git commit -m "feat(M{n}/S{nn}): {slice name}"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
This produces one clean commit on main per slice. The per-task history is preserved on the slice branch.
|
|
200
|
+
|
|
201
|
+
**Do NOT delete the slice branch.** It contains per-task commit history.
|
|
202
|
+
|
|
203
|
+
If there are merge conflicts, tell the user and help resolve them.
|
|
204
|
+
|
|
205
|
+
## Step 11: Update STATE.md
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
phase: unified
|
|
209
|
+
unify_required: false
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Update the Progress table: set the current slice to `done` with AC counts.
|
|
213
|
+
|
|
214
|
+
## Step 12: Confirm
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
UNIFY complete for S{nn}.
|
|
218
|
+
|
|
219
|
+
Plan vs. Actual: {n} tasks — {summary}
|
|
220
|
+
Acceptance Criteria: {passed}/{total} passed
|
|
221
|
+
Boundary Violations: {none|count}
|
|
222
|
+
Decisions: {count} logged
|
|
223
|
+
Deferred: {count} items
|
|
224
|
+
Reassessment: {verdict}
|
|
225
|
+
|
|
226
|
+
Merged: gsd/M{n}/S{nn} → main
|
|
227
|
+
Commit: feat(M{n}/S{nn}): {slice name}
|
|
228
|
+
|
|
229
|
+
Next: type /gsd-cc to continue with the next slice.
|
|
230
|
+
```
|