get-shit-pretty 0.7.4 → 0.8.3

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 (79) hide show
  1. package/README.md +21 -14
  2. package/bin/install.js +10 -10
  3. package/bin/theme-css.js +331 -0
  4. package/gsp/agents/gsp-brand-coherence.md +7 -0
  5. package/gsp/skills/get-shit-pretty/SKILL.md +3 -1
  6. package/gsp/skills/gsp-brand-brief/SKILL.md +50 -5
  7. package/gsp/skills/gsp-brand-guidelines/SKILL.md +51 -31
  8. package/gsp/skills/gsp-brand-guidelines/design-tokens.md +2 -0
  9. package/gsp/skills/gsp-brand-guidelines/guidelines-structure.md +167 -0
  10. package/gsp/skills/gsp-brand-guidelines/methodology/gsp-brand-coherence.md +86 -0
  11. package/gsp/skills/gsp-brand-guidelines/methodology/gsp-brand-engineer.md +13 -5
  12. package/gsp/skills/gsp-brand-guidelines/token-mapping.md +16 -319
  13. package/gsp/skills/gsp-brand-identity/SKILL.md +1 -1
  14. package/gsp/skills/gsp-brand-refine/SKILL.md +5 -6
  15. package/gsp/skills/gsp-brand-research/SKILL.md +1 -1
  16. package/gsp/skills/gsp-brand-strategy/SKILL.md +1 -1
  17. package/gsp/skills/gsp-design-system/SKILL.md +1 -1
  18. package/gsp/skills/gsp-doctor/SKILL.md +54 -6
  19. package/gsp/skills/gsp-progress/SKILL.md +1 -1
  20. package/gsp/skills/gsp-project-brief/SKILL.md +40 -6
  21. package/gsp/skills/gsp-project-build/SKILL.md +22 -29
  22. package/gsp/skills/gsp-project-build/flows/figma.md +50 -0
  23. package/gsp/skills/gsp-project-build/flows/revision.md +64 -0
  24. package/gsp/skills/gsp-project-build/methodology/gsp-project-builder.md +57 -4
  25. package/gsp/skills/gsp-project-build/shadcn-composition.md +217 -0
  26. package/gsp/skills/gsp-project-critique/SKILL.md +3 -1
  27. package/gsp/skills/gsp-project-design/SKILL.md +3 -1
  28. package/gsp/skills/gsp-project-research/SKILL.md +3 -1
  29. package/gsp/skills/gsp-project-review/SKILL.md +10 -1
  30. package/gsp/skills/gsp-scaffold/SKILL.md +49 -12
  31. package/gsp/skills/gsp-scaffold/shadcn-rules.md +433 -0
  32. package/gsp/skills/gsp-scaffold/shadcn-theming.md +310 -0
  33. package/gsp/skills/gsp-start/SKILL.md +18 -2
  34. package/gsp/skills/gsp-style/SKILL.md +1 -1
  35. package/gsp/skills/gsp-style/style-preset-schema.md +59 -14
  36. package/gsp/skills/gsp-style/styles/academia.yml +58 -8
  37. package/gsp/skills/gsp-style/styles/art-deco.yml +39 -7
  38. package/gsp/skills/gsp-style/styles/bauhaus.yml +39 -8
  39. package/gsp/skills/gsp-style/styles/bold-typography.yml +39 -8
  40. package/gsp/skills/gsp-style/styles/botanical.yml +39 -9
  41. package/gsp/skills/gsp-style/styles/claymorphism.yml +39 -9
  42. package/gsp/skills/gsp-style/styles/cyberpunk.yml +39 -7
  43. package/gsp/skills/gsp-style/styles/enterprise.yml +39 -10
  44. package/gsp/skills/gsp-style/styles/flat-design.yml +39 -9
  45. package/gsp/skills/gsp-style/styles/fluent.yml +39 -10
  46. package/gsp/skills/gsp-style/styles/glassmorphism.yml +39 -8
  47. package/gsp/skills/gsp-style/styles/humanist-literary.yml +39 -9
  48. package/gsp/skills/gsp-style/styles/industrial.yml +59 -9
  49. package/gsp/skills/gsp-style/styles/kinetic.yml +32 -7
  50. package/gsp/skills/gsp-style/styles/liquid-glass.yml +59 -9
  51. package/gsp/skills/gsp-style/styles/luxury.yml +59 -9
  52. package/gsp/skills/gsp-style/styles/material.yml +59 -9
  53. package/gsp/skills/gsp-style/styles/maximalism.yml +32 -6
  54. package/gsp/skills/gsp-style/styles/minimal-dark.yml +32 -7
  55. package/gsp/skills/gsp-style/styles/modern-dark.yml +32 -7
  56. package/gsp/skills/gsp-style/styles/monochrome.yml +59 -10
  57. package/gsp/skills/gsp-style/styles/neubrutalism.yml +59 -9
  58. package/gsp/skills/gsp-style/styles/neumorphism.yml +32 -7
  59. package/gsp/skills/gsp-style/styles/newsprint.yml +32 -7
  60. package/gsp/skills/gsp-style/styles/nothing.yml +44 -13
  61. package/gsp/skills/gsp-style/styles/organic.yml +42 -9
  62. package/gsp/skills/gsp-style/styles/playful-geometric.yml +43 -9
  63. package/gsp/skills/gsp-style/styles/professional.yml +41 -10
  64. package/gsp/skills/gsp-style/styles/retro.yml +42 -8
  65. package/gsp/skills/gsp-style/styles/saas.yml +42 -9
  66. package/gsp/skills/gsp-style/styles/sketch.yml +42 -9
  67. package/gsp/skills/gsp-style/styles/swiss-minimalist.yml +41 -10
  68. package/gsp/skills/gsp-style/styles/terminal.yml +42 -8
  69. package/gsp/skills/gsp-style/styles/vaporwave.yml +42 -7
  70. package/gsp/skills/gsp-style/styles/web3.yml +42 -9
  71. package/gsp/skills/gsp-update/SKILL.md +9 -6
  72. package/gsp/templates/branding/brief.md +9 -0
  73. package/gsp/templates/branding/config.json +1 -1
  74. package/gsp/templates/design-claude.md +6 -0
  75. package/gsp/templates/phases/patterns.md +2 -2
  76. package/gsp/templates/projects/config.json +6 -3
  77. package/gsp/templates/projects/state.md +1 -1
  78. package/gsp/templates/system/STACK.md +1 -0
  79. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: gsp-brand-guidelines
