get-shit-pretty 0.6.0 → 0.6.2

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.
Files changed (40) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +5 -4
  3. package/bin/install.js +30 -1
  4. package/gsp/agents/gsp-identity-designer.md +5 -8
  5. package/gsp/hooks/hooks.json +54 -0
  6. package/gsp/references/questioning.md +17 -9
  7. package/gsp/skills/get-shit-pretty/SKILL.md +2 -0
  8. package/gsp/skills/gsp-accessibility/SKILL.md +2 -0
  9. package/gsp/skills/gsp-accessibility-audit/SKILL.md +3 -0
  10. package/gsp/skills/gsp-add-reference/SKILL.md +1 -0
  11. package/gsp/skills/gsp-art/SKILL.md +1 -0
  12. package/gsp/skills/gsp-brand-audit/SKILL.md +8 -3
  13. package/gsp/skills/gsp-brand-identity/SKILL.md +20 -14
  14. package/gsp/skills/gsp-brand-patterns/SKILL.md +41 -26
  15. package/gsp/skills/gsp-brand-refine/SKILL.md +2 -0
  16. package/gsp/skills/gsp-brand-research/SKILL.md +3 -0
  17. package/gsp/skills/gsp-brand-strategy/SKILL.md +8 -2
  18. package/gsp/skills/gsp-brand-sync/SKILL.md +3 -0
  19. package/gsp/skills/gsp-design-system/SKILL.md +1 -0
  20. package/gsp/skills/gsp-doctor/SKILL.md +20 -0
  21. package/gsp/skills/gsp-help/SKILL.md +1 -0
  22. package/gsp/skills/gsp-launch/SKILL.md +11 -2
  23. package/gsp/skills/gsp-palette/SKILL.md +2 -0
  24. package/gsp/skills/gsp-pretty/SKILL.md +1 -0
  25. package/gsp/skills/gsp-progress/SKILL.md +1 -0
  26. package/gsp/skills/gsp-project-brief/SKILL.md +10 -9
  27. package/gsp/skills/gsp-project-build/SKILL.md +15 -5
  28. package/gsp/skills/gsp-project-critique/SKILL.md +34 -10
  29. package/gsp/skills/gsp-project-design/SKILL.md +30 -7
  30. package/gsp/skills/gsp-project-research/SKILL.md +11 -9
  31. package/gsp/skills/gsp-project-review/SKILL.md +3 -0
  32. package/gsp/skills/gsp-scaffold/SKILL.md +1 -0
  33. package/gsp/skills/gsp-start/SKILL.md +109 -99
  34. package/gsp/skills/gsp-style/SKILL.md +2 -0
  35. package/gsp/skills/gsp-typescale/SKILL.md +2 -0
  36. package/gsp/skills/gsp-update/SKILL.md +53 -23
  37. package/gsp/templates/branding/config.json +2 -1
  38. package/gsp/templates/phases/identity.md +2 -6
  39. package/gsp/templates/projects/config.json +1 -1
  40. package/package.json +12 -14
@@ -2,6 +2,7 @@
2
2
  name: start
3
3
  description: Start here — picks up where you left off
4
4
  user-invocable: true
5
+ model: sonnet
5
6
  allowed-tools:
6
7
  - Read
7
8
  - Write
@@ -25,20 +26,11 @@ Multiple brands and projects can coexist. Projects reference a brand.
25
26
  </context>
26
27
 
27
28
  <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.
29
+ 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
30
  </objective>
30
31
 
31
32
  <execution_context>
32
33
  @${CLAUDE_SKILL_DIR}/../../references/questioning.md
