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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: project-review
|
|
2
|
+
name: gsp-project-review
|
|
3
3
|
description: QA review — validate implementation against designs
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: opus
|
|
@@ -28,7 +28,6 @@ QA validate the codebase implementation against design intent.
|
|
|
28
28
|
</objective>
|
|
29
29
|
|
|
30
30
|
<execution_context>
|
|
31
|
-
@${CLAUDE_SKILL_DIR}/../../prompts/11-deliverable-reviewer.md
|
|
32
31
|
@${CLAUDE_SKILL_DIR}/../../templates/phases/review.md
|
|
33
32
|
</execution_context>
|
|
34
33
|
|
|
@@ -43,7 +42,7 @@ Read `{PROJECT_PATH}/brand.ref` → set `BRAND_PATH`.
|
|
|
43
42
|
|
|
44
43
|
Read `{PROJECT_PATH}/config.json` to get `implementation_target`, `design_scope`, `codebase_type`.
|
|
45
44
|
|
|
46
|
-
**Prior code accessibility audit:** Check if `{PROJECT_PATH}/review/accessibility-audit.md` exists from a prior `/gsp
|
|
45
|
+
**Prior code accessibility audit:** Check if `{PROJECT_PATH}/review/accessibility-audit.md` exists from a prior `/gsp-accessibility --code` run. If yes, load it — the reviewer will reference these findings instead of performing inline a11y checks.
|
|
47
46
|
|
|
48
47
|
### Load all artifacts
|
|
49
48
|
|
|
@@ -56,7 +55,7 @@ Read `{PROJECT_PATH}/config.json` to get `implementation_target`, `design_scope`
|
|
|
56
55
|
**Design:** Read `{PROJECT_PATH}/design/INDEX.md` → load all screen chunks.
|
|
57
56
|
|
|
58
57
|
**Brand patterns:** Read `{BRAND_PATH}/patterns/INDEX.md` → load foundation + component chunks.
|
|
59
|
-
Also read `{BRAND_PATH}/patterns/
|
|
58
|
+
Also read `{BRAND_PATH}/patterns/{brand-name}.yml` (the brand's token/style source of truth).
|
|
60
59
|
|
|
61
60
|
**Brand identity (selective):** Read `{BRAND_PATH}/identity/imagery-style.md` (if exists) — needed for imagery audit.
|
|
62
61
|
|
|
@@ -76,7 +75,7 @@ Also read `{BRAND_PATH}/patterns/tokens.json`.
|
|
|
76
75
|
3. Write `{PROJECT_PATH}/review/INDEX.md`
|
|
77
76
|
4. Update `{PROJECT_PATH}/exports/INDEX.md` between `<!-- BEGIN:review -->` and `<!-- END:review -->` with populated table
|
|
78
77
|
5. Update `{PROJECT_PATH}/STATE.md` — set Phase 6 (Review) to `complete` or `needs-revision`
|
|
79
|
-
6. Route: display verdict and suggest `/gsp
|
|
78
|
+
6. Route: display verdict and suggest `/gsp-launch` or re-run `/gsp-project-review`
|
|
80
79
|
7. **Stop here**
|
|
81
80
|
|
|
82
81
|
## Step 2: Spawn reviewer
|
|
@@ -86,14 +85,13 @@ Spawn the `gsp-reviewer` agent with:
|
|
|
86
85
|
- Actual codebase file paths (from BUILD-LOG.md)
|
|
87
86
|
- `git diff` output
|
|
88
87
|
- Design chunks
|
|
89
|
-
- Brand system chunks +
|
|
88
|
+
- Brand system chunks + `{brand-name}.yml`
|
|
90
89
|
- Brief chunks
|
|
91
90
|
- Critique fixes (to verify resolution)
|
|
92
91
|
- `.design/system/COMPONENTS.md` (when exists — to verify existing components weren't broken)
|
|
93
92
|
- MANIFEST.md (when exists — to verify build claims match reality)
|
|
94
93
|
- `codebase_type` from config.json
|
|
95
|
-
-
|
|
96
|
-
- The review output template
|
|
94
|
+
- Review output template (from execution_context)
|
|
97
95
|
- **Output path:** `{PROJECT_PATH}/review/`
|
|
98
96
|
- Prior code accessibility findings (if `{PROJECT_PATH}/review/accessibility-audit.md` exists — tell reviewer to reference these instead of performing inline a11y checks; reviewer keeps inline checks as fallback if no prior audit exists)
|
|
99
97
|
- **Clear instruction:** "Review actual codebase files, not `.design/build/` specs. Use Grep to search for hardcoded values. Use `git diff` to verify changes. Reference actual file paths in issues."
|
|
@@ -173,7 +171,7 @@ If verdict is **Fail**:
|
|
|
173
171
|
|
|
174
172
|
## Step 6: Phase transition output
|
|
175
173
|
|
|
176
|
-
|
|
174
|
+
Invoke `/gsp-phase-transition` with phase `review` and output directory `{PROJECT_PATH}/review/`.
|
|
177
175
|
|
|
178
|
-
If review identified brand-level issues (token values that don't work in context), note: "Some issues are brand-level — run `/gsp
|
|
176
|
+
If review identified brand-level issues (token values that don't work in context), note: "Some issues are brand-level — run `/gsp-brand-refine` to adjust tokens without re-running identity."
|
|
179
177
|
</process>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: scaffold
|
|
2
|
+
name: gsp-scaffold
|
|
3
3
|
description: Deterministic stack setup — install deps, create configs, verify build compiles
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: sonnet
|
|
@@ -16,8 +16,8 @@ Composable stack setup skill. No agent — all inline Bash commands. Determinist
|
|
|
16
16
|
Reads project config and stack state, installs dependencies, creates config files, installs component library primitives, and verifies the build compiles. Produces `SCAFFOLD-LOG.md`.
|
|
17
17
|
|
|
18
18
|
Works two ways:
|
|
19
|
-
1. **Standalone** — user runs `/gsp
|
|
20
|
-
2. **As a building block** — `/gsp
|
|
19
|
+
1. **Standalone** — user runs `/gsp-scaffold` directly to set up a project's stack
|
|
20
|
+
2. **As a building block** — `/gsp-project-build` invokes this as Phase 1 before spawning builder agents
|
|
21
21
|
</context>
|
|
22
22
|
|
|
23
23
|
<objective>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: start
|
|
2
|
+
name: gsp-start
|
|
3
3
|
description: Start here — picks up where you left off
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: sonnet
|
|
@@ -30,7 +30,7 @@ Through a sequential one-question-at-a-time conversation, gather a complete brie
|
|
|
30
30
|
</objective>
|
|
31
31
|
|
|
32
32
|
<execution_context>
|
|
33
|
-
@${CLAUDE_SKILL_DIR}
|
|
33
|
+
@${CLAUDE_SKILL_DIR}/questioning.md
|
|
34
34
|
</execution_context>
|
|
35
35
|
|
|
36
36
|
<rules>
|
|
@@ -64,7 +64,7 @@ Scan `.design/` for existing brands and projects:
|
|
|
64
64
|
|
|
65
65
|
### Step 1b: Run design system scan (background)
|
|
66
66
|
|
|
67
|
-
Spawn `/gsp
|
|
67
|
+
Spawn `/gsp-design-system` as a background agent (`run_in_background: true`, `subagent_type: "general-purpose"`). It writes to `.design/system/` — don't wait for it. Store the task reference for the brand essence questions or Step 4.
|
|
68
68
|
|
|
69
69
|
### Step 1c: Greet
|
|
70
70
|
|
|
@@ -80,7 +80,7 @@ Adapt the greeting based on what the scan revealed. Use plain text with Unicode
|
|
|
80
80
|
- **Summary box:** `┌──┐│└──┘` border with key-value pairs inside
|
|
81
81
|
|
|
82
82
|
**Fresh start (no `.design/`):**
|
|
83
|
-
Show ` /gsp
|
|
83
|
+
Show ` /gsp- ◇◇\n looks like a fresh start.` (append codebase scanning note if `package.json` exists). Use `AskUserQuestion` with: Brand identity, Design project, Both (brand + project), Quick project.
|
|
84
84
|
|
|
85
85
|
**Legacy `.design/` detected (flat structure, pre-0.4.0):**
|
|
86
86
|
Acknowledge the legacy project. Use `AskUserQuestion`: Start fresh brand, Start design project, Keep working.
|
|
@@ -98,7 +98,7 @@ Show compact brand (single-line if complete) + full project pipeline flow. Then
|
|
|
98
98
|
When codebase has been scanned (`.design/system/STACK.md` exists), show a Summary Box using data from STACK.md and COMPONENTS.md:
|
|
99
99
|
```
|
|
100
100
|
┌──────────────────────────────────────────┐
|
|
101
|
-
│ /gsp
|
|
101
|
+
│ /gsp- ◆◈ │
|
|
102
102
|
│ │
|
|
103
103
|
│ framework Next.js 14 │
|
|
104
104
|
│ styling Tailwind + shadcn/ui │
|
|
@@ -118,7 +118,7 @@ From the greeting exchange, determine which flow to run:
|
|
|
118
118
|
- **Design project** → Check for brands first. If none exist, explain they need a brand first. Offer to create one, then auto-transition to project flow.
|
|
119
119
|
- **Full design (brand + project)** → Brand flow (Step 3), with E2E flag so brand completion auto-transitions to project flow (Step 4)
|
|
120
120
|
- **Quick project** → Quick flow (Step 5)
|
|
121
|
-
- **Continue existing work** → route to `/gsp
|
|
121
|
+
- **Continue existing work** → route to `/gsp-progress`
|
|
122
122
|
|
|
123
123
|
## Step 3: Brand flow
|
|
124
124
|
|
|
@@ -196,10 +196,10 @@ Skip any question you can already answer from prior context. Don't over-ask.
|
|
|
196
196
|
|
|
197
197
|
6. Route using `AskUserQuestion` — always offer Continue / Stop here / What happens next:
|
|
198
198
|
|
|
199
|
-
- **Brand-only, new →** continue to `/gsp
|
|
200
|
-
- **Brand-only, evolve →** continue to `/gsp
|
|
201
|
-
- **E2E, new →** continue to `/gsp
|
|
202
|
-
- **E2E, evolve →** continue to `/gsp
|
|
199
|
+
- **Brand-only, new →** continue to `/gsp-brand-research`
|
|
200
|
+
- **Brand-only, evolve →** continue to `/gsp-brand-audit`
|
|
201
|
+
- **E2E, new →** continue to `/gsp-brand-research` (complete the entire brand pipeline first — research → strategy → identity → patterns — then auto-transition to Step 4 for project setup). Set `"e2e": true` in config.json so brand-patterns knows to route to project flow after completion.
|
|
202
|
+
- **E2E, evolve →** continue to `/gsp-brand-audit` (complete full brand pipeline, then auto-transition to Step 4). Set `"e2e": true` in config.json.
|
|
203
203
|
|
|
204
204
|
## Step 4: Project flow
|
|
205
205
|
|
|
@@ -258,8 +258,8 @@ Skip any question you can already answer from the codebase scan. Don't over-ask.
|
|
|
258
258
|
- `.design/projects/{name}/exports/INDEX.md` from `${CLAUDE_SKILL_DIR}/../../templates/exports-index.md`
|
|
259
259
|
|
|
260
260
|
9. Route using `AskUserQuestion`: "Project set up! Ready to scope what you're building?"
|
|
261
|
-
- **Continue to scoping** — "Scope the project now" → invoke `/gsp
|
|
262
|
-
- **Stop here** — "I'll come back later" → confirm files are saved, show how to resume with `/gsp
|
|
261
|
+
- **Continue to scoping** — "Scope the project now" → invoke `/gsp-project-brief` via Skill tool
|
|
262
|
+
- **Stop here** — "I'll come back later" → confirm files are saved, show how to resume with `/gsp-start`
|
|
263
263
|
- **What happens next?** — "Explain the scoping phase" → explain what project-brief does (screen list, component adaptations, gap analysis) and how it uses the brief
|
|
264
264
|
|
|
265
265
|
## Step 5: Quick project flow
|
|
@@ -279,8 +279,8 @@ Read `${CLAUDE_SKILL_DIR}/../../skills/gsp-style/styles/INDEX.yml` and present s
|
|
|
279
279
|
mkdir -p .design/branding/_style-{preset}/patterns/
|
|
280
280
|
```
|
|
281
281
|
|
|
282
|
-
2. Invoke `/gsp
|
|
283
|
-
- `
|
|
282
|
+
2. Invoke `/gsp-style {preset}` via Skill tool — this writes:
|
|
283
|
+
- `{preset}.yml` (brand style preset)
|
|
284
284
|
- Foundation chunks (color, typography, spacing, elevation, radius)
|
|
285
285
|
- `INDEX.md`
|
|
286
286
|
|
|
@@ -324,7 +324,7 @@ Continue directly to Step 4 (project flow) with these modifications:
|
|
|
324
324
|
### Upgrade path
|
|
325
325
|
|
|
326
326
|
If a user later wants full branding, they can:
|
|
327
|
-
1. Run `/gsp
|
|
327
|
+
1. Run `/gsp-start` → "Brand identity" to create a real brand
|
|
328
328
|
2. Full diamond produces identity + patterns with real tokens
|
|
329
329
|
3. Update the project's `brand.ref` to point to the new brand
|
|
330
330
|
4. Re-run build phases — they pick up the new tokens automatically
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: style
|
|
2
|
+
name: gsp-style
|
|
3
3
|
description: Apply a design style — get tokens and foundations without the branding diamond
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: sonnet
|
|
@@ -12,10 +12,10 @@ allowed-tools:
|
|
|
12
12
|
- Grep
|
|
13
13
|
---
|
|
14
14
|
<context>
|
|
15
|
-
You are a GSP style applicator. You produce
|
|
15
|
+
You are a GSP style applicator. You produce a brand `.yml` preset and foundation chunks from style presets — bypassing the full branding diamond (discover → strategy → identity → system). Downstream agents (designer, builder) consume the `.yml` preset regardless of how it was produced.
|
|
16
16
|
|
|
17
17
|
This is a standalone composable skill. It works two ways:
|
|
18
|
-
1. **Standalone** — user runs `/gsp
|
|
18
|
+
1. **Standalone** — user runs `/gsp-style cyberpunk` directly, gets visual preview + tokens
|
|
19
19
|
2. **As a building block** — agents invoke this skill during workflows, getting tokens only
|
|
20
20
|
</context>
|
|
21
21
|
|
|
@@ -23,21 +23,21 @@ This is a standalone composable skill. It works two ways:
|
|
|
23
23
|
Apply a named style preset to produce production-ready design tokens and foundation chunks.
|
|
24
24
|
|
|
25
25
|
**Input:** Style name(s), optional flags (`--list`, `--preview`)
|
|
26
|
-
**Output:** `
|
|
26
|
+
**Output:** `{preset-name}.yml` + `STYLE.md` + `INDEX.md` in the target system directory
|
|
27
27
|
**Agent:** None — token expansion from YAML presets is handled inline
|
|
28
28
|
</objective>
|
|
29
29
|
|
|
30
30
|
<execution_context>
|
|
31
31
|
@${CLAUDE_SKILL_DIR}/styles/INDEX.yml
|
|
32
|
-
@${CLAUDE_SKILL_DIR}
|
|
33
|
-
@${CLAUDE_SKILL_DIR}
|
|
32
|
+
@${CLAUDE_SKILL_DIR}/../gsp-brand-guidelines/design-tokens.md
|
|
33
|
+
@${CLAUDE_SKILL_DIR}/chunk-format.md
|
|
34
34
|
@${CLAUDE_SKILL_DIR}/../../templates/phases/patterns.md
|
|
35
35
|
</execution_context>
|
|
36
36
|
|
|
37
37
|
<rules>
|
|
38
38
|
- Always use `AskUserQuestion` for user interaction — never prompt via plain text
|
|
39
39
|
- One decision per question — never batch multiple questions in a single message
|
|
40
|
-
- `
|
|
40
|
+
- Token values in `.yml` presets follow W3C Design Tokens format from `gsp-brand-guidelines/design-tokens.md`
|
|
41
41
|
- When mixing styles, later style values override earlier ones (last-wins precedence)
|
|
42
42
|
- Never mix clashing styles — check the compatibility matrix first
|
|
43
43
|
</rules>
|
|
@@ -49,11 +49,11 @@ Read the user's input to determine the mode:
|
|
|
49
49
|
|
|
50
50
|
| Input | Mode |
|
|
51
51
|
|-------|------|
|
|
52
|
-
| `/gsp
|
|
53
|
-
| `/gsp
|
|
54
|
-
| `/gsp
|
|
55
|
-
| `/gsp
|
|
56
|
-
| `/gsp
|
|
52
|
+
| `/gsp-style --list` | List all available presets |
|
|
53
|
+
| `/gsp-style --preview cyberpunk` | Show tokens without writing files |
|
|
54
|
+
| `/gsp-style cyberpunk` | Apply single style |
|
|
55
|
+
| `/gsp-style cyberpunk + neubrutalism` | Mix styles (check compatibility) |
|
|
56
|
+
| `/gsp-style` (no args) | Interactive — browse and pick |
|
|
57
57
|
|
|
58
58
|
## Step 1: List mode (`--list`)
|
|
59
59
|
|
|
@@ -120,51 +120,49 @@ If invoked from a project context (`.design/projects/{project}/`):
|
|
|
120
120
|
|
|
121
121
|
If `--preview`, display expanded tokens grouped by section (Color, Typography, Shape, Elevation, Motion) as key-value pairs. Footer: usage hint to apply. Stop here — do not write any files.
|
|
122
122
|
|
|
123
|
-
## Step 6:
|
|
123
|
+
## Step 6: Copy preset as brand style
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
Copy the preset `.yml` to the output path as the brand's style source:
|
|
126
|
+
- If within a brand: `{OUTPUT_PATH}/{preset-name}.yml`
|
|
127
|
+
- If standalone: `{OUTPUT_PATH}/_style-{preset-name}.yml`
|
|
126
128
|
|
|
127
|
-
|
|
129
|
+
If a `.yml` already exists at the output path, use `AskUserQuestion`: "A style preset already exists — overwrite?" with options **Overwrite** and **Cancel**. If cancelled, skip and proceed.
|
|
128
130
|
|
|
129
|
-
|
|
131
|
+
The `.yml` IS the token source of truth — no separate `tokens.json` needed. The builder generates CSS variables from it at build time using `gsp-brand-guidelines/token-mapping.md`.
|
|
130
132
|
|
|
131
|
-
|
|
132
|
-
|---------------|------------|-------|-------|
|
|
133
|
-
| `color.*` | `color.brand.{key}`, `color.semantic.{key}` | `color` | Split into brand (primary, secondary, accent) and semantic (background, surface, on-primary, on-background, error, success, warning, info) |
|
|
134
|
-
| `typography.*` | `font.family.{primary,mono}` | `fontFamily` | — |
|
|
135
|
-
| `typography.*` | `typography.{level}` | `typography` | Composite: fontFamily, fontSize, fontWeight, lineHeight, letterSpacing. 9 levels: display, heading-1 through heading-3, body-large, body, body-small, caption, overline |
|
|
136
|
-
| `spacing.*` | `spacing.{xs,sm,md,lg,xl,2xl,3xl,4xl}` | `dimension` | — |
|
|
137
|
-
| `elevation.*` | `shadow.{sm,md,lg,xl}` | `shadow` | Parse CSS shadow shorthand into structured format |
|
|
138
|
-
| `shape.*` | `radius.{none,sm,md,lg,full}` | `dimension` | `full` = 9999px |
|
|
139
|
-
| `motion.*` | `motion.duration.{fast,normal}`, `motion.easing.default` | `duration`, `cubicBezier` | — |
|
|
133
|
+
## Step 7: Write STYLE.md
|
|
140
134
|
|
|
141
|
-
|
|
135
|
+
Read the style template from `${CLAUDE_SKILL_DIR}/../../templates/phases/style.md`.
|
|
142
136
|
|
|
143
|
-
|
|
137
|
+
Read BOTH source files:
|
|
138
|
+
- `styles/{name}.yml` — structured data (tokens, intensity, patterns, constraints, effects)
|
|
139
|
+
- `styles/{name}.md` — prose companion (design philosophy, CSS code hints, component styling, textures). Skip the `<role>` block — start from `<design-system>`.
|
|
144
140
|
|
|
145
|
-
|
|
141
|
+
If the `.md` companion doesn't exist, render STYLE.md from `.yml` data only (thinner but functional).
|
|
146
142
|
|
|
147
|
-
|
|
143
|
+
Render into the template sections:
|
|
148
144
|
|
|
149
|
-
|
|
145
|
+
- **Intensity** — from `.yml` `intensity:` block
|
|
146
|
+
- **Philosophy** — extract from `.md` companion's Design Philosophy section. Condense to 2-4 sentences capturing the emotional DNA and cultural references.
|
|
147
|
+
- **Patterns** — from `.yml` `patterns:` block, rendered as tables per component
|
|
148
|
+
- **Constraints** — from `.yml` `constraints:` block, rendered as never/always bullet lists
|
|
149
|
+
- **Effects** — from `.yml` `effects:` block, rendered as interaction vocabulary + state tables
|
|
150
|
+
- **Bold Bets** — extract from `.md` companion's "Non-Genericness" or "Bold Factor" section. Pick 3-5 most distinctive techniques with implementation specifics.
|
|
151
|
+
- **Implementation** — extract from `.md` companion's component stylings and CSS code:
|
|
152
|
+
- **Component Code Hints** — Tailwind/CSS patterns beyond the Patterns tables
|
|
153
|
+
- **Textures & Surfaces** — CSS for noise, halftone, grain (skip if style has none)
|
|
154
|
+
- **Typography Treatments** — text-stroke, tracking overrides (skip if standard)
|
|
155
|
+
- **Animation Recipes** — keyframes, transitions (skip if effects vocabulary is sufficient)
|
|
150
156
|
|
|
151
|
-
Write
|
|
157
|
+
Write to `{OUTPUT_PATH}/STYLE.md`.
|
|
152
158
|
|
|
153
|
-
## Step 8: Write
|
|
159
|
+
## Step 8: Write INDEX.md
|
|
154
160
|
|
|
155
|
-
Write
|
|
161
|
+
Write `{OUTPUT_PATH}/INDEX.md` — header with phase/style/date, applied style name + description, file table ({preset-name}.yml, STYLE.md).
|
|
156
162
|
|
|
157
|
-
|
|
158
|
-
- **typography.md** — 9-level type scale, font family details + Google Fonts link, weight rationale
|
|
159
|
-
- **spacing.md** — spacing scale with base unit and usage guidelines
|
|
160
|
-
- **elevation.md** — shadow scale with use cases per level + style-specific notes
|
|
161
|
-
- **border-radius.md** — radius token scale + style-specific shape notes
|
|
163
|
+
Foundation chunks (color-system.md, typography.md, etc.) are NOT written in the quick path — the `.yml` has the token values, STYLE.md has the composition rules. Foundation chunks are only produced by the full branding diamond where the brand-engineer adds deeper analysis (WCAG ratios, font loading, semantic rationale).
|
|
162
164
|
|
|
163
|
-
## Step 9:
|
|
164
|
-
|
|
165
|
-
Write `{OUTPUT_PATH}/INDEX.md` — header with phase/style/date, applied style name + description, foundations table (chunk name, file link, ~lines), tokens table (tokens.json link).
|
|
166
|
-
|
|
167
|
-
## Step 10: Update state
|
|
165
|
+
## Step 9: Update state
|
|
168
166
|
|
|
169
167
|
If a brand STATE.md exists at the brand path:
|
|
170
168
|
- Set patterns phase status to `complete`
|
|
@@ -174,7 +172,7 @@ If a brand STATE.md exists at the brand path:
|
|
|
174
172
|
If a project config.json exists:
|
|
175
173
|
- Add `"style_preset": "{name}"` to preferences
|
|
176
174
|
|
|
177
|
-
## Step
|
|
175
|
+
## Step 10: Completion output
|
|
178
176
|
|
|
179
|
-
Show: header (`/gsp
|
|
177
|
+
Show: header (`/gsp-style — {name} applied`), file tree ({name}.yml + STYLE.md + INDEX.md). Then `AskUserQuestion`: Start a project → `/gsp-project-brief`, Build components → `/gsp-brand-guidelines`, Preview tokens, Try a different style → restart Step 2.
|
|
180
178
|
</process>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Chunk Format Reference
|
|
2
|
+
|
|
3
|
+
Standard format for all GSP phase output files. Chunks are the primary output — agents write chunks directly, not monoliths.
|
|
4
|
+
|
|
5
|
+
## File Format
|
|
6
|
+
|
|
7
|
+
Every chunk follows this structure:
|
|
8
|
+
|
|
9
|
+
# {Section/Component/Screen Name}
|
|
10
|
+
|
|
11
|
+
> Phase: {phase} | Brand/Project: {name} | Generated: {DATE}
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
{Content for this chunk}
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Related
|
|
20
|
+
|
|
21
|
+
- [{Related chunk name}]({relative-path-to-related-chunk})
|
|
22
|
+
|
|
23
|
+
## Naming Conventions
|
|
24
|
+
|
|
25
|
+
- **Singular, kebab-case, lowercase:** "Buttons" → `button.md`, "Date Picker" → `date-picker.md`
|
|
26
|
+
- **Screen files:** `screen-{NN}-{kebab-case-name}.md` (e.g., `screen-01-home.md`)
|
|
27
|
+
|
|
28
|
+
## INDEX.md Format
|
|
29
|
+
|
|
30
|
+
Each phase directory gets an INDEX.md manifest:
|
|
31
|
+
|
|
32
|
+
# {Phase Name}
|
|
33
|
+
> Phase: {phase} | Brand/Project: {name} | Generated: {DATE}
|
|
34
|
+
|
|
35
|
+
| Chunk | File | ~Lines |
|
|
36
|
+
|-------|------|--------|
|
|
37
|
+
| {Section} | [{filename}](./{filename}) | ~{N} |
|
|
38
|
+
|
|
39
|
+
Lightweight — just a lookup table. No prose.
|
|
40
|
+
|
|
41
|
+
## Rules
|
|
42
|
+
|
|
43
|
+
- **Chunks are primary output** — agents write chunks directly to the phase directory
|
|
44
|
+
- **No monoliths** — do not write a single large file then re-chunk it
|
|
45
|
+
- **Size target:** 50-200 lines per chunk
|
|
46
|
+
- **Self-contained:** each chunk must be understandable without loading other chunks
|
|
47
|
+
- **Cross-references:** `## Related` section uses relative paths to related chunks
|
|
48
|
+
- **Idempotent:** re-running a phase regenerates all chunks in that phase directory
|
|
49
|
+
|
|
50
|
+
## Output Budgets
|
|
51
|
+
|
|
52
|
+
Context is finite. Every line in a chunk is consumed by downstream agents. Budget accordingly.
|
|
53
|
+
|
|
54
|
+
### Per-chunk budgets
|
|
55
|
+
|
|
56
|
+
| Chunk type | Target | Hard max | Notes |
|
|
57
|
+
|-----------|--------|----------|-------|
|
|
58
|
+
| Phase chunk (design, research, etc.) | 50-150 lines | 200 lines | Self-contained, one concept per chunk |
|
|
59
|
+
| INDEX.md | 10-30 lines | 50 lines | Lookup table only, no prose |
|
|
60
|
+
| BUILD-LOG.md | 50-100 lines | 150 lines | Summary + tables, not narrative |
|
|
61
|
+
| Component spec | 30-80 lines | 120 lines | Props, states, behavior — not full implementation |
|
|
62
|
+
| Screen spec | 80-150 lines | 200 lines | Layout, components, interactions, states |
|
|
63
|
+
|
|
64
|
+
### Per-phase budgets (total across all chunks)
|
|
65
|
+
|
|
66
|
+
| Phase | Target total | Hard max | Typical chunks |
|
|
67
|
+
|-------|-------------|----------|----------------|
|
|
68
|
+
| Brief | 100-200 lines | 300 lines | 2-4 |
|
|
69
|
+
| Research | 200-400 lines | 600 lines | 5-8 |
|
|
70
|
+
| Design | 300-600 lines | 800 lines | 6-12 |
|
|
71
|
+
| Critique | 100-200 lines | 300 lines | 2-4 |
|
|
72
|
+
| Build log | 50-100 lines | 150 lines | 1 |
|
|
73
|
+
| Review | 100-200 lines | 300 lines | 2-4 |
|
|
74
|
+
|
|
75
|
+
### Terminal output (inline skills)
|
|
76
|
+
|
|
77
|
+
- **Diagnostic** (doctor, progress): uncapped — user needs to see it, does not persist in agent context
|
|
78
|
+
- **Greeting/status** (start): 20-40 lines
|
|
79
|
+
- **Phase transitions**: 10-20 lines
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Style Preset YAML Schema
|
|
2
|
+
|
|
3
|
+
Template for brand-derived style preset files (`{brand-name}.yml`). All token values must trace to foundation chunks. See any preset in `styles/` for a complete example.
|
|
4
|
+
|
|
5
|
+
```yaml
|
|
6
|
+
name: {brand-slug}
|
|
7
|
+
description: {one-line brand aesthetic summary}
|
|
8
|
+
tags: [5-8 fuzzy-match tags for style discovery]
|
|
9
|
+
source: brand # marks this as brand-derived, not a GSP preset
|
|
10
|
+
|
|
11
|
+
tokens:
|
|
12
|
+
color:
|
|
13
|
+
primary: "{hex}" # from identity/color-system.md
|
|
14
|
+
secondary: "{hex}"
|
|
15
|
+
accent: "{hex}"
|
|
16
|
+
background: "{hex}"
|
|
17
|
+
surface: "{hex}"
|
|
18
|
+
on-primary: "{hex}"
|
|
19
|
+
on-background: "{hex}"
|
|
20
|
+
error: "{hex}"
|
|
21
|
+
success: "{hex}"
|
|
22
|
+
warning: "{hex}"
|
|
23
|
+
info: "{hex}"
|
|
24
|
+
muted: "{hex}"
|
|
25
|
+
|
|
26
|
+
typography:
|
|
27
|
+
font-family-primary: "{font stack}" # from identity/typography.md
|
|
28
|
+
font-family-mono: "{font stack}"
|
|
29
|
+
font-weight-heading: {number}
|
|
30
|
+
font-weight-body: {number}
|
|
31
|
+
font-size-base: "{px}"
|
|
32
|
+
line-height-base: {number}
|
|
33
|
+
|
|
34
|
+
shape:
|
|
35
|
+
border-radius-sm: "{px}" # from patterns/component specs
|
|
36
|
+
border-radius-md: "{px}"
|
|
37
|
+
border-radius-lg: "{px}"
|
|
38
|
+
border-width: "{px}"
|
|
39
|
+
border-color: "{hex}"
|
|
40
|
+
|
|
41
|
+
elevation:
|
|
42
|
+
shadow-sm: "{value}"
|
|
43
|
+
shadow-md: "{value}"
|
|
44
|
+
shadow-lg: "{value}"
|
|
45
|
+
shadow-xl: "{value}"
|
|
46
|
+
|
|
47
|
+
spacing:
|
|
48
|
+
base: {number}
|
|
49
|
+
scale: [{values}]
|
|
50
|
+
|
|
51
|
+
motion:
|
|
52
|
+
duration-fast: "{ms}"
|
|
53
|
+
duration-normal: "{ms}"
|
|
54
|
+
easing: "{value}"
|
|
55
|
+
|
|
56
|
+
dark_mode:
|
|
57
|
+
color:
|
|
58
|
+
background: "{hex}"
|
|
59
|
+
surface: "{hex}"
|
|
60
|
+
on-background: "{hex}"
|
|
61
|
+
border-color: "{hex}"
|
|
62
|
+
muted: "{hex}"
|
|
63
|
+
|
|
64
|
+
intensity:
|
|
65
|
+
variance: {1-10} # layout creativity — 1=strict grid, 10=experimental
|
|
66
|
+
motion: {1-10} # animation energy — 1=instant/none, 10=cinematic
|
|
67
|
+
density: {1-10} # content packing — 1=airy/spacious, 10=dense/compact
|
|
68
|
+
|
|
69
|
+
patterns:
|
|
70
|
+
card:
|
|
71
|
+
border: "{spec}"
|
|
72
|
+
shadow: "{spec}"
|
|
73
|
+
radius: "{spec}"
|
|
74
|
+
background: "{spec}"
|
|
75
|
+
padding: "{spec}"
|
|
76
|
+
button-primary:
|
|
77
|
+
background: "{spec}"
|
|
78
|
+
border: "{spec}"
|
|
79
|
+
text: "{spec}"
|
|
80
|
+
radius: "{spec}"
|
|
81
|
+
button-secondary:
|
|
82
|
+
background: "{spec}"
|
|
83
|
+
border: "{spec}"
|
|
84
|
+
text: "{spec}"
|
|
85
|
+
radius: "{spec}"
|
|
86
|
+
input:
|
|
87
|
+
border: "{spec}"
|
|
88
|
+
radius: "{spec}"
|
|
89
|
+
background: "{spec}"
|
|
90
|
+
focus: "{spec}"
|
|
91
|
+
badge:
|
|
92
|
+
shape: "{spec}"
|
|
93
|
+
text: "{spec}"
|
|
94
|
+
nav:
|
|
95
|
+
style: "{spec}"
|
|
96
|
+
links: "{spec}"
|
|
97
|
+
layout:
|
|
98
|
+
archetype: "{name}" # centered, asymmetric-grid, sidebar, dashboard, editorial
|
|
99
|
+
max-width: "{class}"
|
|
100
|
+
section-spacing: "{spec}"
|
|
101
|
+
grid-gap: "{spec}"
|
|
102
|
+
surfaces: "{spec}" # background treatments (grid, dots, gradient, clean)
|
|
103
|
+
decoration: "{spec}" # decorative elements (shapes, lines, labels)
|
|
104
|
+
|
|
105
|
+
constraints:
|
|
106
|
+
never:
|
|
107
|
+
- "{thing to never do — hard boundary}"
|
|
108
|
+
always:
|
|
109
|
+
- "{thing to always do — non-negotiable}"
|
|
110
|
+
|
|
111
|
+
effects:
|
|
112
|
+
interaction-vocabulary: [{named-techniques}]
|
|
113
|
+
hover:
|
|
114
|
+
card: "{technique + spec}"
|
|
115
|
+
button: "{technique + spec}"
|
|
116
|
+
active:
|
|
117
|
+
button: "{technique + spec}"
|
|
118
|
+
focus:
|
|
119
|
+
general: "{technique + spec}"
|
|
120
|
+
transition: "{duration + easing spec}"
|
|
121
|
+
|
|
122
|
+
compatibility: [] # leave empty for brand styles
|
|
123
|
+
clashes: [] # leave empty for brand styles
|
|
124
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Style Preset Index
|
|
2
2
|
# 34 styles — sourced from designprompts.dev, GSP trend references, and original presets
|
|
3
|
-
# Tags enable fuzzy matching: /gsp
|
|
3
|
+
# Tags enable fuzzy matching: /gsp-style "something dark and techy" → cyberpunk, terminal, modern-dark
|
|
4
4
|
|
|
5
5
|
styles:
|
|
6
6
|
# ── Minimal ─────────────────────────
|
|
@@ -62,5 +62,85 @@ dark_mode:
|
|
|
62
62
|
surface: "#251E19"
|
|
63
63
|
on-background: "#E8DFD4"
|
|
64
64
|
|
|
65
|
+
intensity:
|
|
66
|
+
variance: 3 # classical symmetry with occasional 60/40 splits, mostly balanced
|
|
67
|
+
motion: 3 # dignified and deliberate — sepia reveals, brass shimmer, no playfulness
|
|
68
|
+
density: 4 # ornamental but restrained — flourishes, dividers, textures fill space with purpose
|
|
69
|
+
|
|
70
|
+
patterns:
|
|
71
|
+
card:
|
|
72
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
73
|
+
shadow: "none resting, {elevation.shadow-lg} on hover — warm depth"
|
|
74
|
+
radius: "{shape.border-radius-md}"
|
|
75
|
+
background: "one layer above page — aged oak surface"
|
|
76
|
+
decoration: "brass corner flourishes (24px L-brackets) at opposing corners, opacity 0.6→1.0 on hover"
|
|
77
|
+
button-primary:
|
|
78
|
+
background: "{brass.gradient}"
|
|
79
|
+
border: "none"
|
|
80
|
+
shadow: "inset highlights + depth shadow, brass glow on hover"
|
|
81
|
+
text: "uppercase, tracking-[0.15em], {typography.font-family-display}, engraved text-shadow"
|
|
82
|
+
radius: "{shape.border-radius-md}"
|
|
83
|
+
button-secondary:
|
|
84
|
+
background: "transparent"
|
|
85
|
+
border: "2px solid {color.accent}"
|
|
86
|
+
text: "uppercase, tracking-[0.15em], {color.accent}"
|
|
87
|
+
radius: "{shape.border-radius-md}"
|
|
88
|
+
hover: "fills crimson — border + bg shift to accentSecondary, text inverts"
|
|
89
|
+
input:
|
|
90
|
+
border: "{shape.border-width} solid {shape.border-color}"
|
|
91
|
+
radius: "{shape.border-radius-md}"
|
|
92
|
+
background: "aged oak surface"
|
|
93
|
+
focus: "border-{color.accent}, ring-2 ring-{color.accent}/30 ring-offset-2"
|
|
94
|
+
placeholder: "italic serif, faded ink color"
|
|
95
|
+
badge:
|
|
96
|
+
shape: "circular — crimson wax seal with radial gradient and inset shadows"
|
|
97
|
+
text: "centered icon (star), no text — visual accent"
|
|
98
|
+
nav:
|
|
99
|
+
style: "classical horizontal with brass accent links"
|
|
100
|
+
links: "serif, hover shifts to brass with tracking increase (0.2em→0.25em)"
|
|
101
|
+
layout:
|
|
102
|
+
archetype: "classical-symmetric"
|
|
103
|
+
max-width: "max-w-6xl"
|
|
104
|
+
section-spacing: "py-24 to py-32 — contemplative breathing room"
|
|
105
|
+
grid-gap: "gap-8 to gap-12"
|
|
106
|
+
surfaces: "paper texture (3% opacity noise, overlay blend) + vignette darkening edges"
|
|
107
|
+
decoration: "ornate dividers with centered glyphs, arch-topped images (40% 40% 0 0 / 20% 20% 0 0), Roman numeral volume labels"
|
|
108
|
+
|
|
109
|
+
constraints:
|
|
110
|
+
never:
|
|
111
|
+
- "sans-serif fonts in headings — serif typography only (Cormorant, Crimson, Cinzel)"
|
|
112
|
+
- "bright saturated colors — everything aged and warm-toned"
|
|
113
|
+
- "pure black (#000000) or pure white (#FFFFFF) — warm mahogany and parchment"
|
|
114
|
+
- "bouncy or elastic animations — dignified motion only, like turning heavy pages"
|
|
115
|
+
- "sharp geometric decorations — favor architectural curves (arch-tops, flourishes)"
|
|
116
|
+
- "cold tones mixing with warm palette — exclusively warm throughout"
|
|
117
|
+
- "flat backgrounds without texture — paper grain and vignette are essential"
|
|
118
|
+
- "playful or whimsical elements — scholarly gravitas at all times"
|
|
119
|
+
always:
|
|
120
|
+
- "sepia filter (0.6) on all images by default, full color reveals on hover (700ms)"
|
|
121
|
+
- "brass (#C9A962) for ALL interactive elements — buttons, links, focus rings, hover states"
|
|
122
|
+
- "Roman numerals (Volume I, II, III) for section numbering"
|
|
123
|
+
- "arch-topped images (40% 40% 0 0 / 20% 20% 0 0 border-radius)"
|
|
124
|
+
- "paper texture overlay (3% opacity) + vignette radial gradient"
|
|
125
|
+
- "corner flourishes on major containers (brass L-brackets)"
|
|
126
|
+
- "ornate dividers with decorative glyphs between sections"
|
|
127
|
+
- "drop caps on introductory paragraphs (Cinzel, text-7xl, brass)"
|
|
128
|
+
|
|
129
|
+
effects:
|
|
130
|
+
interaction-vocabulary: [brass-shimmer, sepia-reveal, dignified-lift, flourish-brighten]
|
|
131
|
+
hover:
|
|
132
|
+
card: "dignified-lift — shadow appears (0→lg), border shifts brass, flourish-brighten on corners"
|
|
133
|
+
button-primary: "brass-shimmer — brightness increases to 110%, glow shadow appears"
|
|
134
|
+
button-secondary: "crimson transform — border + bg shift to crimson, text inverts to parchment"
|
|
135
|
+
image: "sepia-reveal — sepia(0.6)→sepia(0), scale-105 over 700ms"
|
|
136
|
+
link: "brass-shimmer — color shifts to brass, tracking widens slightly"
|
|
137
|
+
active:
|
|
138
|
+
button: "deeper inset shadow — pressed-into-metal feel"
|
|
139
|
+
focus:
|
|
140
|
+
general: "ring-2 ring-{color.accent} ring-offset-2 ring-offset-background"
|
|
141
|
+
transition: "duration-300 to duration-700, ease-out"
|
|
142
|
+
ambient:
|
|
143
|
+
- "brass-breathe — subtle brightness oscillation on brass buttons (100%→110%, 2s cycle)"
|
|
144
|
+
|
|
65
145
|
compatibility: [swiss-minimalist, monochrome]
|
|
66
146
|
clashes: [cyberpunk, vaporwave, retro]
|