3
- description: Operationalize your brand assemble tokens, STYLE.md, component mapping, and guidelines (technical phase — benefits from capable models)
3
+ description: Build design system tokens and STYLE.md (technical phase — benefits from capable models) — use when: create the design system, generate tokens, finalize brand guidelines, build the component system
4
4
  user-invocable: true
5
5
  allowed-tools:
6
6
  - Read
@@ -113,6 +113,7 @@ Redesign the system from the ground up, informed by what exists.
113
113
  Read these files and hold their content for inlining into the agent prompt:
114
114
  - `${CLAUDE_SKILL_DIR}/../../templates/phases/patterns.md` — patterns output template
115
115
  - `${CLAUDE_SKILL_DIR}/design-tokens.md` — design tokens reference
116
+ - `${CLAUDE_SKILL_DIR}/guidelines-structure.md` — guidelines.html structure spec (shadcn tokens, sections, primitive classes)
116
117
  - `${CLAUDE_SKILL_DIR}/methodology/gsp-brand-engineer.md` — agent methodology
117
118
 
118
119
  Spawn the `gsp-brand-engineer` agent. **Inline all content** — the agent should not need to read input files.
@@ -120,11 +121,12 @@ Spawn the `gsp-brand-engineer` agent. **Inline all content** — the agent shoul
120
121
  Pass in the agent prompt:
121
122
  - **Content of** all identity chunks + palettes.json (loaded in Step 1)
122
123
  - **Content of** strategy chunks: voice-and-tone.md, archetype.md, positioning.md (loaded in Step 1)
123
- - **Content of** BRIEF.md (loaded in Step 1)
124
+ - **Content of** BRIEF.md (loaded in Step 1) — explicitly pass the `brand_heartbeat` field as a named input so the agent uses it in the hero headline if no manifesto line exists yet
124
125
  - **Content of** style base preset `.yml` + `.md` (loaded in Step 1) — `.yml` as structural scaffold, `.md` as philosophy + implementation content for STYLE.md
125
126
  - **Agent methodology** (loaded above)
126
127
  - **Content of** patterns output template (loaded above)