33
- @${CLAUDE_SKILL_DIR}/../../templates/branding/brief.md
34
- @${CLAUDE_SKILL_DIR}/../../templates/branding/state.md
35
- @${CLAUDE_SKILL_DIR}/../../templates/branding/config.json
36
- @${CLAUDE_SKILL_DIR}/../../templates/branding/roadmap.md
37
- @${CLAUDE_SKILL_DIR}/../../templates/projects/brief.md
38
- @${CLAUDE_SKILL_DIR}/../../templates/projects/state.md
39
- @${CLAUDE_SKILL_DIR}/../../templates/projects/config.json
40
- @${CLAUDE_SKILL_DIR}/../../templates/projects/roadmap.md
41
- @${CLAUDE_SKILL_DIR}/../../templates/exports-index.md
42
34
  </execution_context>
43
35
 
44
36
  <rules>
@@ -49,11 +41,12 @@ Through 2-3 rounds of natural conversation, gather a complete brief and create t
49
41
  <questioning_principles>
50
42
  Follow these principles throughout all conversations:
51
43
 
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.
44
+ 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.
45
+ 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.
46
+ 3. **Inference over interrogation** — state assumptions, let them correct. "SaaS dashboard for enterprise" you already know: professional, data-dense, web-first.
47
+ 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.
48
+ 5. **Concrete options over open-ended** — "More like Stripe's clean approach or Duolingo's playful style?" beats "What style do you want?"
49
+ 6. **Know when you have enough** — fill gaps with smart defaults. Don't over-ask.
57
50
  </questioning_principles>
58
51
 
59
52
  <process>
@@ -71,7 +64,7 @@ Scan `.design/` for existing brands and projects:
71
64
 
72
65
  ### Step 1b: Run design system scan (background)
73
66
 
74
- 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 Step 3 Round 2 or Step 4.
67
+ 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.
75
68
 
76
69
  ### Step 1c: Greet
77
70
 
@@ -121,8 +114,7 @@ Weave in what you found naturally: framework, styling, component count.
121
114
 
122
115
  From the greeting exchange, determine which flow to run:
123
116
 
124
- - **Brand identity (new)** → Brand flow (Step 3) with `brand_mode: "new"`
125
- - **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.
117
+ - **Brand identity** → Brand flow (Step 3)
126
118
  - **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.
127
119
  - **Full design (brand + project)** → Brand flow (Step 3), with E2E flag so brand completion auto-transitions to project flow (Step 4)
128
120
  - **Quick project** → Quick flow (Step 5)
@@ -130,55 +122,75 @@ From the greeting exchange, determine which flow to run:
130
122
 
131
123
  ## Step 3: Brand flow
132
124
 
125
+ Each question is its own `AskUserQuestion` call. Ask one, wait, adapt, ask the next. Skip anything you can already infer.
126
+
127
+ **Step 3a — Brand name and path selection:**
128
+
133
129
  1. Ask for brand name (kebab-case, e.g., "acme-corp")
134
- 2. Create directory structure:
130
+ 2. "Do you already have brand materials to work with?" — use `AskUserQuestion`:
131
+ - **Yes, I have an existing brand** — "I have a logo, colors, guidelines, or other assets"
132
+ - **No, starting fresh** — "Building a brand from scratch"
133
+
134
+ If **yes** → set `brand_mode: "evolve"`. Continue with evolve sequence (Step 3b-evolve).
135
+ If **no** → set `brand_mode: "new"`. Continue with new sequence (Step 3b-new).
136
+
137
+ 3. Create directory structure:
135
138
  ```bash
136
139
  mkdir -p .design/branding/{name}/{audit,discover,strategy,identity,patterns}
137
140
  ```
138
141
 
