get-shit-done-cc 1.9.13 → 1.10.0-experimental.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 +8 -0
- package/agents/design-specialist.md +222 -0
- package/agents/gsd-executor.md +37 -375
- package/agents/gsd-planner.md +15 -108
- package/bin/install.js +92 -5
- package/commands/gsd/autopilot.md +518 -0
- package/commands/gsd/checkpoints.md +229 -0
- package/commands/gsd/design-system.md +70 -0
- package/commands/gsd/discuss-design.md +77 -0
- package/commands/gsd/extend.md +80 -0
- package/commands/gsd/help.md +43 -0
- package/commands/gsd/new-project.md +94 -8
- package/commands/gsd/plan-phase.md +35 -5
- package/get-shit-done/references/ccr-integration.md +468 -0
- package/get-shit-done/references/checkpoint-execution.md +369 -0
- package/get-shit-done/references/checkpoint-types.md +728 -0
- package/get-shit-done/references/deviation-rules.md +215 -0
- package/get-shit-done/references/framework-patterns.md +543 -0
- package/get-shit-done/references/ui-principles.md +258 -0
- package/get-shit-done/references/verification-patterns.md +1 -1
- package/get-shit-done/skills/gsd-extend/SKILL.md +154 -0
- package/get-shit-done/skills/gsd-extend/references/agent-structure.md +305 -0
- package/get-shit-done/skills/gsd-extend/references/extension-anatomy.md +123 -0
- package/get-shit-done/skills/gsd-extend/references/reference-structure.md +408 -0
- package/get-shit-done/skills/gsd-extend/references/template-structure.md +370 -0
- package/get-shit-done/skills/gsd-extend/references/validation-rules.md +140 -0
- package/get-shit-done/skills/gsd-extend/references/workflow-structure.md +253 -0
- package/get-shit-done/skills/gsd-extend/templates/agent-template.md +234 -0
- package/get-shit-done/skills/gsd-extend/templates/reference-template.md +239 -0
- package/get-shit-done/skills/gsd-extend/templates/workflow-template.md +169 -0
- package/get-shit-done/skills/gsd-extend/workflows/create-approach.md +332 -0
- package/get-shit-done/skills/gsd-extend/workflows/list-extensions.md +133 -0
- package/get-shit-done/skills/gsd-extend/workflows/remove-extension.md +93 -0
- package/get-shit-done/skills/gsd-extend/workflows/validate-extension.md +184 -0
- package/get-shit-done/templates/autopilot-script-simple.sh +181 -0
- package/get-shit-done/templates/autopilot-script.sh +1142 -0
- package/get-shit-done/templates/autopilot-script.sh.backup +1142 -0
- package/get-shit-done/templates/design-system.md +238 -0
- package/get-shit-done/templates/phase-design.md +205 -0
- package/get-shit-done/templates/phase-models-template.json +71 -0
- package/get-shit-done/templates/phase-prompt.md +4 -4
- package/get-shit-done/templates/state.md +37 -0
- package/get-shit-done/tui/App.tsx +169 -0
- package/get-shit-done/tui/README.md +107 -0
- package/get-shit-done/tui/build.js +37 -0
- package/get-shit-done/tui/components/ActivityFeed.tsx +126 -0
- package/get-shit-done/tui/components/PhaseCard.tsx +86 -0
- package/get-shit-done/tui/components/StatsBar.tsx +147 -0
- package/get-shit-done/tui/dist/index.js +387 -0
- package/get-shit-done/tui/index.tsx +12 -0
- package/get-shit-done/tui/package-lock.json +1074 -0
- package/get-shit-done/tui/package.json +22 -0
- package/get-shit-done/tui/utils/pipeReader.ts +129 -0
- package/get-shit-done/workflows/design-system.md +245 -0
- package/get-shit-done/workflows/discuss-design.md +330 -0
- package/get-shit-done/workflows/execute-phase.md +44 -1
- package/get-shit-done/workflows/execute-plan-auth.md +122 -0
- package/get-shit-done/workflows/execute-plan-checkpoints.md +541 -0
- package/get-shit-done/workflows/execute-plan.md +34 -856
- package/package.json +8 -3
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@taches/gsd-autopilot-tui",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Beautiful terminal UI for GSD Autopilot",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"gsd-autopilot-tui": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "node build.js"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"ink": "^4.4.1",
|
|
15
|
+
"react": "^18.2.0"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/react": "^18.2.0",
|
|
19
|
+
"esbuild": "^0.24.0",
|
|
20
|
+
"typescript": "^5.0.0"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { createInterface } from 'readline';
|
|
2
|
+
|
|
3
|
+
export interface ActivityMessage {
|
|
4
|
+
type: 'stage' | 'file' | 'commit' | 'test' | 'info' | 'error';
|
|
5
|
+
stage?: string;
|
|
6
|
+
detail: string;
|
|
7
|
+
timestamp: Date;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface PhaseState {
|
|
11
|
+
phase: string;
|
|
12
|
+
phaseName: string;
|
|
13
|
+
completed: boolean;
|
|
14
|
+
stages: Array<{
|
|
15
|
+
name: string;
|
|
16
|
+
elapsed: string;
|
|
17
|
+
completed: boolean;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class ActivityPipeReader {
|
|
22
|
+
private pipePath: string;
|
|
23
|
+
private listeners: Array<(msg: ActivityMessage) => void> = [];
|
|
24
|
+
|
|
25
|
+
constructor(pipePath: string) {
|
|
26
|
+
this.pipePath = pipePath;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
onMessage(listener: (msg: ActivityMessage) => void) {
|
|
30
|
+
this.listeners.push(listener);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
start() {
|
|
34
|
+
// Create readline interface
|
|
35
|
+
const rl = createInterface({
|
|
36
|
+
input: require('fs').createReadStream(this.pipePath),
|
|
37
|
+
crlfDelay: Infinity,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
rl.on('line', (line: string) => {
|
|
41
|
+
if (!line.trim()) return;
|
|
42
|
+
|
|
43
|
+
try {
|
|
44
|
+
const msg = this.parseMessage(line);
|
|
45
|
+
if (msg) {
|
|
46
|
+
this.listeners.forEach((listener) => listener(msg));
|
|
47
|
+
}
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error('Error parsing message:', error);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
rl.on('error', (err) => {
|
|
54
|
+
if (err.code !== 'ENOENT') {
|
|
55
|
+
console.error('Pipe reader error:', err);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private parseMessage(line: string): ActivityMessage | null {
|
|
61
|
+
// Parse format: STAGE:type:description or FILE:op:path or COMMIT:message
|
|
62
|
+
const parts = line.split(':');
|
|
63
|
+
|
|
64
|
+
if (parts.length < 2) return null;
|
|
65
|
+
|
|
66
|
+
const prefix = parts[0];
|
|
67
|
+
|
|
68
|
+
switch (prefix) {
|
|
69
|
+
case 'STAGE': {
|
|
70
|
+
const type = parts[1] as ActivityMessage['type'];
|
|
71
|
+
const detail = parts.slice(2).join(':');
|
|
72
|
+
return {
|
|
73
|
+
type: 'stage',
|
|
74
|
+
stage: type,
|
|
75
|
+
detail,
|
|
76
|
+
timestamp: new Date(),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
case 'FILE': {
|
|
81
|
+
const op = parts[1];
|
|
82
|
+
const file = parts.slice(2).join(':');
|
|
83
|
+
return {
|
|
84
|
+
type: 'file',
|
|
85
|
+
detail: `${op}: ${file}`,
|
|
86
|
+
timestamp: new Date(),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
case 'COMMIT': {
|
|
91
|
+
const message = parts.slice(1).join(':');
|
|
92
|
+
return {
|
|
93
|
+
type: 'commit',
|
|
94
|
+
detail: message,
|
|
95
|
+
timestamp: new Date(),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
case 'TEST': {
|
|
100
|
+
return {
|
|
101
|
+
type: 'test',
|
|
102
|
+
detail: 'Running tests',
|
|
103
|
+
timestamp: new Date(),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
case 'INFO': {
|
|
108
|
+
const message = parts.slice(1).join(':');
|
|
109
|
+
return {
|
|
110
|
+
type: 'info',
|
|
111
|
+
detail: message,
|
|
112
|
+
timestamp: new Date(),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
case 'ERROR': {
|
|
117
|
+
const message = parts.slice(1).join(':');
|
|
118
|
+
return {
|
|
119
|
+
type: 'error',
|
|
120
|
+
detail: message,
|
|
121
|
+
timestamp: new Date(),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
default:
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-system
|
|
3
|
+
description: Establish project-wide design foundation through conversation
|
|
4
|
+
triggers: [custom]
|
|
5
|
+
replaces: null
|
|
6
|
+
requires: [ui-principles]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<purpose>
|
|
10
|
+
Create a project-wide design system through conversational discovery. This establishes the visual foundation that all UI work in the project respects.
|
|
11
|
+
</purpose>
|
|
12
|
+
|
|
13
|
+
<when_to_use>
|
|
14
|
+
- Starting a new project with UI
|
|
15
|
+
- Before first UI phase
|
|
16
|
+
- When visual direction needs definition
|
|
17
|
+
- When suggested after /gsd:new-project
|
|
18
|
+
</when_to_use>
|
|
19
|
+
|
|
20
|
+
<required_reading>
|
|
21
|
+
@~/.claude/get-shit-done/references/ui-principles.md
|
|
22
|
+
</required_reading>
|
|
23
|
+
|
|
24
|
+
<process>
|
|
25
|
+
|
|
26
|
+
<step name="display_banner" priority="first">
|
|
27
|
+
```
|
|
28
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
29
|
+
GSD ► DESIGN SYSTEM
|
|
30
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
31
|
+
```
|
|
32
|
+
</step>
|
|
33
|
+
|
|
34
|
+
<step name="check_existing">
|
|
35
|
+
Check if design system exists:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
if [[ -f ".planning/DESIGN-SYSTEM.md" ]]; then
|
|
39
|
+
echo "EXISTS"
|
|
40
|
+
else
|
|
41
|
+
echo "NEW"
|
|
42
|
+
fi
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**If exists:**
|
|
46
|
+
Ask via AskUserQuestion:
|
|
47
|
+
- header: "Existing"
|
|
48
|
+
- question: "A design system already exists. What would you like to do?"
|
|
49
|
+
- options:
|
|
50
|
+
- "Review and update" - Refine the existing system
|
|
51
|
+
- "Start fresh" - Replace with new design system
|
|
52
|
+
- "Cancel" - Keep current system
|
|
53
|
+
|
|
54
|
+
If "Cancel" → exit workflow
|
|
55
|
+
</step>
|
|
56
|
+
|
|
57
|
+
<step name="detect_framework">
|
|
58
|
+
Detect project framework for context:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
if [[ -f "package.json" ]]; then
|
|
62
|
+
if grep -q '"next"' package.json; then
|
|
63
|
+
echo "Next.js (React)"
|
|
64
|
+
elif grep -q '"react"' package.json; then
|
|
65
|
+
echo "React"
|
|
66
|
+
fi
|
|
67
|
+
elif ls *.xcodeproj 2>/dev/null || [[ -f "Package.swift" ]]; then
|
|
68
|
+
echo "SwiftUI"
|
|
69
|
+
elif [[ -f "requirements.txt" ]]; then
|
|
70
|
+
echo "Python"
|
|
71
|
+
else
|
|
72
|
+
echo "HTML/CSS"
|
|
73
|
+
fi
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Store framework for later reference.
|
|
77
|
+
</step>
|
|
78
|
+
|
|
79
|
+
<step name="visual_references">
|
|
80
|
+
Ask via AskUserQuestion:
|
|
81
|
+
- header: "References"
|
|
82
|
+
- question: "Do you have visual references to guide the design direction?"
|
|
83
|
+
- options:
|
|
84
|
+
- "Yes, I have images/screenshots" - I'll provide files or paste images
|
|
85
|
+
- "Yes, I have website URLs" - I'll share sites I like
|
|
86
|
+
- "Both" - I have images and URLs
|
|
87
|
+
- "No, start from description" - I'll describe what I want
|
|
88
|
+
|
|
89
|
+
**If user provides references:**
|
|
90
|
+
- For images: Use Read tool to analyze, extract:
|
|
91
|
+
- Color palette
|
|
92
|
+
- Typography style
|
|
93
|
+
- Spacing patterns
|
|
94
|
+
- Component styles
|
|
95
|
+
- Overall aesthetic
|
|
96
|
+
|
|
97
|
+
- For URLs: Use WebFetch to analyze, extract:
|
|
98
|
+
- Visual patterns
|
|
99
|
+
- Design language
|
|
100
|
+
- Component approaches
|
|
101
|
+
|
|
102
|
+
Summarize findings:
|
|
103
|
+
"From your references, I see: [summary of extracted aesthetic patterns]"
|
|
104
|
+
</step>
|
|
105
|
+
|
|
106
|
+
<step name="aesthetic_direction">
|
|
107
|
+
Ask inline (freeform):
|
|
108
|
+
|
|
109
|
+
"What's the overall vibe you're going for? Describe the feeling you want users to have."
|
|
110
|
+
|
|
111
|
+
Wait for response.
|
|
112
|
+
|
|
113
|
+
Then probe with AskUserQuestion:
|
|
114
|
+
- header: "Style"
|
|
115
|
+
- question: "Which best describes your target aesthetic?"
|
|
116
|
+
- options:
|
|
117
|
+
- "Clean & minimal" - Lots of whitespace, subtle, typography-focused
|
|
118
|
+
- "Bold & energetic" - High contrast, strong colors, dynamic
|
|
119
|
+
- "Warm & friendly" - Rounded corners, soft colors, approachable
|
|
120
|
+
- "Dark & sophisticated" - Dark mode primary, elegant, professional
|
|
121
|
+
|
|
122
|
+
Follow up based on selection to refine.
|
|
123
|
+
</step>
|
|
124
|
+
|
|
125
|
+
<step name="color_exploration">
|
|
126
|
+
Ask via AskUserQuestion:
|
|
127
|
+
- header: "Colors"
|
|
128
|
+
- question: "Do you have brand colors, or should we create a palette?"
|
|
129
|
+
- options:
|
|
130
|
+
- "I have brand colors" - I'll provide hex values
|
|
131
|
+
- "Create from scratch" - Help me build a palette
|
|
132
|
+
- "Derive from references" - Use colors from my visual references
|
|
133
|
+
|
|
134
|
+
**If brand colors provided:**
|
|
135
|
+
Collect primary, secondary, accent colors.
|
|
136
|
+
|
|
137
|
+
**If creating from scratch:**
|
|
138
|
+
Ask about:
|
|
139
|
+
- Preferred hue family (blues, greens, purples, etc.)
|
|
140
|
+
- Saturation preference (vibrant vs muted)
|
|
141
|
+
- Build complementary palette
|
|
142
|
+
|
|
143
|
+
**If deriving from references:**
|
|
144
|
+
Extract dominant colors from provided images/URLs.
|
|
145
|
+
|
|
146
|
+
Present proposed palette for approval.
|
|
147
|
+
</step>
|
|
148
|
+
|
|
149
|
+
<step name="typography">
|
|
150
|
+
Ask via AskUserQuestion:
|
|
151
|
+
- header: "Typography"
|
|
152
|
+
- question: "Font preference?"
|
|
153
|
+
- options:
|
|
154
|
+
- "System fonts" - Native OS fonts (fast, reliable)
|
|
155
|
+
- "Inter / Clean sans" - Modern, highly legible
|
|
156
|
+
- "Custom / I have fonts" - I'll specify fonts
|
|
157
|
+
- "Suggest based on aesthetic" - Match to my chosen style
|
|
158
|
+
|
|
159
|
+
Build type scale based on selection.
|
|
160
|
+
</step>
|
|
161
|
+
|
|
162
|
+
<step name="component_style">
|
|
163
|
+
Ask via AskUserQuestion:
|
|
164
|
+
- header: "Components"
|
|
165
|
+
- question: "Component style preference?"
|
|
166
|
+
- options:
|
|
167
|
+
- "Rounded & soft" - Large border radius, gentle shadows
|
|
168
|
+
- "Sharp & precise" - Small or no radius, crisp edges
|
|
169
|
+
- "Mixed" - Rounded buttons, sharp cards (or vice versa)
|
|
170
|
+
|
|
171
|
+
Determine:
|
|
172
|
+
- Border radius scale
|
|
173
|
+
- Shadow approach
|
|
174
|
+
- Border usage
|
|
175
|
+
</step>
|
|
176
|
+
|
|
177
|
+
<step name="spacing_system">
|
|
178
|
+
Based on aesthetic choices, propose spacing system:
|
|
179
|
+
|
|
180
|
+
"Based on your [aesthetic] direction, I recommend:
|
|
181
|
+
- Base unit: [4px or 8px]
|
|
182
|
+
- Scale: [list values]
|
|
183
|
+
- Section spacing: [value]"
|
|
184
|
+
|
|
185
|
+
Ask if adjustments needed.
|
|
186
|
+
</step>
|
|
187
|
+
|
|
188
|
+
<step name="generate_design_system">
|
|
189
|
+
Generate `.planning/DESIGN-SYSTEM.md` using template:
|
|
190
|
+
@~/.claude/get-shit-done/templates/design-system.md
|
|
191
|
+
|
|
192
|
+
Include:
|
|
193
|
+
- All discovered aesthetic preferences
|
|
194
|
+
- Color palette with tokens
|
|
195
|
+
- Typography scale with framework-specific values
|
|
196
|
+
- Spacing system
|
|
197
|
+
- Component patterns appropriate to detected framework
|
|
198
|
+
- Implementation notes for the framework
|
|
199
|
+
</step>
|
|
200
|
+
|
|
201
|
+
<step name="present_result">
|
|
202
|
+
```
|
|
203
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
204
|
+
GSD ► DESIGN SYSTEM CREATED ✓
|
|
205
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
206
|
+
|
|
207
|
+
## Summary
|
|
208
|
+
|
|
209
|
+
**Aesthetic:** {description}
|
|
210
|
+
**Framework:** {framework}
|
|
211
|
+
**Primary color:** {primary}
|
|
212
|
+
|
|
213
|
+
## File Created
|
|
214
|
+
|
|
215
|
+
`.planning/DESIGN-SYSTEM.md`
|
|
216
|
+
|
|
217
|
+
───────────────────────────────────────────────────────────────
|
|
218
|
+
|
|
219
|
+
## What's Next
|
|
220
|
+
|
|
221
|
+
This design system will be automatically loaded when you:
|
|
222
|
+
- Run `/gsd:discuss-design {phase}` for phase-specific UI
|
|
223
|
+
- Plan phases with UI components
|
|
224
|
+
|
|
225
|
+
To view or edit:
|
|
226
|
+
```bash
|
|
227
|
+
cat .planning/DESIGN-SYSTEM.md
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
───────────────────────────────────────────────────────────────
|
|
231
|
+
```
|
|
232
|
+
</step>
|
|
233
|
+
|
|
234
|
+
</process>
|
|
235
|
+
|
|
236
|
+
<success_criteria>
|
|
237
|
+
- [ ] User's aesthetic vision understood
|
|
238
|
+
- [ ] Visual references analyzed (if provided)
|
|
239
|
+
- [ ] Color palette defined
|
|
240
|
+
- [ ] Typography system established
|
|
241
|
+
- [ ] Spacing scale determined
|
|
242
|
+
- [ ] Component patterns documented
|
|
243
|
+
- [ ] DESIGN-SYSTEM.md created
|
|
244
|
+
- [ ] User knows how system integrates with GSD
|
|
245
|
+
</success_criteria>
|