127
128
  - **Content of** design tokens reference (loaded above)
129
+ - **Content of** guidelines structure spec (loaded above) — follow this exactly for `guidelines.html`
128
130
  - The `system_strategy` and `tech_stack` values
129
131
  - **Output path:** `{BRAND_PATH}/patterns/`
130
132
 
@@ -136,55 +138,64 @@ Pass in the agent prompt:
136
138
  >
137
139
  > Do NOT produce component artifacts yet (token-mapping, overrides, custom specs). Those come after the user reviews the visual output.
138
140
 
139
- ## Step 3.5: Visual review
141
+ ## Step 3.5: Coherence check
140
142
 
141
- Tell the user: "Open `{BRAND_PATH}/patterns/guidelines.html` in your browserthis is your brand in one page."
143
+ Spawn the `gsp-brand-coherence` agent with a fresh context. Load the methodology and inline all inputs the agent should not need to read files.
142
144
 
143
- Present a compact summary:
145
+ ### Load
146
+ Read these and hold for inlining:
147
+ - `${CLAUDE_SKILL_DIR}/methodology/gsp-brand-coherence.md` — agent methodology
148
+ - `{BRAND_PATH}/patterns/{brand-name}.yml` — generated preset
149
+ - `{BRAND_PATH}/patterns/guidelines.html` — generated visual guide
144
150
 
145
- ```
146
- {brand-name} guidelines
147
- ═══════════════════════════════════════
151
+ Extract from Step 1 context:
152
+ - `archetype` — from archetype.md
153
+ - `brand_heartbeat` — from BRIEF.md
154
+
155
+ ### Spawn `gsp-brand-coherence`
148
156
 
149
- .yml preset
150
- colors: {primary}, {secondary}, {accent}
151
- typography: {primary font}, {secondary font}
152
- intensity: variance {N}/10, motion {N}/10, density {N}/10
157
+ Pass inline:
158
+ - **Agent methodology** (loaded above)
159
+ - **Content of** `{brand-name}.yml`
160
+ - **Content of** `guidelines.html`
161
+ - `archetype` and `brand_heartbeat`
153
162
 
154
- STYLE.md
155
- patterns: {N} components defined
156
- constraints: {N} never, {N} always rules
157
- effects: {interaction vocabulary list}
158
- bold bets: {1-line summary of boldest bet}
163
+ The agent returns a structured coherence report. No back-and-forth — one response.
159
164
 
160
- open guidelines.html in your browser to preview
165
+ ### Present the report
161
166
 
167
+ Display the agent's report, then add:
168
+
169
+ ```
170
+ → open guidelines.html in your browser
162
171
  ─────────────────────────────────────
163
172
  ```
164
173
 
165
174
  Use `AskUserQuestion`:
166
- - **Looks good** — "The brand looks right, build components"
167
- - **Adjust tokens** — "I want to tweak colors, typography, or spacing"
168
- - **Adjust patterns** — "I want to change component rules or constraints"
169
- - **Adjust intensity** — "More/less creative, more/less motion, more/less density"
175
+ - **Looks right** — "Coherent build components"
176
+ - **Push [tension 1]** — pre-fill with the specific gap from the report
177
+ - **Push [tension 2]** — same
178
+ - **Adjust something else** — "I want to change colors / type / patterns"
170
179
 
171
- 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.
180
+ If refinement needed invoke `/gsp-brand-refine` with the specific tension. After it completes, re-spawn `gsp-brand-coherence` with the updated `.yml` and `guidelines.html`. Only proceed to Step 3.75 when the archetype tension is present and dials are coherent.
172
181
 
173
182
  ## Step 3.75: Perspective check
174
183
 
175
- Load persona profiles from `{BRAND_PATH}/BRIEF.md` and present stakeholder reactions:
184
+ Load persona profiles and the `brand_heartbeat` from `{BRAND_PATH}/BRIEF.md`. Present stakeholder reactions framed around the compass:
176
185
 
177
- "Stress-testing the brand visuals:
186
+ ```
187
+ stress-testing against: "{brand_heartbeat}"
178
188
 
