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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +5 -4
- package/bin/install.js +30 -1
- package/gsp/agents/gsp-identity-designer.md +5 -8
- package/gsp/hooks/hooks.json +54 -0
- package/gsp/references/questioning.md +17 -9
- package/gsp/skills/get-shit-pretty/SKILL.md +2 -0
- package/gsp/skills/gsp-accessibility/SKILL.md +2 -0
- package/gsp/skills/gsp-accessibility-audit/SKILL.md +3 -0
- package/gsp/skills/gsp-add-reference/SKILL.md +1 -0
- package/gsp/skills/gsp-art/SKILL.md +1 -0
- package/gsp/skills/gsp-brand-audit/SKILL.md +8 -3
- package/gsp/skills/gsp-brand-identity/SKILL.md +20 -14
- package/gsp/skills/gsp-brand-patterns/SKILL.md +41 -26
- package/gsp/skills/gsp-brand-refine/SKILL.md +2 -0
- package/gsp/skills/gsp-brand-research/SKILL.md +3 -0
- package/gsp/skills/gsp-brand-strategy/SKILL.md +8 -2
- package/gsp/skills/gsp-brand-sync/SKILL.md +3 -0
- package/gsp/skills/gsp-design-system/SKILL.md +1 -0
- package/gsp/skills/gsp-doctor/SKILL.md +20 -0
- package/gsp/skills/gsp-help/SKILL.md +1 -0
- package/gsp/skills/gsp-launch/SKILL.md +11 -2
- package/gsp/skills/gsp-palette/SKILL.md +2 -0
- package/gsp/skills/gsp-pretty/SKILL.md +1 -0
- package/gsp/skills/gsp-progress/SKILL.md +1 -0
- package/gsp/skills/gsp-project-brief/SKILL.md +10 -9
- package/gsp/skills/gsp-project-build/SKILL.md +15 -5
- package/gsp/skills/gsp-project-critique/SKILL.md +34 -10
- package/gsp/skills/gsp-project-design/SKILL.md +30 -7
- package/gsp/skills/gsp-project-research/SKILL.md +11 -9
- package/gsp/skills/gsp-project-review/SKILL.md +3 -0
- package/gsp/skills/gsp-scaffold/SKILL.md +1 -0
- package/gsp/skills/gsp-start/SKILL.md +109 -99
- package/gsp/skills/gsp-style/SKILL.md +2 -0
- package/gsp/skills/gsp-typescale/SKILL.md +2 -0
- package/gsp/skills/gsp-update/SKILL.md +53 -23
- package/gsp/templates/branding/config.json +2 -1
- package/gsp/templates/phases/identity.md +2 -6
- package/gsp/templates/projects/config.json +1 -1
- 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
|
|
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. **
|
|
53
|
-
2. **
|
|
54
|
-
3. **
|
|
55
|
-
4. **
|
|
56
|
-
5. **
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
**
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
-
|
|
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-new — Skip to business questions:**
|
|
155
|
+
|
|
156
|
+
Continue directly to Step 3c.
|
|
157
|
+
|
|
158
|
+
**Step 3c — Business & 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-
|
|
190
|
-
- **E2E, evolve →** continue to `/gsp:brand-audit` (then Step 4
|
|
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
|
|
216
|
-
|
|
217
|
-
**
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
-
|
|
233
|
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
- `.design/projects/{name}/
|
|
245
|
-
- `.design/projects/{name}/
|
|
246
|
-
- `.design/projects/{name}/
|
|
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
|
+
**Sequence — Success & 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
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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-*
|
|
69
|
-
•
|
|
70
|
-
•
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
84
|
-
-
|
|
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
|
|
138
|
+
Restart your session to load the new skills and agents.
|
|
109
139
|
```
|
|
110
140
|
|
|
111
141
|
</process>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
> This phase produces
|
|
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,
|
|
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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "get-shit-pretty",
|
|
3
|
-
"version": "0.6.
|
|
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
|
-
"
|
|
64
|
+
"tailwindcss": "^4.2.2",
|
|
65
|
+
"tw-animate-css": "^1.4.0",
|
|
66
|
+
"typescript": "^5.9.3"
|
|
69
67
|
}
|
|
70
68
|
}
|