139
- 3. Gather brand brief in 3 rounds. The brief is the single source of truth for business and persona definition — invest here.
140
-
141
- **Round 1Business & People:**
142
- - Company name, industry, stage
143
- - Problem / audience / differentiation
144
- - Business model, main competitors (2-3)
145
- - Primary persona infer a concrete profile (name, role, frustration, aspiration) from context and present for correction. Personas should feel like real people — dig into the emotional layer.
146
- - Secondary persona (if relevant)
147
- - Mission and vision
148
-
149
- **Round 2 Brand Essence & Landscape:**
150
-
151
- Before presenting personality options, **internally synthesize** promise (what should someone feel?) and point of view (what does this brand disagree with?) from Round 1. Don't ask these directly use them to ground personality options.
152
-
153
- - 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:
154
- - 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)
155
- - **Surprise me**craft an unexpected direction inspired by the user's industry and personas
156
- - What the brand should NEVER feel like
157
- - Competitive landscape — use `WebSearch` to enrich the competitors named in Round 1. Present the map for confirmation.
158
- - Brands admired / styles to avoid
159
-
160
- **Round 3 — Constraints & confirmation:**
161
- - Existing brand assets? (logo, colors, guidelines)
162
- - Timeline and budget constraints
163
- - Non-negotiables
164
- - **Check background scan:** If the codebase scanner has returned results, weave tech findings naturally.
165
- - State your understanding back: "Here's what I'm hearing: [summary]." Use `AskUserQuestion`:
166
- - **Looks good** — "That's accurate, let's go"
167
- - **Adjust something** — "I want to change or add something"
168
-
169
- **Evolve mode additions (when `brand_mode` is `evolve`):**
170
- Add to Round 3:
171
- - Current brand age, existing guidelines
172
- - Brand equity (what's working) and pain points (what's not)
173
- - Evolution scope — preserve / evolve / replace
174
-
175
- Skip or compress rounds if the user gives enough upfront. Don't over-ask.
176
-
177
- 4. Write artifacts:
178
- - `.design/branding/{name}/BRIEF.md` from brand brief template
179
- - `.design/branding/{name}/STATE.md` from brand state template
180
- - `.design/branding/{name}/config.json` from brand config template
181
- - `.design/branding/{name}/ROADMAP.md` from brand roadmap template
142
+ **Step 3b-evolve Gather existing brand context:**
143
+
144
+ Ask these before business questions the existing brand shapes everything:
145
+
146
+ 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.)
147
+ 4. How old is the current brand? (open-ended)
148
+ 5. What's working well with the current brand? (open-ended)
149
+ 6. What's not working — what are the pain points? (open-ended)
150
+ 7. Evolution scope — use `AskUserQuestion`: **Preserve most, tweak details** / **Evolve significantly, keep core** / **Replace — start fresh**
151
+
152
+ Then continue to Step 3c (business & people), skipping anything the brand materials already reveal.
153
+
154
+ **Step 3b-newSkip to business questions:**
155
+
156
+ Continue directly to Step 3c.
157
+
158
+ **Step 3cBusiness & People:**
159
+
160
+ 8. What's the company name, and what industry/stage? (open-ended `AskUserQuestion`)
161
+ 9. What problem does it solve, and for whom? (open-ended use the answer to start inferring persona)
162
+ 10. What's the business model? (use `AskUserQuestion` with options if you can infer likely models from industry, otherwise open-ended)
163
+ 11. Who are the main competitors? (2-3 names open-ended)
164
+ 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**
165
+
166
+ **Step 3d — Brand Essence:**
167
+
168
+ 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.
169
+
170
+ 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:
171
+ - 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)
172
+ - **Surprise me** craft an unexpected direction inspired by the user's industry and personas
173
+ - Note: this is a high-level direction only. Brand strategy phase will deepen this into archetype + voice — don't over-refine here.
174
+ 14. What should the brand NEVER feel like? (use `AskUserQuestion` with 2-3 anti-directions inferred from their personality pick, plus open-ended option)
175
+ 15. Brands admired or styles to avoid? (open-ended `AskUserQuestion`)
176
+
177
+ Note: competitive landscape deep-dive happens in the research phase — don't re-confirm it here. The competitor names from Q11 are enough.
178
+
179
+ **Step 3e — Constraints & confirmation:**
180
+
181
+ 16. Any non-negotiables or constraints? (timeline, budget, must-haves) — open-ended `AskUserQuestion`
182
+ 17. **Check background scan:** If the codebase scanner has returned results, weave tech findings naturally into your summary.
183
+ 18. State your understanding back: "Here's what I'm hearing: [summary]." Use `AskUserQuestion`:
184
+ - **Looks good** "That's accurate, let's go"
185
+ - **Adjust something** — "I want to change or add something"
186
+
187
+ Skip any question you can already answer from prior context. Don't over-ask.
188
+
189
+ 4. Read templates from `${CLAUDE_SKILL_DIR}/../../templates/branding/` and write artifacts:
190
+ - `.design/branding/{name}/BRIEF.md` from `brief.md` template
191
+ - `.design/branding/{name}/STATE.md` from `state.md` template
192
+ - `.design/branding/{name}/config.json` from `config.json` template
193
+ - `.design/branding/{name}/ROADMAP.md` from `roadmap.md` template
182
194
 
