gsd-antigravity-kit 1.22.6 → 1.24.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/gsd/SKILL.md +12 -4
- package/.agent/skills/gsd/assets/templates/UI-SPEC.md +100 -0
- package/.agent/skills/gsd/assets/templates/codebase/structure.md +3 -3
- package/.agent/skills/gsd/assets/templates/context.md +57 -2
- package/.agent/skills/gsd/assets/templates/copilot-instructions.md +7 -0
- package/.agent/skills/gsd/assets/templates/phase-prompt.md +54 -13
- package/.agent/skills/gsd/bin/gsd-tools.cjs +11 -0
- package/.agent/skills/gsd/bin/help-manifest.json +15 -3
- package/.agent/skills/gsd/bin/lib/commands.cjs +120 -1
- package/.agent/skills/gsd/bin/lib/config.cjs +157 -19
- package/.agent/skills/gsd/bin/lib/core.cjs +37 -23
- package/.agent/skills/gsd/bin/lib/init.cjs +69 -20
- package/.agent/skills/gsd/bin/lib/model-profiles.cjs +68 -0
- package/.agent/skills/gsd/bin/lib/phase.cjs +33 -23
- package/.agent/skills/gsd/bin/lib/roadmap.cjs +20 -12
- package/.agent/skills/gsd/bin/lib/state.cjs +4 -2
- package/.agent/skills/gsd/bin/lib/verify.cjs +8 -2
- package/.agent/skills/gsd/references/agents/gsd-codebase-mapper.md +0 -2
- package/.agent/skills/gsd/references/agents/gsd-debugger.md +85 -4
- package/.agent/skills/gsd/references/agents/gsd-executor.md +14 -16
- package/.agent/skills/gsd/references/agents/gsd-integration-checker.md +0 -2
- package/.agent/skills/gsd/references/agents/gsd-nyquist-auditor.md +0 -2
- package/.agent/skills/gsd/references/agents/gsd-phase-researcher.md +3 -5
- package/.agent/skills/gsd/references/agents/gsd-plan-checker.md +5 -7
- package/.agent/skills/gsd/references/agents/gsd-planner.md +9 -11
- package/.agent/skills/gsd/references/agents/gsd-project-researcher.md +1 -3
- package/.agent/skills/gsd/references/agents/gsd-research-synthesizer.md +3 -5
- package/.agent/skills/gsd/references/agents/gsd-roadmapper.md +2 -4
- package/.agent/skills/gsd/references/agents/gsd-ui-auditor.md +439 -0
- package/.agent/skills/gsd/references/agents/gsd-ui-checker.md +300 -0
- package/.agent/skills/gsd/references/agents/gsd-ui-researcher.md +353 -0
- package/.agent/skills/gsd/references/agents/gsd-verifier.md +6 -8
- package/.agent/skills/gsd/references/commands/add-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/add-tests.md +2 -2
- package/.agent/skills/gsd/references/commands/add-todo.md +2 -2
- package/.agent/skills/gsd/references/commands/audit-milestone.md +2 -2
- package/.agent/skills/gsd/references/commands/autonomous.md +41 -0
- package/.agent/skills/gsd/references/commands/check-todos.md +2 -2
- package/.agent/skills/gsd/references/commands/cleanup.md +2 -2
- package/.agent/skills/gsd/references/commands/complete-milestone.md +2 -2
- package/.agent/skills/gsd/references/commands/debug.md +2 -2
- package/.agent/skills/gsd/references/commands/discuss-phase.md +3 -3
- package/.agent/skills/gsd/references/commands/execute-phase.md +3 -3
- package/.agent/skills/gsd/references/commands/health.md +2 -2
- package/.agent/skills/gsd/references/commands/help.md +2 -2
- package/.agent/skills/gsd/references/commands/insert-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/list-phase-assumptions.md +1 -1
- package/.agent/skills/gsd/references/commands/map-codebase.md +1 -1
- package/.agent/skills/gsd/references/commands/new-milestone.md +6 -6
- package/.agent/skills/gsd/references/commands/new-project.md +6 -6
- package/.agent/skills/gsd/references/commands/pause-work.md +2 -2
- package/.agent/skills/gsd/references/commands/plan-milestone-gaps.md +2 -2
- package/.agent/skills/gsd/references/commands/plan-phase.md +3 -3
- package/.agent/skills/gsd/references/commands/progress.md +2 -2
- package/.agent/skills/gsd/references/commands/quick.md +6 -4
- package/.agent/skills/gsd/references/commands/reapply-patches.md +1 -1
- package/.agent/skills/gsd/references/commands/remove-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/research-phase.md +3 -3
- package/.agent/skills/gsd/references/commands/resume-work.md +2 -2
- package/.agent/skills/gsd/references/commands/set-profile.md +5 -27
- package/.agent/skills/gsd/references/commands/settings.md +2 -2
- package/.agent/skills/gsd/references/commands/stats.md +18 -0
- package/.agent/skills/gsd/references/commands/ui-phase.md +34 -0
- package/.agent/skills/gsd/references/commands/ui-review.md +32 -0
- package/.agent/skills/gsd/references/commands/update.md +2 -2
- package/.agent/skills/gsd/references/commands/validate-phase.md +2 -2
- package/.agent/skills/gsd/references/commands/verify-work.md +3 -3
- package/.agent/skills/gsd/references/docs/decimal-phase-calculation.md +4 -4
- package/.agent/skills/gsd/references/docs/git-integration.md +3 -3
- package/.agent/skills/gsd/references/docs/git-planning-commit.md +2 -2
- package/.agent/skills/gsd/references/docs/model-profile-resolution.md +3 -1
- package/.agent/skills/gsd/references/docs/model-profiles.md +24 -16
- package/.agent/skills/gsd/references/docs/phase-argument-parsing.md +3 -3
- package/.agent/skills/gsd/references/docs/planning-config.md +6 -6
- package/.agent/skills/gsd/references/docs/verification-patterns.md +1 -1
- package/.agent/skills/gsd/references/workflows/add-phase.md +2 -2
- package/.agent/skills/gsd/references/workflows/add-tests.md +2 -2
- package/.agent/skills/gsd/references/workflows/add-todo.md +3 -3
- package/.agent/skills/gsd/references/workflows/audit-milestone.md +6 -6
- package/.agent/skills/gsd/references/workflows/autonomous.md +743 -0
- package/.agent/skills/gsd/references/workflows/check-todos.md +2 -2
- package/.agent/skills/gsd/references/workflows/cleanup.md +1 -1
- package/.agent/skills/gsd/references/workflows/complete-milestone.md +9 -7
- package/.agent/skills/gsd/references/workflows/diagnose-issues.md +1 -1
- package/.agent/skills/gsd/references/workflows/discovery-phase.md +5 -5
- package/.agent/skills/gsd/references/workflows/discuss-phase.md +104 -18
- package/.agent/skills/gsd/references/workflows/execute-phase.md +28 -19
- package/.agent/skills/gsd/references/workflows/execute-plan.md +52 -18
- package/.agent/skills/gsd/references/workflows/health.md +2 -2
- package/.agent/skills/gsd/references/workflows/help.md +14 -4
- package/.agent/skills/gsd/references/workflows/insert-phase.md +2 -2
- package/.agent/skills/gsd/references/workflows/map-codebase.md +2 -2
- package/.agent/skills/gsd/references/workflows/new-milestone.md +17 -15
- package/.agent/skills/gsd/references/workflows/new-project.md +18 -16
- package/.agent/skills/gsd/references/workflows/node-repair.md +92 -0
- package/.agent/skills/gsd/references/workflows/pause-work.md +2 -2
- package/.agent/skills/gsd/references/workflows/plan-milestone-gaps.md +2 -2
- package/.agent/skills/gsd/references/workflows/plan-phase.md +121 -15
- package/.agent/skills/gsd/references/workflows/progress.md +7 -7
- package/.agent/skills/gsd/references/workflows/quick.md +162 -46
- package/.agent/skills/gsd/references/workflows/remove-phase.md +4 -4
- package/.agent/skills/gsd/references/workflows/research-phase.md +4 -4
- package/.agent/skills/gsd/references/workflows/resume-project.md +2 -2
- package/.agent/skills/gsd/references/workflows/settings.md +37 -8
- package/.agent/skills/gsd/references/workflows/stats.md +57 -0
- package/.agent/skills/gsd/references/workflows/transition.md +4 -4
- package/.agent/skills/gsd/references/workflows/ui-phase.md +290 -0
- package/.agent/skills/gsd/references/workflows/ui-review.md +157 -0
- package/.agent/skills/gsd/references/workflows/update.md +103 -23
- package/.agent/skills/gsd/references/workflows/validate-phase.md +7 -7
- package/.agent/skills/gsd/references/workflows/verify-phase.md +9 -9
- package/.agent/skills/gsd/references/workflows/verify-work.md +5 -4
- package/CHANGELOG.md +11 -0
- package/README.md +2 -1
- package/docs/DEV_KNOWLEDGEBASE.md +11 -0
- package/package.json +1 -1
- package/.agent/skills/gsd/references/workflows/set-profile.md +0 -81
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsd
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.24.0
|
|
4
4
|
description: "Antigravity GSD (Get Stuff Done) - A spec-driven hierarchical planning and execution system. Triggers on project planning, phase management, and GSD slash commands."
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -25,6 +25,7 @@ This skill should be used when:
|
|
|
25
25
|
- `gsd:add-tests`
|
|
26
26
|
- `gsd:add-todo`
|
|
27
27
|
- `gsd:audit-milestone`
|
|
28
|
+
- `gsd:autonomous`
|
|
28
29
|
- `gsd:check-todos`
|
|
29
30
|
- `gsd:cleanup`
|
|
30
31
|
- `gsd:complete-milestone`
|
|
@@ -51,6 +52,9 @@ This skill should be used when:
|
|
|
51
52
|
- `gsd:resume-work`
|
|
52
53
|
- `gsd:set-profile`
|
|
53
54
|
- `gsd:settings`
|
|
55
|
+
- `gsd:stats`
|
|
56
|
+
- `gsd:ui-phase`
|
|
57
|
+
- `gsd:ui-review`
|
|
54
58
|
- `gsd:update`
|
|
55
59
|
- `gsd:validate-phase`
|
|
56
60
|
- `gsd:verify-work`
|
|
@@ -70,11 +74,12 @@ The following slash commands are available in this skill. Use them to drive the
|
|
|
70
74
|
- **[`gsd:add-tests`](references/commands/add-tests.md)**: Generate tests for a completed phase based on UAT criteria and implementation
|
|
71
75
|
- **[`gsd:add-todo`](references/commands/add-todo.md)**: Capture idea or task as todo from current conversation context
|
|
72
76
|
- **[`gsd:audit-milestone`](references/commands/audit-milestone.md)**: Audit milestone completion against original intent before archiving
|
|
77
|
+
- **[`gsd:autonomous`](references/commands/autonomous.md)**: Run all remaining phases autonomously — discuss→plan→execute per phase
|
|
73
78
|
- **[`gsd:check-todos`](references/commands/check-todos.md)**: List pending todos and select one to work on
|
|
74
79
|
- **[`gsd:cleanup`](references/commands/cleanup.md)**: Archive accumulated phase directories from completed milestones
|
|
75
80
|
- **[`gsd:complete-milestone`](references/commands/complete-milestone.md)**: Archive completed milestone and prepare for next version
|
|
76
81
|
- **[`gsd:debug`](references/commands/debug.md)**: Systematic debugging with persistent state across context resets
|
|
77
|
-
- **[`gsd:discuss-phase`](references/commands/discuss-phase.md)**: Gather phase context through adaptive questioning before planning
|
|
82
|
+
- **[`gsd:discuss-phase`](references/commands/discuss-phase.md)**: Gather phase context through adaptive questioning before planning. Use --auto to skip interactive questions (Antigravity picks recommended defaults).
|
|
78
83
|
- **[`gsd:execute-phase`](references/commands/execute-phase.md)**: Execute all plans in a phase with wave-based parallelization
|
|
79
84
|
- **[`gsd:gsd-tools`](references/commands/gsd-tools.md)**: Direct access to GSD internal CLI tools for atomic operations (state, roadmap, phase, config, etc.)
|
|
80
85
|
- **[`gsd:health`](references/commands/health.md)**: Diagnose planning directory health and optionally repair issues
|
|
@@ -94,8 +99,11 @@ The following slash commands are available in this skill. Use them to drive the
|
|
|
94
99
|
- **[`gsd:remove-phase`](references/commands/remove-phase.md)**: Remove a future phase from roadmap and renumber subsequent phases
|
|
95
100
|
- **[`gsd:research-phase`](references/commands/research-phase.md)**: Research how to implement a phase (standalone - usually use /gsd:plan-phase instead)
|
|
96
101
|
- **[`gsd:resume-work`](references/commands/resume-work.md)**: Resume work from previous session with full context restoration
|
|
97
|
-
- **[`gsd:set-profile`](references/commands/set-profile.md)**: Switch model profile for GSD agents (quality/balanced/budget)
|
|
102
|
+
- **[`gsd:set-profile`](references/commands/set-profile.md)**: Switch model profile for GSD agents (quality/balanced/budget/inherit)
|
|
98
103
|
- **[`gsd:settings`](references/commands/settings.md)**: Configure GSD workflow toggles and model profile
|
|
104
|
+
- **[`gsd:stats`](references/commands/stats.md)**: Display project statistics — phases, plans, requirements, git metrics, and timeline
|
|
105
|
+
- **[`gsd:ui-phase`](references/commands/ui-phase.md)**: Generate UI design contract (UI-SPEC.md) for frontend phases
|
|
106
|
+
- **[`gsd:ui-review`](references/commands/ui-review.md)**: Retroactive 6-pillar visual audit of implemented frontend code
|
|
99
107
|
- **[`gsd:update`](references/commands/update.md)**: Update GSD to latest version with changelog display
|
|
100
108
|
- **[`gsd:validate-phase`](references/commands/validate-phase.md)**: Retroactively audit and fill Nyquist validation gaps for a completed phase
|
|
101
109
|
- **[`gsd:verify-work`](references/commands/verify-work.md)**: Validate built features through conversational UAT
|
|
@@ -133,4 +141,4 @@ General documentation on the GSD philosophy, usage patterns, and configuration.
|
|
|
133
141
|
5. **CLI Invocation**: `gsd-tools` is **NOT** a global command. Always invoke it with the full node path: `node .agent/skills/gsd/bin/gsd-tools.cjs <command> [args]`. Never run `gsd-tools` bare.
|
|
134
142
|
|
|
135
143
|
---
|
|
136
|
-
*Generated by gsd-converter on 2026-03-
|
|
144
|
+
*Generated by gsd-converter on 2026-03-15*
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase: {N}
|
|
3
|
+
slug: {phase-slug}
|
|
4
|
+
status: draft
|
|
5
|
+
shadcn_initialized: false
|
|
6
|
+
preset: none
|
|
7
|
+
created: {date}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Phase {N} — UI Design Contract
|
|
11
|
+
|
|
12
|
+
> Visual and interaction contract for frontend phases. Generated by gsd-ui-researcher, verified by gsd-ui-checker.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Design System
|
|
17
|
+
|
|
18
|
+
| Property | Value |
|
|
19
|
+
|----------|-------|
|
|
20
|
+
| Tool | {shadcn / none} |
|
|
21
|
+
| Preset | {preset string or "not applicable"} |
|
|
22
|
+
| Component library | {radix / base-ui / none} |
|
|
23
|
+
| Icon library | {library} |
|
|
24
|
+
| Font | {font} |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Spacing Scale
|
|
29
|
+
|
|
30
|
+
Declared values (must be multiples of 4):
|
|
31
|
+
|
|
32
|
+
| Token | Value | Usage |
|
|
33
|
+
|-------|-------|-------|
|
|
34
|
+
| xs | 4px | Icon gaps, inline padding |
|
|
35
|
+
| sm | 8px | Compact element spacing |
|
|
36
|
+
| md | 16px | Default element spacing |
|
|
37
|
+
| lg | 24px | Section padding |
|
|
38
|
+
| xl | 32px | Layout gaps |
|
|
39
|
+
| 2xl | 48px | Major section breaks |
|
|
40
|
+
| 3xl | 64px | Page-level spacing |
|
|
41
|
+
|
|
42
|
+
Exceptions: {list any, or "none"}
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Typography
|
|
47
|
+
|
|
48
|
+
| Role | Size | Weight | Line Height |
|
|
49
|
+
|------|------|--------|-------------|
|
|
50
|
+
| Body | {px} | {weight} | {ratio} |
|
|
51
|
+
| Label | {px} | {weight} | {ratio} |
|
|
52
|
+
| Heading | {px} | {weight} | {ratio} |
|
|
53
|
+
| Display | {px} | {weight} | {ratio} |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Color
|
|
58
|
+
|
|
59
|
+
| Role | Value | Usage |
|
|
60
|
+
|------|-------|-------|
|
|
61
|
+
| Dominant (60%) | {hex} | Background, surfaces |
|
|
62
|
+
| Secondary (30%) | {hex} | Cards, sidebar, nav |
|
|
63
|
+
| Accent (10%) | {hex} | {list specific elements only} |
|
|
64
|
+
| Destructive | {hex} | Destructive actions only |
|
|
65
|
+
|
|
66
|
+
Accent reserved for: {explicit list — never "all interactive elements"}
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Copywriting Contract
|
|
71
|
+
|
|
72
|
+
| Element | Copy |
|
|
73
|
+
|---------|------|
|
|
74
|
+
| Primary CTA | {specific verb + noun} |
|
|
75
|
+
| Empty state heading | {copy} |
|
|
76
|
+
| Empty state body | {copy + next step} |
|
|
77
|
+
| Error state | {problem + solution path} |
|
|
78
|
+
| Destructive confirmation | {action name}: {confirmation copy} |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Registry Safety
|
|
83
|
+
|
|
84
|
+
| Registry | Blocks Used | Safety Gate |
|
|
85
|
+
|----------|-------------|-------------|
|
|
86
|
+
| shadcn official | {list} | not required |
|
|
87
|
+
| {third-party name} | {list} | shadcn view + diff required |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Checker Sign-Off
|
|
92
|
+
|
|
93
|
+
- [ ] Dimension 1 Copywriting: PASS
|
|
94
|
+
- [ ] Dimension 2 Visuals: PASS
|
|
95
|
+
- [ ] Dimension 3 Color: PASS
|
|
96
|
+
- [ ] Dimension 4 Typography: PASS
|
|
97
|
+
- [ ] Dimension 5 Spacing: PASS
|
|
98
|
+
- [ ] Dimension 6 Registry Safety: PASS
|
|
99
|
+
|
|
100
|
+
**Approval:** {pending / approved YYYY-MM-DD}
|
|
@@ -216,7 +216,7 @@ get-shit-done/
|
|
|
216
216
|
|
|
217
217
|
**New Workflow:**
|
|
218
218
|
- Implementation: `get-shit-done/workflows/{name}.md`
|
|
219
|
-
- Usage: Reference from command with `@
|
|
219
|
+
- Usage: Reference from command with `@C:/projects/GSD-Antigravityreferences/workflows/{name}.md`
|
|
220
220
|
|
|
221
221
|
**New Reference Document:**
|
|
222
222
|
- Implementation: `get-shit-done/references/{name}.md`
|
|
@@ -229,12 +229,12 @@ get-shit-done/
|
|
|
229
229
|
## Special Directories
|
|
230
230
|
|
|
231
231
|
**get-shit-done/**
|
|
232
|
-
- Purpose: Resources installed to
|
|
232
|
+
- Purpose: Resources installed to C:/projects/GSD-Antigravity/.antigravity/
|
|
233
233
|
- Source: Copied by bin/install.js during installation
|
|
234
234
|
- Committed: Yes (source of truth)
|
|
235
235
|
|
|
236
236
|
**commands/**
|
|
237
|
-
- Purpose: Slash commands installed to
|
|
237
|
+
- Purpose: Slash commands installed to C:/projects/GSD-Antigravity/.antigravity/commands/
|
|
238
238
|
- Source: Copied by bin/install.js during installation
|
|
239
239
|
- Committed: Yes (source of truth)
|
|
240
240
|
|
|
@@ -54,6 +54,24 @@ Template for `.planning/phases/XX-name/{phase_num}-CONTEXT.md` - captures implem
|
|
|
54
54
|
|
|
55
55
|
</specifics>
|
|
56
56
|
|
|
57
|
+
<canonical_refs>
|
|
58
|
+
## Canonical References
|
|
59
|
+
|
|
60
|
+
**Downstream agents MUST read these before planning or implementing.**
|
|
61
|
+
|
|
62
|
+
[List every spec, ADR, feature doc, or design doc that defines requirements or constraints for this phase. Use full relative paths so agents can read them directly. Group by topic area when the phase has multiple concerns.]
|
|
63
|
+
|
|
64
|
+
### [Topic area 1]
|
|
65
|
+
- `path/to/spec-or-adr.md` — [What this doc decides/defines that's relevant]
|
|
66
|
+
- `path/to/doc.md` §N — [Specific section and what it covers]
|
|
67
|
+
|
|
68
|
+
### [Topic area 2]
|
|
69
|
+
- `path/to/feature-doc.md` — [What capability this defines]
|
|
70
|
+
|
|
71
|
+
[If the project has no external specs: "No external specs — requirements are fully captured in decisions above"]
|
|
72
|
+
|
|
73
|
+
</canonical_refs>
|
|
74
|
+
|
|
57
75
|
<code_context>
|
|
58
76
|
## Existing Code Insights
|
|
59
77
|
|
|
@@ -124,6 +142,18 @@ Display posts from followed users in a scrollable feed. Users can view posts and
|
|
|
124
142
|
|
|
125
143
|
</decisions>
|
|
126
144
|
|
|
145
|
+
<canonical_refs>
|
|
146
|
+
## Canonical References
|
|
147
|
+
|
|
148
|
+
### Feed display
|
|
149
|
+
- `docs/features/social-feed.md` — Feed requirements, post card fields, engagement display rules
|
|
150
|
+
- `docs/decisions/adr-012-infinite-scroll.md` — Scroll strategy decision, virtualization requirements
|
|
151
|
+
|
|
152
|
+
### Empty states
|
|
153
|
+
- `docs/design/empty-states.md` — Empty state patterns, illustration guidelines
|
|
154
|
+
|
|
155
|
+
</canonical_refs>
|
|
156
|
+
|
|
127
157
|
<specifics>
|
|
128
158
|
## Specific Ideas
|
|
129
159
|
|
|
@@ -186,6 +216,15 @@ CLI command to backup database to local file or S3. Supports full and incrementa
|
|
|
186
216
|
|
|
187
217
|
</decisions>
|
|
188
218
|
|
|
219
|
+
<canonical_refs>
|
|
220
|
+
## Canonical References
|
|
221
|
+
|
|
222
|
+
### Backup CLI
|
|
223
|
+
- `docs/features/backup-restore.md` — Backup requirements, supported backends, encryption spec
|
|
224
|
+
- `docs/decisions/adr-007-cli-conventions.md` — Flag naming, exit codes, output format standards
|
|
225
|
+
|
|
226
|
+
</canonical_refs>
|
|
227
|
+
|
|
189
228
|
<specifics>
|
|
190
229
|
## Specific Ideas
|
|
191
230
|
|
|
@@ -248,6 +287,15 @@ Organize existing photo library into structured folders. Handle duplicates and a
|
|
|
248
287
|
|
|
249
288
|
</decisions>
|
|
250
289
|
|
|
290
|
+
<canonical_refs>
|
|
291
|
+
## Canonical References
|
|
292
|
+
|
|
293
|
+
### Organization rules
|
|
294
|
+
- `docs/features/photo-organization.md` — Grouping rules, duplicate policy, naming spec
|
|
295
|
+
- `docs/decisions/adr-003-exif-handling.md` — EXIF extraction strategy, fallback for missing metadata
|
|
296
|
+
|
|
297
|
+
</canonical_refs>
|
|
298
|
+
|
|
251
299
|
<specifics>
|
|
252
300
|
## Specific Ideas
|
|
253
301
|
|
|
@@ -291,7 +339,14 @@ The output should answer: "What does the researcher need to investigate? What ch
|
|
|
291
339
|
|
|
292
340
|
**After creation:**
|
|
293
341
|
- File lives in phase directory: `.planning/phases/XX-name/{phase_num}-CONTEXT.md`
|
|
294
|
-
- `gsd-phase-researcher` uses decisions to focus investigation
|
|
295
|
-
- `gsd-planner` uses decisions + research to create executable tasks
|
|
342
|
+
- `gsd-phase-researcher` uses decisions to focus investigation AND reads canonical_refs to know WHAT docs to study
|
|
343
|
+
- `gsd-planner` uses decisions + research to create executable tasks AND reads canonical_refs to verify alignment
|
|
296
344
|
- Downstream agents should NOT need to ask the user again about captured decisions
|
|
345
|
+
|
|
346
|
+
**CRITICAL — Canonical references:**
|
|
347
|
+
- The `<canonical_refs>` section is MANDATORY. Every CONTEXT.md must have one.
|
|
348
|
+
- If your project has external specs, ADRs, or design docs, list them with full relative paths grouped by topic
|
|
349
|
+
- If ROADMAP.md lists `Canonical refs:` per phase, extract and expand those
|
|
350
|
+
- Inline mentions like "see ADR-019" scattered in decisions are useless to downstream agents — they need full paths and section references in a dedicated section they can find
|
|
351
|
+
- If no external specs exist, say so explicitly — don't silently omit the section
|
|
297
352
|
</guidelines>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Instructions for GSD
|
|
2
|
+
|
|
3
|
+
- Use the get-shit-done skill when the user asks for GSD or uses a `gsd-*` command.
|
|
4
|
+
- Treat `/gsd-...` or `gsd-...` as command invocations and load the matching file from `.github/skills/gsd-*`.
|
|
5
|
+
- When a command says to spawn a subagent, prefer a matching custom agent from `.github/agents`.
|
|
6
|
+
- Do not apply GSD workflows unless the user explicitly asks for them.
|
|
7
|
+
- After completing any `gsd-*` command (or any deliverable it triggers: feature, bug fix, tests, docs, etc.), ALWAYS: (1) offer the user the next step by prompting via `ask_user`; repeat this feedback loop until the user explicitly indicates they are done.
|
|
@@ -38,10 +38,10 @@ Output: [What artifacts will be created]
|
|
|
38
38
|
</objective>
|
|
39
39
|
|
|
40
40
|
<execution_context>
|
|
41
|
-
@
|
|
42
|
-
@
|
|
41
|
+
@C:/projects/GSD-Antigravityreferences/workflows/execute-plan.md
|
|
42
|
+
@C:/projects/GSD-Antigravityassets/templates/summary.md
|
|
43
43
|
[If plan contains checkpoint tasks (type="checkpoint:*"), add:]
|
|
44
|
-
@references/
|
|
44
|
+
@C:/projects/GSD-Antigravity/.antigravity/get-shit-done/references/checkpoints.md
|
|
45
45
|
</execution_context>
|
|
46
46
|
|
|
47
47
|
<context>
|
|
@@ -63,21 +63,29 @@ Output: [What artifacts will be created]
|
|
|
63
63
|
<task type="auto">
|
|
64
64
|
<name>Task 1: [Action-oriented name]</name>
|
|
65
65
|
<files>path/to/file.ext, another/file.ext</files>
|
|
66
|
-
<
|
|
66
|
+
<read_first>path/to/reference.ext, path/to/source-of-truth.ext</read_first>
|
|
67
|
+
<action>[Specific implementation - what to do, how to do it, what to avoid and WHY. Include CONCRETE values: exact identifiers, parameters, expected outputs, file paths, command arguments. Never say "align X with Y" without specifying the exact target state.]</action>
|
|
67
68
|
<verify>[Command or check to prove it worked]</verify>
|
|
69
|
+
<acceptance_criteria>
|
|
70
|
+
- [Grep-verifiable condition: "file.ext contains 'exact string'"]
|
|
71
|
+
- [Measurable condition: "output.ext uses 'expected-value', NOT 'wrong-value'"]
|
|
72
|
+
</acceptance_criteria>
|
|
68
73
|
<done>[Measurable acceptance criteria]</done>
|
|
69
74
|
</task>
|
|
70
75
|
|
|
71
76
|
<task type="auto">
|
|
72
77
|
<name>Task 2: [Action-oriented name]</name>
|
|
73
78
|
<files>path/to/file.ext</files>
|
|
74
|
-
<
|
|
79
|
+
<read_first>path/to/reference.ext</read_first>
|
|
80
|
+
<action>[Specific implementation with concrete values]</action>
|
|
75
81
|
<verify>[Command or check]</verify>
|
|
82
|
+
<acceptance_criteria>
|
|
83
|
+
- [Grep-verifiable condition]
|
|
84
|
+
</acceptance_criteria>
|
|
76
85
|
<done>[Acceptance criteria]</done>
|
|
77
86
|
</task>
|
|
78
87
|
|
|
79
|
-
<!-- For checkpoint task examples and patterns, see @references/
|
|
80
|
-
<!-- Key rule: Antigravity starts dev server BEFORE human-verify checkpoints. User only visits URLs. -->
|
|
88
|
+
<!-- For checkpoint task examples and patterns, see @C:/projects/GSD-Antigravity/.antigravity/get-shit-done/references/checkpoints.md -->
|
|
81
89
|
|
|
82
90
|
<task type="checkpoint:decision" gate="blocking">
|
|
83
91
|
<decision>[What needs deciding]</decision>
|
|
@@ -270,7 +278,7 @@ TDD features get dedicated plans with `type: tdd`.
|
|
|
270
278
|
→ Yes: Create a TDD plan
|
|
271
279
|
→ No: Standard task in standard plan
|
|
272
280
|
|
|
273
|
-
See
|
|
281
|
+
See `C:/projects/GSD-Antigravity/.antigravity/get-shit-done/references/tdd.md` for TDD plan structure.
|
|
274
282
|
|
|
275
283
|
---
|
|
276
284
|
|
|
@@ -374,9 +382,9 @@ Output: Working dashboard component.
|
|
|
374
382
|
</objective>
|
|
375
383
|
|
|
376
384
|
<execution_context>
|
|
377
|
-
@
|
|
378
|
-
@
|
|
379
|
-
@references/
|
|
385
|
+
@C:/projects/GSD-Antigravityreferences/workflows/execute-plan.md
|
|
386
|
+
@C:/projects/GSD-Antigravityassets/templates/summary.md
|
|
387
|
+
@C:/projects/GSD-Antigravity/.antigravity/get-shit-done/references/checkpoints.md
|
|
380
388
|
</execution_context>
|
|
381
389
|
|
|
382
390
|
<context>
|
|
@@ -456,6 +464,39 @@ files_modified: [...]
|
|
|
456
464
|
</task>
|
|
457
465
|
```
|
|
458
466
|
|
|
467
|
+
**Bad: Missing read_first (executor modifies files it hasn't read)**
|
|
468
|
+
```xml
|
|
469
|
+
<task type="auto">
|
|
470
|
+
<name>Update database config</name>
|
|
471
|
+
<files>src/config/database.ts</files>
|
|
472
|
+
<!-- No read_first! Executor doesn't know current state or conventions -->
|
|
473
|
+
<action>Update the database config to match production settings</action>
|
|
474
|
+
</task>
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
**Bad: Vague acceptance criteria (not verifiable)**
|
|
478
|
+
```xml
|
|
479
|
+
<acceptance_criteria>
|
|
480
|
+
- Config is properly set up
|
|
481
|
+
- Database connection works correctly
|
|
482
|
+
</acceptance_criteria>
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
**Good: Concrete with read_first + verifiable criteria**
|
|
486
|
+
```xml
|
|
487
|
+
<task type="auto">
|
|
488
|
+
<name>Update database config for connection pooling</name>
|
|
489
|
+
<files>src/config/database.ts</files>
|
|
490
|
+
<read_first>src/config/database.ts, .env.example, docker-compose.yml</read_first>
|
|
491
|
+
<action>Add pool configuration: min=2, max=20, idleTimeoutMs=30000. Add SSL config: rejectUnauthorized=true when NODE_ENV=production. Add .env.example entry: DATABASE_POOL_MAX=20.</action>
|
|
492
|
+
<acceptance_criteria>
|
|
493
|
+
- database.ts contains "max: 20" and "idleTimeoutMillis: 30000"
|
|
494
|
+
- database.ts contains SSL conditional on NODE_ENV
|
|
495
|
+
- .env.example contains DATABASE_POOL_MAX
|
|
496
|
+
</acceptance_criteria>
|
|
497
|
+
</task>
|
|
498
|
+
```
|
|
499
|
+
|
|
459
500
|
---
|
|
460
501
|
|
|
461
502
|
## Guidelines
|
|
@@ -499,7 +540,7 @@ user_setup:
|
|
|
499
540
|
|
|
500
541
|
**Result:** Execute-plan generates `{phase}-USER-SETUP.md` with checklist for the user.
|
|
501
542
|
|
|
502
|
-
See `
|
|
543
|
+
See `C:/projects/GSD-Antigravityassets/templates/user-setup.md` for full schema and examples
|
|
503
544
|
|
|
504
545
|
---
|
|
505
546
|
|
|
@@ -566,4 +607,4 @@ Task completion ≠ Goal achievement. A task "create chat component" can complet
|
|
|
566
607
|
5. Gaps found → fix plans created → execute → re-verify
|
|
567
608
|
6. All must_haves pass → phase complete
|
|
568
609
|
|
|
569
|
-
See `
|
|
610
|
+
See `C:/projects/GSD-Antigravityreferences/workflows/verify-phase.md` for verification logic.
|
|
@@ -294,6 +294,11 @@ async function main() {
|
|
|
294
294
|
break;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
+
case "config-set-model-profile": {
|
|
298
|
+
config.cmdConfigSetModelProfile(cwd, args[1], raw);
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
|
|
297
302
|
case 'config-get': {
|
|
298
303
|
config.cmdConfigGet(cwd, args[1], raw);
|
|
299
304
|
break;
|
|
@@ -405,6 +410,12 @@ async function main() {
|
|
|
405
410
|
break;
|
|
406
411
|
}
|
|
407
412
|
|
|
413
|
+
case 'stats': {
|
|
414
|
+
const subcommand = args[1] || 'json';
|
|
415
|
+
commands.cmdStats(cwd, subcommand, raw);
|
|
416
|
+
break;
|
|
417
|
+
}
|
|
418
|
+
|
|
408
419
|
case 'todo': {
|
|
409
420
|
const subcommand = args[1];
|
|
410
421
|
if (subcommand === 'complete') {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.24.0",
|
|
3
3
|
"commands": {
|
|
4
4
|
"add-phase": {
|
|
5
5
|
"description": "Add phase to end of current milestone in roadmap"
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
"audit-milestone": {
|
|
14
14
|
"description": "Audit milestone completion against original intent before archiving"
|
|
15
15
|
},
|
|
16
|
+
"autonomous": {
|
|
17
|
+
"description": "Run all remaining phases autonomously \u2014 discuss\u2192plan\u2192execute per phase"
|
|
18
|
+
},
|
|
16
19
|
"check-todos": {
|
|
17
20
|
"description": "List pending todos and select one to work on"
|
|
18
21
|
},
|
|
@@ -26,7 +29,7 @@
|
|
|
26
29
|
"description": "Systematic debugging with persistent state across context resets"
|
|
27
30
|
},
|
|
28
31
|
"discuss-phase": {
|
|
29
|
-
"description": "Gather phase context through adaptive questioning before planning"
|
|
32
|
+
"description": "Gather phase context through adaptive questioning before planning. Use --auto to skip interactive questions (Antigravity picks recommended defaults)."
|
|
30
33
|
},
|
|
31
34
|
"execute-phase": {
|
|
32
35
|
"description": "Execute all plans in a phase with wave-based parallelization"
|
|
@@ -87,11 +90,20 @@
|
|
|
87
90
|
"description": "Resume work from previous session with full context restoration"
|
|
88
91
|
},
|
|
89
92
|
"set-profile": {
|
|
90
|
-
"description": "Switch model profile for GSD agents (quality/balanced/budget)"
|
|
93
|
+
"description": "Switch model profile for GSD agents (quality/balanced/budget/inherit)"
|
|
91
94
|
},
|
|
92
95
|
"settings": {
|
|
93
96
|
"description": "Configure GSD workflow toggles and model profile"
|
|
94
97
|
},
|
|
98
|
+
"stats": {
|
|
99
|
+
"description": "Display project statistics \u2014 phases, plans, requirements, git metrics, and timeline"
|
|
100
|
+
},
|
|
101
|
+
"ui-phase": {
|
|
102
|
+
"description": "Generate UI design contract (UI-SPEC.md) for frontend phases"
|
|
103
|
+
},
|
|
104
|
+
"ui-review": {
|
|
105
|
+
"description": "Retroactive 6-pillar visual audit of implemented frontend code"
|
|
106
|
+
},
|
|
95
107
|
"update": {
|
|
96
108
|
"description": "Update GSD to latest version with changelog display"
|
|
97
109
|
},
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
const fs = require('fs');
|
|
5
5
|
const path = require('path');
|
|
6
6
|
const { execSync } = require('child_process');
|
|
7
|
-
const { safeReadFile, loadConfig, isGitIgnored, execGit, normalizePhaseName, comparePhaseNum, getArchivedPhaseDirs, generateSlugInternal, getMilestoneInfo, resolveModelInternal,
|
|
7
|
+
const { safeReadFile, loadConfig, isGitIgnored, execGit, normalizePhaseName, comparePhaseNum, getArchivedPhaseDirs, generateSlugInternal, getMilestoneInfo, resolveModelInternal, toPosixPath, output, error, findPhaseInternal } = require('./core.cjs');
|
|
8
8
|
const { extractFrontmatter } = require('./frontmatter.cjs');
|
|
9
|
+
const { MODEL_PROFILES } = require('./model-profiles.cjs');
|
|
9
10
|
|
|
10
11
|
function cmdGenerateSlug(text, raw) {
|
|
11
12
|
if (!text) {
|
|
@@ -532,6 +533,123 @@ function cmdScaffold(cwd, type, options, raw) {
|
|
|
532
533
|
output({ created: true, path: relPath }, raw, relPath);
|
|
533
534
|
}
|
|
534
535
|
|
|
536
|
+
function cmdStats(cwd, format, raw) {
|
|
537
|
+
const phasesDir = path.join(cwd, '.planning', 'phases');
|
|
538
|
+
const reqPath = path.join(cwd, '.planning', 'REQUIREMENTS.md');
|
|
539
|
+
const statePath = path.join(cwd, '.planning', 'STATE.md');
|
|
540
|
+
const milestone = getMilestoneInfo(cwd);
|
|
541
|
+
|
|
542
|
+
// Phase & plan stats (reuse progress pattern)
|
|
543
|
+
const phases = [];
|
|
544
|
+
let totalPlans = 0;
|
|
545
|
+
let totalSummaries = 0;
|
|
546
|
+
|
|
547
|
+
try {
|
|
548
|
+
const entries = fs.readdirSync(phasesDir, { withFileTypes: true });
|
|
549
|
+
const dirs = entries.filter(e => e.isDirectory()).map(e => e.name).sort((a, b) => comparePhaseNum(a, b));
|
|
550
|
+
|
|
551
|
+
for (const dir of dirs) {
|
|
552
|
+
const dm = dir.match(/^(\d+(?:\.\d+)*)-?(.*)/);
|
|
553
|
+
const phaseNum = dm ? dm[1] : dir;
|
|
554
|
+
const phaseName = dm && dm[2] ? dm[2].replace(/-/g, ' ') : '';
|
|
555
|
+
const phaseFiles = fs.readdirSync(path.join(phasesDir, dir));
|
|
556
|
+
const plans = phaseFiles.filter(f => f.endsWith('-PLAN.md') || f === 'PLAN.md').length;
|
|
557
|
+
const summaries = phaseFiles.filter(f => f.endsWith('-SUMMARY.md') || f === 'SUMMARY.md').length;
|
|
558
|
+
|
|
559
|
+
totalPlans += plans;
|
|
560
|
+
totalSummaries += summaries;
|
|
561
|
+
|
|
562
|
+
let status;
|
|
563
|
+
if (plans === 0) status = 'Pending';
|
|
564
|
+
else if (summaries >= plans) status = 'Complete';
|
|
565
|
+
else if (summaries > 0) status = 'In Progress';
|
|
566
|
+
else status = 'Planned';
|
|
567
|
+
|
|
568
|
+
phases.push({ number: phaseNum, name: phaseName, plans, summaries, status });
|
|
569
|
+
}
|
|
570
|
+
} catch {}
|
|
571
|
+
|
|
572
|
+
const percent = totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0;
|
|
573
|
+
|
|
574
|
+
// Requirements stats
|
|
575
|
+
let requirementsTotal = 0;
|
|
576
|
+
let requirementsComplete = 0;
|
|
577
|
+
try {
|
|
578
|
+
if (fs.existsSync(reqPath)) {
|
|
579
|
+
const reqContent = fs.readFileSync(reqPath, 'utf-8');
|
|
580
|
+
const checked = reqContent.match(/^- \[x\] \*\*/gm);
|
|
581
|
+
const unchecked = reqContent.match(/^- \[ \] \*\*/gm);
|
|
582
|
+
requirementsComplete = checked ? checked.length : 0;
|
|
583
|
+
requirementsTotal = requirementsComplete + (unchecked ? unchecked.length : 0);
|
|
584
|
+
}
|
|
585
|
+
} catch {}
|
|
586
|
+
|
|
587
|
+
// Last activity from STATE.md
|
|
588
|
+
let lastActivity = null;
|
|
589
|
+
try {
|
|
590
|
+
if (fs.existsSync(statePath)) {
|
|
591
|
+
const stateContent = fs.readFileSync(statePath, 'utf-8');
|
|
592
|
+
const activityMatch = stateContent.match(/\*\*Last Activity:\*\*\s*(.+)/);
|
|
593
|
+
if (activityMatch) lastActivity = activityMatch[1].trim();
|
|
594
|
+
}
|
|
595
|
+
} catch {}
|
|
596
|
+
|
|
597
|
+
// Git stats
|
|
598
|
+
let gitCommits = 0;
|
|
599
|
+
let gitFirstCommitDate = null;
|
|
600
|
+
try {
|
|
601
|
+
const commitCount = execGit(cwd, ['rev-list', '--count', 'HEAD']);
|
|
602
|
+
gitCommits = parseInt(commitCount.trim(), 10) || 0;
|
|
603
|
+
const firstDate = execGit(cwd, ['log', '--reverse', '--format=%as', '--max-count=1']);
|
|
604
|
+
gitFirstCommitDate = firstDate.trim() || null;
|
|
605
|
+
} catch {}
|
|
606
|
+
|
|
607
|
+
const completedPhases = phases.filter(p => p.status === 'Complete').length;
|
|
608
|
+
|
|
609
|
+
const result = {
|
|
610
|
+
milestone_version: milestone.version,
|
|
611
|
+
milestone_name: milestone.name,
|
|
612
|
+
phases,
|
|
613
|
+
phases_completed: completedPhases,
|
|
614
|
+
phases_total: phases.length,
|
|
615
|
+
total_plans: totalPlans,
|
|
616
|
+
total_summaries: totalSummaries,
|
|
617
|
+
percent,
|
|
618
|
+
requirements_total: requirementsTotal,
|
|
619
|
+
requirements_complete: requirementsComplete,
|
|
620
|
+
git_commits: gitCommits,
|
|
621
|
+
git_first_commit_date: gitFirstCommitDate,
|
|
622
|
+
last_activity: lastActivity,
|
|
623
|
+
};
|
|
624
|
+
|
|
625
|
+
if (format === 'table') {
|
|
626
|
+
const barWidth = 10;
|
|
627
|
+
const filled = Math.round((percent / 100) * barWidth);
|
|
628
|
+
const bar = '\u2588'.repeat(filled) + '\u2591'.repeat(barWidth - filled);
|
|
629
|
+
let out = `# ${milestone.version} ${milestone.name} \u2014 Statistics\n\n`;
|
|
630
|
+
out += `**Progress:** [${bar}] ${totalSummaries}/${totalPlans} plans (${percent}%)\n`;
|
|
631
|
+
out += `**Phases:** ${completedPhases}/${phases.length} complete\n`;
|
|
632
|
+
if (requirementsTotal > 0) {
|
|
633
|
+
out += `**Requirements:** ${requirementsComplete}/${requirementsTotal} complete\n`;
|
|
634
|
+
}
|
|
635
|
+
out += '\n';
|
|
636
|
+
out += `| Phase | Name | Plans | Completed | Status |\n`;
|
|
637
|
+
out += `|-------|------|-------|-----------|--------|\n`;
|
|
638
|
+
for (const p of phases) {
|
|
639
|
+
out += `| ${p.number} | ${p.name} | ${p.plans} | ${p.summaries} | ${p.status} |\n`;
|
|
640
|
+
}
|
|
641
|
+
if (gitCommits > 0) {
|
|
642
|
+
out += `\n**Git:** ${gitCommits} commits`;
|
|
643
|
+
if (gitFirstCommitDate) out += ` (since ${gitFirstCommitDate})`;
|
|
644
|
+
out += '\n';
|
|
645
|
+
}
|
|
646
|
+
if (lastActivity) out += `**Last activity:** ${lastActivity}\n`;
|
|
647
|
+
output({ rendered: out }, raw, out);
|
|
648
|
+
} else {
|
|
649
|
+
output(result, raw);
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
|
|
535
653
|
module.exports = {
|
|
536
654
|
cmdGenerateSlug,
|
|
537
655
|
cmdCurrentTimestamp,
|
|
@@ -545,4 +663,5 @@ module.exports = {
|
|
|
545
663
|
cmdProgressRender,
|
|
546
664
|
cmdTodoComplete,
|
|
547
665
|
cmdScaffold,
|
|
666
|
+
cmdStats,
|
|
548
667
|
};
|