get-shit-pretty 0.6.2 → 0.7.0
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/README.md +7 -12
- package/bin/install.js +125 -84
- package/gsp/agents/gsp-accessibility-auditor.md +4 -4
- package/gsp/agents/gsp-ascii-artist.md +2 -2
- package/gsp/agents/gsp-brand-auditor.md +3 -3
- package/gsp/agents/gsp-brand-engineer.md +131 -0
- package/gsp/agents/gsp-brand-strategist.md +3 -3
- package/gsp/agents/gsp-brand-syncer.md +8 -7
- package/gsp/agents/gsp-builder.md +49 -6
- package/gsp/agents/gsp-campaign-director.md +3 -4
- package/gsp/agents/gsp-creative-director.md +80 -0
- package/gsp/agents/gsp-critic.md +100 -18
- package/gsp/agents/gsp-designer.md +52 -5
- package/gsp/agents/gsp-project-researcher.md +4 -4
- package/gsp/agents/gsp-researcher.md +5 -5
- package/gsp/agents/gsp-reviewer.md +3 -3
- package/gsp/agents/gsp-scoper.md +3 -3
- package/gsp/hooks/hooks.json +5 -5
- package/gsp/skills/get-shit-pretty/SKILL.md +10 -9
- package/gsp/skills/gsp-accessibility/SKILL.md +12 -12
- package/gsp/skills/gsp-accessibility-audit/SKILL.md +8 -9
- package/gsp/skills/gsp-add-reference/SKILL.md +6 -1
- package/gsp/skills/gsp-art/SKILL.md +6 -1
- package/gsp/skills/gsp-brand-audit/SKILL.md +5 -5
- package/gsp/skills/gsp-brand-guidelines/SKILL.md +233 -0
- package/gsp/skills/gsp-brand-guidelines/token-mapping.md +329 -0
- package/gsp/skills/gsp-brand-identity/SKILL.md +29 -20
- package/gsp/skills/gsp-brand-refine/SKILL.md +30 -23
- package/gsp/skills/gsp-brand-research/SKILL.md +4 -4
- package/gsp/{references → skills/gsp-brand-research}/design-trends.md +4 -4
- package/gsp/skills/gsp-brand-strategy/SKILL.md +7 -7
- package/gsp/skills/gsp-brand-sync/SKILL.md +10 -10
- package/gsp/skills/gsp-brand-sync/chunk-format.md +79 -0
- package/gsp/skills/gsp-color/SKILL.md +73 -0
- package/gsp/skills/gsp-color/chunk-format.md +79 -0
- package/gsp/skills/{gsp-palette/SKILL.md → gsp-color/domains/palette.md} +31 -101
- package/gsp/skills/gsp-color/domains/system.md +123 -0
- package/gsp/skills/gsp-design-system/SKILL.md +9 -4
- package/gsp/skills/gsp-doctor/SKILL.md +25 -18
- package/gsp/skills/gsp-help/SKILL.md +30 -29
- package/gsp/skills/gsp-icons/SKILL.md +108 -0
- package/gsp/skills/gsp-icons/chunk-format.md +79 -0
- package/gsp/skills/gsp-launch/SKILL.md +3 -4
- package/gsp/skills/gsp-logo/SKILL.md +173 -0
- package/gsp/skills/gsp-logo/chunk-format.md +79 -0
- package/gsp/skills/gsp-phase-transition/SKILL.md +124 -0
- package/gsp/skills/gsp-pretty/SKILL.md +2 -2
- package/gsp/skills/gsp-progress/SKILL.md +20 -20
- package/gsp/skills/gsp-project-brief/SKILL.md +8 -9
- package/gsp/skills/gsp-project-build/SKILL.md +30 -25
- package/gsp/skills/gsp-project-critique/SKILL.md +17 -18
- package/gsp/{references → skills/gsp-project-critique}/visual-taste.md +1 -1
- package/gsp/skills/gsp-project-design/SKILL.md +18 -18
- package/gsp/skills/gsp-project-research/SKILL.md +6 -7
- package/gsp/skills/gsp-project-review/SKILL.md +8 -10
- package/gsp/skills/gsp-scaffold/SKILL.md +3 -3
- package/gsp/skills/gsp-start/SKILL.md +15 -15
- package/gsp/{references → skills/gsp-start}/questioning.md +1 -1
- package/gsp/skills/gsp-style/SKILL.md +43 -45
- package/gsp/skills/gsp-style/chunk-format.md +79 -0
- package/gsp/skills/gsp-style/style-preset-schema.md +124 -0
- package/gsp/skills/gsp-style/styles/INDEX.yml +1 -1
- package/gsp/skills/gsp-style/styles/academia.yml +80 -0
- package/gsp/skills/gsp-style/styles/art-deco.yml +81 -0
- package/gsp/skills/gsp-style/styles/bauhaus.yml +78 -0
- package/gsp/skills/gsp-style/styles/bold-typography.yml +73 -0
- package/gsp/skills/gsp-style/styles/botanical.yml +78 -0
- package/gsp/skills/gsp-style/styles/claymorphism.yml +84 -0
- package/gsp/skills/gsp-style/styles/cyberpunk.yml +87 -0
- package/gsp/skills/gsp-style/styles/enterprise.yml +81 -0
- package/gsp/skills/gsp-style/styles/flat-design.yml +67 -0
- package/gsp/skills/gsp-style/styles/fluent.yml +82 -0
- package/gsp/skills/gsp-style/styles/glassmorphism.yml +83 -0
- package/gsp/skills/gsp-style/styles/humanist-literary.yml +74 -0
- package/gsp/skills/gsp-style/styles/industrial.yml +82 -0
- package/gsp/skills/gsp-style/styles/kinetic.yml +94 -0
- package/gsp/skills/gsp-style/styles/liquid-glass.yml +91 -0
- package/gsp/skills/gsp-style/styles/luxury.yml +83 -0
- package/gsp/skills/gsp-style/styles/material.yml +83 -0
- package/gsp/skills/gsp-style/styles/maximalism.yml +92 -0
- package/gsp/skills/gsp-style/styles/minimal-dark.yml +75 -0
- package/gsp/skills/gsp-style/styles/modern-dark.yml +88 -0
- package/gsp/skills/gsp-style/styles/monochrome.yml +68 -0
- package/gsp/skills/gsp-style/styles/neubrutalism.yml +83 -0
- package/gsp/skills/gsp-style/styles/neumorphism.yml +77 -0
- package/gsp/skills/gsp-style/styles/newsprint.yml +81 -0
- package/gsp/skills/gsp-style/styles/organic.yml +77 -0
- package/gsp/skills/gsp-style/styles/playful-geometric.yml +90 -0
- package/gsp/skills/gsp-style/styles/professional.yml +67 -0
- package/gsp/skills/gsp-style/styles/retro.yml +85 -0
- package/gsp/skills/gsp-style/styles/saas.yml +83 -0
- package/gsp/skills/gsp-style/styles/sketch.yml +86 -0
- package/gsp/skills/gsp-style/styles/swiss-minimalist.yml +69 -0
- package/gsp/skills/gsp-style/styles/terminal.yml +83 -0
- package/gsp/skills/gsp-style/styles/vaporwave.yml +84 -0
- package/gsp/skills/gsp-style/styles/web3.yml +82 -0
- package/gsp/skills/gsp-typography/SKILL.md +70 -0
- package/gsp/skills/gsp-typography/chunk-format.md +79 -0
- package/gsp/skills/gsp-typography/domains/pairing.md +109 -0
- package/gsp/skills/gsp-typography/domains/scale.md +227 -0
- package/gsp/skills/gsp-typography/domains/system.md +108 -0
- package/gsp/skills/gsp-update/SKILL.md +1 -2
- package/gsp/skills/gsp-visuals/SKILL.md +82 -0
- package/gsp/skills/gsp-visuals/chunk-format.md +79 -0
- package/gsp/skills/gsp-visuals/domains/3d.md +127 -0
- package/gsp/skills/gsp-visuals/domains/imagery.md +145 -0
- package/gsp/skills/gsp-visuals/domains/textures.md +138 -0
- package/gsp/skills/gsp-visuals/domains/video.md +107 -0
- package/gsp/templates/branding/config.json +1 -1
- package/gsp/templates/branding/roadmap.md +9 -9
- package/gsp/templates/exports-index.md +8 -8
- package/gsp/templates/phases/brief.md +1 -1
- package/gsp/templates/phases/build.md +1 -1
- package/gsp/templates/phases/critique.md +1 -1
- package/gsp/templates/phases/design.md +2 -2
- package/gsp/templates/phases/discover.md +1 -1
- package/gsp/templates/phases/identity.md +1 -1
- package/gsp/templates/phases/launch.md +1 -1
- package/gsp/templates/phases/patterns.md +60 -71
- package/gsp/templates/phases/research.md +1 -1
- package/gsp/templates/phases/review.md +1 -1
- package/gsp/templates/phases/strategy.md +1 -1
- package/gsp/templates/phases/style.md +158 -0
- package/gsp/templates/projects/config.json +1 -1
- package/gsp/templates/projects/roadmap.md +7 -7
- package/gsp/templates/projects/state.md +1 -1
- package/package.json +1 -2
- package/.claude-plugin/plugin.json +0 -24
- package/gsp/agents/gsp-identity-designer.md +0 -74
- package/gsp/agents/gsp-pattern-architect.md +0 -189
- package/gsp/prompts/01-design-system-architect.md +0 -19
- package/gsp/prompts/02-brand-identity-creator.md +0 -16
- package/gsp/prompts/03-ui-ux-pattern-master.md +0 -21
- package/gsp/prompts/04-marketing-asset-factory.md +0 -14
- package/gsp/prompts/05-implementation-spec-expert.md +0 -15
- package/gsp/prompts/06-design-critique-partner.md +0 -14
- package/gsp/prompts/07-design-trend-synthesizer.md +0 -3
- package/gsp/prompts/08-accessibility-auditor.md +0 -23
- package/gsp/prompts/09-design-to-code-translator.md +0 -49
- package/gsp/prompts/10-project-scoper.md +0 -17
- package/gsp/prompts/11-deliverable-reviewer.md +0 -18
- package/gsp/prompts/12-project-researcher.md +0 -18
- package/gsp/references/phase-transitions.md +0 -132
- package/gsp/references/style-preset-schema.md +0 -63
- package/gsp/skills/gsp-brand-patterns/SKILL.md +0 -240
- package/gsp/skills/gsp-typescale/SKILL.md +0 -234
- /package/gsp/{references → skills/gsp-accessibility-audit}/wcag-checklist.md +0 -0
- /package/gsp/{references → skills/gsp-art}/terminal-art.md +0 -0
- /package/gsp/{references → skills/gsp-brand-audit}/chunk-format.md +0 -0
- /package/gsp/{references → skills/gsp-brand-guidelines}/design-tokens.md +0 -0
- /package/gsp/{references → skills/gsp-brand-strategy}/brand-archetypes.md +0 -0
- /package/gsp/{references → skills/gsp-brand-strategy}/brand-prism.md +0 -0
- /package/gsp/{references → skills/gsp-brand-strategy}/positioning-frameworks.md +0 -0
- /package/gsp/{references → skills/gsp-brand-strategy}/voice-tone.md +0 -0
- /package/gsp/{references → skills/gsp-color/references}/color-composition.md +0 -0
- /package/gsp/{references → skills/gsp-project-build}/visual-effects.md +0 -0
- /package/gsp/{references → skills/gsp-project-critique}/anti-patterns.md +0 -0
- /package/gsp/{references → skills/gsp-project-critique}/nielsen-heuristics.md +0 -0
- /package/gsp/{references → skills/gsp-project-design}/apple-hig-patterns.md +0 -0
- /package/gsp/{references → skills/gsp-project-design}/block-patterns.md +0 -0
- /package/gsp/{references → skills/gsp-typography/references}/typography-scales.md +0 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsp-brand-guidelines
|
|
3
|
+
description: Operationalize your brand — assemble tokens, STYLE.md, component mapping, and guidelines
|
|
4
|
+
user-invocable: true
|
|
5
|
+
model: opus
|
|
6
|
+
effort: high
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Read
|
|
9
|
+
- Write
|
|
10
|
+
- Bash
|
|
11
|
+
- Agent
|
|
12
|
+
- Grep
|
|
13
|
+
- Glob
|
|
14
|
+
---
|
|
15
|
+
<context>
|
|
16
|
+
Phase 4 of the GSP branding diamond. Transforms the brand identity into operational artifacts that designer and builder agents consume — the `.yml` preset (source of truth), STYLE.md (agent contract), component token mapping, and `guidelines.html` (what the user sees).
|
|
17
|
+
|
|
18
|
+
Identity made the creative decisions. This phase makes them work in code.
|
|
19
|
+
</context>
|
|
20
|
+
|
|
21
|
+
<objective>
|
|
22
|
+
Operationalize brand identity into project-ready artifacts and complete the branding diamond.
|
|
23
|
+
|
|
24
|
+
**Input:** Brand identity (enriched by domain skills) + strategy + BRIEF.md
|
|
25
|
+
**Output:** `{brand}/patterns/` ({brand-name}.yml, STYLE.md, guidelines.html, components/, INDEX.md)
|
|
26
|
+
**Agent:** `gsp-brand-engineer`
|
|
27
|
+
</objective>
|
|
28
|
+
|
|
29
|
+
<execution_context>
|
|
30
|
+
@${CLAUDE_SKILL_DIR}/../../templates/phases/patterns.md
|
|
31
|
+
@${CLAUDE_SKILL_DIR}/design-tokens.md
|
|
32
|
+
</execution_context>
|
|
33
|
+
|
|
34
|
+
<rules>
|
|
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
|
+
</rules>
|
|
38
|
+
|
|
39
|
+
<process>
|
|
40
|
+
## Step 0: Resolve brand
|
|
41
|
+
|
|
42
|
+
Resolve brand from `.design/branding/` (one → use it, multiple → ask). Set `BRAND_PATH`.
|
|
43
|
+
If BRAND_PATH doesn't exist, tell the user to run `/gsp-start` first.
|
|
44
|
+
|
|
45
|
+
## Step 1: Load context
|
|
46
|
+
|
|
47
|
+
### Identity (chunk-first)
|
|
48
|
+
|
|
49
|
+
Read `{BRAND_PATH}/identity/INDEX.md`. If it exists, load all identity chunks + `palettes.json`.
|
|
50
|
+
|
|
51
|
+
If INDEX.md doesn't exist, check if identity phase is complete in brand STATE.md. If not, tell the user to complete brand identity first (run `/gsp-brand-identity`).
|
|
52
|
+
|
|
53
|
+
### Strategy (selective, chunk-first)
|
|
54
|
+
|
|
55
|
+
Read `{BRAND_PATH}/strategy/INDEX.md`. If it exists, load: voice-and-tone.md, archetype.md, positioning.md.
|
|
56
|
+
|
|
57
|
+
### Brand context
|
|
58
|
+
|
|
59
|
+
Read:
|
|
60
|
+
- `{BRAND_PATH}/BRIEF.md` — business, personas, goals
|
|
61
|
+
- `{BRAND_PATH}/config.json` — get `system_config.system_strategy`, `system_config.tech_stack`, `system_config.style_base`
|
|
62
|
+
|
|
63
|
+
### Style base presets
|
|
64
|
+
|
|
65
|
+
If `style_base` is a non-empty array, load each preset's files from `${CLAUDE_SKILL_DIR}/../gsp-style/styles/`:
|
|
66
|
+
- `{preset-name}.yml` — structural scaffold (tokens + intensity + patterns + constraints + effects)
|
|
67
|
+
- `{preset-name}.md` — design philosophy, bold bets, implementation patterns (CSS recipes, textures, animations)
|
|
68
|
+
|
|
69
|
+
Both files are needed: the `.yml` provides the structure to inherit from, the `.md` provides the philosophy and implementation content for STYLE.md rendering.
|
|
70
|
+
|
|
71
|
+
If `style_base` is empty or missing, load `${CLAUDE_SKILL_DIR}/../gsp-style/styles/professional.yml` and `professional.md` as the default format reference. The agent always needs at least one example to produce the custom style output.
|
|
72
|
+
|
|
73
|
+
## Step 1.5: Codebase awareness
|
|
74
|
+
|
|
75
|
+
**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.
|
|
76
|
+
|
|
77
|
+
Then ask the user (each as its own `AskUserQuestion`):
|
|
78
|
+
|
|
79
|
+
1. Tech stack — if the scan detected a stack, use `AskUserQuestion`:
|
|
80
|
+
- **Yes, build on {framework} + {styling}** — "Use what's already here"
|
|
81
|
+
- **Different stack** — "I want to target a different tech stack"
|
|
82
|
+
If no stack detected, use open-ended `AskUserQuestion`: "What tech stack will this brand target?"
|
|
83
|
+
Store answer in `{BRAND_PATH}/config.json` → `system_config.tech_stack`
|
|
84
|
+
|
|
85
|
+
2. System strategy — only ask if scan found existing tokens/components. Use `AskUserQuestion`:
|
|
86
|
+
- **Evolve** — "Extend the existing design system"
|
|
87
|
+
- **Rethink** — "Redesign from scratch, informed by what exists"
|
|
88
|
+
- **Ignore** — "Start fresh, don't reference the existing system"
|
|
89
|
+
Store strategy in `{BRAND_PATH}/config.json` → `system_config.system_strategy`
|
|
90
|
+
If scan found no tokens/components (greenfield/boilerplate): default to `generate`, skip this question
|
|
91
|
+
|
|
92
|
+
## Step 2: Determine system strategy
|
|
93
|
+
|
|
94
|
+
Read `system_config.system_strategy` from config.json (defaults to `generate` if missing).
|
|
95
|
+
|
|
96
|
+
Three strategies:
|
|
97
|
+
|
|
98
|
+
**GENERATE** (when `system_strategy` is `generate` or missing):
|
|
99
|
+
Full system from scratch. For `boilerplate` codebases, respect existing config structure (extend tailwind.config, not replace) and output tokens in the format the existing config uses (Tailwind extend, CSS custom properties, etc).
|
|
100
|
+
|
|
101
|
+
**EXTEND** (when `system_strategy` is `extend`):
|
|
102
|
+
Evolve the existing system rather than replacing it.
|
|
103
|
+
1. Audit existing tokens against the brand identity — keep what works, adjust what doesn't, fill gaps
|
|
104
|
+
2. Classify each existing component: KEEP / RESTYLE / REFACTOR / REPLACE
|
|
105
|
+
3. Design only net-new components not covered by existing ones
|
|
106
|
+
4. Output delta tokens — only new and changed values
|
|
107
|
+
5. Preserve existing naming conventions from `.design/system/CONVENTIONS.md`
|
|
108
|
+
|
|
109
|
+
**REFACTOR** (when `system_strategy` is `refactor`):
|
|
110
|
+
Redesign the system from the ground up, informed by what exists.
|
|
111
|
+
1. Read and understand existing tokens, components, patterns from `.design/system/` docs
|
|
112
|
+
2. Design a complete new system — same scope as GENERATE
|
|
113
|
+
3. Produce a migration mapping for every change
|
|
114
|
+
4. Preserve conventions unless the brand requires changes
|
|
115
|
+
5. Flag breaking changes explicitly
|
|
116
|
+
|
|
117
|
+
## Step 3: Spawn brand engineer — Pass 1: Core
|
|
118
|
+
|
|
119
|
+
Spawn the `gsp-brand-engineer` agent. **Inline all content** — the agent should not need to read input files.
|
|
120
|
+
|
|
121
|
+
Pass in the agent prompt:
|
|
122
|
+
- **Content of** all identity chunks + palettes.json (loaded in Step 1)
|
|
123
|
+
- **Content of** strategy chunks: voice-and-tone.md, archetype.md, positioning.md (loaded in Step 1)
|
|
124
|
+
- **Content of** BRIEF.md (loaded in Step 1)
|
|
125
|
+
- **Content of** style base preset `.yml` + `.md` (loaded in Step 1) — `.yml` as structural scaffold, `.md` as philosophy + implementation content for STYLE.md
|
|
126
|
+
- Patterns output template, design tokens reference (from execution_context)
|
|
127
|
+
- The `system_strategy` and `tech_stack` values
|
|
128
|
+
- **Output path:** `{BRAND_PATH}/patterns/`
|
|
129
|
+
|
|
130
|
+
> Produce the core brand artifacts ONLY:
|
|
131
|
+
> 1. `{brand-name}.yml` — source of truth (tokens + intensity + patterns + constraints + effects)
|
|
132
|
+
> 2. `STYLE.md` — agent contract (rendered from `.yml` + philosophy + bold bets)
|
|
133
|
+
> 3. `guidelines.html` — visual brand guide (what the user sees in their browser)
|
|
134
|
+
> 4. `INDEX.md` — core files only for now
|
|
135
|
+
>
|
|
136
|
+
> Do NOT produce component artifacts yet (token-mapping, overrides, custom specs). Those come after the user reviews the visual output.
|
|
137
|
+
|
|
138
|
+
## Step 3.5: Visual review
|
|
139
|
+
|
|
140
|
+
Tell the user: "Open `{BRAND_PATH}/patterns/guidelines.html` in your browser — this is your brand in one page."
|
|
141
|
+
|
|
142
|
+
Present a compact summary:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
{brand-name} guidelines
|
|
146
|
+
═══════════════════════════════════════
|
|
147
|
+
|
|
148
|
+
.yml preset
|
|
149
|
+
colors: {primary}, {secondary}, {accent}
|
|
150
|
+
typography: {primary font}, {secondary font}
|
|
151
|
+
intensity: variance {N}/10, motion {N}/10, density {N}/10
|
|
152
|
+
|
|
153
|
+
STYLE.md
|
|
154
|
+
patterns: {N} components defined
|
|
155
|
+
constraints: {N} never, {N} always rules
|
|
156
|
+
effects: {interaction vocabulary list}
|
|
157
|
+
bold bets: {1-line summary of boldest bet}
|
|
158
|
+
|
|
159
|
+
→ open guidelines.html in your browser to preview
|
|
160
|
+
|
|
161
|
+
─────────────────────────────────────
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Use `AskUserQuestion`:
|
|
165
|
+
- **Looks good** — "The brand looks right, build components"
|
|
166
|
+
- **Adjust tokens** — "I want to tweak colors, typography, or spacing"
|
|
167
|
+
- **Adjust patterns** — "I want to change component rules or constraints"
|
|
168
|
+
- **Adjust intensity** — "More/less creative, more/less motion, more/less density"
|
|
169
|
+
|
|
170
|
+
If adjustments needed, use `/gsp-brand-refine` with the feedback to surgically update the `.yml`, regenerate `STYLE.md`, and regenerate `guidelines.html`. Then re-present.
|
|
171
|
+
|
|
172
|
+
## Step 3.75: Perspective check
|
|
173
|
+
|
|
174
|
+
Load persona profiles from `{BRAND_PATH}/BRIEF.md` and present stakeholder reactions:
|
|
175
|
+
|
|
176
|
+
"Stress-testing the brand visuals:
|
|
177
|
+
|
|
178
|
+
{primary persona name}: {would this visual language feel trustworthy and appropriate?}
|
|
179
|
+
Skeptic: {are the constraints too restrictive or too loose? Is the intensity calibrated right?}
|
|
180
|
+
{top competitor}: {is the brand visually differentiated?}"
|
|
181
|
+
|
|
182
|
+
Use `AskUserQuestion`:
|
|
183
|
+
- **Lock it in** — "The brand is solid, build components"
|
|
184
|
+
- **Adjust** — "One of these concerns resonates — I want to change something"
|
|
185
|
+
|
|
186
|
+
If adjust → use `/gsp-brand-refine` with the concern, then re-present. If confirmed → proceed to components.
|
|
187
|
+
|
|
188
|
+
## Step 4: Spawn brand engineer — Pass 2: Components
|
|
189
|
+
|
|
190
|
+
Spawn the `gsp-brand-engineer` agent with:
|
|
191
|
+
- **Content of** the confirmed `{BRAND_PATH}/patterns/{brand-name}.yml`
|
|
192
|
+
- **Content of** `{BRAND_PATH}/patterns/STYLE.md`
|
|
193
|
+
- **Content of** `.design/system/STACK.md`, `COMPONENTS.md`, `TOKENS.md` (when loaded in Step 1.5)
|
|
194
|
+
- The `system_strategy` and `tech_stack` values
|
|
195
|
+
- Design tokens reference (from execution_context)
|
|
196
|
+
- **Output path:** `{BRAND_PATH}/patterns/`
|
|
197
|
+
|
|
198
|
+
> Produce the component artifacts:
|
|
199
|
+
> 1. `components/token-mapping.md` — brand tokens → library theming API (always)
|
|
200
|
+
> 2. Component override specs (selective — only when tokens aren't enough)
|
|
201
|
+
> 3. Custom component specs (selective — brand-distinctive with no library equivalent)
|
|
202
|
+
> 4. Update `INDEX.md` with the components section
|
|
203
|
+
>
|
|
204
|
+
> The `.yml` and `STYLE.md` are confirmed — do not modify them. Focus on mapping tokens to the detected component library and specifying overrides.
|
|
205
|
+
|
|
206
|
+
## Step 4.5: Update state
|
|
207
|
+
|
|
208
|
+
Update `{BRAND_PATH}/STATE.md`:
|
|
209
|
+
- Set Phase 4 (Patterns) status to `complete`
|
|
210
|
+
- Record completion date
|
|
211
|
+
- Set Prettiness Level to 100%
|
|
212
|
+
|
|
213
|
+
## Step 5: Phase transition output
|
|
214
|
+
|
|
215
|
+
Invoke `/gsp-phase-transition` with phase `guidelines` and output directory `{BRAND_PATH}/patterns/`.
|
|
216
|
+
|
|
217
|
+
**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.
|
|
218
|
+
|
|
219
|
+
**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.
|
|
220
|
+
|
|
221
|
+
Also display a brand summary after the standard transition — this is the final branding phase:
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
brand complete — {brand-name}
|
|
225
|
+
|
|
226
|
+
discover {key finding}
|
|
227
|
+
strategy {archetype}, {positioning}, {top voice attributes}
|
|
228
|
+
identity {colors}, {typefaces}
|
|
229
|
+
guidelines .yml + STYLE.md + {N} components + guidelines.html
|
|
230
|
+
|
|
231
|
+
open: {BRAND_PATH}/patterns/guidelines.html
|
|
232
|
+
```
|
|
233
|
+
</process>
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
# Token Mapping Reference
|
|
2
|
+
|
|
3
|
+
Deterministic mapping from GSP style preset `.yml` tokens to target CSS variable systems. The builder reads the `.yml` and generates the right output for the detected stack — no separate `tokens.json` or `token-mapping.md` needed.
|
|
4
|
+
|
|
5
|
+
## Source: `.yml` Token Structure
|
|
6
|
+
|
|
7
|
+
Every preset (and every brand `.yml`) has this structure:
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
tokens:
|
|
11
|
+
color:
|
|
12
|
+
primary: "#hex" # Brand primary
|
|
13
|
+
secondary: "#hex" # Brand secondary
|
|
14
|
+
accent: "#hex" # Brand accent
|
|
15
|
+
background: "#hex" # Page background
|
|
16
|
+
surface: "#hex" # Card/panel fill
|
|
17
|
+
on-primary: "#hex" # Text on primary
|
|
18
|
+
on-background: "#hex" # Text on background
|
|
19
|
+
error: "#hex"
|
|
20
|
+
success: "#hex"
|
|
21
|
+
warning: "#hex"
|
|
22
|
+
info: "#hex"
|
|
23
|
+
muted: "#hex" # Subtle text, borders (optional)
|
|
24
|
+
|
|
25
|
+
typography:
|
|
26
|
+
font-family-primary: "stack"
|
|
27
|
+
font-family-mono: "stack"
|
|
28
|
+
font-family-display: "stack" # optional
|
|
29
|
+
font-family-secondary: "stack" # optional
|
|
30
|
+
font-weight-heading: N
|
|
31
|
+
font-weight-body: N
|
|
32
|
+
font-size-base: "Npx"
|
|
33
|
+
line-height-base: N
|
|
34
|
+
|
|
35
|
+
shape:
|
|
36
|
+
border-radius-sm: "Npx"
|
|
37
|
+
border-radius-md: "Npx"
|
|
38
|
+
border-radius-lg: "Npx"
|
|
39
|
+
border-width: "Npx"
|
|
40
|
+
border-color: "#hex"
|
|
41
|
+
|
|
42
|
+
elevation:
|
|
43
|
+
shadow-sm: "css-shadow"
|
|
44
|
+
shadow-md: "css-shadow"
|
|
45
|
+
shadow-lg: "css-shadow"
|
|
46
|
+
shadow-xl: "css-shadow"
|
|
47
|
+
|
|
48
|
+
spacing:
|
|
49
|
+
base: N
|
|
50
|
+
scale: [N, N, ...]
|
|
51
|
+
|
|
52
|
+
motion:
|
|
53
|
+
duration-fast: "Nms"
|
|
54
|
+
duration-normal: "Nms"
|
|
55
|
+
easing: "css-easing"
|
|
56
|
+
|
|
57
|
+
dark_mode:
|
|
58
|
+
color:
|
|
59
|
+
background: "#hex"
|
|
60
|
+
surface: "#hex"
|
|
61
|
+
on-background: "#hex"
|
|
62
|
+
border-color: "#hex" # optional
|
|
63
|
+
muted: "#hex" # optional
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Target: shadcn/ui
|
|
69
|
+
|
|
70
|
+
shadcn uses HSL CSS variables in `:root` and `.dark`. The mapping is deterministic — every `.yml` token has exactly one shadcn variable.
|
|
71
|
+
|
|
72
|
+
### Color mapping
|
|
73
|
+
|
|
74
|
+
| `.yml` token | shadcn CSS variable | Notes |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| `color.background` | `--background` | Page background |
|
|
77
|
+
| `color.on-background` | `--foreground` | Primary text |
|
|
78
|
+
| `color.surface` | `--card` | Card background |
|
|
79
|
+
| `color.on-background` | `--card-foreground` | Card text (same as foreground) |
|
|
80
|
+
| `color.surface` | `--popover` | Popover bg (same as card) |
|
|
81
|
+
| `color.on-background` | `--popover-foreground` | Popover text |
|
|
82
|
+
| `color.primary` | `--primary` | Primary actions |
|
|
83
|
+
| `color.on-primary` | `--primary-foreground` | Text on primary |
|
|
84
|
+
| `color.secondary` | `--secondary` | Secondary actions |
|
|
85
|
+
| `color.on-primary` | `--secondary-foreground` | Text on secondary (derive from contrast) |
|
|
86
|
+
| `color.muted` | `--muted` | Muted backgrounds |
|
|
87
|
+
| `color.muted` | `--muted-foreground` | Muted text (use muted or derive darker) |
|
|
88
|
+
| `color.accent` | `--accent` | Accent highlights |
|
|
89
|
+
| `color.on-primary` | `--accent-foreground` | Text on accent (derive from contrast) |
|
|
90
|
+
| `color.error` | `--destructive` | Destructive actions |
|
|
91
|
+
| `color.on-primary` | `--destructive-foreground` | Text on destructive |
|
|
92
|
+
| `shape.border-color` | `--border` | Default borders |
|
|
93
|
+
| `shape.border-color` | `--input` | Input borders |
|
|
94
|
+
| `color.primary` | `--ring` | Focus ring |
|
|
95
|
+
| `color.surface` | `--sidebar-background` | Sidebar bg |
|
|
96
|
+
| `color.on-background` | `--sidebar-foreground` | Sidebar text |
|
|
97
|
+
| `color.primary` | `--sidebar-primary` | Sidebar active |
|
|
98
|
+
| `color.on-primary` | `--sidebar-primary-foreground` | Sidebar active text |
|
|
99
|
+
| `color.accent` | `--sidebar-accent` | Sidebar accent |
|
|
100
|
+
| `color.on-background` | `--sidebar-accent-foreground` | Sidebar accent text |
|
|
101
|
+
| `shape.border-color` | `--sidebar-border` | Sidebar borders |
|
|
102
|
+
| `color.primary` | `--sidebar-ring` | Sidebar focus ring |
|
|
103
|
+
| | `--chart-1` through `--chart-5` | Derive from primary, secondary, accent, info, success |
|
|
104
|
+
|
|
105
|
+
### Shape mapping
|
|
106
|
+
|
|
107
|
+
| `.yml` token | shadcn CSS variable |
|
|
108
|
+
|---|---|
|
|
109
|
+
| `shape.border-radius-lg` | `--radius` |
|
|
110
|
+
|
|
111
|
+
shadcn derives `--radius` down: `calc(var(--radius) - 2px)` for md, `calc(var(--radius) - 4px)` for sm.
|
|
112
|
+
|
|
113
|
+
### Typography
|
|
114
|
+
|
|
115
|
+
shadcn doesn't use CSS variables for fonts — set in `tailwind.config` `fontFamily` extend:
|
|
116
|
+
|
|
117
|
+
```js
|
|
118
|
+
fontFamily: {
|
|
119
|
+
sans: [/* from typography.font-family-primary */],
|
|
120
|
+
mono: [/* from typography.font-family-mono */],
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Dark mode
|
|
125
|
+
|
|
126
|
+
| `.yml` dark_mode token | shadcn CSS variable (`.dark` scope) |
|
|
127
|
+
|---|---|
|
|
128
|
+
| `dark_mode.color.background` | `--background` |
|
|
129
|
+
| `dark_mode.color.on-background` | `--foreground` |
|
|
130
|
+
| `dark_mode.color.surface` | `--card`, `--popover` |
|
|
131
|
+
| `dark_mode.color.border-color` | `--border`, `--input` |
|
|
132
|
+
| `dark_mode.color.muted` | `--muted`, `--muted-foreground` |
|
|
133
|
+
|
|
134
|
+
Tokens not listed in `dark_mode` inherit their light-mode value.
|
|
135
|
+
|
|
136
|
+
### Color format conversion
|
|
137
|
+
|
|
138
|
+
shadcn expects HSL channel values (no `hsl()` wrapper): `210 40% 98%`
|
|
139
|
+
|
|
140
|
+
**Conversion:** hex → HSL → extract H S% L% as space-separated string.
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
#1E40AF → hsl(221, 72%, 40%) → "221 72% 40%"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Complete output example
|
|
147
|
+
|
|
148
|
+
Given `professional.yml`:
|
|
149
|
+
|
|
150
|
+
```css
|
|
151
|
+
@layer base {
|
|
152
|
+
:root {
|
|
153
|
+
--background: 0 0% 100%;
|
|
154
|
+
--foreground: 222 47% 11%;
|
|
155
|
+
--card: 210 40% 98%;
|
|
156
|
+
--card-foreground: 222 47% 11%;
|
|
157
|
+
--popover: 210 40% 98%;
|
|
158
|
+
--popover-foreground: 222 47% 11%;
|
|
159
|
+
--primary: 221 72% 40%;
|
|
160
|
+
--primary-foreground: 0 0% 100%;
|
|
161
|
+
--secondary: 215 16% 47%;
|
|
162
|
+
--secondary-foreground: 0 0% 100%;
|
|
163
|
+
--muted: 213 27% 84%;
|
|
164
|
+
--muted-foreground: 215 16% 47%;
|
|
165
|
+
--accent: 199 89% 48%;
|
|
166
|
+
--accent-foreground: 0 0% 100%;
|
|
167
|
+
--destructive: 0 72% 51%;
|
|
168
|
+
--destructive-foreground: 0 0% 100%;
|
|
169
|
+
--border: 214 32% 91%;
|
|
170
|
+
--input: 214 32% 91%;
|
|
171
|
+
--ring: 221 72% 40%;
|
|
172
|
+
--radius: 0.75rem;
|
|
173
|
+
--chart-1: 221 72% 40%;
|
|
174
|
+
--chart-2: 215 16% 47%;
|
|
175
|
+
--chart-3: 199 89% 48%;
|
|
176
|
+
--chart-4: 217 91% 60%;
|
|
177
|
+
--chart-5: 142 71% 45%;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.dark {
|
|
181
|
+
--background: 222 47% 11%;
|
|
182
|
+
--foreground: 210 40% 96%;
|
|
183
|
+
--card: 217 33% 17%;
|
|
184
|
+
--card-foreground: 210 40% 96%;
|
|
185
|
+
--popover: 217 33% 17%;
|
|
186
|
+
--popover-foreground: 210 40% 96%;
|
|
187
|
+
--border: 217 19% 27%;
|
|
188
|
+
--input: 217 19% 27%;
|
|
189
|
+
--muted: 215 20% 65%;
|
|
190
|
+
--muted-foreground: 215 20% 65%;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Target: Tailwind (no component library)
|
|
198
|
+
|
|
199
|
+
For codebases using Tailwind without shadcn, map directly to `tailwind.config` `extend`:
|
|
200
|
+
|
|
201
|
+
```js
|
|
202
|
+
theme: {
|
|
203
|
+
extend: {
|
|
204
|
+
colors: {
|
|
205
|
+
primary: "var(--color-primary)",
|
|
206
|
+
secondary: "var(--color-secondary)",
|
|
207
|
+
accent: "var(--color-accent)",
|
|
208
|
+
background: "var(--color-background)",
|
|
209
|
+
surface: "var(--color-surface)",
|
|
210
|
+
foreground: "var(--color-foreground)",
|
|
211
|
+
muted: "var(--color-muted)",
|
|
212
|
+
error: "var(--color-error)",
|
|
213
|
+
success: "var(--color-success)",
|
|
214
|
+
warning: "var(--color-warning)",
|
|
215
|
+
},
|
|
216
|
+
fontFamily: {
|
|
217
|
+
sans: [/* typography.font-family-primary */],
|
|
218
|
+
mono: [/* typography.font-family-mono */],
|
|
219
|
+
},
|
|
220
|
+
borderRadius: {
|
|
221
|
+
sm: "var(--radius-sm)",
|
|
222
|
+
md: "var(--radius-md)",
|
|
223
|
+
lg: "var(--radius-lg)",
|
|
224
|
+
},
|
|
225
|
+
boxShadow: {
|
|
226
|
+
sm: "var(--shadow-sm)",
|
|
227
|
+
md: "var(--shadow-md)",
|
|
228
|
+
lg: "var(--shadow-lg)",
|
|
229
|
+
xl: "var(--shadow-xl)",
|
|
230
|
+
},
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
CSS variables use hex directly (no HSL conversion needed):
|
|
236
|
+
|
|
237
|
+
```css
|
|
238
|
+
:root {
|
|
239
|
+
--color-primary: #1E40AF;
|
|
240
|
+
--color-secondary: #475569;
|
|
241
|
+
--color-background: #FFFFFF;
|
|
242
|
+
--color-surface: #F8FAFC;
|
|
243
|
+
--color-foreground: #0F172A;
|
|
244
|
+
--color-muted: #94A3B8;
|
|
245
|
+
--radius-sm: 6px;
|
|
246
|
+
--radius-md: 8px;
|
|
247
|
+
--radius-lg: 12px;
|
|
248
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
249
|
+
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Target: Vanilla CSS
|
|
256
|
+
|
|
257
|
+
For non-Tailwind codebases, generate a CSS custom property system with semantic class recipes:
|
|
258
|
+
|
|
259
|
+
```css
|
|
260
|
+
:root {
|
|
261
|
+
/* Brand */
|
|
262
|
+
--color-primary: #1E40AF;
|
|
263
|
+
--color-secondary: #475569;
|
|
264
|
+
--color-accent: #0EA5E9;
|
|
265
|
+
--color-bg: #FFFFFF;
|
|
266
|
+
--color-surface: #F8FAFC;
|
|
267
|
+
--color-text: #0F172A;
|
|
268
|
+
--color-muted: #94A3B8;
|
|
269
|
+
--color-border: #E2E8F0;
|
|
270
|
+
|
|
271
|
+
/* Semantic */
|
|
272
|
+
--color-error: #DC2626;
|
|
273
|
+
--color-success: #16A34A;
|
|
274
|
+
--color-warning: #D97706;
|
|
275
|
+
|
|
276
|
+
/* Shape */
|
|
277
|
+
--radius-sm: 6px;
|
|
278
|
+
--radius-md: 8px;
|
|
279
|
+
--radius-lg: 12px;
|
|
280
|
+
--border-width: 1px;
|
|
281
|
+
|
|
282
|
+
/* Elevation */
|
|
283
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
284
|
+
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
|
|
285
|
+
|
|
286
|
+
/* Spacing */
|
|
287
|
+
--space-1: 4px;
|
|
288
|
+
--space-2: 8px;
|
|
289
|
+
--space-3: 12px;
|
|
290
|
+
--space-4: 16px;
|
|
291
|
+
--space-6: 24px;
|
|
292
|
+
--space-8: 32px;
|
|
293
|
+
--space-12: 48px;
|
|
294
|
+
--space-16: 64px;
|
|
295
|
+
|
|
296
|
+
/* Motion */
|
|
297
|
+
--duration-fast: 150ms;
|
|
298
|
+
--duration-normal: 250ms;
|
|
299
|
+
--easing: cubic-bezier(0.4, 0, 0.2, 1);
|
|
300
|
+
|
|
301
|
+
/* Typography */
|
|
302
|
+
--font-sans: Inter, system-ui, sans-serif;
|
|
303
|
+
--font-mono: SF Mono, Menlo, monospace;
|
|
304
|
+
--font-weight-heading: 600;
|
|
305
|
+
--font-weight-body: 400;
|
|
306
|
+
--font-size-base: 16px;
|
|
307
|
+
--line-height-base: 1.6;
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## Layered resolution
|
|
314
|
+
|
|
315
|
+
The builder resolves tokens in this order (last wins):
|
|
316
|
+
|
|
317
|
+
1. **Preset `.yml`** — base tokens from the style preset (e.g., `professional.yml`)
|
|
318
|
+
2. **Brand `.yml`** — overrides from branding process (e.g., `acme.yml` with `style_base: professional`)
|
|
319
|
+
3. **Dark mode** — `dark_mode.color.*` overrides for `.dark` scope
|
|
320
|
+
|
|
321
|
+
If only a preset exists (quick project), step 2 is skipped. The builder generates CSS from whatever `.yml` it receives.
|
|
322
|
+
|
|
323
|
+
## When to generate extended files
|
|
324
|
+
|
|
325
|
+
| Scenario | Files produced |
|
|
326
|
+
|----------|---------------|
|
|
327
|
+
| Quick project (`/gsp-style`) | Preset `.yml` (base) → CSS vars generated at build time |
|
|
328
|
+
| Full branding (customized) | Brand `.yml` (inherits preset) + `STYLE.md` |
|
|
329
|
+
| Full branding (unchanged from preset) | Only `STYLE.md` (brand `.yml` not needed if identical to preset) |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: brand-identity
|
|
2
|
+
name: gsp-brand-identity
|
|
3
3
|
description: Create your visual identity — logo, color, typography
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: opus
|
|
@@ -22,13 +22,12 @@ Build the brand's visual identity.
|
|
|
22
22
|
|
|
23
23
|
**Input:** Strategy chunks + BRIEF.md + discover/mood-board-direction.md
|
|
24
24
|
**Output:** `.design/branding/{brand}/identity/` (6 chunks + palettes.json + INDEX.md)
|
|
25
|
-
**Agent:** `gsp-
|
|
25
|
+
**Agent:** `gsp-creative-director`
|
|
26
26
|
</objective>
|
|
27
27
|
|
|
28
28
|
<execution_context>
|
|
29
|
-
@${CLAUDE_SKILL_DIR}/../../prompts/02-brand-identity-creator.md
|
|
30
29
|
@${CLAUDE_SKILL_DIR}/../../templates/phases/identity.md
|
|
31
|
-
@${CLAUDE_SKILL_DIR}
|
|
30
|
+
@${CLAUDE_SKILL_DIR}/../gsp-color/references/color-composition.md
|
|
32
31
|
</execution_context>
|
|
33
32
|
|
|
34
33
|
<rules>
|
|
@@ -43,12 +42,12 @@ Build the brand's visual identity.
|
|
|
43
42
|
## Step 0: Resolve brand
|
|
44
43
|
|
|
45
44
|
Resolve brand from `.design/branding/` (one → use it, multiple → ask). Set `BRAND_PATH`.
|
|
46
|
-
If missing, tell user to run `/gsp
|
|
45
|
+
If missing, tell user to run `/gsp-start` first.
|
|
47
46
|
|
|
48
47
|
## Step 1: Validate prerequisites
|
|
49
48
|
|
|
50
49
|
Read `{BRAND_PATH}/STATE.md`. Strategy (Phase 2) must be complete.
|
|
51
|
-
If not: "Strategy isn't done yet. Run `/gsp
|
|
50
|
+
If not: "Strategy isn't done yet. Run `/gsp-brand-strategy` first."
|
|
52
51
|
|
|
53
52
|
Load:
|
|
54
53
|
- `{BRAND_PATH}/BRIEF.md`
|
|
@@ -59,10 +58,10 @@ Load:
|
|
|
59
58
|
### Style base presets
|
|
60
59
|
|
|
61
60
|
If `style_base` is a non-empty array, load each preset's files from `${CLAUDE_SKILL_DIR}/../gsp-style/styles/`:
|
|
62
|
-
- `{preset-name}.yml` —
|
|
63
|
-
- `{preset-name}.md` — design philosophy
|
|
61
|
+
- `{preset-name}.yml` — tokens + intensity + patterns + constraints + effects (structural scaffold)
|
|
62
|
+
- `{preset-name}.md` — design philosophy, signature techniques, implementation patterns (creative context)
|
|
64
63
|
|
|
65
|
-
|
|
64
|
+
Both files matter: the `.yml` gives the creative-director the aesthetic rules to respect, the `.md` gives the emotional DNA and visual signatures to channel. The creative-director adapts the brand within the preset's structure — respecting intensity dials, patterns, and constraints while bringing the brand's unique personality.
|
|
66
65
|
|
|
67
66
|
## Step 2: Visual direction
|
|
68
67
|
|
|
@@ -85,28 +84,38 @@ After visual direction is confirmed, ask as a separate `AskUserQuestion`:
|
|
|
85
84
|
- **No constraints** — "Go ahead with this direction"
|
|
86
85
|
- **Add constraints** — "I have specific requirements (colors to avoid, accessibility needs, existing assets to match)"
|
|
87
86
|
|
|
88
|
-
## Step 3: Spawn
|
|
87
|
+
## Step 3: Spawn creative director
|
|
89
88
|
|
|
90
|
-
Spawn the `gsp-
|
|
89
|
+
Spawn the `gsp-creative-director` agent. **Inline all content** — the agent should not need to read any input files.
|
|
91
90
|
|
|
92
91
|
Pass in the agent prompt:
|
|
93
92
|
- **Content of** BRIEF.md (loaded in Step 1)
|
|
94
93
|
- **Content of** strategy chunks: archetype.md, positioning.md, brand-platform.md, voice-and-tone.md (loaded in Step 1)
|
|
95
94
|
- **Content of** discover/mood-board-direction.md (loaded in Step 1)
|
|
96
|
-
- **Content of** style base preset
|
|
95
|
+
- **Content of** style base preset `.yml` + `.md` (when loaded in Step 1) — `.yml` as structural scaffold, `.md` as design philosophy and signature techniques
|
|
97
96
|
- **Content of** audit/brand-inventory.md (when loaded in Step 2)
|
|
98
|
-
-
|
|
97
|
+
- Identity output template, color composition reference (from execution_context)
|
|
99
98
|
- User-confirmed visual direction + constraints
|
|
100
99
|
- **Output path:** `{BRAND_PATH}/identity/`
|
|
101
100
|
|
|
102
|
-
The agent writes 5 chunks +
|
|
101
|
+
The agent writes 5 chunks + INDEX.md (creative decisions only — no technical execution):
|
|
103
102
|
1. `logo-directions.md`
|
|
104
|
-
2. `color-system.md`
|
|
105
|
-
3. `typography.md`
|
|
106
|
-
4. `imagery-style.md`
|
|
103
|
+
2. `color-system.md` (chosen colors + rationale, no OKLCH/contrast math)
|
|
104
|
+
3. `typography.md` (chosen typefaces + rationale, no scale math)
|
|
105
|
+
4. `imagery-style.md` (creative direction, no icon library specifics)
|
|
107
106
|
5. `brand-applications.md`
|
|
108
|
-
6. `
|
|
109
|
-
|
|
107
|
+
6. `INDEX.md`
|
|
108
|
+
|
|
109
|
+
## Step 3.5: Enrich with domain skills
|
|
110
|
+
|
|
111
|
+
After the creative-director finishes, invoke domain skills to add technical precision to the creative decisions. Each skill reads the chunk the agent wrote, enriches it, and overwrites.
|
|
112
|
+
|
|
113
|
+
1. **Invoke `/gsp-logo --enrich`** — reads `logo-directions.md`, enriches each direction with detailed construction geometry, complete variation specs, clear space rules, and minimum size calculations.
|
|
114
|
+
2. **Invoke `/gsp-color --enrich`** — reads `color-system.md`, generates OKLCH palettes via tints.dev, calculates WCAG contrast, writes `palettes.json`, enriches with contrast ratios and semantic mapping.
|
|
115
|
+
3. **Invoke `/gsp-typography --enrich`** — reads `typography.md`, generates mathematical type scale, adds fluid type formulas, enriches with font loading instructions.
|
|
116
|
+
4. **Invoke `/gsp-visuals --imagery --enrich`** — reads `imagery-style.md`, adds icon library specifics, CSS texture/treatment recipes, enriches with technical implementation details.
|
|
117
|
+
|
|
118
|
+
Each skill loads its own domain references on-demand — no upfront context cost.
|
|
110
119
|
|
|
111
120
|
## Step 4: Perspective check
|
|
112
121
|
|
|
@@ -128,5 +137,5 @@ Use `AskUserQuestion`:
|
|
|
128
137
|
|
|
129
138
|
Update `{BRAND_PATH}/STATE.md`: set Phase 3 (Identity) to `complete`, Prettiness Level to 80%.
|
|
130
139
|
|
|
131
|
-
|
|
140
|
+
Invoke `/gsp-phase-transition` with phase `identity` and output directory `{BRAND_PATH}/identity/`.
|
|
132
141
|
</process>
|