183
195
  5. Set `brand_mode` in config.json based on Step 2 routing decision.
184
196
 
@@ -186,8 +198,8 @@ Skip or compress rounds if the user gives enough upfront. Don't over-ask.
186
198
 
187
199
  - **Brand-only, new →** continue to `/gsp:brand-research`
188
200
  - **Brand-only, evolve →** continue to `/gsp:brand-audit`
189
- - **E2E, new →** auto-continue to Step 4
190
- - **E2E, evolve →** continue to `/gsp:brand-audit` (then Step 4 after audit)
201
+ - **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.
202
+ - **E2E, evolve →** continue to `/gsp:brand-audit` (complete full brand pipeline, then auto-transition to Step 4). Set `"e2e": true` in config.json.
191
203
 
192
204
  ## Step 4: Project flow
193
205
 
@@ -212,40 +224,38 @@ Use the background `git branch --show-current` result. If detected, confirm bran
212
224
 
213
225
  6. Consume `.design/system/STACK.md` — note classification for config.json, auto-infer `implementation_target` from STACK.md + COMPONENTS.md.
214
226
 
215
- 7. Gather project brief in 2 rounds:
216
-
217
- **Round 1 — What we're building:**
218
- - What are we building? (app, website, dashboard, etc.)
219
- - Present background scan findings: "I found a {classification} {framework} project with {details}. Want to build on that?"
220
- - Platforms (web, iOS, Android)?
221
- - Tech stack preferences? (confirm inferred or ask)
222
- - Implementation target — use `AskUserQuestion` with options based on codebase analysis (e.g., shadcn, rn-reusables, custom, css-only)
223
- - Design scope — use `AskUserQuestion`:
224
- - **Full** — "Complete design: screens, components, tokens"
225
- - **Partial** — "Specific screens or flows only"
226
- - **Tokens only** — "Just design tokens, no screens"
227
- - Key screens/flows needed?
228
-
229
- Use inference from the codebase scan don't re-ask what you can already see.
230
-
231
- **Round 2Success & gaps:**
232
- - Success criteria
233
- - Timeline, constraints
234
- - Any remaining gaps
235
- - State your understanding back: "Here's what I'm hearing: [summary]." Use `AskUserQuestion`:
236
- - **Looks good** — "That's accurate, let's go"
237
- - **Adjust something** — "I want to change or add something"
238
- - **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
239
- - **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.
240
-
241
- Skip or compress rounds if the user gives enough upfront. Don't over-ask.
242
-
243
- 8. Write artifacts:
244
- - `.design/projects/{name}/BRIEF.md` from project brief template
245
- - `.design/projects/{name}/STATE.md` from project state template — populate `## Git` table with detected/confirmed branch (or "—")
246
- - `.design/projects/{name}/config.json` from project config template — populate `git.branch` with detected/confirmed branch (or empty string)
247
- - `.design/projects/{name}/ROADMAP.md` from project roadmap template
248
- - `.design/projects/{name}/exports/INDEX.md` from exports-index template
227
+ 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.
228
+
229
+ **Sequence — What we're building:**
230
+
231
+ 1. What are we building? (app, website, dashboard, etc.) open-ended `AskUserQuestion`
232
+ 2. Present background scan findings: "I found a {classification} {framework} project with {details}." Use `AskUserQuestion`: **Build on this** / **Different stack** / **Tell me more**
233
+ 3. Platforms? use `AskUserQuestion`: **Web** / **iOS** / **Android** / **Cross-platform** (skip if obvious from codebase)
234
+ 4. Implementation target — use `AskUserQuestion` with options based on codebase analysis (e.g., shadcn, rn-reusables, custom, css-only)
235
+ 5. Design scope — use `AskUserQuestion`:
236
+ - **Full** — "Complete design: screens, components, tokens"
237
+ - **Partial** — "Specific screens or flows only"
238
+ - **Tokens only** — "Just design tokens, no screens"
239
+ 6. Key screens/flows needed? — open-ended `AskUserQuestion`
240
+
241
+ **SequenceSuccess & confirmation:**
242
+
243
+ 7. What does success look like? open-ended `AskUserQuestion`
244
+ 8. Any constraints? (timeline, budget, must-haves) open-ended `AskUserQuestion`
245
+ 9. State your understanding back: "Here's what I'm hearing: [summary]." Use `AskUserQuestion`:
246
+ - **Looks good** — "That's accurate, let's go"
247
+ - **Adjust something** "I want to change or add something"
248
+ - **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
249
+ - **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.
250
+
251
+ Skip any question you can already answer from the codebase scan. Don't over-ask.
252
+
253
+ 8. Read templates from `${CLAUDE_SKILL_DIR}/../../templates/projects/` and write artifacts:
254
+ - `.design/projects/{name}/BRIEF.md` from `brief.md` template
255
+ - `.design/projects/{name}/STATE.md` from `state.md` template — populate `## Git` table with detected/confirmed branch (or "—")
256
+ - `.design/projects/{name}/config.json` from `config.json` template — populate `git.branch` with detected/confirmed branch (or empty string)
257
+ - `.design/projects/{name}/ROADMAP.md` from `roadmap.md` template
258
+ - `.design/projects/{name}/exports/INDEX.md` from `${CLAUDE_SKILL_DIR}/../../templates/exports-index.md`
249
259
 
