get-shit-pretty 0.5.2 → 0.6.1
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/.claude-plugin/plugin.json +1 -1
- package/README.md +3 -4
- package/bin/install.js +27 -1
- package/gsp/agents/gsp-builder.md +1 -1
- package/gsp/references/questioning.md +17 -9
- package/gsp/skills/gsp-accessibility/SKILL.md +52 -186
- package/gsp/skills/gsp-accessibility-audit/SKILL.md +219 -0
- package/gsp/skills/gsp-brand-audit/SKILL.md +7 -6
- package/gsp/skills/gsp-brand-identity/SKILL.md +7 -5
- package/gsp/skills/gsp-brand-patterns/SKILL.md +42 -35
- package/gsp/skills/gsp-brand-refine/SKILL.md +148 -0
- package/gsp/skills/gsp-brand-research/SKILL.md +2 -3
- package/gsp/skills/gsp-brand-strategy/SKILL.md +7 -5
- package/gsp/skills/gsp-brand-sync/SKILL.md +3 -4
- package/gsp/skills/gsp-doctor/SKILL.md +20 -1
- package/gsp/skills/gsp-help/SKILL.md +1 -0
- package/gsp/skills/gsp-launch/SKILL.md +3 -8
- package/gsp/skills/gsp-palette/SKILL.md +3 -0
- package/gsp/skills/gsp-project-brief/SKILL.md +3 -11
- package/gsp/skills/gsp-project-build/SKILL.md +2 -5
- package/gsp/skills/gsp-project-critique/SKILL.md +4 -8
- package/gsp/skills/gsp-project-design/SKILL.md +3 -9
- package/gsp/skills/gsp-project-research/SKILL.md +2 -5
- package/gsp/skills/gsp-project-review/SKILL.md +4 -6
- package/gsp/skills/gsp-start/SKILL.md +101 -180
- package/gsp/skills/gsp-style/SKILL.md +12 -174
- package/gsp/skills/gsp-typescale/SKILL.md +39 -161
- package/gsp/skills/gsp-update/SKILL.md +52 -23
- package/gsp/templates/branding/config.json +1 -0
- package/package.json +1 -1
|
@@ -25,7 +25,7 @@ Multiple brands and projects can coexist. Projects reference a brand.
|
|
|
25
25
|
</context>
|
|
26
26
|
|
|
27
27
|
<objective>
|
|
28
|
-
Through
|
|
28
|
+
Through a sequential one-question-at-a-time conversation, gather a complete brief and create the right project structure (brand, project, or both). Route the user to their first phase skill.
|
|
29
29
|
</objective>
|
|
30
30
|
|
|
31
31
|
<execution_context>
|
|
@@ -49,11 +49,12 @@ Through 2-3 rounds of natural conversation, gather a complete brief and create t
|
|
|
49
49
|
<questioning_principles>
|
|
50
50
|
Follow these principles throughout all conversations:
|
|
51
51
|
|
|
52
|
-
1. **
|
|
53
|
-
2. **
|
|
54
|
-
3. **
|
|
55
|
-
4. **
|
|
56
|
-
5. **
|
|
52
|
+
1. **One decision per question** — every question must be its own `AskUserQuestion` call with exactly one decision. Never group multiple questions into a single message. Ask, wait for the answer, then ask the next thing.
|
|
53
|
+
2. **Never re-ask** — if the user already answered something (in this phase or a prior one), don't ask again. If you need to validate, confirm: "I see X from earlier — still accurate?" The user should never feel like they're repeating themselves.
|
|
54
|
+
3. **Inference over interrogation** — state assumptions, let them correct. "SaaS dashboard for enterprise" → you already know: professional, data-dense, web-first.
|
|
55
|
+
4. **Adapt and skip** — use each answer to inform the next question. If an answer reveals enough to skip a later question, skip it. Don't follow a rigid checklist.
|
|
56
|
+
5. **Concrete options over open-ended** — "More like Stripe's clean approach or Duolingo's playful style?" beats "What style do you want?"
|
|
57
|
+
6. **Know when you have enough** — fill gaps with smart defaults. Don't over-ask.
|
|
57
58
|
</questioning_principles>
|
|
58
59
|
|
|
59
60
|
<process>
|
|
@@ -71,12 +72,7 @@ Scan `.design/` for existing brands and projects:
|
|
|
71
72
|
|
|
72
73
|
### Step 1b: Run design system scan (background)
|
|
73
74
|
|
|
74
|
-
Spawn a background agent
|
|
75
|
-
- Use `subagent_type: "general-purpose"`
|
|
76
|
-
- Prompt: "Follow the /gsp:design-system skill methodology. Scan the codebase and produce `.design/system/{STACK,COMPONENTS,TOKENS,CONVENTIONS,CONCERNS}.md`. Read the templates from the GSP templates/system/ directory for output format. If no package.json exists, write minimal greenfield versions."
|
|
77
|
-
- Store the task reference — you'll read results in Step 3 Round 2 or Step 4.
|
|
78
|
-
|
|
79
|
-
This produces workspace-level documents consumed by downstream skills and agents.
|
|
75
|
+
Spawn `/gsp:design-system` as a background agent (`run_in_background: true`, `subagent_type: "general-purpose"`). It writes to `.design/system/` — don't wait for it. Store the task reference for the brand essence questions or Step 4.
|
|
80
76
|
|
|
81
77
|
### Step 1c: Greet
|
|
82
78
|
|
|
@@ -92,39 +88,15 @@ Adapt the greeting based on what the scan revealed. Use plain text with Unicode
|
|
|
92
88
|
- **Summary box:** `┌──┐│└──┘` border with key-value pairs inside
|
|
93
89
|
|
|
94
90
|
**Fresh start (no `.design/`):**
|
|
95
|
-
|
|
96
|
-
/gsp: ◇◇
|
|
97
|
-
|
|
98
|
-
looks like a fresh start.
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
If `package.json` exists, append:
|
|
102
|
-
```
|
|
103
|
-
i scanning your codebase in the background — i'll factor in what i find.
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Then use `AskUserQuestion` with options:
|
|
107
|
-
- **Brand identity** — "define who you are — strategy, voice, visuals"
|
|
108
|
-
- **Design project** — "design screens and flows for something you're building"
|
|
109
|
-
- **Both (brand + project)** — "full pipeline — brand first, then design"
|
|
110
|
-
- **Quick project** — "skip branding — pick a style preset and start designing"
|
|
91
|
+
Show ` /gsp: ◇◇\n looks like a fresh start.` (append codebase scanning note if `package.json` exists). Use `AskUserQuestion` with: Brand identity, Design project, Both (brand + project), Quick project.
|
|
111
92
|
|
|
112
93
|
**Legacy `.design/` detected (flat structure, pre-0.4.0):**
|
|
113
|
-
Acknowledge the legacy project
|
|
114
|
-
- **Start fresh brand** — "new dual-diamond brand alongside your legacy project"
|
|
115
|
-
- **Start design project** — "new project using the updated pipeline"
|
|
116
|
-
- **Keep working** — "continue with the legacy structure"
|
|
94
|
+
Acknowledge the legacy project. Use `AskUserQuestion`: Start fresh brand, Start design project, Keep working.
|
|
117
95
|
|
|
118
96
|
**Brands exist, no projects:**
|
|
119
|
-
Show brand name + pipeline flow.
|
|
120
|
-
- One option per existing brand — "start a project with {brand name}"
|
|
121
|
-
- **Create new brand** — "start a new brand identity"
|
|
122
|
-
|
|
123
|
-
When brand is complete, show compact single-line: ` acme-corp ◆ complete`
|
|
97
|
+
Show brand name + pipeline flow (compact single-line if complete, full pipeline if incomplete). Use `AskUserQuestion`: one option per existing brand + Create new brand.
|
|
124
98
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
**Brands + projects exist:**
|
|
99
|
+
**Brands + projects exist (canonical format):**
|
|
128
100
|
Show compact brand (single-line if complete) + full project pipeline flow. Then `AskUserQuestion`:
|
|
129
101
|
- **Continue {project}** — "pick up at {next phase}"
|
|
130
102
|
- **New project** — "start a new design project"
|
|
@@ -144,14 +116,13 @@ When codebase has been scanned (`.design/system/STACK.md` exists), show a Summar
|
|
|
144
116
|
```
|
|
145
117
|
|
|
146
118
|
**Codebase signals found (any state):**
|
|
147
|
-
Weave in what you found:
|
|
119
|
+
Weave in what you found naturally: framework, styling, component count.
|
|
148
120
|
|
|
149
121
|
## Step 2: Route based on conversation
|
|
150
122
|
|
|
151
123
|
From the greeting exchange, determine which flow to run:
|
|
152
124
|
|
|
153
|
-
- **Brand identity
|
|
154
|
-
- **Brand identity (evolve)** → Brand flow (Step 3) with `brand_mode: "evolve"`. Detect evolve signals: user mentions existing brand, assets, guidelines, rebrand, refresh, modernize, evolve, update, redesign.
|
|
125
|
+
- **Brand identity** → Brand flow (Step 3)
|
|
155
126
|
- **Design project** → Check for brands first. If none exist, explain they need a brand first. Offer to create one, then auto-transition to project flow.
|
|
156
127
|
- **Full design (brand + project)** → Brand flow (Step 3), with E2E flag so brand completion auto-transitions to project flow (Step 4)
|
|
157
128
|
- **Quick project** → Quick flow (Step 5)
|
|
@@ -159,56 +130,69 @@ From the greeting exchange, determine which flow to run:
|
|
|
159
130
|
|
|
160
131
|
## Step 3: Brand flow
|
|
161
132
|
|
|
133
|
+
Each question is its own `AskUserQuestion` call. Ask one, wait, adapt, ask the next. Skip anything you can already infer.
|
|
134
|
+
|
|
135
|
+
**Step 3a — Brand name and path selection:**
|
|
136
|
+
|
|
162
137
|
1. Ask for brand name (kebab-case, e.g., "acme-corp")
|
|
163
|
-
2.
|
|
138
|
+
2. "Do you already have brand materials to work with?" — use `AskUserQuestion`:
|
|
139
|
+
- **Yes, I have an existing brand** — "I have a logo, colors, guidelines, or other assets"
|
|
140
|
+
- **No, starting fresh** — "Building a brand from scratch"
|
|
141
|
+
|
|
142
|
+
If **yes** → set `brand_mode: "evolve"`. Continue with evolve sequence (Step 3b-evolve).
|
|
143
|
+
If **no** → set `brand_mode: "new"`. Continue with new sequence (Step 3b-new).
|
|
144
|
+
|
|
145
|
+
3. Create directory structure:
|
|
164
146
|
```bash
|
|
165
147
|
mkdir -p .design/branding/{name}/{audit,discover,strategy,identity,patterns}
|
|
166
148
|
```
|
|
167
149
|
|
|
168
|
-
|
|
150
|
+
**Step 3b-evolve — Gather existing brand context:**
|
|
151
|
+
|
|
152
|
+
Ask these before business questions — the existing brand shapes everything:
|
|
153
|
+
|
|
154
|
+
3. Share your current brand materials — logo, colors, guidelines, URLs, anything you have. (open-ended — gather thoroughly here. Brand-audit will NOT re-ask for assets.)
|
|
155
|
+
4. How old is the current brand? (open-ended)
|
|
156
|
+
5. What's working well with the current brand? (open-ended)
|
|
157
|
+
6. What's not working — what are the pain points? (open-ended)
|
|
158
|
+
7. Evolution scope — use `AskUserQuestion`: **Preserve most, tweak details** / **Evolve significantly, keep core** / **Replace — start fresh**
|
|
169
159
|
|
|
170
|
-
|
|
171
|
-
- Company name, industry, stage
|
|
172
|
-
- What problem does this business solve? For whom? How differently?
|
|
173
|
-
- Business model (how it makes money)
|
|
174
|
-
- Who are the main competitors? (users usually know their top 2-3)
|
|
175
|
-
- Primary persona — use `AskUserQuestion` to confirm or build: present an inferred persona profile (name, role, day-in-the-life, frustration, aspiration, discovery, trust signals) and let user correct. If they say "fintech for Gen Z" → infer and present a concrete persona.
|
|
176
|
-
- Secondary persona (if relevant)
|
|
177
|
-
- Mission and vision
|
|
160
|
+
Then continue to Step 3c (business & people), skipping anything the brand materials already reveal.
|
|
178
161
|
|
|
179
|
-
|
|
162
|
+
**Step 3b-new — Skip to business questions:**
|
|
180
163
|
|
|
181
|
-
|
|
164
|
+
Continue directly to Step 3c.
|
|
182
165
|
|
|
183
|
-
|
|
184
|
-
- **Promise:** what should someone feel when they interact with this brand? (derived from persona frustrations + aspirations)
|
|
185
|
-
- **Point of view:** what does this brand disagree with in the category? (derived from the problem + how it solves it differently)
|
|
166
|
+
**Step 3c — Business & People:**
|
|
186
167
|
|
|
187
|
-
|
|
168
|
+
8. What's the company name, and what industry/stage? (open-ended `AskUserQuestion`)
|
|
169
|
+
9. What problem does it solve, and for whom? (open-ended — use the answer to start inferring persona)
|
|
170
|
+
10. What's the business model? (use `AskUserQuestion` with options if you can infer likely models from industry, otherwise open-ended)
|
|
171
|
+
11. Who are the main competitors? (2-3 names — open-ended)
|
|
172
|
+
12. Present an inferred primary persona — a concrete profile (name, role, frustration, aspiration) based on answers so far. Personas should feel like real people — dig into the emotional layer. Use `AskUserQuestion`: **Looks right** / **Adjust** / **Add a secondary persona**
|
|
188
173
|
|
|
189
|
-
|
|
190
|
-
- Each option: **Label** (3 adjectives) / **Description** (why this personality fits their specific audience and competitive position — reference the persona by name, the problem, or the gap) / **Preview** (example sentence in that voice, using their product context)
|
|
191
|
-
- **Surprise me** — craft an unexpected direction inspired by the user's industry and personas
|
|
192
|
-
- What the brand should NEVER feel like
|
|
193
|
-
- Competitive landscape — use `WebSearch` to enrich the competitors named in Round 1. Present the map for confirmation.
|
|
194
|
-
- Brands admired / styles to avoid
|
|
174
|
+
**Step 3d — Brand Essence:**
|
|
195
175
|
|
|
196
|
-
**
|
|
197
|
-
- Existing brand assets? (logo, colors, guidelines)
|
|
198
|
-
- Timeline and budget constraints
|
|
199
|
-
- Non-negotiables
|
|
200
|
-
- **Check background scan:** If the codebase scanner has returned results, weave tech findings naturally.
|
|
201
|
-
- State your understanding back: "Here's what I'm hearing: [summary]." Use `AskUserQuestion`:
|
|
202
|
-
- **Looks good** — "That's accurate, let's go"
|
|
203
|
-
- **Adjust something** — "I want to change or add something"
|
|
176
|
+
Before presenting personality options, **internally synthesize** promise (what should someone feel?) and point of view (what does this brand disagree with?) from prior answers. Don't ask these directly — use them to ground personality options.
|
|
204
177
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
-
|
|
208
|
-
- Brand
|
|
209
|
-
-
|
|
178
|
+
13. Brand personality direction — use `AskUserQuestion` with 2-3 concrete personality directions. **Each option must explain WHY it fits this brand's audience and problem** — not just a style label:
|
|
179
|
+
- Each option: **Label** (3 adjectives) / **Description** (why this personality fits their specific audience and competitive position — reference the persona by name, the problem, or the gap) / **Preview** (example sentence in that voice, using their product context)
|
|
180
|
+
- **Surprise me** — craft an unexpected direction inspired by the user's industry and personas
|
|
181
|
+
- Note: this is a high-level direction only. Brand strategy phase will deepen this into archetype + voice — don't over-refine here.
|
|
182
|
+
14. What should the brand NEVER feel like? (use `AskUserQuestion` with 2-3 anti-directions inferred from their personality pick, plus open-ended option)
|
|
183
|
+
15. Brands admired or styles to avoid? (open-ended `AskUserQuestion`)
|
|
210
184
|
|
|
211
|
-
|
|
185
|
+
Note: competitive landscape deep-dive happens in the research phase — don't re-confirm it here. The competitor names from Q11 are enough.
|
|
186
|
+
|
|
187
|
+
**Step 3e — Constraints & confirmation:**
|
|
188
|
+
|
|
189
|
+
16. Any non-negotiables or constraints? (timeline, budget, must-haves) — open-ended `AskUserQuestion`
|
|
190
|
+
17. **Check background scan:** If the codebase scanner has returned results, weave tech findings naturally into your summary.
|
|
191
|
+
18. State your understanding back: "Here's what I'm hearing: [summary]." Use `AskUserQuestion`:
|
|
192
|
+
- **Looks good** — "That's accurate, let's go"
|
|
193
|
+
- **Adjust something** — "I want to change or add something"
|
|
194
|
+
|
|
195
|
+
Skip any question you can already answer from prior context. Don't over-ask.
|
|
212
196
|
|
|
213
197
|
4. Write artifacts:
|
|
214
198
|
- `.design/branding/{name}/BRIEF.md` from brand brief template
|
|
@@ -218,39 +202,18 @@ Skip or compress rounds if the user gives enough upfront. Don't over-ask.
|
|
|
218
202
|
|
|
219
203
|
5. Set `brand_mode` in config.json based on Step 2 routing decision.
|
|
220
204
|
|
|
221
|
-
6. Route using `AskUserQuestion
|
|
222
|
-
|
|
223
|
-
- **Brand-only, new →** Use `AskUserQuestion`: "Brand brief created! Want to keep going?"
|
|
224
|
-
- **Continue to research** — "Start brand research now" → invoke `/gsp:brand-research` via Skill tool
|
|
225
|
-
- **Stop here** — "I'll come back later" → confirm files are saved, show how to resume with `/gsp:start`
|
|
226
|
-
- **What happens next?** — "Explain the next phase" → explain what brand research does and how it uses the brief
|
|
227
|
-
|
|
228
|
-
- **Brand-only, evolve →** Use `AskUserQuestion`: "Brand brief created! Let's audit your current brand."
|
|
229
|
-
- **Continue to audit** — "Audit my existing brand now" → invoke `/gsp:brand-audit` via Skill tool
|
|
230
|
-
- **Stop here** — "I'll come back later" → confirm files are saved, show how to resume with `/gsp:start`
|
|
231
|
-
- **What happens next?** — "Explain the audit phase" → explain what the brand audit does and why it comes before strategy
|
|
232
|
-
|
|
233
|
-
- **E2E, new →** "Brand brief created. Now let's scope the design project." → continue to Step 4.
|
|
205
|
+
6. Route using `AskUserQuestion` — always offer Continue / Stop here / What happens next:
|
|
234
206
|
|
|
235
|
-
- **
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
207
|
+
- **Brand-only, new →** continue to `/gsp:brand-research`
|
|
208
|
+
- **Brand-only, evolve →** continue to `/gsp:brand-audit`
|
|
209
|
+
- **E2E, new →** continue to `/gsp:brand-research` (complete the entire brand pipeline first — research → strategy → identity → patterns — then auto-transition to Step 4 for project setup). Set `"e2e": true` in config.json so brand-patterns knows to route to project flow after completion.
|
|
210
|
+
- **E2E, evolve →** continue to `/gsp:brand-audit` (complete full brand pipeline, then auto-transition to Step 4). Set `"e2e": true` in config.json.
|
|
239
211
|
|
|
240
212
|
## Step 4: Project flow
|
|
241
213
|
|
|
242
214
|
**Background:** Run `git branch --show-current` with `run_in_background: true` now — result will be ready by the time we need it for git context detection.
|
|
243
215
|
|
|
244
|
-
1. Show available brands
|
|
245
|
-
```
|
|
246
|
-
Available brands:
|
|
247
|
-
• acme-corp (complete — all 4 phases)
|
|
248
|
-
• beta-labs (in progress — 2/4 phases)
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
If no brands exist, explain that a brand is needed first and offer to create one.
|
|
252
|
-
If only one complete brand exists, suggest it as default.
|
|
253
|
-
If multiple brands exist, use `AskUserQuestion` with one option per brand (include status in description).
|
|
216
|
+
1. Show available brands with phase status. No brands → offer to create one. One complete → suggest as default. Multiple → `AskUserQuestion` with one option per brand.
|
|
254
217
|
|
|
255
218
|
2. User selects a brand.
|
|
256
219
|
|
|
@@ -263,55 +226,37 @@ mkdir -p .design/projects/{name}/{brief,research,design,critique,build,review,co
|
|
|
263
226
|
|
|
264
227
|
### Detect git context
|
|
265
228
|
|
|
266
|
-
Use the
|
|
229
|
+
Use the background `git branch --show-current` result. If detected, confirm branch with `AskUserQuestion`. Store in config.json `git.branch` + STATE.md `## Git`. No git repo → skip silently.
|
|
267
230
|
|
|
268
|
-
|
|
269
|
-
- **Yes, use this branch** — "Track `{branch}`"
|
|
270
|
-
- **Different branch** — "I want to use a different branch name"
|
|
271
|
-
3. Store in config.json `git.branch` and STATE.md `## Git` table
|
|
272
|
-
4. If no git repo detected, skip silently — leave fields as "—"
|
|
231
|
+
5. Write `.design/projects/{name}/brand.ref` — brand name, relative path, consumed_at ISO date, identity_hash (first 8 chars md5 of IDENTITY.md, or "pending").
|
|
273
232
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
-
|
|
286
|
-
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
**
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
-
|
|
296
|
-
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
Use inference from the codebase scan — don't re-ask what you can already see.
|
|
303
|
-
|
|
304
|
-
**Round 2 — Success & gaps:**
|
|
305
|
-
- Success criteria
|
|
306
|
-
- Timeline, constraints
|
|
307
|
-
- Any remaining gaps
|
|
308
|
-
- State your understanding back: "Here's what I'm hearing: [summary]." Use `AskUserQuestion`:
|
|
309
|
-
- **Looks good** — "That's accurate, let's go"
|
|
310
|
-
- **Adjust something** — "I want to change or add something"
|
|
311
|
-
- **Explain this** — "Walk me through what you captured and why" → explain each section of the brief and how it'll be used in the next phases
|
|
312
|
-
- **Surprise me** — "Suggest something I haven't thought of" → propose an unexpected screen, flow, or feature angle that would elevate the project based on what you know about the brand, audience, and codebase. Present it as a suggestion the user can adopt, tweak, or skip.
|
|
313
|
-
|
|
314
|
-
Skip or compress rounds if the user gives enough upfront. Don't over-ask.
|
|
233
|
+
6. Consume `.design/system/STACK.md` — note classification for config.json, auto-infer `implementation_target` from STACK.md + COMPONENTS.md.
|
|
234
|
+
|
|
235
|
+
7. Gather project brief as a sequential conversation. Each question is its own `AskUserQuestion` call. Ask one, wait, adapt, ask the next. Skip anything you can already infer from the codebase scan.
|
|
236
|
+
|
|
237
|
+
**Sequence — What we're building:**
|
|
238
|
+
|
|
239
|
+
1. What are we building? (app, website, dashboard, etc.) — open-ended `AskUserQuestion`
|
|
240
|
+
2. Present background scan findings: "I found a {classification} {framework} project with {details}." Use `AskUserQuestion`: **Build on this** / **Different stack** / **Tell me more**
|
|
241
|
+
3. Platforms? — use `AskUserQuestion`: **Web** / **iOS** / **Android** / **Cross-platform** (skip if obvious from codebase)
|
|
242
|
+
4. Implementation target — use `AskUserQuestion` with options based on codebase analysis (e.g., shadcn, rn-reusables, custom, css-only)
|
|
243
|
+
5. Design scope — use `AskUserQuestion`:
|
|
244
|
+
- **Full** — "Complete design: screens, components, tokens"
|
|
245
|
+
- **Partial** — "Specific screens or flows only"
|
|
246
|
+
- **Tokens only** — "Just design tokens, no screens"
|
|
247
|
+
6. Key screens/flows needed? — open-ended `AskUserQuestion`
|
|
248
|
+
|
|
249
|
+
**Sequence — Success & confirmation:**
|
|
250
|
+
|
|
251
|
+
7. What does success look like? — open-ended `AskUserQuestion`
|
|
252
|
+
8. Any constraints? (timeline, budget, must-haves) — open-ended `AskUserQuestion`
|
|
253
|
+
9. State your understanding back: "Here's what I'm hearing: [summary]." Use `AskUserQuestion`:
|
|
254
|
+
- **Looks good** — "That's accurate, let's go"
|
|
255
|
+
- **Adjust something** — "I want to change or add something"
|
|
256
|
+
- **Explain this** — "Walk me through what you captured and why" → explain each section of the brief and how it'll be used in the next phases
|
|
257
|
+
- **Surprise me** — "Suggest something I haven't thought of" → propose an unexpected screen, flow, or feature angle that would elevate the project based on what you know about the brand, audience, and codebase. Present it as a suggestion the user can adopt, tweak, or skip.
|
|
258
|
+
|
|
259
|
+
Skip any question you can already answer from the codebase scan. Don't over-ask.
|
|
315
260
|
|
|
316
261
|
8. Write artifacts:
|
|
317
262
|
- `.design/projects/{name}/BRIEF.md` from project brief template
|
|
@@ -331,33 +276,9 @@ For users who want to skip branding and start designing immediately with a style
|
|
|
331
276
|
|
|
332
277
|
### 5a: Style selection
|
|
333
278
|
|
|
334
|
-
Read
|
|
335
|
-
|
|
336
|
-
```
|
|
337
|
-
─── pick a style ─────────────────────
|
|
338
|
-
|
|
339
|
-
minimal swiss-minimalist, clean-modern, scandinavian
|
|
340
|
-
bold neubrutalism, brutalist, cyberpunk
|
|
341
|
-
dark modern-dark, midnight, hacker-terminal
|
|
342
|
-
editorial editorial, magazine, newspaper
|
|
343
|
-
warm organic, earthy, handcrafted
|
|
344
|
-
playful retro-futurism, vaporwave, memphis
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
Use `AskUserQuestion` with:
|
|
348
|
-
- One option per mood group (showing the first 2-3 preset names as preview)
|
|
349
|
-
- **Surprise me** — "pick something unexpected for my stack"
|
|
350
|
-
|
|
351
|
-
When user picks a group, show the specific presets in that group with 1-line descriptions from INDEX.yml. Use `AskUserQuestion` to pick the specific preset.
|
|
352
|
-
|
|
353
|
-
If the user names a preset directly at any point, skip the group step.
|
|
279
|
+
Read `${CLAUDE_SKILL_DIR}/../../skills/gsp-style/styles/INDEX.yml` and present styles grouped by category. Use `AskUserQuestion` with one option per mood group (showing 2-3 preset names as preview) plus **Surprise me**. When user picks a group, drill into specific presets. If user names a preset directly, skip the group step.
|
|
354
280
|
|
|
355
|
-
**"Surprise me" logic:**
|
|
356
|
-
- Developer tools / CLI → dark or minimal presets
|
|
357
|
-
- Content / blog → editorial presets
|
|
358
|
-
- SaaS / dashboard → minimal or bold presets
|
|
359
|
-
- E-commerce → warm or playful presets
|
|
360
|
-
- No codebase detected → truly random pick
|
|
281
|
+
**"Surprise me" logic:** Weight by codebase type — dev tools → dark/minimal, content → editorial, SaaS → minimal/bold, e-commerce → warm/playful, unknown → random.
|
|
361
282
|
|
|
362
283
|
### 5b: Create minimal brand
|
|
363
284
|
|
|
@@ -406,7 +327,7 @@ Continue directly to Step 4 (project flow) with these modifications:
|
|
|
406
327
|
- Go straight to asking for project name
|
|
407
328
|
- Set `style_preset: "{preset}"` in the project's `config.json`
|
|
408
329
|
- Set `identity_hash: "style-only"` in `brand.ref`
|
|
409
|
-
- Proceed with the normal
|
|
330
|
+
- Proceed with the normal sequential project brief gathering
|
|
410
331
|
|
|
411
332
|
### Upgrade path
|
|
412
333
|
|
|
@@ -35,6 +35,7 @@ Apply a named style preset to produce production-ready design tokens and foundat
|
|
|
35
35
|
|
|
36
36
|
<rules>
|
|
37
37
|
- Always use `AskUserQuestion` for user interaction — never prompt via plain text
|
|
38
|
+
- One decision per question — never batch multiple questions in a single message
|
|
38
39
|
- `tokens.json` follows W3C Design Tokens format from `references/design-tokens.md`
|
|
39
40
|
- When mixing styles, later style values override earlier ones (last-wins precedence)
|
|
40
41
|
- Never mix clashing styles — check the compatibility matrix first
|
|
@@ -55,73 +56,12 @@ Read the user's input to determine the mode:
|
|
|
55
56
|
|
|
56
57
|
## Step 1: List mode (`--list`)
|
|
57
58
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Read `styles/INDEX.yml` and render every style grouped by category. Format:
|
|
59
|
+
Read `styles/INDEX.yml` and display all presets grouped by category. Format each as `{name} {one-line description}` with `─── Category ────` separators and footer showing usage. Example:
|
|
61
60
|
|
|
62
61
|
```
|
|
63
|
-
/gsp:style
|
|
64
|
-
═══════════════════════════════════════
|
|
65
|
-
|
|
66
|
-
34 styles available
|
|
67
|
-
|
|
68
62
|
─── Minimal ────────────────────────
|
|
69
63
|
swiss-minimalist Helvetica and whitespace — let the content breathe
|
|
70
64
|
flat-design Solid colors, zero shadows — bold color blocks as structure
|
|
71
|
-
monochrome Pure black and white — typographic depth, zero decoration
|
|
72
|
-
minimal-dark Three layers of darkness with warm amber accents
|
|
73
|
-
|
|
74
|
-
─── Modern ─────────────────────────
|
|
75
|
-
professional The sensible default — clean, trustworthy, gets out of the way
|
|
76
|
-
saas Electric blue gradient — modern SaaS landing page energy
|
|
77
|
-
enterprise Indigo-to-violet gradient — dashboard-ready corporate
|
|
78
|
-
fluent Microsoft Fluent 2 — acrylic materials, semantic tokens
|
|
79
|
-
material Material Design 3 — adaptive, organic, expressive
|
|
80
|
-
modern-dark Linear/Vercel aesthetic — ambient blobs, mouse spotlights
|
|
81
|
-
glassmorphism Frosted glass panels floating over rich backgrounds
|
|
82
|
-
liquid-glass Apple's 2025 design language — refractive, fluid, alive
|
|
83
|
-
|
|
84
|
-
─── Creative ───────────────────────
|
|
85
|
-
neubrutalism Gumroad meets Figma — thick borders, hard shadows
|
|
86
|
-
cyberpunk Neon-soaked interfaces from a dystopian future
|
|
87
|
-
maximalism MORE IS MORE — sensory overload, 5 rotating accent colors
|
|
88
|
-
bold-typography Typography IS the design — massive headlines, poster aesthetic
|
|
89
|
-
playful-geometric Memphis-inspired candy buttons and confetti cards
|
|
90
|
-
sketch Wobbly borders and marker red on warm paper
|
|
91
|
-
kinetic Viewport-width type, marquees, extreme scale hierarchy
|
|
92
|
-
|
|
93
|
-
─── Elegant ────────────────────────
|
|
94
|
-
luxury Gold accent, slow reveals, asymmetric restraint
|
|
95
|
-
art-deco 1920s theatrical glamour — gold on obsidian black
|
|
96
|
-
academia Victorian study halls — mahogany, brass, and serif type
|
|
97
|
-
humanist-literary Warm paper canvas, terracotta accent — quiet intelligence
|
|
98
|
-
|
|
99
|
-
─── Organic ────────────────────────
|
|
100
|
-
botanical Deep greens, paper grain, nature-inspired serif elegance
|
|
101
|
-
organic Moss and terracotta — blob shapes, no straight lines
|
|
102
|
-
|
|
103
|
-
─── Editorial ──────────────────────
|
|
104
|
-
newsprint Multi-column layouts, drop caps, high information density
|
|
105
|
-
|
|
106
|
-
─── Nostalgic ──────────────────────
|
|
107
|
-
retro Windows 95 bevels, marquee text — the ugliness IS the beauty
|
|
108
|
-
vaporwave 80s/90s digital nostalgia with neon gradients and CRT scanlines
|
|
109
|
-
|
|
110
|
-
─── Tactile ────────────────────────
|
|
111
|
-
claymorphism Vinyl toy aesthetic — 4-layer shadows, super-rounded, squish
|
|
112
|
-
neumorphism Dual opposing shadows — extruded and inset on continuous surface
|
|
113
|
-
industrial Precision machinery — carbon fiber, dual-shadow, safety orange
|
|
114
|
-
|
|
115
|
-
─── Tech ───────────────────────────
|
|
116
|
-
terminal Your favorite code editor as a design system
|
|
117
|
-
web3 Bitcoin orange luminescence on void black
|
|
118
|
-
|
|
119
|
-
─── Geometric ──────────────────────
|
|
120
|
-
bauhaus Form follows function — Bauhaus primary colors, hard shadows
|
|
121
|
-
|
|
122
|
-
─────────────────────────────────────
|
|
123
|
-
Usage: /gsp:style {name}
|
|
124
|
-
/gsp:style --preview {name}
|
|
125
65
|
```
|
|
126
66
|
|
|
127
67
|
Stop here. Do not write any files.
|
|
@@ -177,43 +117,7 @@ If invoked from a project context (`.design/projects/{project}/`):
|
|
|
177
117
|
|
|
178
118
|
## Step 5: Preview mode (`--preview`)
|
|
179
119
|
|
|
180
|
-
If `--preview`, display
|
|
181
|
-
|
|
182
|
-
```
|
|
183
|
-
/gsp:style preview — {name}
|
|
184
|
-
═══════════════════════════════════════
|
|
185
|
-
|
|
186
|
-
Color
|
|
187
|
-
primary {value}
|
|
188
|
-
secondary {value}
|
|
189
|
-
accent {value}
|
|
190
|
-
background {value}
|
|
191
|
-
surface {value}
|
|
192
|
-
|
|
193
|
-
Typography
|
|
194
|
-
heading {font-family} @ {weight}
|
|
195
|
-
body {font-family} @ {weight}
|
|
196
|
-
base size {size}
|
|
197
|
-
|
|
198
|
-
Shape
|
|
199
|
-
radius {sm} / {md} / {lg}
|
|
200
|
-
border {width} {color}
|
|
201
|
-
|
|
202
|
-
Elevation
|
|
203
|
-
sm {value}
|
|
204
|
-
md {value}
|
|
205
|
-
lg {value}
|
|
206
|
-
|
|
207
|
-
Motion
|
|
208
|
-
fast {duration}
|
|
209
|
-
normal {duration}
|
|
210
|
-
easing {value}
|
|
211
|
-
|
|
212
|
-
─────────────────────────────────────
|
|
213
|
-
Run /gsp:style {name} to apply.
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
Stop here. Do not write any files.
|
|
120
|
+
If `--preview`, display expanded tokens grouped by section (Color, Typography, Shape, Elevation, Motion) as key-value pairs. Footer: usage hint to apply. Stop here — do not write any files.
|
|
217
121
|
|
|
218
122
|
## Step 6: Expand tokens to W3C format
|
|
219
123
|
|
|
@@ -241,65 +145,23 @@ Transform each YAML preset section into W3C Design Tokens JSON with `$value` and
|
|
|
241
145
|
|
|
242
146
|
## Step 7: Write tokens.json
|
|
243
147
|
|
|
148
|
+
If `{OUTPUT_PATH}/tokens.json` already exists, use `AskUserQuestion`: "tokens.json already exists — overwrite with style preset? Existing component-level tokens will be replaced." with options **Overwrite** and **Cancel**. If cancelled, skip writing tokens.json and proceed to the next step.
|
|
149
|
+
|
|
244
150
|
Write the complete W3C Design Tokens JSON to `{OUTPUT_PATH}/tokens.json`.
|
|
245
151
|
|
|
246
152
|
## Step 8: Write foundation chunks
|
|
247
153
|
|
|
248
154
|
Write 5 foundation chunks to `{OUTPUT_PATH}/foundations/`, each following `references/chunk-format.md`:
|
|
249
155
|
|
|
250
|
-
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
- Note WCAG contrast considerations based on the color values
|
|
256
|
-
|
|
257
|
-
### foundations/typography.md
|
|
258
|
-
- Document the 9-level type scale (Display → Overline) with all properties
|
|
259
|
-
- Include font family details and where to load them (Google Fonts link if applicable)
|
|
260
|
-
- Include heading and body weight rationale
|
|
261
|
-
|
|
262
|
-
### foundations/spacing.md
|
|
263
|
-
- Document the spacing scale from the preset
|
|
264
|
-
- Include base unit and full scale with usage guidelines
|
|
265
|
-
|
|
266
|
-
### foundations/elevation.md
|
|
267
|
-
- Document the shadow/elevation scale from the preset
|
|
268
|
-
- Include use cases for each level (flat, cards, dropdowns, modals, popovers)
|
|
269
|
-
- Include any style-specific elevation notes (e.g., hard shadows for neubrutalism, glow for cyberpunk)
|
|
270
|
-
|
|
271
|
-
### foundations/border-radius.md
|
|
272
|
-
- Document the radius token scale
|
|
273
|
-
- Include style-specific shape notes (e.g., sharp corners for swiss-minimalist, chunky for neubrutalism)
|
|
156
|
+
- **color-system.md** — brand colors, semantic colors, dark mode mapping, WCAG contrast notes
|
|
157
|
+
- **typography.md** — 9-level type scale, font family details + Google Fonts link, weight rationale
|
|
158
|
+
- **spacing.md** — spacing scale with base unit and usage guidelines
|
|
159
|
+
- **elevation.md** — shadow scale with use cases per level + style-specific notes
|
|
160
|
+
- **border-radius.md** — radius token scale + style-specific shape notes
|
|
274
161
|
|
|
275
162
|
## Step 9: Write INDEX.md
|
|
276
163
|
|
|
277
|
-
Write `{OUTPUT_PATH}/INDEX.md
|
|
278
|
-
|
|
279
|
-
```markdown
|
|
280
|
-
# System
|
|
281
|
-
> Phase: system | Style: {preset-name} | Generated: {DATE}
|
|
282
|
-
|
|
283
|
-
## Applied Style
|
|
284
|
-
|
|
285
|
-
**{preset-name}** — {preset description}
|
|
286
|
-
|
|
287
|
-
## Foundations
|
|
288
|
-
|
|
289
|
-
| Chunk | File | ~Lines |
|
|
290
|
-
|-------|------|--------|
|
|
291
|
-
| Color System | [color-system.md](./foundations/color-system.md) | ~{N} |
|
|
292
|
-
| Typography | [typography.md](./foundations/typography.md) | ~{N} |
|
|
293
|
-
| Spacing | [spacing.md](./foundations/spacing.md) | ~{N} |
|
|
294
|
-
| Elevation | [elevation.md](./foundations/elevation.md) | ~{N} |
|
|
295
|
-
| Border Radius | [border-radius.md](./foundations/border-radius.md) | ~{N} |
|
|
296
|
-
|
|
297
|
-
## Tokens
|
|
298
|
-
|
|
299
|
-
| File | Description |
|
|
300
|
-
|------|-------------|
|
|
301
|
-
| [tokens.json](./tokens.json) | W3C Design Tokens |
|
|
302
|
-
```
|
|
164
|
+
Write `{OUTPUT_PATH}/INDEX.md` — header with phase/style/date, applied style name + description, foundations table (chunk name, file link, ~lines), tokens table (tokens.json link).
|
|
303
165
|
|
|
304
166
|
## Step 10: Update state
|
|
305
167
|
|
|
@@ -313,29 +175,5 @@ If a project config.json exists:
|
|
|
313
175
|
|
|
314
176
|
## Step 11: Completion output
|
|
315
177
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
```
|
|
319
|
-
/gsp:style — {name} applied
|
|
320
|
-
═══════════════════════════════════════
|
|
321
|
-
|
|
322
|
-
{OUTPUT_PATH}/
|
|
323
|
-
├── foundations/
|
|
324
|
-
│ ├── color-system.md
|
|
325
|
-
│ ├── typography.md
|
|
326
|
-
│ ├── spacing.md
|
|
327
|
-
│ ├── elevation.md
|
|
328
|
-
│ └── border-radius.md
|
|
329
|
-
├── tokens.json
|
|
330
|
-
└── INDEX.md
|
|
331
|
-
|
|
332
|
-
─────────────────────────────────────
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
Then use `AskUserQuestion` with routing options:
|
|
336
|
-
|
|
337
|
-
- **Start a project** — "scope what you're building with this style" → route to `/gsp:project-brief`
|
|
338
|
-
- **Build components** — "extend with a full component library" → route to `/gsp:brand-patterns` (components pass only)
|
|
339
|
-
- **Preview tokens** — "see the token values" → show tokens.json summary
|
|
340
|
-
- **Try a different style** — "apply a different preset" → restart at Step 2
|
|
178
|
+
Show: header (`/gsp:style — {name} applied`), file tree (foundations/ + tokens.json + INDEX.md). Then `AskUserQuestion`: Start a project → `/gsp:project-brief`, Build components → `/gsp:brand-patterns`, Preview tokens, Try a different style → restart Step 2.
|
|
341
179
|
</process>
|