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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsp",
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
  "author": {
6
6
  "name": "jubscodes",
package/README.md CHANGED
@@ -183,6 +183,7 @@ Create marketing campaign assets — landing page copy, social media content, la
183
183
  | `/gsp:brand-strategy` | Define archetype, positioning, personality, voice, messaging |
184
184
  | `/gsp:brand-identity` | Create visual identity — logo, color, type |
185
185
  | `/gsp:brand-patterns` | Build design system — tokens, components |
186
+ | `/gsp:brand-refine` | Surgical token and palette adjustments mid-project |
186
187
 
187
188
  ### Project
188
189
 
@@ -200,6 +201,7 @@ Create marketing campaign assets — landing page copy, social media content, la
200
201
 
201
202
  | Command | What it does |
202
203
  |---------|--------------|
204
+ | `/gsp:accessibility-audit` | Full WCAG 2.2 AA accessibility audit |
203
205
  | `/gsp:add-reference` | Add reference material to a project |
204
206
  | `/gsp:doctor` | Check project health |
205
207
  | `/gsp:update` | Update GSP to latest version |
@@ -240,7 +242,7 @@ GSP works across all major AI coding tools. The installer converts Claude Code's
240
242
 
241
243
  | Feature | Claude Code | OpenCode | Gemini CLI | Codex CLI |
242
244
  |---------|:-----------:|:--------:|:----------:|:---------:|
243
- | Skills | 24 | 24 | 24 | 24 |
245
+ | Skills | 30 | 30 | 30 | 30 |
244
246
  | Agents | 15 | 15 | 15 (experimental) | — |
245
247
  | Slash syntax | `/gsp:command` | `/gsp-command` | `/gsp:command` | `$gsp-command` |
246
248
  | Prompts + templates | Yes | Yes | Yes | Yes |
@@ -329,8 +331,7 @@ get-shit-pretty/
329
331
  ├── scripts/ Hook scripts and utilities
330
332
  ├── gsp/ Source of truth for all content
331
333
  │ ├── agents/ 15 subagents (gsp-*.md)
332
- │ ├── commands/gsp/ 20 slash commands (backward compat)
333
- │ ├── skills/ 24 skills (*/SKILL.md — primary)
334
+ │ ├── skills/ 30 skills (*/SKILL.md)
334
335
  │ ├── hooks/ Plugin-level hooks (hooks.json)
335
336
  │ ├── prompts/ 12 agent system prompts
336
337
  │ ├── templates/ Config, state, brief, roadmap templates
@@ -343,7 +344,7 @@ get-shit-pretty/
343
344
  └── CLAUDE.md AI agent instructions for this repo
344
345
  ```
345
346
 
346
- Skills take precedence over commands when both exist. The installer reads from `gsp/` and writes to each runtime's config directory.
347
+ The installer reads from `gsp/` and writes to each runtime's config directory.
347
348
 
348
349
  ---
349
350
 
package/bin/install.js CHANGED
@@ -605,6 +605,8 @@ function convertClaudeSkillToOpencode(content, skillName) {
605
605
  if (trimmed.startsWith('color:')) { inList = false; continue; }
606
606
  if (trimmed.startsWith('context:')) { inList = false; continue; }
607
607
  if (trimmed.startsWith('agent:')) { inList = false; continue; }
608
+ if (trimmed.startsWith('model:')) { inList = false; continue; }
609
+ if (trimmed.startsWith('effort:')) { inList = false; continue; }
608
610
  // Skip list items under dropped fields
609
611
  if (inList) {
610
612
  if (trimmed.startsWith('- ')) continue;
@@ -783,6 +785,8 @@ function convertClaudeSkillToGemini(content, skillName) {
783
785
  if (trimmed.startsWith('color:')) { inList = false; continue; }
784
786
  if (trimmed.startsWith('context:')) { inList = false; continue; }
785
787
  if (trimmed.startsWith('agent:')) { inList = false; continue; }
788
+ if (trimmed.startsWith('model:')) { inList = false; continue; }
789
+ if (trimmed.startsWith('effort:')) { inList = false; continue; }
786
790
  if (inList) {
787
791
  if (trimmed.startsWith('- ')) continue;
788
792
  else if (trimmed && !trimmed.startsWith('-')) inList = false;
@@ -858,6 +862,8 @@ function convertClaudeSkillToCodex(content, skillName) {
858
862
  if (trimmed.startsWith('color:')) { inList = false; continue; }
859
863
  if (trimmed.startsWith('context:')) { inList = false; continue; }
860
864
  if (trimmed.startsWith('agent:')) { inList = false; continue; }
865
+ if (trimmed.startsWith('model:')) { inList = false; continue; }
866
+ if (trimmed.startsWith('effort:')) { inList = false; continue; }
861
867
  if (inList) {
862
868
  if (trimmed.startsWith('- ')) continue;
863
869
  else if (trimmed && !trimmed.startsWith('-')) inList = false;
@@ -915,6 +921,7 @@ function copyOpencodeSkills(srcDir, destDir, pathPrefix) {
915
921
  content = content.replace(/\.\/\.claude\//g, './.opencode/');
916
922
  content = convertClaudeSkillToOpencode(content, skillName);
917
923
  fs.writeFileSync(path.join(skillDest, 'SKILL.md'), content);
924
+ copySiblingFiles(path.join(srcDir, dir.name), skillDest, pathPrefix);
918
925
  count++;
919
926
  }
920
927
 
@@ -946,6 +953,7 @@ function copyCodexSkillsFromSource(srcDir, destDir, pathPrefix) {
946
953
  content = content.replace(/~\/\.claude\//g, pathPrefix);
947
954
  content = convertClaudeSkillToCodex(content, skillName);
948
955
  fs.writeFileSync(path.join(skillDest, 'SKILL.md'), content);
956
+ copySiblingFiles(path.join(srcDir, dir.name), skillDest, pathPrefix);
949
957
  count++;
950
958
  }
951
959
  return count;
@@ -986,6 +994,7 @@ function copyGeminiSkills(srcDir, destDir, pathPrefix) {
986
994
  content = content.replace(/\.\/\.claude\//g, './.gemini/');
987
995
  content = convertClaudeSkillToGemini(content, skillName);
988
996
  fs.writeFileSync(path.join(skillDest, 'SKILL.md'), content);
997
+ copySiblingFiles(path.join(srcDir, dir.name), skillDest, pathPrefix);
989
998
  count++;
990
999
  }
991
1000
  return count;
@@ -1030,6 +1039,24 @@ function copyAgents(srcDir, destDir, pathPrefix, runtime, { clean = false } = {}
1030
1039
  * Copy Claude Code skills (global install path — no body conversion, only path replacement).
1031
1040
  * Returns skill count.
1032
1041
  */
1042
+ /**
1043
+ * Recursively copy sibling files in a skill directory (everything except SKILL.md).
1044
+ * All sibling files are copied verbatim — no path replacement applied.
1045
+ */
1046
+ function copySiblingFiles(srcDir, destDir, pathPrefix) {
1047
+ for (const entry of fs.readdirSync(srcDir, { withFileTypes: true })) {
1048
+ if (entry.name === 'SKILL.md') continue; // already handled by caller
1049
+ const srcPath = path.join(srcDir, entry.name);
1050
+ const destPath = path.join(destDir, entry.name);
1051
+ if (entry.isDirectory()) {
1052
+ fs.mkdirSync(destPath, { recursive: true });
1053
+ copySiblingFiles(srcPath, destPath, pathPrefix);
1054
+ } else {
1055
+ fs.copyFileSync(srcPath, destPath);
1056
+ }
1057
+ }
1058
+ }
1059
+
1033
1060
  function copyClaudeSkills(srcDir, destDir, pathPrefix) {
1034
1061
  fs.mkdirSync(destDir, { recursive: true });
1035
1062
 
@@ -1045,11 +1072,13 @@ function copyClaudeSkills(srcDir, destDir, pathPrefix) {
1045
1072
  if (!dir.isDirectory()) continue;
1046
1073
  const skillMd = path.join(srcDir, dir.name, 'SKILL.md');
1047
1074
  if (!fs.existsSync(skillMd)) continue;
1048
- const destSkillDir = path.join(destDir, dir.name);
1075
+ const skillName = dir.name.startsWith('gsp-') ? dir.name : `gsp-${dir.name}`;
1076
+ const destSkillDir = path.join(destDir, skillName);
1049
1077
  fs.mkdirSync(destSkillDir, { recursive: true });
1050
1078
  let content = fs.readFileSync(skillMd, 'utf8');
1051
1079
  content = content.replace(/~\/\.claude\//g, pathPrefix);
1052
1080
  fs.writeFileSync(path.join(destSkillDir, 'SKILL.md'), content);
1081
+ copySiblingFiles(path.join(srcDir, dir.name), destSkillDir, pathPrefix);
1053
1082
  skillCount++;
1054
1083
  }
1055
1084
  return skillCount;
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: gsp-identity-designer
3
3
  description: Creates visual identity — logo, color, typography, imagery. Spawned by /gsp:brand-identity.
4
- tools: Read, Write, Edit, Bash, Grep, Glob, WebSearch, WebFetch
5
- maxTurns: 40
4
+ tools: Read, Write, Edit, Bash, Grep, Glob, WebFetch
5
+ maxTurns: 30
6
6
  permissionMode: acceptEdits
7
7
  color: magenta
8
8
  ---
@@ -30,12 +30,11 @@ You do NOT create strategy or voice. You receive those as input and translate th
30
30
  1. **Absorb inputs** — strategy chunks for strategic grounding, voice-and-tone for verbal-visual alignment, mood board for visual starting point
31
31
  1.5. **Seed from style base** — if style base preset files are provided, read the `.yml` for token values (palette, typography, spacing) and the `.md` for design philosophy. Use these as vocabulary, not constraint — adapt freely where the brand demands it. The preset is a starting palette and type direction, not a rulebook.
32
32
  2. **Design logo system** — 3 distinct directions, each expressing strategy differently. For each: concept, rationale (connects to archetype + positioning), variations, usage rules
33
- 3. **Build color system** — primary, secondary, accent, semantic. Each color needs strategic rationale. Include Hex, RGB, Pantone, CMYK. Map dark mode. Calculate WCAG AA contrast.
34
- 4. **Generate palettes** — use tints.dev API: `https://tints.dev/api/{colorName}/{hexWithout#}`. Store in `identity/palettes.json`
33
+ 3. **Build color system** — primary, secondary, accent, neutral, semantic. Each color needs strategic rationale. Include Hex and RGB. Map dark mode. Calculate WCAG AA contrast. Semantic colors (success, warning, error, info) are standard values — define them in color-system.md but do NOT generate tints.dev palettes for them.
34
+ 4. **Generate palettes** — use tints.dev API: `https://tints.dev/api/{colorName}/{hexWithout#}`. **Only for brand colors (primary, secondary, accent) and neutrals.** Store in `identity/palettes.json`
35
35
  5. **Define typography** — primary + secondary typefaces. Connect choices to voice: "We chose X because our voice is Y"
36
36
  6. **Specify imagery** — photography, illustration, iconography. Connected to archetype and brand essence
37
37
  7. **Show applications** — brand in context across key touchpoints
38
- 8. **Outline brand book** — 20-page structure
39
38
 
40
39
  ## Quality Standards
41
40
  - Every visual decision traces to strategy: "We chose X because [archetype/positioning/voice]"
@@ -44,7 +43,7 @@ You do NOT create strategy or voice. You receive those as input and translate th
44
43
  </methodology>
45
44
 
46
45
  <output>
47
- Write 6 chunks + palettes.json + INDEX.md to the identity directory (path provided by the skill that spawned you).
46
+ Write 5 chunks + palettes.json + INDEX.md to the identity directory (path provided by the skill that spawned you).
48
47
 
49
48
  Each chunk follows `references/chunk-format.md`.
50
49
 
@@ -53,7 +52,6 @@ Each chunk follows `references/chunk-format.md`.
53
52
  3. **`typography.md`** (~60-80 lines) — primary + secondary typefaces with rationale, type scale, responsive behavior
54
53
  4. **`imagery-style.md`** (~50-70 lines) — photography, illustration, iconography guidelines
55
54
  5. **`brand-applications.md`** (~50-70 lines) — key touchpoints showing brand in use
56
- 6. **`brand-book.md`** (~40-50 lines) — 20-page outline
57
55
 
58
56
  ### palettes.json
59
57
  tints.dev OKLCH palettes in the identity directory.
@@ -71,7 +69,6 @@ tints.dev OKLCH palettes in the identity directory.
71
69
  | Typography | [typography.md](./typography.md) | ~{N} |
72
70
  | Imagery Style | [imagery-style.md](./imagery-style.md) | ~{N} |
73
71
  | Brand Applications | [brand-applications.md](./brand-applications.md) | ~{N} |
74
- | Brand Book | [brand-book.md](./brand-book.md) | ~{N} |
75
72
  | Palettes | [palettes.json](./palettes.json) | — |
76
73
  ```
77
74
  </output>
@@ -12,6 +12,60 @@
12
12
  }
13
13
  ],
14
14
  "SubagentStop": [
15
+ {
16
+ "matcher": "gsp-designer",
17
+ "hooks": [
18
+ {
19
+ "type": "prompt",
20
+ "prompt": "The gsp-designer agent just finished. Verify: (1) at least one design/screen-*.md chunk was written, (2) design/INDEX.md was written, (3) design/preview.html was written. Report any missing deliverables to the user."
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "matcher": "gsp-critic",
26
+ "hooks": [
27
+ {
28
+ "type": "prompt",
29
+ "prompt": "The gsp-critic agent just finished. Verify: (1) critique/critique.md was written with a heuristics score, (2) critique/prioritized-fixes.md was written, (3) critique/strengths.md was written. Report any missing deliverables to the user."
30
+ }
31
+ ]
32
+ },
33
+ {
34
+ "matcher": "gsp-identity-designer",
35
+ "hooks": [
36
+ {
37
+ "type": "prompt",
38
+ "prompt": "The gsp-identity-designer agent just finished. Verify: (1) identity/INDEX.md was written, (2) identity/color-system.md exists, (3) identity/typography.md exists, (4) identity/palettes.json exists. Report any missing deliverables to the user."
39
+ }
40
+ ]
41
+ },
42
+ {
43
+ "matcher": "gsp-pattern-architect",
44
+ "hooks": [
45
+ {
46
+ "type": "prompt",
47
+ "prompt": "The gsp-pattern-architect agent just finished. Verify: (1) tokens.json was written, (2) INDEX.md was written, (3) at least one foundations/ chunk exists. Report any missing deliverables to the user."
48
+ }
49
+ ]
50
+ },
51
+ {
52
+ "matcher": "gsp-scoper",
53
+ "hooks": [
54
+ {
55
+ "type": "prompt",
56
+ "prompt": "The gsp-scoper agent just finished. Verify: (1) brief/scope.md was written, (2) brief/target-adaptations.md was written, (3) brief/INDEX.md was written. Report any missing deliverables to the user."
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ "matcher": "gsp-campaign-director",
62
+ "hooks": [
63
+ {
64
+ "type": "prompt",
65
+ "prompt": "The gsp-campaign-director agent just finished. Verify: (1) launch/campaign-strategy.md was written, (2) launch/INDEX.md was written. Report any missing deliverables to the user."
66
+ }
67
+ ]
68
+ },
15
69
  {
16
70
  "matcher": "gsp-builder",
17
71
  "hooks": [
@@ -5,10 +5,18 @@ Guide brief-gathering conversations — used by `/gsp:start` for both brand brie
5
5
 
6
6
  ---
7
7
 
8
+ ## Core Rules
9
+
10
+ **One decision per question.** Every question must be its own `AskUserQuestion` call. Never group multiple questions into a single message. Ask one thing, wait for the answer, use it to inform the next question.
11
+
12
+ **Never re-ask what the user already answered.** If information was gathered in a prior phase and is available in BRIEF.md or other artifacts, use it — don't ask again. If you need to validate stale information, confirm it ("I see X from earlier — still accurate?") rather than asking from scratch. Each phase reads the prior phase's output; the user should never feel like they're repeating themselves.
13
+
14
+ ---
15
+
8
16
  ## Question Flow
9
17
 
10
18
  ### Phase 1: Context (Who & Why)
11
- Start broad, then narrow.
19
+ Start broad, then narrow. Each is a separate `AskUserQuestion`.
12
20
 
13
21
  1. **What** is this project? (app, website, rebrand, campaign)
14
22
  2. **Who** is it for? (audience demographics, psychographics)
@@ -41,11 +49,11 @@ Start broad, then narrow.
41
49
 
42
50
  ## Questioning Techniques
43
51
 
44
- ### Progressive Disclosure
45
- Don't ask all 18 questions at once. Group into 3-4 conversational rounds:
46
- - Round 1: Context + Brand (questions 1-8)
47
- - Round 2: Scope + Constraints (questions 9-16)
48
- - Round 3: Success + Gaps (questions 17-18 + follow-ups)
52
+ ### One at a Time
53
+ Ask each question as its own `AskUserQuestion` call. Wait for the answer before asking the next. Use each answer to decide whether to skip, reframe, or drill into the next question.
54
+
55
+ ### Adapt and Skip
56
+ Don't follow the list rigidly. If an early answer reveals enough context, skip later questions. If an answer is surprising, follow up before moving on. The sequence is a guide, not a script.
49
57
 
50
58
  ### Follow-Up Patterns
51
59
  - **"Tell me more about..."** — When an answer is surface-level
@@ -66,9 +74,9 @@ Don't ask what you can infer:
66
74
  - Reserve prose questions for open-ended exploration where you genuinely don't know the option space
67
75
 
68
76
  ### When to Use `AskUserQuestion` vs Prose
69
- - **Use `AskUserQuestion`** for: picking between defined directions (archetypes, styles, brands), yes/no/which decisions, selecting from existing items (brands, projects), mood/tone/size preferences
70
- - **Use prose** for: open-ended creative input ("tell me about your brand"), gathering context you can't predict ("what problem does this solve?"), follow-up clarifications where the answer space is unbounded
71
- - **Rule of thumb:** if you can write 2-4 meaningful options with descriptions, use `AskUserQuestion`. If you'd be guessing at what the options should be, use prose.
77
+ - **Always use `AskUserQuestion`** this is the default for every user-facing question
78
+ - **Prose is only for** follow-up clarifications where the answer space is truly unbounded and you cannot write meaningful options
79
+ - **Rule of thumb:** if you can write 2-4 meaningful options with descriptions, use `AskUserQuestion`. If you'd be guessing at what the options should be, still use `AskUserQuestion` with an open-ended framing.
72
80
 
73
81
  ### Knowing When You Have Enough
74
82
  A brief is complete when you can answer:
@@ -2,6 +2,8 @@
2
2
  name: get-shit-pretty
3
3
  description: "Design engineering for AI coding tools. Full pipeline: brand research, strategy, identity, design system, UI design, critique, accessibility audit, build, and launch. Runs specialized agents with Apple HIG, Nielsen's heuristics, WCAG 2.2 AA, and design token standards baked in."
4
4
  user-invocable: false
5
+ model: opus
6
+ effort: high
5
7
  ---
6
8
 
7
9
  # Get Shit Pretty
@@ -2,6 +2,7 @@
2
2
  name: accessibility
3
3
  description: Quick contrast checks and token WCAG audits — inline, no agent
4
4
  user-invocable: true
5
+ model: sonnet
5
6
  allowed-tools:
6
7
  - Read
7
8
  - Write
@@ -30,6 +31,7 @@ Run lightweight accessibility checks inline — contrast ratio lookups and token
30
31
 
31
32
  <rules>
32
33
  - Always use `AskUserQuestion` for user interaction — never prompt via plain text
34
+ - One decision per question — never batch multiple questions in a single message
33
35
  - Quick check mode (`--check`) produces display output only — no files written
34
36
  - Token audit mode runs inline — no agent spawned
35
37
  - Default conformance level is AA unless overridden by `--level AAA` or config
@@ -2,6 +2,8 @@
2
2
  name: accessibility-audit
3
3
  description: Full WCAG accessibility audit — design screens, codebase, or generate compliance statement
4
4
  user-invocable: true
5
+ model: opus
6
+ effort: high
5
7
  allowed-tools:
6
8
  - Read
7
9
  - Write
@@ -37,6 +39,7 @@ Run full accessibility audits — design screen reviews, codebase ARIA/keyboard/
37
39
 
38
40
  <rules>
39
41
  - Always use `AskUserQuestion` for user interaction — never prompt via plain text
42
+ - One decision per question — never batch multiple questions in a single message
40
43
  - Statement mode reads prior audit results — fails gracefully if none exist
41
44
  - Default conformance level is AA unless overridden by `--level AAA` or config
42
45
  - Foundation chunks follow `references/chunk-format.md` format
@@ -2,6 +2,7 @@
2
2
  name: add-reference
3
3
  description: Add reference material to a project
4
4
  user-invocable: true
5
+ model: sonnet
5
6
  allowed-tools:
6
7
  - Read
7
8
  - Write
@@ -2,6 +2,7 @@
2
2
  name: art
3
3
  description: "Craft ASCII art interactively — you direct, the artist creates"
4
4
  user-invocable: true
5
+ model: sonnet
5
6
  allowed-tools:
6
7
  - Read
7
8
  - Bash
@@ -2,6 +2,8 @@
2
2
  name: brand-audit
3
3
  description: Audit an existing brand before evolving it
4
4
  user-invocable: true
5
+ model: opus
6
+ effort: high
5
7
  allowed-tools:
6
8
  - Read
7
9
  - Write
@@ -29,6 +31,7 @@ Audit an existing brand. Produce evolution map that guides research, strategy, a
29
31
 
30
32
  <rules>
31
33
  - Always use `AskUserQuestion` for user-facing questions — never raw text prompts
34
+ - One decision per question — never batch multiple questions in a single message
32
35
  - Keep interactions concise — gather assets, confirm scope, spawn agent
33
36
  - Artifacts must balance human readability with agent consumption for downstream phases
34
37
  </rules>
@@ -43,13 +46,15 @@ Read `{BRAND_PATH}/config.json` to confirm `brand_mode` is `evolve`.
43
46
 
44
47
  If missing, tell user to run `/gsp:start` first.
45
48
 
46
- ## Step 2: Gather brand assets
49
+ ## Step 2: Load brand assets from brief
47
50
 
48
- Use `AskUserQuestion` to prompt for assets:
51
+ Read `{BRAND_PATH}/BRIEF.md` brand assets were already gathered during `/gsp:start`. Extract any logos, colors, guidelines, URLs, or descriptions the user provided.
52
+
53
+ If the brief has no asset information (legacy or incomplete brief), use `AskUserQuestion`:
49
54
  - **Share assets now** — "I have guidelines, colors, fonts, voice samples, or URLs to share"
50
55
  - **Describe the brand** — "I'll describe it in my own words"
51
56
 
52
- Accept whatever format. Infer from partial info. If URLs provided, use WebFetch. Don't over-ask work with what's given.
57
+ If URLs were provided (in brief or just now), use WebFetch. Don't re-ask for information already in the brief.
53
58
 
54
59
  ## Step 3: Spawn auditor
55
60
 
@@ -2,6 +2,8 @@
2
2
  name: brand-identity
3
3
  description: Create your visual identity — logo, color, typography
4
4
  user-invocable: true
5
+ model: opus
6
+ effort: high
5
7
  allowed-tools:
6
8
  - Read
7
9
  - Write
@@ -31,6 +33,8 @@ Build the brand's visual identity.
31
33
 
32
34
  <rules>
33
35
  - Always use `AskUserQuestion` for user-facing questions — never raw text prompts
36
+ - One decision per question — never batch multiple questions in a single message
37
+ - Never re-ask what the user already answered in a prior phase — read BRIEF.md and strategy chunks, build on them
34
38
  - Every visual decision must trace to strategy — archetype, positioning, or voice
35
39
  - Artifacts must balance human readability with agent consumption for downstream phases
36
40
  </rules>
@@ -75,32 +79,34 @@ Use `AskUserQuestion` with 2-3 visual directions:
75
79
  - **Description:** color palette direction, typography feel, overall aesthetic
76
80
  - **Preview:** "Palette: {key colors}. Type: {typeface style}. Feel: {1-line vibe}."
77
81
 
78
- After selection, ask for hard constraints or visual references via `AskUserQuestion`:
82
+ ## Step 2b: Constraints
83
+
84
+ After visual direction is confirmed, ask as a separate `AskUserQuestion`:
79
85
  - **No constraints** — "Go ahead with this direction"
80
- - **Add constraints** — "I have specific requirements"
86
+ - **Add constraints** — "I have specific requirements (colors to avoid, accessibility needs, existing assets to match)"
81
87
 
82
88
  ## Step 3: Spawn identity designer
83
89
 
84
- Spawn the `gsp-identity-designer` agent with:
85
- - BRIEF.md content
86
- - Strategy chunks: archetype.md, positioning.md, brand-platform.md, voice-and-tone.md
87
- - discover/mood-board-direction.md
88
- - Brand Identity Creator prompt (02)
89
- - Identity output template
90
+ Spawn the `gsp-identity-designer` agent. **Inline all content** — the agent should not need to read any input files.
91
+
92
+ Pass in the agent prompt:
93
+ - **Content of** BRIEF.md (loaded in Step 1)
94
+ - **Content of** strategy chunks: archetype.md, positioning.md, brand-platform.md, voice-and-tone.md (loaded in Step 1)
95
+ - **Content of** discover/mood-board-direction.md (loaded in Step 1)
96
+ - **Content of** style base preset files `.yml` + `.md` (when loaded in Step 1)
97
+ - **Content of** audit/brand-inventory.md (when loaded in Step 2)
98
+ - Brand Identity Creator prompt (02), identity output template, color composition reference (from execution_context)
90
99
  - User-confirmed visual direction + constraints
91
- - Style base preset files (`.yml` + `.md`) if loaded
92
- - Audit chunks if they exist
93
100
  - **Output path:** `{BRAND_PATH}/identity/`
94
101
 
95
- The agent writes 6 chunks + palettes.json + INDEX.md:
102
+ The agent writes 5 chunks + palettes.json + INDEX.md:
96
103
  1. `logo-directions.md`
97
104
  2. `color-system.md`
98
105
  3. `typography.md`
99
106
  4. `imagery-style.md`
100
107
  5. `brand-applications.md`
101
- 6. `brand-book.md`
102
- 7. `palettes.json`
103
- 8. `INDEX.md`
108
+ 6. `palettes.json`
109
+ 7. `INDEX.md`
104
110
 
105
111
  ## Step 4: Perspective check
106
112
 
@@ -2,6 +2,8 @@
2
2
  name: brand-patterns
3
3
  description: Build your design system — tokens, components, brand guidelines
4
4
  user-invocable: true
5
+ model: opus
6
+ effort: high
5
7
  allowed-tools:
6
8
  - Read
7
9
  - Write
@@ -30,6 +32,11 @@ Build the design system, generate brand guidelines, and complete the branding di
30
32
  @${CLAUDE_SKILL_DIR}/../../references/design-tokens.md
31
33
  </execution_context>
32
34
 
35
+ <rules>
36
+ - Always use `AskUserQuestion` for user-facing questions — never raw text prompts
37
+ - One decision per question — never batch multiple questions in a single message
38
+ </rules>
39
+
33
40
  <process>
34
41
  ## Step 0: Resolve brand
35
42
 
@@ -66,14 +73,20 @@ If `style_base` is empty or missing, load `${CLAUDE_SKILL_DIR}/../gsp-style/styl
66
73
 
67
74
  **Always scan:** If `.design/system/` docs don't exist, invoke `/gsp:design-system` via Skill tool to scan the codebase. If they already exist, read them. Either way, load STACK.md, COMPONENTS.md, and TOKENS.md before continuing.
68
75
 
69
- Then ask the user:
70
- 1. "Will this brand target a specific tech stack?" (React + Tailwind, React Native + NativeWind, vanilla CSS, etc.)
71
- - If the scan detected a stack, present it as the default: "I see you're using {framework} with {styling} — build on that?"
72
- - Store answer in `{BRAND_PATH}/config.json` `system_config.tech_stack`
73
- 2. Based on scan results, determine system strategy:
74
- - If scan found existing tokens/components: "You have an existing design system. Want to evolve it, rethink it from scratch, or ignore it?"
75
- - Store strategy in `{BRAND_PATH}/config.json` → `system_config.system_strategy`
76
- - If scan found no tokens/components (greenfield/boilerplate): default to `generate`, skip the question
76
+ Then ask the user (each as its own `AskUserQuestion`):
77
+
78
+ 1. Tech stack — if the scan detected a stack, use `AskUserQuestion`:
79
+ - **Yes, build on {framework} + {styling}** — "Use what's already here"
80
+ - **Different stack** "I want to target a different tech stack"
81
+ If no stack detected, use open-ended `AskUserQuestion`: "What tech stack will this brand target?"
82
+ Store answer in `{BRAND_PATH}/config.json` → `system_config.tech_stack`
83
+
84
+ 2. System strategy — only ask if scan found existing tokens/components. Use `AskUserQuestion`:
85
+ - **Evolve** — "Extend the existing design system"
86
+ - **Rethink** — "Redesign from scratch, informed by what exists"
87
+ - **Ignore** — "Start fresh, don't reference the existing system"
88
+ Store strategy in `{BRAND_PATH}/config.json` → `system_config.system_strategy`
89
+ If scan found no tokens/components (greenfield/boilerplate): default to `generate`, skip this question
77
90
 
78
91
  ## Step 2: Determine system strategy
79
92
 
@@ -121,37 +134,37 @@ The agent writes foundations only:
121
134
 
122
135
  ## Step 3.5: Foundation review (interactive)
123
136
 
124
- Read the foundation outputs and present:
137
+ Read the foundation outputs and present a compact summary:
125
138
 
126
- "Here are the design system foundations:
139
+ "Design system foundations:
127
140
  Color: {semantic mapping summary from foundations/color-system.md}
128
141
  Typography: {type scale summary from foundations/typography.md}
129
142
  Spacing: 8px base → {scale from foundations/spacing.md}
130
- Design principles: {list from principles.md}
143
+ Design principles: {list from principles.md}"
131
144
 
132
- Everything right? Adjustments before building components?"
145
+ Use `AskUserQuestion`:
146
+ - **Looks good** — "Build components on these foundations"
147
+ - **Adjust colors** — "I want to tweak the color system"
148
+ - **Adjust typography** — "I want to tweak the type scale"
149
+ - **Adjust other** — "I want to change spacing, principles, or other foundations"
133
150
 
134
- Wait for user input. If adjustments needed, update the relevant foundation chunks.
151
+ If adjustments needed, update the relevant foundation chunks, then re-present.
135
152
 
136
153
  ## Step 3.75: Perspective check
137
154
 
138
155
  Before building components, load persona profiles from `{BRAND_PATH}/BRIEF.md` and present stakeholder reactions:
139
156
 
140
- "Before we build the component library on these foundations:
157
+ "Before we build the component library:
141
158
 
142
- The Customer ({primary persona name from BRIEF.md}):
143
- "{would a user recognize this as {brand}? Does the system feel like the brand?}"
159
+ {primary persona name}: {would they recognize this as {brand}? Does it feel right?}
160
+ Skeptic: {are the tokens flexible enough? Are the principles actionable?}
161
+ {top competitor}: {how does this compare to industry standards?}"
144
162
 
145
- The Skeptic (internal stakeholder):
146
- "{challenges system decisions are the tokens flexible enough? Are the principles actionable?}"
163
+ Use `AskUserQuestion`:
164
+ - **Build components**"These foundations are solid, let's go"
165
+ - **Adjust** — "One of these concerns resonates — I want to change something"
147
166
 
148
- The Competitor ({top competitor name}):
149
- "{how does this system compare to industry standards? Any gaps?}"
150
-
151
- Any of these concerns resonate? Want to adjust foundations before building components?"
152
-
153
- If user wants changes → update foundations.
154
- If confirmed → proceed to components pass.
167
+ If adjust update foundations and re-present. If confirmed → proceed to components pass.
155
168
 
156
169
  ## Step 4: Spawn pattern architect — Pass 2: Components
157
170
 
@@ -208,7 +221,9 @@ Tell the user: "Brand kit saved to `guidelines.html` — open it in your browser
208
221
 
209
222
  Render phase transition (see `references/phase-transitions.md`).
210
223
 
211
- **Critical:** When the user chooses "Start a project", invoke `/gsp:start` via the Skill tool. Do NOT attempt to handle project setup inline — `/gsp:start` has the codebase scanning, questioning rounds, and brief-writing logic needed for a proper project setup. The branding agent's context is spent on brand work and lacks the project setup methodology.
224
+ **E2E mode:** Read `{BRAND_PATH}/config.json`. If `e2e` is `true`, auto-invoke `/gsp:start` via Skill tool it will detect the completed brand and route directly to project setup (Step 4). No need to ask the user.
225
+
226
+ **Non-E2E:** When the user chooses "Start a project", invoke `/gsp:start` via the Skill tool. Do NOT attempt to handle project setup inline — `/gsp:start` has the codebase scanning, questioning rounds, and brief-writing logic needed for a proper project setup. The branding agent's context is spent on brand work and lacks the project setup methodology.
212
227
 
213
228
  Also display a brand summary after the standard transition — this is the final branding phase:
214
229
 
@@ -2,6 +2,7 @@
2
2
  name: brand-refine
3
3
  description: Targeted brand adjustments mid-project — tweak colors, typography, or spacing without re-running the full branding diamond
4
4
  user-invocable: true
5
+ model: sonnet
5
6
  allowed-tools:
6
7
  - Read
7
8
  - Write
@@ -31,6 +32,7 @@ Accept natural language feedback about brand visuals, identify which tokens are
31
32
 
32
33
  <rules>
33
34
  - Always use `AskUserQuestion` for user interaction — never prompt via plain text
35
+ - One decision per question — never batch multiple questions in a single message
34
36
  - Never update artifacts without showing before/after and getting confirmation
35
37
  - Only touch tokens directly affected by the feedback
36
38
  - Preserve existing token structure — edit values in place, don't restructure
@@ -2,6 +2,8 @@
2
2
  name: brand-research
3
3
  description: Research your market and competitors
4
4
  user-invocable: true
5
+ model: sonnet
6
+ effort: high
5
7
  allowed-tools:
6
8
  - Read
7
9
  - Write
@@ -31,6 +33,7 @@ Research market context that will inform brand strategy.
31
33
 
32
34
  <rules>
33
35
  - Always use `AskUserQuestion` for user-facing questions — never raw text prompts
36
+ - One decision per question — never batch multiple questions in a single message
34
37
  - Keep interactions concise — 1-2 exchanges max before spawning the agent
35
38
  - Artifacts must balance human readability with agent consumption for downstream phases
36
39
  </rules>