250
260
  9. Route using `AskUserQuestion`: "Project set up! Ready to scope what you're building?"
251
261
  - **Continue to scoping** — "Scope the project now" → invoke `/gsp:project-brief` via Skill tool
@@ -309,7 +319,7 @@ Continue directly to Step 4 (project flow) with these modifications:
309
319
  - Go straight to asking for project name
310
320
  - Set `style_preset: "{preset}"` in the project's `config.json`
311
321
  - Set `identity_hash: "style-only"` in `brand.ref`
312
- - Proceed with the normal 2-round project brief gathering
322
+ - Proceed with the normal sequential project brief gathering
313
323
 
314
324
  ### Upgrade path
315
325
 
@@ -2,6 +2,7 @@
2
2
  name: style
3
3
  description: Apply a design style — get tokens and foundations without the branding diamond
4
4
  user-invocable: true
5
+ model: sonnet
5
6
  allowed-tools:
6
7
  - Read
7
8
  - Write
@@ -35,6 +36,7 @@ Apply a named style preset to produce production-ready design tokens and foundat
35
36
 
36
37
  <rules>
37
38
  - Always use `AskUserQuestion` for user interaction — never prompt via plain text
39
+ - One decision per question — never batch multiple questions in a single message
38
40
  - `tokens.json` follows W3C Design Tokens format from `references/design-tokens.md`
39
41
  - When mixing styles, later style values override earlier ones (last-wins precedence)
40
42
  - Never mix clashing styles — check the compatibility matrix first
@@ -2,6 +2,7 @@
2
2
  name: typescale
3
3
  description: Generate a mathematical type scale — standalone or as a building block for identity
