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.
@@ -25,7 +25,7 @@ Multiple brands and projects can coexist. Projects reference a brand.
25
25
  </context>
26
26
 
27
27
  <objective>
28
- Through 2-3 rounds of natural conversation, gather a complete brief and create the right project structure (brand, project, or both). Route the user to their first phase skill.
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. **Inference over interrogation** — state assumptions, let them correct. "SaaS dashboard for enterprise" you already know: professional, data-dense, web-first.
53
- 2. **Progressive disclosure** — don't dump all questions at once. Flow in natural rounds.
54
- 3. **Concrete options over open-ended** — "More like Stripe's clean approach or Duolingo's playful style?" beats "What style do you want?"
55
- 4. **Know when you have enough** fill gaps with smart defaults. Don't over-ask.
56
- 5. **One message per round** — ask a cohesive set of related questions, not one at a time.
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 with `run_in_background: true` that follows the `/gsp:design-system` skill methodology:
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, note it still works with current commands. Use `AskUserQuestion`:
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. Then use `AskUserQuestion` with:
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
- When brand is incomplete, show full pipeline flow + `→ next: /gsp:{next-command}`
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: "I see you've got a [Next.js/React Native/etc.] project here with [Tailwind/shadcn/etc.] — I'll factor that into the design scope."
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 (new)** → Brand flow (Step 3) with `brand_mode: "new"`
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. Create directory structure:
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
- 3. Gather brand brief in 3 rounds. The brief is the single source of truth for business and persona definition — invest here.
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
- **Round 1 Business & People:**
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
- This round is the most important. The personas should feel like real people, not demographic buckets. Dig into the emotional layer: anxiety, ambition, frustration, curiosity, status, safety.
162
+ **Step 3b-new Skip to business questions:**
180
163
 
181
- **Round 2 Brand Essence & Landscape:**
164
+ Continue directly to Step 3c.
182
165
 
183
- Before presenting personality options, **internally synthesize** from Round 1:
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
- You do NOT ask the user these directly you use them to ground the personality options.
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
- - Brand personality — 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:
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 3dBrand Essence:**
195
175
 
196
- **Round 3Constraints & confirmation:**
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
- **Evolve mode additions (when `brand_mode` is `evolve`):**
206
- Add to Round 3:
207
- - Current brand age, existing guidelines
208
- - Brand equity (what's working) and pain points (what's not)
209
- - Evolution scope preserve / evolve / replace
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
- Skip or compress rounds if the user gives enough upfront. Don't over-ask.
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
- - **E2E, evolve →** Use `AskUserQuestion`: "Brand brief created! Let's audit your existing brand before the design project."
236
- - **Continue to audit** "Audit my existing brand now" → invoke `/gsp:brand-audit` via Skill tool
237
- - **Stop here** "I'll come back later"confirm files are saved, show how to resume with `/gsp:start`
238
- - **What happens next?** "Explain the audit phase" explain what the brand audit does and how it feeds into the rest of the pipeline
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 git branch detected earlier (run `git branch --show-current` in background at the start of Step 4, while asking for project name result is ready by now).
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
- 1. If a branch was detected, use `AskUserQuestion`: "I see you're on `{branch}` track this as the project branch?"
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
- 5. Write `brand.ref`:
275
- ```
276
- brand: {brand-name}
277
- path: ../../branding/{brand-name}/
278
- consumed_at: {ISO_DATE}
279
- identity_hash: {first 8 chars of md5 of IDENTITY.md content, or "pending" if identity not complete}
280
- ```
281
- Write to `.design/projects/{name}/brand.ref`
282
-
283
- 6. Consume design system scan results:
284
- - Read `.design/system/STACK.md` (guaranteed done by now conversation has been going for multiple rounds)
285
- - Note classification for config.json
286
- - Auto-infer `implementation_target` from STACK.md tech stack and COMPONENTS.md component inventory
287
-
288
- 7. Gather project brief in 2 rounds:
289
-
290
- **Round 1 What we're building:**
291
- - What are we building? (app, website, dashboard, etc.)
292
- - Present background scan findings: "I found a {classification} {framework} project with {details}. Want to build on that?"
293
- - Platforms (web, iOS, Android)?
294
- - Tech stack preferences? (confirm inferred or ask)
295
- - Implementation targetuse `AskUserQuestion` with options based on codebase analysis (e.g., shadcn, rn-reusables, custom, css-only)
296
- - Design scopeuse `AskUserQuestion`:
297
- - **Full** — "Complete design: screens, components, tokens"
298
- - **Partial** — "Specific screens or flows only"
299
- - **Tokens only** — "Just design tokens, no screens"
300
- - Key screens/flows needed?
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 scopeuse `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
+ **SequenceSuccess & 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 the style presets index at `${CLAUDE_SKILL_DIR}/../../skills/gsp-style/styles/INDEX.yml` and present grouped options:
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:** Pick a preset weighted by codebase type from the background scan:
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 2-round project brief gathering
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
- If `--list`, read `styles/INDEX.yml` and display all presets:
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 the expanded tokens without writing files:
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
- ### foundations/color-system.md
251
- - Document the full color palette from the preset
252
- - Include brand colors (primary, secondary, accent)
253
- - Include semantic colors (background, surface, on-primary, on-background, error, success, warning, info)
254
- - Include dark mode mapping if present
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
- Display the result:
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>