get-shit-pretty 0.1.0 → 0.2.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 +274 -60
- package/agents/gsp-brand-strategist.md +5 -4
- package/agents/gsp-design-engineer.md +9 -2
- package/agents/gsp-spec-engineer.md +93 -17
- package/agents/gsp-system-architect.md +1 -1
- package/agents/gsp-ui-designer.md +9 -1
- package/bin/install.js +23 -12
- package/commands/gsp/brand.md +29 -3
- package/commands/gsp/build.md +14 -5
- package/commands/gsp/design.md +31 -6
- package/commands/gsp/help.md +2 -2
- package/commands/gsp/new-project.md +8 -1
- package/commands/gsp/progress.md +2 -2
- package/commands/gsp/review.md +6 -2
- package/commands/gsp/spec.md +42 -22
- package/commands/gsp/system.md +2 -0
- package/package.json +1 -1
- package/prompts/05-implementation-spec-expert.md +42 -0
- package/scripts/gsp-statusline.js +52 -1
- package/scripts/statusline-dispatcher.js +46 -0
- package/templates/config.json +1 -0
- package/templates/phases/spec.md +27 -41
- package/templates/roadmap.md +4 -4
- package/templates/state.md +5 -1
- package/prompts/05-figma-auto-layout-expert.md +0 -27
package/README.md
CHANGED
|
@@ -1,69 +1,173 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# GET SHIT PRETTY
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Design engineering for AI coding tools.**
|
|
6
|
+
|
|
7
|
+
**Research, brand, design system, UI, specs, review, build, launch — from your terminal.**
|
|
8
|
+
|
|
9
|
+
[](https://www.npmjs.com/package/get-shit-pretty)
|
|
10
|
+
[](https://www.npmjs.com/package/get-shit-pretty)
|
|
11
|
+
[](https://github.com/jubscodes/get-shit-pretty)
|
|
12
|
+
[](LICENSE)
|
|
13
|
+
|
|
14
|
+
<br>
|
|
6
15
|
|
|
7
16
|
```bash
|
|
8
17
|
npx get-shit-pretty
|
|
9
18
|
```
|
|
10
19
|
|
|
11
|
-
|
|
20
|
+
**Works on Mac, Windows, and Linux.**
|
|
12
21
|
|
|
13
|
-
|
|
14
|
-
# Claude Code (global)
|
|
15
|
-
npx get-shit-pretty --claude --global
|
|
22
|
+
<br>
|
|
16
23
|
|
|
17
|
-
|
|
18
|
-
npx get-shit-pretty --all --global
|
|
24
|
+
*"Vibe-coded apps work. They also all look the same. GSP fixes that."*
|
|
19
25
|
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
<br>
|
|
27
|
+
|
|
28
|
+
[Why GSP Exists](#why-gsp-exists) · [How It Works](#how-it-works) · [Commands](#commands) · [Agents & Prompts](#agents--prompts) · [AI Tool Support](#ai-coding-tool-support)
|
|
29
|
+
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Why GSP Exists
|
|
35
|
+
|
|
36
|
+
The gap between design and code is shrinking — but only from one direction.
|
|
37
|
+
|
|
38
|
+
Figma ships Code Connect, Dev Mode, MCP servers. Design tools are learning to speak code. That bridge is being built.
|
|
39
|
+
|
|
40
|
+
Coding tools aren't learning to speak design.
|
|
41
|
+
|
|
42
|
+
You can vibe-code an entire app in an afternoon. It works. It also looks like every other vibe-coded app — the same shadcn components, the same layouts, the same sea of sameness. No research, no brand thinking, no system, no critique. AI coding tools are powerful builders with zero design process.
|
|
43
|
+
|
|
44
|
+
AI didn't cause this. Skipping design thinking did.
|
|
45
|
+
|
|
46
|
+
GSP brings design fundamentals into the tools developers already use. Research. Brand. Design systems. UI patterns. Accessibility. Critique. The process that makes design consistent — running in your terminal.
|
|
47
|
+
|
|
48
|
+
For designers, it's the other direction. Code-first environments without giving up your process. Your design decisions become tokens, specs, and components — not a Figma file someone rebuilds from scratch.
|
|
49
|
+
|
|
50
|
+
Both disciplines. Same pipeline. Same environment. Design engineering — not designers learning to code or developers learning to design, but both working through the same system.
|
|
51
|
+
|
|
52
|
+
The missing half of the bridge.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## How It Works
|
|
57
|
+
|
|
58
|
+
### 1. Start a Project
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
/gsp:new-project
|
|
22
62
|
```
|
|
23
63
|
|
|
24
|
-
|
|
25
|
-
|
|
64
|
+
Answer questions about your product — what it does, who it's for, the vibe you're going for. GSP creates a design brief that guides everything downstream.
|
|
65
|
+
|
|
66
|
+
**Creates:** `.design/BRIEF.md`
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
### 2. Research
|
|
26
71
|
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
cd ~/get-shit-pretty
|
|
30
|
-
chmod +x install.sh
|
|
31
|
-
./install.sh
|
|
72
|
+
```
|
|
73
|
+
/gsp:research
|
|
32
74
|
```
|
|
33
75
|
|
|
34
|
-
|
|
76
|
+
Analyzes design trends in your space — competitor patterns, emerging styles, what's working and what's not. Start with context, not guesses.
|
|
35
77
|
|
|
36
|
-
|
|
78
|
+
**Creates:** `.design/research/TRENDS.md`
|
|
37
79
|
|
|
38
|
-
|
|
39
|
-
|---------|:-----------:|:--------:|:----------:|:---------:|
|
|
40
|
-
| Slash commands | /gsp:command | /gsp-command | /gsp:command | $gsp-command |
|
|
41
|
-
| Agents | Yes | Yes | Yes | Yes |
|
|
42
|
-
| Prompts bundle | Yes | Yes | Yes | Yes |
|
|
43
|
-
| Templates bundle | Yes | Yes | Yes | Yes |
|
|
44
|
-
| References bundle | Yes | Yes | Yes | Yes |
|
|
45
|
-
| Statusline | Yes | — | — | — |
|
|
46
|
-
| Interactive install | Yes | Yes | Yes | Yes |
|
|
47
|
-
| Global install | ~/.claude | ~/.config/opencode | ~/.gemini | ~/.codex |
|
|
48
|
-
| Local install | .claude/ | .opencode/ | .gemini/ | .codex/ |
|
|
80
|
+
---
|
|
49
81
|
|
|
50
|
-
|
|
82
|
+
### 3. Brand
|
|
51
83
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
84
|
+
```
|
|
85
|
+
/gsp:brand
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Builds your complete identity — positioning, personality, logo directions, color palette, typography system. Your brand, not a default theme.
|
|
89
|
+
|
|
90
|
+
**Creates:** `.design/brand/IDENTITY.md`
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### 4. Design System
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
/gsp:system
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Translates your brand into a functional design system — color scales, type scales, spacing, component foundations, and design tokens. Your system, in code.
|
|
101
|
+
|
|
102
|
+
**Creates:** `.design/system/SYSTEM.md`, `tokens.json`
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
### 5. UI Design
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
/gsp:design
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Designs your screens and interaction flows following Apple HIG patterns. Layout, navigation, states, responsive behavior — all documented with enough detail to build from.
|
|
113
|
+
|
|
114
|
+
**Creates:** `.design/screens/SCREENS.md`
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
### 6. Implementation Specs
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
/gsp:spec
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Maps your screen designs to your implementation target — shadcn/ui components, React Native Reusables, an existing design system, Figma specs, or lightweight code specs. Bridges design decisions to whatever UI framework your project uses.
|
|
125
|
+
|
|
126
|
+
**Creates:** `.design/specs/SPECS.md`
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
### 7. Review
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
/gsp:review
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Two parallel agents audit your designs:
|
|
137
|
+
- **Design Critique** — Structured critique using Nielsen's 10 usability heuristics
|
|
138
|
+
- **Accessibility Audit** — WCAG 2.2 AA compliance check
|
|
139
|
+
|
|
140
|
+
If issues are found, loop back to fix before building.
|
|
141
|
+
|
|
142
|
+
**Creates:** `.design/review/CRITIQUE.md`, `ACCESSIBILITY.md`
|
|
65
143
|
|
|
66
|
-
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### 8. Build
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
/gsp:build
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Translates reviewed designs into production-ready frontend code. Components, styles, interactions — built from your design system and tokens, not generic defaults.
|
|
153
|
+
|
|
154
|
+
**Creates:** `.design/build/CODE.md`, `components/`
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### 9. Launch
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
/gsp:launch
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Creates marketing campaign assets — landing page copy, social media content, launch materials. Your product ships with a story, not just code.
|
|
165
|
+
|
|
166
|
+
**Creates:** `.design/launch/CAMPAIGN.md`
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### The Full Pipeline
|
|
67
171
|
|
|
68
172
|
```
|
|
69
173
|
/gsp:new-project → BRIEF.md
|
|
@@ -76,7 +180,7 @@ chmod +x install.sh
|
|
|
76
180
|
↓
|
|
77
181
|
/gsp:design → .design/screens/SCREENS.md
|
|
78
182
|
↓
|
|
79
|
-
/gsp:spec → .design/specs/
|
|
183
|
+
/gsp:spec → .design/specs/SPECS.md
|
|
80
184
|
↓
|
|
81
185
|
/gsp:review → .design/review/CRITIQUE.md + ACCESSIBILITY.md
|
|
82
186
|
↓ (loop back if issues found)
|
|
@@ -87,25 +191,135 @@ chmod +x install.sh
|
|
|
87
191
|
|
|
88
192
|
All artifacts live in `.design/` within your project directory.
|
|
89
193
|
|
|
90
|
-
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Commands
|
|
197
|
+
|
|
198
|
+
| Command | What it does |
|
|
199
|
+
|---------|--------------|
|
|
200
|
+
| `/gsp:new-project` | Initialize a design brief through guided Q&A |
|
|
201
|
+
| `/gsp:research` | Analyze design trends for your industry |
|
|
202
|
+
| `/gsp:brand` | Create brand identity (strategy, logo, color, type) |
|
|
203
|
+
| `/gsp:system` | Build design system foundations + tokens |
|
|
204
|
+
| `/gsp:design` | Design UI/UX screens and flows |
|
|
205
|
+
| `/gsp:spec` | Generate implementation specifications |
|
|
206
|
+
| `/gsp:review` | Design critique + accessibility audit |
|
|
207
|
+
| `/gsp:build` | Translate designs to production code |
|
|
208
|
+
| `/gsp:launch` | Create marketing campaign assets |
|
|
209
|
+
| `/gsp:progress` | Check project status |
|
|
210
|
+
| `/gsp:help` | Show command reference |
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Agents & Prompts
|
|
215
|
+
|
|
216
|
+
GSP ships with 9 specialized agents, each modeled after a real design discipline:
|
|
217
|
+
|
|
218
|
+
| Agent | Role |
|
|
219
|
+
|-------|------|
|
|
220
|
+
| **Design System Architect** | Complete design systems (Apple Principal Designer level) |
|
|
221
|
+
| **Brand Identity Creator** | Full brand identities (Pentagram Creative Director level) |
|
|
222
|
+
| **UI/UX Pattern Master** | App UI design following Apple HIG |
|
|
223
|
+
| **Marketing Asset Factory** | Campaign asset libraries |
|
|
224
|
+
| **Implementation Spec Engineer** | Implementation specifications for any UI target |
|
|
225
|
+
| **Design Critique Partner** | Structured critiques using Nielsen's 10 heuristics |
|
|
226
|
+
| **Design Trend Synthesizer** | Industry trend analysis and competitive research |
|
|
227
|
+
| **Accessibility Auditor** | WCAG 2.2 AA compliance auditing |
|
|
228
|
+
| **Design-to-Code Translator** | Design to production-ready frontend code |
|
|
229
|
+
|
|
230
|
+
Each agent has deep reference material — Apple HIG patterns, Nielsen's heuristics, WCAG checklists, design token standards — baked into its prompts.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## AI Coding Tool Support
|
|
235
|
+
|
|
236
|
+
GSP works across all major AI coding tools:
|
|
237
|
+
|
|
238
|
+
| Feature | Claude Code | OpenCode | Gemini CLI | Codex CLI |
|
|
239
|
+
|---------|:-----------:|:--------:|:----------:|:---------:|
|
|
240
|
+
| Slash commands | `/gsp:command` | `/gsp-command` | `/gsp:command` | `$gsp-command` |
|
|
241
|
+
| Agents | Yes | Yes | Yes | Yes |
|
|
242
|
+
| Prompts | Yes | Yes | Yes | Yes |
|
|
243
|
+
| Templates | Yes | Yes | Yes | Yes |
|
|
244
|
+
| References | Yes | Yes | Yes | Yes |
|
|
245
|
+
| Statusline | Yes | — | — | — |
|
|
246
|
+
| Global install | `~/.claude` | `~/.config/opencode` | `~/.gemini` | `~/.codex` |
|
|
247
|
+
| Local install | `.claude/` | `.opencode/` | `.gemini/` | `.codex/` |
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Install
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
npx get-shit-pretty
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
The installer prompts you to choose:
|
|
258
|
+
1. **Runtime** — Claude Code, OpenCode, Gemini, Codex, or all
|
|
259
|
+
2. **Location** — Global (all projects) or local (current project only)
|
|
260
|
+
|
|
261
|
+
<details>
|
|
262
|
+
<summary><strong>Non-interactive install</strong></summary>
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Claude Code
|
|
266
|
+
npx get-shit-pretty --claude --global
|
|
267
|
+
npx get-shit-pretty --claude --local
|
|
91
268
|
|
|
92
|
-
|
|
269
|
+
# OpenCode
|
|
270
|
+
npx get-shit-pretty --opencode --global
|
|
93
271
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
272
|
+
# Gemini CLI
|
|
273
|
+
npx get-shit-pretty --gemini --global
|
|
274
|
+
|
|
275
|
+
# Codex CLI
|
|
276
|
+
npx get-shit-pretty --codex --global
|
|
277
|
+
|
|
278
|
+
# All runtimes
|
|
279
|
+
npx get-shit-pretty --all --global
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
</details>
|
|
283
|
+
|
|
284
|
+
<details>
|
|
285
|
+
<summary><strong>Uninstall</strong></summary>
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
npx get-shit-pretty --claude --global --uninstall
|
|
289
|
+
npx get-shit-pretty --opencode --global --uninstall
|
|
290
|
+
npx get-shit-pretty --codex --global --uninstall
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
</details>
|
|
294
|
+
|
|
295
|
+
<details>
|
|
296
|
+
<summary><strong>Legacy install (bash)</strong></summary>
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
git clone https://github.com/jubscodes/get-shit-pretty.git ~/get-shit-pretty
|
|
300
|
+
cd ~/get-shit-pretty
|
|
301
|
+
chmod +x install.sh
|
|
302
|
+
./install.sh
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
</details>
|
|
306
|
+
|
|
307
|
+
---
|
|
103
308
|
|
|
104
309
|
## Requirements
|
|
105
310
|
|
|
106
311
|
- An AI coding tool: [Claude Code](https://claude.ai/claude-code), [OpenCode](https://opencode.ai), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Codex CLI](https://github.com/openai/codex)
|
|
107
|
-
|
|
312
|
+
|
|
313
|
+
---
|
|
108
314
|
|
|
109
315
|
## License
|
|
110
316
|
|
|
111
|
-
MIT
|
|
317
|
+
MIT License. See [LICENSE](LICENSE) for details.
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
<div align="center">
|
|
322
|
+
|
|
323
|
+
**Your code works. GSP makes it yours.**
|
|
324
|
+
|
|
325
|
+
</div>
|
|
@@ -19,10 +19,11 @@ Use trend insights (if available) to ensure the identity feels current while rem
|
|
|
19
19
|
1. **Absorb context** — Read BRIEF.md for company, industry, audience, personality. Read TRENDS.md for market positioning opportunities.
|
|
20
20
|
2. **Define strategy** — Brand story, archetype, voice matrix, messaging hierarchy
|
|
21
21
|
3. **Explore visual directions** — 3 distinct logo concepts that each express the strategy differently
|
|
22
|
-
4. **Build color system** —
|
|
23
|
-
5. **
|
|
24
|
-
6. **
|
|
25
|
-
7. **
|
|
22
|
+
4. **Build color system** — Define primary, secondary, and accent hex colors with strategic rationale
|
|
23
|
+
5. **Generate palettes** — Use the [tints.dev](https://tints.dev) API by [Simeon Griggs](https://github.com/SimeonGriggs/tints.dev) to generate 11-stop Tailwind palettes for each brand color. Fetch `https://tints.dev/api/{name}/{hex}` (hex without #). Store results in `.design/brand/palettes.json` with OKLCH values (stops 50–950). Include Hex, RGB, Pantone, CMYK, contrast ratios, and dark mode mapping in IDENTITY.md.
|
|
24
|
+
6. **Define typography** — Primary and secondary typefaces with scale and usage rules
|
|
25
|
+
7. **Specify imagery** — Photography, illustration, and iconography style
|
|
26
|
+
8. **Apply** — Show brand in context across key applications
|
|
26
27
|
|
|
27
28
|
## Quality Standards
|
|
28
29
|
- Every decision needs strategic rationale ("We chose X because Y")
|
|
@@ -8,7 +8,14 @@ color: magenta
|
|
|
8
8
|
<role>
|
|
9
9
|
You are a GSP design engineer spawned by `/gsp:build`.
|
|
10
10
|
|
|
11
|
-
Act as a Vercel Design Engineer. Your job is to convert the
|
|
11
|
+
Act as a Vercel Design Engineer. Your job is to convert the implementation specifications and design system into production-ready frontend code — components, layouts, accessibility, animations, and styling.
|
|
12
|
+
|
|
13
|
+
You adapt your approach based on the `implementation_target`:
|
|
14
|
+
- **`shadcn`** — Use shadcn/ui primitives, install via `npx shadcn@latest add`, extend with custom variants
|
|
15
|
+
- **`rn-reusables`** — Use React Native Reusables, install via `npx @react-native-reusables/cli add`, configure NativeWind
|
|
16
|
+
- **`existing`** — Build on the existing design system in the codebase, follow its patterns
|
|
17
|
+
- **`figma` / `code`** — Derive component structure from specs or screen designs
|
|
18
|
+
- **`skip` (no SPECS.md)** — Build directly from SCREENS.md + SYSTEM.md, derive component architecture yourself
|
|
12
19
|
|
|
13
20
|
Write real, copy-paste-ready code. Not pseudocode. Not "implementation left as exercise." Production code.
|
|
14
21
|
</role>
|
|
@@ -16,7 +23,7 @@ Write real, copy-paste-ready code. Not pseudocode. Not "implementation left as e
|
|
|
16
23
|
<methodology>
|
|
17
24
|
## Translation Process
|
|
18
25
|
|
|
19
|
-
1. **Map component hierarchy** — From specs, define the component tree with props, state, and data flow
|
|
26
|
+
1. **Map component hierarchy** — From specs (or screens if spec was skipped), define the component tree with props, state, and data flow
|
|
20
27
|
2. **Implement foundations** — Design tokens as CSS variables or Tailwind config, theme setup, global styles
|
|
21
28
|
3. **Build components** — One file per component with full implementation
|
|
22
29
|
4. **Add accessibility** — ARIA roles, keyboard handlers, focus management, screen reader support
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsp-spec-engineer
|
|
3
|
-
description: Converts screen designs into
|
|
3
|
+
description: Converts screen designs into implementation specifications. Spawned by /gsp:spec.
|
|
4
4
|
tools: Read, Write, Bash
|
|
5
5
|
color: magenta
|
|
6
6
|
---
|
|
@@ -8,38 +8,114 @@ color: magenta
|
|
|
8
8
|
<role>
|
|
9
9
|
You are a GSP spec engineer spawned by `/gsp:spec`.
|
|
10
10
|
|
|
11
|
-
Act as
|
|
11
|
+
Act as an Implementation Spec Engineer. Your job is to convert screen designs into precise implementation specifications — mapping design decisions to the project's UI framework, component architecture, token integration, and dev-ready documentation.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Your output adapts based on the `implementation_target` from `.design/config.json`.
|
|
14
14
|
</role>
|
|
15
15
|
|
|
16
16
|
<methodology>
|
|
17
|
-
## Spec Process
|
|
17
|
+
## Spec Process (adapts per target)
|
|
18
18
|
|
|
19
|
-
1. **
|
|
20
|
-
2. **
|
|
21
|
-
3. **
|
|
22
|
-
4. **
|
|
23
|
-
5. **
|
|
24
|
-
6. **
|
|
25
|
-
|
|
19
|
+
1. **Analyze screens** — Parse SCREENS.md for all components, layouts, and interactions
|
|
20
|
+
2. **Map to target** — Translate design components to the implementation target's primitives
|
|
21
|
+
3. **Define architecture** — Component hierarchy, props, state, composition patterns
|
|
22
|
+
4. **Map tokens** — Connect design system tokens to the target's theming format
|
|
23
|
+
5. **Specify behavior** — Interactions, transitions, responsive rules
|
|
24
|
+
6. **Prepare handoff** — Target-specific installation, setup, and implementation notes
|
|
25
|
+
|
|
26
|
+
## Implementation Targets
|
|
27
|
+
|
|
28
|
+
### When `figma`:
|
|
29
|
+
- Frame structure, page organization, naming convention
|
|
30
|
+
- Per-frame grid specs, constraint rules, responsive behavior
|
|
31
|
+
- Auto-layout per component: direction, padding, spacing, alignment, resizing
|
|
32
|
+
- Component architecture with variants, properties, boolean toggles, slots
|
|
33
|
+
- Design tokens mapped to Figma token format
|
|
34
|
+
- Prototype flows: triggers, animations, transitions, timing
|
|
35
|
+
- Dev handoff: CSS mapping, export formats, naming conventions
|
|
36
|
+
|
|
37
|
+
### When `shadcn`:
|
|
38
|
+
- Map each screen component to shadcn/ui primitives (Button, Card, Dialog, etc.)
|
|
39
|
+
- Define variant overrides and custom props per component
|
|
40
|
+
- Map GSP design tokens to shadcn CSS variables (`--primary`, `--secondary`, `--muted`, etc.)
|
|
41
|
+
- Specify which shadcn components to install (`npx shadcn@latest add ...`)
|
|
42
|
+
- Define composition patterns (how primitives combine into screen layouts)
|
|
43
|
+
- Note any custom components needed beyond shadcn
|
|
44
|
+
- Include tailwind.config extensions for custom tokens
|
|
45
|
+
|
|
46
|
+
### When `rn-reusables`:
|
|
47
|
+
- Map each screen component to React Native Reusables primitives (reusables.dev — the RN port of shadcn/ui)
|
|
48
|
+
- Define variant overrides and custom props per component
|
|
49
|
+
- Map GSP design tokens to RN Reusables CSS variables / NativeWind theme config
|
|
50
|
+
- Specify which reusables to install (`npx @react-native-reusables/cli add ...`)
|
|
51
|
+
- Define composition patterns for RN screens (Stack, Tabs, navigation structure)
|
|
52
|
+
- Handle platform differences (iOS vs Android styling, safe areas, gestures)
|
|
53
|
+
- Note any custom native components needed beyond reusables
|
|
54
|
+
|
|
55
|
+
### When `existing`:
|
|
56
|
+
- Read the existing design system from the codebase (component files, token files, theme config)
|
|
57
|
+
- Map GSP design decisions to existing components and tokens
|
|
58
|
+
- Identify gaps (components/tokens that exist in GSP design but not in the codebase DS)
|
|
59
|
+
- Define adaptation strategy for gaps (extend existing? create new?)
|
|
60
|
+
- Include file paths to existing components being referenced
|
|
61
|
+
|
|
62
|
+
### When `code`:
|
|
63
|
+
- Component architecture with props, state, data flow
|
|
64
|
+
- Token-to-CSS-variable mapping
|
|
65
|
+
- Responsive rules and breakpoint behavior
|
|
66
|
+
- No tool-specific specs (no Figma frames, no shadcn primitives)
|
|
67
|
+
- Framework-agnostic component contracts
|
|
26
68
|
|
|
27
69
|
## Quality Standards
|
|
28
|
-
- Every component must have complete
|
|
29
|
-
- Variants cover all states from design system
|
|
70
|
+
- Every component must have complete specs for the target (no ambiguity)
|
|
30
71
|
- Token mapping is complete and consistent
|
|
31
|
-
-
|
|
32
|
-
-
|
|
72
|
+
- All user journeys from SCREENS.md are covered
|
|
73
|
+
- Responsive behavior is specified per breakpoint
|
|
33
74
|
</methodology>
|
|
34
75
|
|
|
35
76
|
<output>
|
|
36
|
-
Write specs to `.design/specs/
|
|
77
|
+
Write specs to `.design/specs/SPECS.md`:
|
|
37
78
|
|
|
79
|
+
### When `figma`:
|
|
38
80
|
1. **Frame Structure** — Page names, frame hierarchy, naming convention
|
|
39
81
|
2. **Grid & Constraints** — Per-breakpoint grid specs, constraint rules
|
|
40
|
-
3. **Auto-Layout Specs** — Per-component: direction, padding, spacing, alignment,
|
|
82
|
+
3. **Auto-Layout Specs** — Per-component: direction, padding, spacing, alignment, resizing
|
|
41
83
|
4. **Component Architecture** — Variants table, properties, boolean toggles, slots
|
|
42
84
|
5. **Design Tokens** — Figma token mapping (colors, text styles, effects)
|
|
43
85
|
6. **Prototype Flows** — Flow name, trigger, animation type, duration, easing
|
|
44
86
|
7. **Dev Handoff** — CSS mapping, export specs, naming conventions, accessibility annotations
|
|
87
|
+
|
|
88
|
+
### When `shadcn`:
|
|
89
|
+
1. **Component Mapping** — Screen component → shadcn primitive mapping table
|
|
90
|
+
2. **Install Manifest** — `npx shadcn@latest add` commands for all needed components
|
|
91
|
+
3. **Variant Overrides** — Custom variants, props, and extensions per component
|
|
92
|
+
4. **Token Mapping** — GSP tokens → shadcn CSS variables (`--primary`, `--secondary`, etc.)
|
|
93
|
+
5. **Composition Patterns** — How primitives combine into screen layouts
|
|
94
|
+
6. **Custom Components** — Components not covered by shadcn, with architecture specs
|
|
95
|
+
7. **Tailwind Extensions** — Custom theme values for `tailwind.config`
|
|
96
|
+
|
|
97
|
+
### When `rn-reusables`:
|
|
98
|
+
1. **Component Mapping** — Screen component → RN Reusables primitive mapping table
|
|
99
|
+
2. **Install Manifest** — `npx @react-native-reusables/cli add` commands
|
|
100
|
+
3. **Variant Overrides** — Custom variants, props, and extensions per component
|
|
101
|
+
4. **Token Mapping** — GSP tokens → NativeWind theme config / CSS variables
|
|
102
|
+
5. **Composition Patterns** — Navigation structure (Stack, Tabs), screen layouts
|
|
103
|
+
6. **Platform Specs** — iOS vs Android differences, safe areas, gestures
|
|
104
|
+
7. **Custom Components** — Native components needed beyond reusables
|
|
105
|
+
|
|
106
|
+
### When `existing`:
|
|
107
|
+
1. **Component Mapping** — GSP design component → existing codebase component
|
|
108
|
+
2. **Token Mapping** — GSP tokens → existing theme/token values
|
|
109
|
+
3. **Gap Analysis** — Components and tokens in design but not in codebase
|
|
110
|
+
4. **Adaptation Strategy** — Per gap: extend existing, create new, or substitute
|
|
111
|
+
5. **File Reference** — Paths to all existing components and tokens being used
|
|
112
|
+
6. **Integration Notes** — How new components fit into existing architecture
|
|
113
|
+
|
|
114
|
+
### When `code`:
|
|
115
|
+
1. **Component Architecture** — Hierarchy tree with props, state, and data flow
|
|
116
|
+
2. **Token Mapping** — Design tokens → CSS custom properties
|
|
117
|
+
3. **Responsive Specs** — Breakpoints, layout shifts, component adaptations
|
|
118
|
+
4. **Interaction Specs** — Triggers, state transitions, animation descriptions
|
|
119
|
+
5. **Accessibility Specs** — ARIA roles, keyboard navigation, focus management
|
|
120
|
+
6. **Implementation Notes** — Key decisions, patterns, and constraints
|
|
45
121
|
</output>
|
|
@@ -16,7 +16,7 @@ The system should be production-ready: every value specified, every state define
|
|
|
16
16
|
<methodology>
|
|
17
17
|
## System Building Process
|
|
18
18
|
|
|
19
|
-
1. **Extract foundations from identity** — Map brand colors to semantic system
|
|
19
|
+
1. **Extract foundations from identity** — Map brand colors to semantic system using the tints.dev palettes from `.design/brand/palettes.json` (generated by [tints.dev](https://tints.dev) by [Simeon Griggs](https://github.com/SimeonGriggs/tints.dev)). Use the 11-stop OKLCH scales as the color foundation for tokens. Establish type scale from brand typography
|
|
20
20
|
2. **Define grid and spacing** — 12-column grid, 8px base spacing system
|
|
21
21
|
3. **Build component library** — 30+ components with all states, anatomy, usage rules
|
|
22
22
|
4. **Export tokens** — Machine-readable JSON following W3C Design Tokens format
|
|
@@ -11,6 +11,8 @@ You are a GSP UI designer spawned by `/gsp:design`.
|
|
|
11
11
|
Act as a Senior Apple UI Designer. Your job is to design the complete UI for the project — screens, flows, interactions, and responsive behavior — using the established design system and following Apple HIG principles.
|
|
12
12
|
|
|
13
13
|
Design for real users with real goals. Every screen should solve a specific problem.
|
|
14
|
+
|
|
15
|
+
When an **Existing Components** inventory is provided (for `shadcn`, `rn-reusables`, `existing`, or `code` targets), incorporate existing components into your designs and include a Component Plan in your output.
|
|
14
16
|
</role>
|
|
15
17
|
|
|
16
18
|
<methodology>
|
|
@@ -22,6 +24,7 @@ Design for real users with real goals. Every screen should solve a specific prob
|
|
|
22
24
|
4. **Design 8 core screens** — Each with wireframe description, component usage, interactions, and all states
|
|
23
25
|
5. **Specify accessibility** — WCAG compliance, VoiceOver order, Dynamic Type behavior
|
|
24
26
|
6. **Define micro-interactions** — Meaningful animations that communicate state changes
|
|
27
|
+
7. **Build component plan** — When existing components inventory is provided, annotate which components to reuse, refactor, or create new
|
|
25
28
|
|
|
26
29
|
## Quality Standards
|
|
27
30
|
- Every screen needs all 4 states: default, empty, loading, error
|
|
@@ -47,5 +50,10 @@ Write screens to `.design/screens/SCREENS.md`:
|
|
|
47
50
|
- Accessibility notes (VoiceOver order, focus management)
|
|
48
51
|
5. **Micro-interactions** — Table of trigger → animation → duration → easing
|
|
49
52
|
6. **Responsive Behavior** — Mobile, tablet, desktop breakpoint adaptations
|
|
50
|
-
7. **
|
|
53
|
+
7. **Component Plan** (when `implementation_target` is not `figma`):
|
|
54
|
+
- **Reuse** — Existing components used as-is
|
|
55
|
+
- **Refactor** — Existing components that need changes (with what changes)
|
|
56
|
+
- **New (shared)** — New components needed across multiple screens
|
|
57
|
+
- **New (local)** — Screen-specific components
|
|
58
|
+
8. **Designer's Notes** — Key decisions and rationale
|
|
51
59
|
</output>
|
package/bin/install.js
CHANGED
|
@@ -755,14 +755,23 @@ function install(isGlobal, runtime = 'claude') {
|
|
|
755
755
|
|
|
756
756
|
// ── Statusline (Claude Code only) ──
|
|
757
757
|
if (runtime === 'claude') {
|
|
758
|
+
const hooksDest = path.join(targetDir, 'hooks');
|
|
759
|
+
fs.mkdirSync(hooksDest, { recursive: true });
|
|
760
|
+
|
|
761
|
+
// Copy GSP statusline
|
|
758
762
|
const statuslineSrc = path.join(src, 'scripts', 'gsp-statusline.js');
|
|
759
763
|
if (fs.existsSync(statuslineSrc)) {
|
|
760
|
-
const hooksDest = path.join(targetDir, 'hooks');
|
|
761
|
-
fs.mkdirSync(hooksDest, { recursive: true });
|
|
762
764
|
let content = fs.readFileSync(statuslineSrc, 'utf8');
|
|
763
765
|
content = content.replace(/'\.claude'/g, getConfigDirFromHome(runtime, isGlobal));
|
|
764
766
|
fs.writeFileSync(path.join(hooksDest, 'gsp-statusline.js'), content);
|
|
765
|
-
console.log(` ${green}+${reset} Installed statusline
|
|
767
|
+
console.log(` ${green}+${reset} Installed GSP statusline`);
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
// Copy dispatcher (routes to GSP or GSD based on project type)
|
|
771
|
+
const dispatcherSrc = path.join(src, 'scripts', 'statusline-dispatcher.js');
|
|
772
|
+
if (fs.existsSync(dispatcherSrc)) {
|
|
773
|
+
fs.copyFileSync(dispatcherSrc, path.join(hooksDest, 'statusline-dispatcher.js'));
|
|
774
|
+
console.log(` ${green}+${reset} Installed statusline dispatcher`);
|
|
766
775
|
}
|
|
767
776
|
}
|
|
768
777
|
|
|
@@ -776,8 +785,8 @@ function install(isGlobal, runtime = 'claude') {
|
|
|
776
785
|
const settings = readSettings(settingsPath);
|
|
777
786
|
|
|
778
787
|
const statuslineCommand = isGlobal
|
|
779
|
-
? `node "${targetDir.replace(/\\/g, '/')}/hooks/
|
|
780
|
-
: `node ${dirName}/hooks/
|
|
788
|
+
? `node "${targetDir.replace(/\\/g, '/')}/hooks/statusline-dispatcher.js"`
|
|
789
|
+
: `node ${dirName}/hooks/statusline-dispatcher.js`;
|
|
781
790
|
|
|
782
791
|
return { settingsPath, settings, statuslineCommand, runtime };
|
|
783
792
|
}
|
|
@@ -866,12 +875,14 @@ function uninstall(isGlobal, runtime = 'claude') {
|
|
|
866
875
|
}
|
|
867
876
|
}
|
|
868
877
|
|
|
869
|
-
// Remove statusline
|
|
870
|
-
const
|
|
871
|
-
|
|
872
|
-
fs.
|
|
873
|
-
|
|
874
|
-
|
|
878
|
+
// Remove statusline hooks
|
|
879
|
+
for (const hook of ['gsp-statusline.js', 'statusline-dispatcher.js']) {
|
|
880
|
+
const hookPath = path.join(targetDir, 'hooks', hook);
|
|
881
|
+
if (fs.existsSync(hookPath)) {
|
|
882
|
+
fs.unlinkSync(hookPath);
|
|
883
|
+
removedCount++;
|
|
884
|
+
console.log(` ${green}+${reset} Removed ${hook}`);
|
|
885
|
+
}
|
|
875
886
|
}
|
|
876
887
|
|
|
877
888
|
// Clean up settings.json (statusline only — no hooks to clean)
|
|
@@ -881,7 +892,7 @@ function uninstall(isGlobal, runtime = 'claude') {
|
|
|
881
892
|
let modified = false;
|
|
882
893
|
|
|
883
894
|
if (settings.statusLine && settings.statusLine.command &&
|
|
884
|
-
settings.statusLine.command.includes('gsp-statusline')) {
|
|
895
|
+
(settings.statusLine.command.includes('gsp-statusline') || settings.statusLine.command.includes('statusline-dispatcher'))) {
|
|
885
896
|
delete settings.statusLine;
|
|
886
897
|
modified = true;
|
|
887
898
|
console.log(` ${green}+${reset} Removed GSP statusline from settings`);
|