4
4
  user-invocable: true
5
+ model: sonnet
5
6
  allowed-tools:
6
7
  - Read
7
8
  - Write
@@ -34,6 +35,7 @@ Generate a production-ready typography system with fluid responsive sizing, vert
34
35
 
35
36
  <rules>
36
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
37
39
  - Foundation chunks follow `references/chunk-format.md` format exactly
38
40
  - All sizes include px, rem, AND fluid clamp() values for headings
39
41
  - Line heights snap to a 4px grid for vertical rhythm (body 24px = 6 × 4px)
@@ -2,36 +2,52 @@
2
2
  name: update
3
3
  description: Update GSP to the latest version
4
4
  user-invocable: true
5
+ model: sonnet
6
+ allowed-tools:
7
+ - Read
8
+ - Bash
9
+ - AskUserQuestion
10
+ - Glob
11
+ - WebFetch
5
12
  ---
6
13
  <objective>
7
14
  Check for GSP updates, show what's new, and run the update if the user confirms.
8
15
  </objective>
9
16
 
17
+ <rules>
18
+ - Always use `AskUserQuestion` for user-facing questions — never raw text prompts
19
+ - One decision per question — never batch multiple questions in a single message
20
+ </rules>
21
+
10
22
  <process>
11
23
 
12
24
  ## Step 1 — Detect installation
13
25
 
14
- Check for a `VERSION` file to determine install type. The runtime directory varies by tool:
15
- - Claude Code: `.claude/` (local) or `~/.claude/` (global)
16
- - OpenCode: `.opencode/` (local) or `~/.config/opencode/` (global)
17
- - Gemini: `.gemini/` (local) or `~/.gemini/` (global)
18
- - Codex: `.codex/` (local) or `~/.codex/` (global)
26
+ Determine the runtime by checking which config directory exists. Check local first, then global:
27
+
28
+ | Runtime | Local dir | Global dir |
29
+ |---------|-----------|------------|
30
+ | Claude Code | `.claude/` | `~/.claude/` |
31
+ | OpenCode | `.opencode/` | `~/.config/opencode/` |
32
+ | Gemini | `.gemini/` | `~/.gemini/` |
33
+ | Codex | `.codex/` | `~/.codex/` |
19
34
 
20
- Look for the VERSION file in both local and global locations. Check two paths per location (current layout first, legacy fallback):
35
+ For each runtime, look for the VERSION file in two paths (current layout first, legacy fallback):
21
36
  1. `{runtime-dir}/VERSION` (v0.5.0+)
22
37
  2. `{runtime-dir}/get-shit-pretty/VERSION` (legacy v0.4.x)
23
38
 
24
- If neither exists in either location, tell the user GSP doesn't appear to be installed and suggest running:
39
+ Record which runtime(s) and install type (local/global) were found.
40
+
41
+ If no VERSION file exists anywhere, tell the user GSP doesn't appear to be installed and suggest:
25
42
  ```
26
43
  npx get-shit-pretty
27
44
  ```
28
45
  Then stop.
29
46
 
30
- Read the VERSION file to get the installed version. Store which type was detected (local or global).
47
+ Read the VERSION file to get the installed version.
31
48
 
32
49
  ## Step 2 — Check latest version
33
50
 
34
- Run:
35
51
  ```bash
36
52
  npm view get-shit-pretty version
37
53
  ```