179
- {primary persona name}: {would this visual language feel trustworthy and appropriate?}
180
- Skeptic: {are the constraints too restrictive or too loose? Is the intensity calibrated right?}
181
- {top competitor}: {is the brand visually differentiated?}"
189
+ {primary persona name}: {does this visual language make them feel that sentence?}
190
+ Skeptic: {does the intensity feel calibrated or is it playing it safe?}
191
+ {top competitor}: {is the brand visually distinct enough to own this feeling?}
192
+ ```
182
193
 
183
194
  Use `AskUserQuestion`:
184
- - **Lock it in** — "The brand is solid, build components"
185
- - **Adjust** — "One of these concerns resonates — I want to change something"
195
+ - **Lock it in** — "The brand earns that feeling — build components"
196
+ - **Adjust** — "One of these concerns resonates"
186
197
 
187
- If adjust → use `/gsp-brand-refine` with the concern, then re-present. If confirmed → proceed to components.
198
+ If adjust → invoke `/gsp-brand-refine` with the concern, re-present. If confirmed → proceed to components.
188
199
 
189
200
  ## Step 4: Spawn brand engineer — Pass 2: Components
190
201
 
@@ -212,6 +223,14 @@ Update `{BRAND_PATH}/STATE.md`:
212
223
  - Record completion date
213
224
  - Set Prettiness Level to 100%
214
225
 
226
+ Update `.design/CLAUDE.md` — replace the existing `### {brand-name}` entry (written by gsp-brand-brief when started) with the completed entry:
227
+
228
+ ```markdown
229
+ ### {brand-name} · complete · {DATE}
230
+ "{brand_heartbeat}"
231
+ .design/branding/{brand-name}/patterns/ — guidelines.html · STYLE.md · {brand-name}.yml
232
+ ```
233
+
215
234
  ## Step 5: Phase transition output
216
235
 
217
236
  Invoke `/gsp-phase-transition` with phase `guidelines` and output directory `{BRAND_PATH}/patterns/`.
@@ -224,6 +243,7 @@ Also display a brand summary after the standard transition — this is the final
224
243
 
225
244
  ```
226
245
  brand complete — {brand-name}
246
+ "{brand_heartbeat}"
227
247
 
228
248
  discover {key finding}
229
249
  strategy {archetype}, {positioning}, {top voice attributes}
@@ -1,5 +1,7 @@
1
1
  # Design Token Standards
2
2
 
3
+ > **GSP approach (v0.8.0+):** GSP presets use **shadcn/ui-native token names** directly — keys in `.yml` files map 1:1 to shadcn CSS variables (`background`, `foreground`, `primary`, `accent`, etc.). The W3C format below is background context on token standards in general; it does not reflect GSP's flat, shadcn-native schema. See `bin/theme-css.js` for how GSP converts `.yml` tokens to CSS.
4
+
3
5
  **Format:** W3C Design Tokens Community Group specification
4
6
 
5
7
  ---
@@ -0,0 +1,167 @@
1
+ # guidelines.html — Structure Spec
2
+
3
+ The `guidelines.html` is the visual conference of the entire brand pipeline — every phase of the branding diamond distilled into one self-rendering document:
4
+
5
+ - **Discover** → personas
6
+ - **Strategy** → positioning, voice
7
+ - **Identity** → color, typography, visual elements, logo
8
+ - **Patterns** → components, tokens
9
+
10
+ It uses the brand's own tokens, type, and primitives to render itself. One file, no build step, open in a browser. When someone opens this file, they should understand the brand completely — who it's for, what it stands for, and how it looks and speaks.
11
+
12
+ **Every element in this document must be derived from the brand pipeline outputs.** There are no defaults, no fallbacks, no generic treatments. If the brand is dark and editorial, the doc is dark and editorial. If the brand is warm and rounded, the doc is warm and rounded. The guidelines file is not a template being filled in — it is a brand artifact being built from the ground up using everything the pipeline produced.
13
+
14
+ ## `:root` — shadcn-native token names
15
+
16
+ Use these exact CSS variable names so the file maps 1:1 with the shadcn token system. All values come from the brand's `.yml` tokens — use OKLCH values from palettes.json where available.
17
+
18
+ ```css
19
+ :root {
20
+ /* shadcn core */
21
+ --background: ...; /* page background */
22
+ --foreground: ...; /* primary text */
23
+ --primary: ...; /* brand primary color */
24
+ --primary-foreground: ...; /* text on primary */
25
+ --secondary: ...; /* secondary surface */
26
+ --secondary-foreground: ...;
27
+ --muted: ...; /* muted surface */
28
+ --muted-foreground: ...; /* secondary text */
29
+ --accent: ...; /* accent color (the memorable one) */
30
+ --accent-foreground: ...;
31
+ --destructive: ...; /* error state */
32
+ --border: ...; /* border color */
33
+ --ring: ...; /* focus ring */
34
+ --radius: ...; /* base radius */
35
+
36
+ /* Brand-specific extensions */
37
+ --font-display: ...; /* heading/editorial font */
38
+ --font-body: ...; /* body/UI font */
39
+ --font-mono: ...; /* data/code font */
40
+ --ease: ...; /* brand easing curve */
41
+ }
42
+ ```
43
+
44
+ ## Primitive classes
45
+
46
+ Define only the primitives the brand actually uses. Their implementation is derived from the brand's identity — intensity.variance, visual_direction, effects vocabulary. Don't define a class that doesn't serve this brand.
47
+
48
+ ```css
49
+ /* examples — implement only what fits the brand */
50
+ .frosted-glass /* glass surface — opacity/blur derived from brand intensity */
51
+ .frosted-glass-strong /* heavier glass — for hero overlays */
52
+ .grain /* noise texture — only if brand uses texture */
53
+ .glow /* ambient radial glow — only if brand uses glow */
54
+ .atmosphere /* full-bleed animated gradient — derived from brand palette */
55
+ ```
56
+
57
+ ## Layout primitives
58
+
59
+ ```css
60
+ .container /* max-width wrapper, responsive padding */
61
+ section /* section spacing — density derived from brand intensity */
62
+ .section-label /* eyebrow label */
63
+ .section-heading /* large section heading */
64
+ ```
65
+
66
+ ## Sections
67
+
68
+ The template defines a baseline section order. Follow it. If the brand warrants additional sections beyond this list — imagery style, motion principles, iconography, spatial system, co-branding rules, etc. — add them where they fit. Number sections sequentially. Each section gets an `id` for sidebar navigation.
69
+
70
+ ### Navigation — always
71
+ Fixed left sidebar. Table of contents linking to every section. Brand-derived styling — font, color, spacing, all from the pipeline. Hidden on mobile.
72
+
73
+ **Section ID convention:** every section in the doc must have an `id` attribute that the nav links to:
74
+
75
+ ```html
76
+ <!-- nav -->
77
+ <nav id="toc" style="position: fixed; left: 0; top: 0; height: 100vh; width: 180px; z-index: 50;
78
+ overflow-y: auto; display: flex; flex-direction: column;
79
+ justify-content: center; padding: 0 28px; gap: 8px;
80
+ border-right: 1px solid var(--border); background: var(--background);">
81
+ <a href="#hero" class="toc-link">Brand</a>
82
+ <a href="#logo" class="toc-link">Logo</a>
83
+ <a href="#positioning" class="toc-link">Positioning</a>
84
+ <a href="#color" class="toc-link">Color</a>
85
+ <a href="#typography" class="toc-link">Typography</a>
86
+ <a href="#visuals" class="toc-link">Visual Elements</a>
87
+ <a href="#components" class="toc-link">Components</a>
88
+ <a href="#personas" class="toc-link">Personas</a>
89
+ <a href="#voice" class="toc-link">Voice</a>
90
+ <!-- add entries for any brand-specific sections -->
91
+ </nav>
92
+
93
+ <!-- main content offset -->
94
+ <main style="margin-left: 180px;">
95
+
96
+ <section id="hero">...</section>
97
+ <section id="logo">...</section>
98
+ <!-- each section id matches its toc-link href -->
99
+
100
+ </main>
101
+ ```
102
+
103
+ `.toc-link` styling: use the brand's body font, `--muted-foreground` at rest, `--foreground` on hover, no underline. Active state via a 10-line scroll listener that adds `.active` (accent color) to the link whose section is in view — include this JS inline at the bottom of `<body>`. Keep it small.
104
+
105
+ ### Hero — always
106
+ Defined entirely by the brand. Visual direction, archetype, and identity outputs determine the background, typography scale, layout density, and supporting content. No default treatment.
107
+
108
+ **The headline must be the manifesto line from `positioning.md`.** If strategy phase is not complete, fall back to `brand_heartbeat` from `BRIEF.md`. Never generate a generic headline — this line was earned through the pipeline and must appear here.
109
+
110
+ The hero should feel like opening a brand book. Someone who sees it should understand the brand's energy before reading a single label.
111
+
112
+ ### Logo
113
+ Logo marks (icon, wordmark, lockup) on the brand's background. Composition rules, clear space, forbidden uses. Skip if no logo was defined in identity.
114
+
115
+ ### Positioning
116
+ Brand promise, point of view, manifesto line. Rendered as editorial content using the brand's type hierarchy and visual language.
117
+
118
+ ### Color
119
+ Swatch grid: name, hex, OKLCH per color. Grouped by role. Contrast pairs. Layout derived from the brand.
120
+
121
+ ### Typography
122
+ Show the full type scale rendered live in the actual fonts — not a table, not a screenshot. Each step is a real HTML element styled with the brand's CSS vars.
123
+
124
+ For each scale step show:
125
+ - The text rendered at its actual size
126
+ - Label: step name + font family + weight + size + line-height
127
+ - A sample sentence or phrase that fits the brand voice (not "The quick brown fox")
128
+
129
+ Render all steps in sequence from largest to smallest so the scale relationship is visible at a glance. Show each typeface family in its own block — display font, body font, mono font — with the scale steps that use it.
130
+
131
+ ```html
132
+ <!-- example step -->
133
+ <div style="margin-bottom: 48px;">
134
+ <div class="scale-step" style="font-family: var(--font-display); font-size: 4rem; line-height: 1.05; letter-spacing: -0.03em;">
135
+ We ship what others pitch.
136
+ </div>
137
+ <div class="scale-meta">Display · Instrument Serif · 400 · 64px / 1.05</div>
138
+ </div>
139
+ ```
140
+
141
+ Include pairing notes when the brand uses multiple typefaces: which font handles which role, and what the contrast between them communicates.
142
+
143
+ ### Visual Elements
144
+ The brand's signature motifs: textures, dividers, shapes, glows, atmospheric effects, SVG elements. Each shown with its composition rule — when to use it, how much, what it must never do.
145
+
146
+ ### Components
147
+ Live component previews in brand tokens: buttons, inputs, cards, badges. Include only if the brand has a meaningfully distinctive component style.
148
+
149
+ ### Personas
150
+ Each persona as a branded card: name, role, frustration, aspiration. Styled in the brand's own visual language.
151
+
152
+ ### Voice
153
+ Never / always rules as styled components. Monospace prefix (`x` never, `>` always).
154
+
155
+ ### + Brand-specific sections
156
+ Add sections as needed to fully convey the brand. Examples: Imagery, Motion, Iconography, Spatial System, Co-branding. If the pipeline produced it and it shapes how the brand is applied, it belongs here.
157
+
158
+ ## Mobile
159
+
160
+ Single `@media (max-width: 768px)` block. Hide sidebar nav. Stack grids. Reduce section padding. Scale type with `clamp()`.
161
+
162
+ ## Quality bar
163
+
164
+ - Open in browser → immediately recognizable as this brand, not a generic template
165
+ - `:root` token names match shadcn — a dev can paste directly into `globals.css`
166
+ - Every visual decision traces back to a pipeline artifact
167
+ - No placeholder content — if a section has nothing real to show, it's omitted
@@ -0,0 +1,86 @@
1
+ <role>
2
+ You are a brand coherence auditor spawned by `/gsp-brand-guidelines` after the brand-engineer produces its first-pass artifacts.
3
+
4
+ Your only job is to evaluate whether the output is coherent with the brand's archetype and intensity intentions — and return a structured report. You do not make changes. You do not ask questions. You return one report.
5
+ </role>
6
+
7
+ <inputs>
8
+ You receive inlined:
9
+ - `{brand-name}.yml` — the generated preset (intensity dials, tokens, patterns, constraints)
10
+ - `guidelines.html` — the generated visual guide (use for component-level verification)
11
+ - `archetype` — the brand's chosen archetype
12
+ - `brand_heartbeat` — the emotional compass confirmed in the brief
13
+ </inputs>
14
+
15
+ <methodology>
16
+ ## Step 1: Archetype gate
17
+
18
+ Each archetype has a signature tension it must express. Answer this question first — it is the primary check. Intensity dials are secondary.
19
+
20
+ | Archetype | Signature question |
21
+ |-----------|-------------------|
22
+ | Jester | What specific rule is being broken in the visual system? If nothing is broken, it's not Jester enough. |
23
+ | Rebel | What visual convention is explicitly rejected? |
24
+ | Creator | What is distinctively crafted that couldn't come from a default template? |
25
+ | Sage | Is the restraint active (every reduction intentional) or passive (just plain)? |
26
+ | Explorer | Where is the sense of movement, discovery, or possibility? |
27
+ | Hero | Does the visual language communicate strength and achievement? |
28
+ | Caregiver | Does it feel warm and trustworthy without being corporate? |
29
+ | Lover | Is there sensuality, richness, or beauty in the material choices? |
30
+ | Ruler | Does it command authority through precision and restraint? |
31
+ | Magician | Is there a sense of transformation or the unexpected? |
32
+ | Innocent | Is the simplicity purposeful and delightful, not just empty? |
33
+ | Everyman | Does it feel accessible and genuine, not dumbed-down? |
34
+
35
+ If the archetype's signature tension is absent from the output, that is the primary tension to flag — regardless of what the dials say.
36
+
37
+ ## Step 2: Intensity dial scoring
38
+
39
+ Read the declared dial values from `intensity:` in the `.yml`. Then infer what the token values actually express visually.
40
+
41
+ Work primarily from the `.yml` tokens — they are the source of truth:
42
+ - `variance` — expressed by: radius values, shadow complexity, unexpected color usage, spacing irregularity
43
+ - `motion` — expressed by: transition durations, animation presence in effects, interaction vocabulary richness
44
+ - `density` — expressed by: spacing scale, font size range, information layer count
45
+
46
+ Cross-check against `guidelines.html` for specific component implementations (button styles, card treatments, border-radius in practice).
47
+
48
+ Score each dial: **declared N/10 → expressed N/10**. A gap of ±2 or more is a coherence miss worth flagging.
49
+
50
+ ## Step 3: Bold bet
51
+
52
+ Identify the single most distinctive choice in the output — the thing that would be hardest to achieve with a default template. One line.
53
+
54
+ ## Step 4: Surface tensions
55
+
56
+ Rank all gaps found. Return the top 2 — specific and actionable:
57
+ - Not "could be bolder"
58
+ - Yes: "border-radius is 4px across all components — that reads as variance 3/10, declared dial is 8/10"
59
+ - Yes: "button uses standard padding and default shape — no Jester rule broken in the primary interactive element"
60
+
61
+ If no gaps ≥ 2 points and the archetype tension is present, there are no tensions to surface.
62
+ </methodology>
63
+
64
+ <output>
65
+ Return exactly this format — nothing else:
66
+
67
+ ```
68
+ {brand-name} · {archetype} · {brand_heartbeat}
69
+
70
+ intensity dials
71
+ variance declared {N}/10 → reads {N}/10 {✓ or ⚠}
72
+ motion declared {N}/10 → reads {N}/10 {✓ or ⚠}
73
+ density declared {N}/10 → reads {N}/10 {✓ or ⚠}
74
+
75
+ archetype {✓ tension present: one-line description} or {⚠ tension absent: one-line description}
76
+
77
+ tensions
78
+ 1. {specific gap — or "none" if coherent}
79
+ 2. {specific gap — or omit if only one}
80
+
81
+ bold bet
82
+ {one-line description of most distinctive choice}
83
+ ```
84
+
85
+ No preamble. No explanation. Just the report.
86
+ </output>
@@ -9,8 +9,8 @@ The identity phase produced: logo directions, color system (with OKLCH palettes)
9
9
  <inputs>
10
10
  - Identity chunks: color-system.md, typography.md, logo-directions.md, imagery-style.md (all enriched by domain skills)
11
11
  - Identity palettes.json (OKLCH scales)
12
- - BRIEF.md
13
- - Strategy chunks: voice-and-tone.md, archetype.md, positioning.md
12
+ - BRIEF.md — including `brand_heartbeat` (the emotional compass sentence confirmed in the brief phase)
13
+ - Strategy chunks: voice-and-tone.md, archetype.md, positioning.md — `manifesto_line` from positioning.md is the hero headline; fall back to `brand_heartbeat` if not present
14
14
  - system_strategy and tech_stack from config.json
15
15
  - `.design/system/STACK.md`, `COMPONENTS.md`, `TOKENS.md` (if exist)
16
16
  - style_base from config.json + preset `.yml` (if set) — the starting scaffold
@@ -42,7 +42,15 @@ The identity phase produced: logo directions, color system (with OKLCH palettes)
42
42
 
43
43
  4. **Component overrides + custom specs** — only for components that need treatment beyond tokens.
44
44
 
45
- 5. **`guidelines.html`** — self-contained visual brand guide. This is the primary artifact users see. Single HTML file with embedded CSS, no external dependencies. Shows: brand colors as swatches with hex/OKLCH values, type scale rendered in the actual fonts, component previews (cards, buttons, inputs, badges) styled with the brand tokens, spacing/elevation visualizations, constraint summary. Design it to feel like the brand — use the brand's own colors, type, and patterns to present itself.
45
+ 5. **`guidelines.html`** — the visual conference of the entire brand pipeline. Every phase distilled into one self-rendering document: personas (discover), positioning + voice (strategy), color + type + visual elements + logo (identity), components (patterns). Follow the structure spec passed in the prompt exactly. The file IS the brand — it renders itself using the brand's own tokens, type, and primitives. Key requirements:
46
+ - `:root` uses shadcn-native CSS variable names (from spec) — a dev can paste these directly into `globals.css`
47
+ - Define only the primitive classes the brand actually uses — don't add `.frosted-glass` to a brand that has no glass aesthetic
48
+ - Hero is always required; all other sections are conditional — include only what the brand actually has. Sections in order when present: Hero (metric strip) → Logo → Positioning → Color → Typography → Visual Elements → Components → Personas → Voice → Custom Components
49
+ - Hero must feel alive: use a CSS animated gradient atmosphere (or embed a video link if one was referenced in the brief), frosted glass nav, large typographic headline in brand voice, 3-4 KPIs from the brief in the metric strip
50
+ - Voice section renders brand rules as `.never-list` / `.always-list` components
51
+ - Mobile responsive via a single `@media (max-width: 768px)` block
52
+ - No external dependencies except Google Fonts `@import`
53
+ - The brand's aesthetic sets the tone: dark brand → dark doc; light brand → light doc; match intensity.variance
46
54
 
47
55
  ## Inheritance from style_base
48
56
 
@@ -66,7 +74,7 @@ Read `system_strategy` from brand config:
66
74
 
67
75
  Leverage existing UI libraries — don't rewrite from scratch.
68
76
 
69
- **Tier 1: Token mapping** (always) — `components/token-mapping.md`. Maps brand tokens to library's theming API. Copy-paste-ready. See `references/token-mapping.md` for the CSS generation spec.
77
+ **Tier 1: Token mapping** (always) — `components/token-mapping.md`. Maps brand tokens to library's theming API. Copy-paste-ready. Generate the CSS variables block by running `node bin/theme-css.js {brand-name}.yml` it outputs a ready-to-paste `:root`/`.dark` block with OKLCH values. Token names in `.yml` are 1:1 with shadcn/ui CSS var names — no translation needed.
70
78
 
71
79
  **Tier 2: Override specs** (selective) — one file per component needing treatment beyond tokens. Why it's overridden, code hints.
72
80
 
@@ -88,7 +96,7 @@ Write operational artifacts to the brand's guidelines directory (path provided b
88
96
 
89
97
  - **`{brand-name}.yml`** — Single source of truth. Full preset schema: tokens, intensity, patterns, constraints, effects, dark_mode.
90
98
  - **`STYLE.md`** — Agent-readable contract rendered from `.yml` + philosophy + bold bets. Follows `templates/phases/style.md`.
91
- - **`guidelines.html`** — Self-contained visual brand guide. Single HTML file with embedded CSS — no external deps. Renders the brand using its own tokens: color swatches, type scale in actual fonts, component previews (card, button, input, badge), spacing/elevation vis, constraints. This is what the user sees.
99
+ - **`guidelines.html`** — Self-rendering visual brand guide. Single HTML file with embedded CSS — no external deps except Google Fonts. `:root` uses shadcn-native CSS var names. Section order: Navigation (sidebar) Hero (manifesto line as headline) Logo Positioning Color Typography → Visual Elements → Components → Personas → Voice → any brand-specific additions. Define only the primitive classes the brand actually uses. This is what the user sees — make it feel like the brand.
92
100
 
93
101
  ### Components
94
102