@@ -40,7 +56,7 @@ If the command fails, tell the user the version check failed (they may be offlin
40
56
 
41
57
  ## Step 3 — Compare versions
42
58
 
43
- If installed version >= latest version, tell the user:
59
+ If installed version >= latest version:
44
60
  ```
45
61
  GSP v{installed} is already up to date.
46
62
  ```
@@ -48,40 +64,55 @@ Then stop.
48
64
 
49
65
  ## Step 4 — Show what's new
50
66
 
51
- Tell the user:
52
67
  ```
53
68
  Update available: v{installed} → v{latest}
54
69
  ```
55
70
 
56
- Fetch the changelog to show what changed:
71
+ Fetch the changelog:
57
72
  ```bash
58
73
  curl -sf https://raw.githubusercontent.com/jubscodes/get-shit-pretty/main/CHANGELOG.md
59
74
  ```
60
75
 
61
- If the fetch succeeds, extract and display the section for the latest version. If it fails, skip — changelog display is optional.
76
+ If the fetch succeeds, extract and display the section(s) between the installed and latest versions. If it fails, skip — changelog display is optional.
62
77
 
63
78
  ## Step 5 — Warn about clean install
64
79
 
65
- Tell the user:
66
80
  ```
67
81
  The update replaces:
68
- • skills/gsp-* (all GSP skills)
69
- get-shit-pretty/* (runtime files)
70
- gsp-* agents (all GSP agents)
82
+ • skills/gsp-* (all GSP skills + sibling files)
83
+ prompts/ (agent system prompts)
84
+ templates/ (config, state, brief templates)
85
+ • references/ (shared reference material)
86
+ • agents/gsp-* (all GSP agents)
71
87
 
72
88
  Custom files outside these prefixes are preserved.
73
89
  ```
74
90
 
75
91
  ## Step 6 — Confirm with user
76
92
 
77
- Ask the user to confirm before proceeding. If they decline, stop.
93
+ Use `AskUserQuestion`:
94
+ - **Update now** — "Install v{latest}"
95
+ - **Skip** — "I'll update later"
96
+
97
+ If skip → stop.
78
98
 
79
99
  ## Step 7 — Execute update
80
100
 
81
- Based on the detected install type from Step 1:
101
+ Build the installer command based on what was detected in Step 1:
102
+
103
+ **Runtime flag:** use the detected runtime (`--claude`, `--opencode`, `--gemini`, `--codex`). If multiple runtimes were found, use `--all`.
104
+
105
+ **Scope flag:** `--local` if local install was detected, `--global` if global.
106
+
107
+ ```bash
108
+ npx get-shit-pretty@latest {runtime-flag} {scope-flag}
109
+ ```
82
110
 
83
- - **Local install**: run `npx get-shit-pretty@latest --claude --local`
84
- - **Global install**: run `npx get-shit-pretty@latest --claude`
111
+ Examples:
112
+ - Local Claude: `npx get-shit-pretty@latest --claude --local`
113
+ - Global Claude: `npx get-shit-pretty@latest --claude --global`
114
+ - Global OpenCode: `npx get-shit-pretty@latest --opencode --global`
115
+ - Multiple runtimes: `npx get-shit-pretty@latest --all --global`
85
116
 
86
117
  Show the output to the user.
87
118
 
@@ -102,10 +133,9 @@ rm -f {runtime-dir}/get-shit-pretty/.update-cache.json
102
133
 
103
134
  ## Step 9 — Remind to restart
104
135
 
105
- Tell the user:
106
136
  ```
107
137
  GSP updated to v{latest}.
108
- Restart your Claude Code session to load the new commands and agents.
138
+ Restart your session to load the new skills and agents.
109
139
  ```
110
140
 
111
141
  </process>
@@ -1,11 +1,12 @@
1
1
  {
2
- "version": "0.5.0",
2
+ "version": "0.6.2",
3
3
  "project_type": "brand",
4
4
  "brand": {
5
5
  "name": "",
6
6
  "created": ""
7
7
  },
8
8
  "brand_mode": "new",
9
+ "e2e": false,
9
10
  "evolution_scope": {
10
11
  "preserve": [],
11
12
  "evolve": [],
@@ -5,7 +5,7 @@
5
5
 
6
6
  ---
7
7
 
8
- > This phase produces 6 chunks + palettes.json + INDEX.md in the `identity/` directory.
8
+ > This phase produces 5 chunks + palettes.json + INDEX.md in the `identity/` directory.
9
9
 
10
10
  ## Inputs
11
11
  - BRIEF.md — personas, constraints
@@ -26,7 +26,6 @@
26
26
  | `typography.md` | Primary + secondary typefaces, full type scale, responsive behavior |
27
27
  | `imagery-style.md` | Photography, illustration, iconography guidelines |
28
28
  | `brand-applications.md` | Key touchpoints showing the brand in use |
29
- | `brand-book.md` | 20-page brand book outline with section descriptions |
30
29
 
31
30
  Also produces `palettes.json` — machine-readable OKLCH color scales.
32
31
 
@@ -43,7 +42,7 @@ Each chunk follows the format in `references/chunk-format.md`.
43
42
  - **Usage rules**
44
43
 
45
44
  ### color-system.md
46
- - Full palette table: Role, Hex, RGB, Pantone, CMYK, Usage, Rationale
45
+ - Full palette table: Role, Hex, RGB, Usage, Rationale
47
46
  - Semantic colors (error, success, warning)
48
47
  - Color rationale — connects to archetype and brand essence
49
48
  - Dark mode mapping table
@@ -65,6 +64,3 @@ Each chunk follows the format in `references/chunk-format.md`.
65
64
  - Key touchpoints showing the brand in use (digital, print, social)
66
65
  - Each application with visual direction and design notes
67
66
 
68
- ### brand-book.md
69
- - 20-page outline covering: Brand Story, Strategy, Voice, Logo System,
70
- Color, Typography, Imagery, Layout, Applications, Do's and Don'ts
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.5.0",
2
+ "version": "0.6.2",
3
3
  "project_type": "design",
4
4
  "project": {
5
5
  "name": "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "get-shit-pretty",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Design engineering system for AI coding agents. Brand identity + design projects, from strategy to code.",
5
5
  "bin": {
6
6
  "get-shit-pretty": "bin/install.js"
@@ -39,32 +39,30 @@
39
39
  "url": "git+https://github.com/jubscodes/get-shit-pretty.git"
40
40
  },
41
41
  "devDependencies": {
42
- "@tailwindcss/postcss": "^4.2.2",
43
- "@types/node": "^25.5.0",
44
- "@types/react": "^19.2.14",
45
- "@types/react-dom": "^19.2.3",
46
- "next": "^16.2.0",
47
- "postcss": "^8.5.8",
48
- "react": "^19.2.4",
49
- "react-dom": "^19.2.4",
50
- "tailwindcss": "^4.2.2",
51
- "typescript": "^5.9.3"
52
- },
53
- "dependencies": {
54
42
  "@base-ui/react": "^1.3.0",
55
43
  "@mdx-js/loader": "^3.1.1",
56
44
  "@mdx-js/mdx": "^3.1.1",
57
45
  "@mdx-js/react": "^3.1.1",
58
46
  "@next/mdx": "^16.2.1",
47
+ "@tailwindcss/postcss": "^4.2.2",
48
+ "@types/node": "^25.5.0",
49
+ "@types/react": "^19.2.14",
50
+ "@types/react-dom": "^19.2.3",
59
51
  "class-variance-authority": "^0.7.1",
60
52
  "clsx": "^2.1.1",
61
53
  "gray-matter": "^4.0.3",
62
54
  "lucide-react": "^0.577.0",
55
+ "next": "^16.2.0",
63
56
  "next-themes": "^0.4.6",
57
+ "postcss": "^8.5.8",
58
+ "react": "^19.2.4",
59
+ "react-dom": "^19.2.4",
64
60
  "shadcn": "^4.1.0",
65
61
  "shiki": "^4.0.2",
66
62
  "sonner": "^2.0.7",
67
63
  "tailwind-merge": "^3.5.0",
68
- "tw-animate-css": "^1.4.0"
64
+ "tailwindcss": "^4.2.2",
65
+ "tw-animate-css": "^1.4.0",
66
+ "typescript": "^5.9.3"
69
67
  }
70
68
  }