get-shit-pretty 0.6.2 → 0.6.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.
- package/README.md +7 -12
- package/bin/install.js +96 -71
- package/gsp/agents/gsp-accessibility-auditor.md +3 -3
- package/gsp/agents/gsp-ascii-artist.md +1 -1
- package/gsp/agents/gsp-brand-auditor.md +2 -2
- package/gsp/agents/gsp-brand-engineer.md +131 -0
- package/gsp/agents/gsp-brand-strategist.md +2 -2
- package/gsp/agents/gsp-brand-syncer.md +8 -7
- package/gsp/agents/gsp-builder.md +48 -5
- package/gsp/agents/gsp-campaign-director.md +2 -3
- package/gsp/agents/gsp-creative-director.md +80 -0
- package/gsp/agents/gsp-critic.md +99 -17
- package/gsp/agents/gsp-designer.md +51 -4
- package/gsp/agents/gsp-project-researcher.md +3 -3
- package/gsp/agents/gsp-researcher.md +4 -4
- package/gsp/agents/gsp-reviewer.md +2 -2
- package/gsp/agents/gsp-scoper.md +2 -2
- package/gsp/hooks/hooks.json +5 -5
- package/gsp/references/design-trends.md +4 -4
- package/gsp/references/phase-transitions.md +12 -12
- package/gsp/references/questioning.md +1 -1
- package/gsp/references/token-mapping.md +329 -0
- package/gsp/skills/gsp-3d/SKILL.md +112 -0
- package/gsp/skills/gsp-accessibility/SKILL.md +11 -11
- package/gsp/skills/gsp-accessibility-audit/SKILL.md +6 -7
- package/gsp/skills/gsp-add-reference/SKILL.md +1 -1
- package/gsp/skills/gsp-art/SKILL.md +1 -1
- package/gsp/skills/gsp-brand-audit/SKILL.md +3 -3
- package/gsp/skills/gsp-brand-guidelines/SKILL.md +233 -0
- package/gsp/skills/gsp-brand-identity/SKILL.md +27 -18
- package/gsp/skills/gsp-brand-refine/SKILL.md +29 -22
- package/gsp/skills/gsp-brand-research/SKILL.md +2 -2
- package/gsp/skills/gsp-brand-strategy/SKILL.md +3 -3
- package/gsp/skills/gsp-brand-sync/SKILL.md +7 -7
- package/gsp/skills/gsp-color/SKILL.md +105 -0
- package/gsp/skills/gsp-design-system/SKILL.md +4 -4
- package/gsp/skills/gsp-doctor/SKILL.md +25 -18
- package/gsp/skills/gsp-help/SKILL.md +28 -28
- package/gsp/skills/gsp-icons/SKILL.md +108 -0
- package/gsp/skills/gsp-images/SKILL.md +197 -0
- package/gsp/skills/gsp-launch/SKILL.md +2 -3
- package/gsp/skills/gsp-logo/SKILL.md +173 -0
- package/gsp/skills/gsp-palette/SKILL.md +13 -13
- 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 +7 -8
- package/gsp/skills/gsp-project-build/SKILL.md +21 -21
- package/gsp/skills/gsp-project-critique/SKILL.md +13 -14
- package/gsp/skills/gsp-project-design/SKILL.md +17 -17
- package/gsp/skills/gsp-project-research/SKILL.md +5 -6
- package/gsp/skills/gsp-project-review/SKILL.md +7 -9
- package/gsp/skills/gsp-scaffold/SKILL.md +3 -3
- package/gsp/skills/gsp-start/SKILL.md +14 -14
- package/gsp/skills/gsp-style/SKILL.md +41 -43
- 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-textures/SKILL.md +132 -0
- package/gsp/skills/gsp-typescale/SKILL.md +11 -11
- package/gsp/skills/gsp-typography/SKILL.md +108 -0
- package/gsp/skills/gsp-update/SKILL.md +1 -2
- package/gsp/skills/gsp-video/SKILL.md +101 -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/build.md +1 -1
- package/gsp/templates/phases/design.md +1 -1
- package/gsp/templates/phases/patterns.md +60 -71
- 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/skills/gsp-brand-patterns/SKILL.md +0 -240
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Design Trends Reference — Index
|
|
2
2
|
|
|
3
|
-
Production-ready style presets and deep engineering references for current design trends. Consolidated in the `/gsp
|
|
3
|
+
Production-ready style presets and deep engineering references for current design trends. Consolidated in the `/gsp-style` skill.
|
|
4
4
|
|
|
5
5
|
Last updated: 2026-03-14
|
|
6
6
|
|
|
@@ -8,13 +8,13 @@ Last updated: 2026-03-14
|
|
|
8
8
|
|
|
9
9
|
## Style Presets (34)
|
|
10
10
|
|
|
11
|
-
Style presets with structured tokens live in the `/gsp
|
|
11
|
+
Style presets with structured tokens live in the `/gsp-style` skill at `skills/gsp-style/styles/`. Each preset is a YAML file with color, typography, shape, elevation, spacing, and motion tokens ready for W3C Design Token expansion.
|
|
12
12
|
|
|
13
|
-
Run `/gsp
|
|
13
|
+
Run `/gsp-style --list` to see all available styles, or read `skills/gsp-style/styles/INDEX.yml` for the full catalog with tags and vibes.
|
|
14
14
|
|
|
15
15
|
## Deep Engineering References (9)
|
|
16
16
|
|
|
17
|
-
Detailed CSS implementation guides, framework notes, and accessibility analysis live in the `/gsp
|
|
17
|
+
Detailed CSS implementation guides, framework notes, and accessibility analysis live in the `/gsp-style` skill at `skills/gsp-style/trends/`:
|
|
18
18
|
|
|
19
19
|
| # | Trend | Description | Compat |
|
|
20
20
|
|---|-------|-------------|--------|
|
|
@@ -70,7 +70,7 @@ Use `AskUserQuestion` with options adapted to context:
|
|
|
70
70
|
**When in a pipeline flow** (previous phase was completed in this or a recent session):
|
|
71
71
|
1. **Continue to {next}** — "{description of next phase}"
|
|
72
72
|
2. **View progress** — "see the full dashboard"
|
|
73
|
-
3. **Done for now** — "pick up later with /gsp
|
|
73
|
+
3. **Done for now** — "pick up later with /gsp-start"
|
|
74
74
|
|
|
75
75
|
**When standalone** (user invoked the skill directly, no clear pipeline context):
|
|
76
76
|
1. **View output** — "review what was generated"
|
|
@@ -84,22 +84,22 @@ Use judgment — if the user explicitly asked for one skill, don't push them int
|
|
|
84
84
|
|
|
85
85
|
| Phase | Completion Message | Next Phase |
|
|
86
86
|
|-------|-------------------|------------|
|
|
87
|
-
| audit | brand assessed | discover — `/gsp
|
|
88
|
-
| discover | market landscape mapped | strategy — `/gsp
|
|
89
|
-
| strategy | brand platform defined | identity — `/gsp
|
|
90
|
-
| identity | visual system designed | patterns — `/gsp
|
|
91
|
-
| patterns | design system built | project setup — `/gsp
|
|
87
|
+
| audit | brand assessed | discover — `/gsp-brand-research` |
|
|
88
|
+
| discover | market landscape mapped | strategy — `/gsp-brand-strategy` |
|
|
89
|
+
| strategy | brand platform defined | identity — `/gsp-brand-identity` |
|
|
90
|
+
| identity | visual system designed | patterns — `/gsp-brand-guidelines` |
|
|
91
|
+
| patterns | design system built | project setup — `/gsp-start` (scans codebase, gathers brief, creates project) |
|
|
92
92
|
|
|
93
93
|
### Project Phases
|
|
94
94
|
|
|
95
95
|
| Phase | Completion Message | Next Phase |
|
|
96
96
|
|-------|-------------------|------------|
|
|
97
|
-
| brief | project scoped | research — `/gsp
|
|
98
|
-
| research | patterns and approaches researched | design — `/gsp
|
|
99
|
-
| design | screens designed | critique — `/gsp
|
|
100
|
-
| critique | designs critiqued | build — `/gsp
|
|
101
|
-
| build | code implemented | review — `/gsp
|
|
102
|
-
| review | implementation validated | launch — `/gsp
|
|
97
|
+
| brief | project scoped | research — `/gsp-project-research` |
|
|
98
|
+
| research | patterns and approaches researched | design — `/gsp-project-design` |
|
|
99
|
+
| design | screens designed | critique — `/gsp-project-critique` |
|
|
100
|
+
| critique | designs critiqued | build — `/gsp-project-build` |
|
|
101
|
+
| build | code implemented | review — `/gsp-project-review` |
|
|
102
|
+
| review | implementation validated | launch — `/gsp-launch` (or done) |
|
|
103
103
|
| launch | campaign assets created | done |
|
|
104
104
|
|
|
105
105
|
### Special cases
|
|
@@ -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) |
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsp-3d
|
|
3
|
+
description: Define 3D & WebGL direction — render style, materials, lighting, camera, interactive scenes
|
|
4
|
+
user-invocable: true
|
|
5
|
+
model: sonnet
|
|
6
|
+
allowed-tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
- Glob
|
|
11
|
+
- Grep
|
|
12
|
+
- WebSearch
|
|
13
|
+
---
|
|
14
|
+
<context>
|
|
15
|
+
You are a GSP 3D director. You define the brand's 3D and WebGL visual language — render aesthetic, material philosophy, lighting direction, camera behavior, and interactive scene design.
|
|
16
|
+
|
|
17
|
+
This is a standalone composable skill. It works two ways:
|
|
18
|
+
1. **Standalone** — user runs `/gsp-3d` directly for 3D direction
|
|
19
|
+
2. **As a building block** — invoked during identity or project phases when the brand needs 3D/WebGL content direction
|
|
20
|
+
|
|
21
|
+
3D is no longer a niche — product configurators, immersive heroes, interactive showcases, and spatial UI are becoming standard. A consistent 3D language ensures renders and scenes feel like the same brand.
|
|
22
|
+
</context>
|
|
23
|
+
|
|
24
|
+
<objective>
|
|
25
|
+
Define 3D and WebGL visual direction for a brand or project.
|
|
26
|
+
|
|
27
|
+
**Input:** Brand context or user description, OR `--enrich` mode
|
|
28
|
+
**Output:** `3d-direction.md` chunk with render style, materials, lighting, camera, and interaction specs
|
|
29
|
+
**Agent:** None — inline skill with structured questioning
|
|
30
|
+
</objective>
|
|
31
|
+
|
|
32
|
+
<execution_context>
|
|
33
|
+
@${CLAUDE_SKILL_DIR}/../../references/chunk-format.md
|
|
34
|
+
</execution_context>
|
|
35
|
+
|
|
36
|
+
<rules>
|
|
37
|
+
- Always use `AskUserQuestion` for user interaction — never prompt via plain text
|
|
38
|
+
- One decision per question — never batch multiple questions in a single message
|
|
39
|
+
- 3D direction must align with brand's 2D aesthetic — if flat design, renders should be clean/minimal; if neubrutalism, renders can be bold/graphic
|
|
40
|
+
- Specify concrete tools/libraries where applicable (Three.js, React Three Fiber, Spline, Blender)
|
|
41
|
+
- Performance constraints matter — specify polygon budget, texture resolution, loading strategy
|
|
42
|
+
</rules>
|
|
43
|
+
|
|
44
|
+
<process>
|
|
45
|
+
## Step 0: Determine mode
|
|
46
|
+
|
|
47
|
+
| Input | Mode |
|
|
48
|
+
|-------|------|
|
|
49
|
+
| `/gsp-3d --enrich` | Enrich existing 3D direction |
|
|
50
|
+
| `/gsp-3d` | Interactive — define 3D language |
|
|
51
|
+
|
|
52
|
+
## Step 1: Enrich mode (`--enrich`)
|
|
53
|
+
|
|
54
|
+
Read existing brand context (`.yml` tokens, STYLE.md patterns/constraints). Derive 3D direction that's coherent with the 2D visual language.
|
|
55
|
+
|
|
56
|
+
## Step 2: Interactive mode
|
|
57
|
+
|
|
58
|
+
One `AskUserQuestion` at a time:
|
|
59
|
+
|
|
60
|
+
1. 3D use case — use `AskUserQuestion`:
|
|
61
|
+
- **Product showcase** — "product renders, configurators, 360 views"
|
|
62
|
+
- **Immersive hero** — "3D scene as page background or hero"
|
|
63
|
+
- **Interactive experience** — "explorable scenes, spatial navigation"
|
|
64
|
+
- **Data visualization** — "3D charts, network graphs, spatial data"
|
|
65
|
+
- **UI elements** — "3D icons, buttons, decorative elements"
|
|
66
|
+
- **Multiple** — "we need several types"
|
|
67
|
+
2. Render aesthetic — use `AskUserQuestion`:
|
|
68
|
+
- **Photorealistic** — "physically accurate, studio-quality"
|
|
69
|
+
- **Stylized** — "non-photorealistic, illustrated, graphic"
|
|
70
|
+
- **Minimal** — "clean geometry, soft shadows, white studio"
|
|
71
|
+
- **Abstract** — "generative, particle systems, noise-driven"
|
|
72
|
+
- **Clay/soft** — "rounded, matte, toy-like (matches claymorphism)"
|
|
73
|
+
|
|
74
|
+
## Step 3: Define 3D direction
|
|
75
|
+
|
|
76
|
+
### Render Style
|
|
77
|
+
- **Aesthetic:** photorealistic / stylized / minimal / abstract
|
|
78
|
+
- **Geometry:** smooth/faceted, organic/geometric, detail level
|
|
79
|
+
- **Color:** brand palette integration, tint strategy for materials
|
|
80
|
+
|
|
81
|
+
### Materials
|
|
82
|
+
- **Primary material:** matte, glossy, metallic, glass, emissive
|
|
83
|
+
- **Surface quality:** smooth, textured, rough, reflective
|
|
84
|
+
- **Brand material:** the signature material (e.g., "frosted glass for glassmorphism brands", "clay for claymorphism")
|
|
85
|
+
|
|
86
|
+
### Lighting
|
|
87
|
+
- **Setup:** studio (3-point), environmental, dramatic, flat
|
|
88
|
+
- **Key light:** direction, color temperature, intensity
|
|
89
|
+
- **Ambient:** environment map, HDRI direction, ambient occlusion level
|
|
90
|
+
- **Shadows:** soft/hard, contact shadows, shadow color
|
|
91
|
+
|
|
92
|
+
### Camera
|
|
93
|
+
- **Perspective:** focal length range (35mm-85mm), depth of field
|
|
94
|
+
- **Movement:** orbit, dolly, static, scroll-driven
|
|
95
|
+
- **Framing:** centered, rule-of-thirds, dynamic
|
|
96
|
+
|
|
97
|
+
### Interaction (WebGL)
|
|
98
|
+
- **Library:** Three.js, React Three Fiber, Spline, PlayCanvas
|
|
99
|
+
- **Controls:** orbit, scroll-driven animation, mouse parallax, click interaction
|
|
100
|
+
- **Performance budget:** target FPS, polygon count, texture resolution
|
|
101
|
+
- **Loading:** progressive loading, LOD strategy, placeholder
|
|
102
|
+
- **Fallback:** what to show when WebGL isn't available (static image, CSS-only)
|
|
103
|
+
|
|
104
|
+
### Integration with 2D
|
|
105
|
+
- **How 3D meets flat UI:** floating above page, embedded in sections, full-page takeover
|
|
106
|
+
- **Z-depth relationship:** 3D behind UI, 3D as UI element, mixed
|
|
107
|
+
- **Transition:** how the user moves between 3D and 2D contexts
|
|
108
|
+
|
|
109
|
+
## Step 4: Write output + completion
|
|
110
|
+
|
|
111
|
+
Write `3d-direction.md` chunk. Target: 80-120 lines.
|
|
112
|
+
</process>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: accessibility
|
|
2
|
+
name: gsp-accessibility
|
|
3
3
|
description: Quick contrast checks and token WCAG audits — inline, no agent
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: sonnet
|
|
@@ -13,12 +13,12 @@ allowed-tools:
|
|
|
13
13
|
---
|
|
14
14
|
<context>
|
|
15
15
|
Standalone composable accessibility skill. Works two ways:
|
|
16
|
-
1. **Standalone** — user runs `/gsp
|
|
16
|
+
1. **Standalone** — user runs `/gsp-accessibility` directly for quick contrast checks or token audits
|
|
17
17
|
2. **As a building block** — critique and review phases detect prior accessibility output and reuse it
|
|
18
18
|
|
|
19
19
|
Follows the composable pattern: deterministic modes, predictable output paths, filesystem as integration layer.
|
|
20
20
|
|
|
21
|
-
For full design audits, code audits, or statement generation, use `/gsp
|
|
21
|
+
For full design audits, code audits, or statement generation, use `/gsp-accessibility-audit`.
|
|
22
22
|
</context>
|
|
23
23
|
|
|
24
24
|
<objective>
|
|
@@ -59,10 +59,10 @@ If no arguments provided, use `AskUserQuestion`:
|
|
|
59
59
|
|
|
60
60
|
**"What would you like to do?"**
|
|
61
61
|
- **Quick contrast check** — "check specific color pairs for WCAG contrast compliance"
|
|
62
|
-
- **Token audit** — "audit tokens
|
|
63
|
-
- **Full design/code audit** — "run `/gsp
|
|
62
|
+
- **Token audit** — "audit brand `.yml` tokens for WCAG compliance"
|
|
63
|
+
- **Full design/code audit** — "run `/gsp-accessibility-audit` for full WCAG audits, code audits, or statement generation"
|
|
64
64
|
|
|
65
|
-
If user picks "Full design/code audit", tell them to run `/gsp
|
|
65
|
+
If user picks "Full design/code audit", tell them to run `/gsp-accessibility-audit` and stop.
|
|
66
66
|
|
|
67
67
|
### Quick check mode (`--check`)
|
|
68
68
|
|
|
@@ -84,7 +84,7 @@ Convert hex to relative luminance (sRGB linearization), then:
|
|
|
84
84
|
### Display results
|
|
85
85
|
|
|
86
86
|
```
|
|
87
|
-
/gsp
|
|
87
|
+
/gsp-accessibility — contrast check
|
|
88
88
|
═══════════════════════════════════════
|
|
89
89
|
|
|
90
90
|
Foreground: {FG_HEX} Background: {BG_HEX}
|
|
@@ -126,7 +126,7 @@ Determine final conformance level:
|
|
|
126
126
|
Read from the brand/project:
|
|
127
127
|
- `{BRAND_PATH}/identity/palettes.json`
|
|
128
128
|
- `{BRAND_PATH}/identity/color-system.md`
|
|
129
|
-
- `{BRAND_PATH}/patterns
|
|
129
|
+
- `{BRAND_PATH}/patterns/*.yml` (brand style preset)
|
|
130
130
|
- `{BRAND_PATH}/identity/typography.md`
|
|
131
131
|
|
|
132
132
|
If files don't exist, report which are missing and stop.
|
|
@@ -134,7 +134,7 @@ If files don't exist, report which are missing and stop.
|
|
|
134
134
|
### Token checks
|
|
135
135
|
|
|
136
136
|
**4.1 Contrast Pairs:**
|
|
137
|
-
- Extract every semantic foreground/background pair from
|
|
137
|
+
- Extract every semantic foreground/background pair from the brand `.yml` preset
|
|
138
138
|
- Calculate WCAG 2.x contrast ratio for each pair
|
|
139
139
|
- Flag failures: normal text < 4.5:1, large text < 3:1, non-text < 3:1
|
|
140
140
|
|
|
@@ -202,8 +202,8 @@ Conformance target: {level}
|
|
|
202
202
|
### Completion
|
|
203
203
|
|
|
204
204
|
Display result and use `AskUserQuestion`:
|
|
205
|
-
- **Run full design audit** — "run `/gsp
|
|
206
|
-
- **Run code audit** — "run `/gsp
|
|
205
|
+
- **Run full design audit** — "run `/gsp-accessibility-audit` for full WCAG design audit"
|
|
206
|
+
- **Run code audit** — "run `/gsp-accessibility-audit --code` to check the codebase"
|
|
207
207
|
- **Done** — "that's all for now"
|
|
208
208
|
|
|
209
209
|
## Step 5: Update STATE.md
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: accessibility-audit
|
|
2
|
+
name: gsp-accessibility-audit
|
|
3
3
|
description: Full WCAG accessibility audit — design screens, codebase, or generate compliance statement
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: opus
|
|
@@ -16,10 +16,10 @@ allowed-tools:
|
|
|
16
16
|
---
|
|
17
17
|
<context>
|
|
18
18
|
Full accessibility audit skill that spawns the `gsp-accessibility-auditor` agent for deep WCAG analysis. Works two ways:
|
|
19
|
-
1. **Standalone** — user runs `/gsp
|
|
19
|
+
1. **Standalone** — user runs `/gsp-accessibility-audit` directly for design, code, or statement generation
|
|
20
20
|
2. **As a building block** — critique and review phases detect prior accessibility output and reuse it
|
|
21
21
|
|
|
22
|
-
For quick contrast checks or token audits, use `/gsp
|
|
22
|
+
For quick contrast checks or token audits, use `/gsp-accessibility` instead.
|
|
23
23
|
|
|
24
24
|
Follows the composable pattern: deterministic modes, predictable output paths, filesystem as integration layer.
|
|
25
25
|
</context>
|
|
@@ -33,7 +33,6 @@ Run full accessibility audits — design screen reviews, codebase ARIA/keyboard/
|
|
|
33
33
|
</objective>
|
|
34
34
|
|
|
35
35
|
<execution_context>
|
|
36
|
-
@${CLAUDE_SKILL_DIR}/../../prompts/08-accessibility-auditor.md
|
|
37
36
|
@${CLAUDE_SKILL_DIR}/../../references/wcag-checklist.md
|
|
38
37
|
</execution_context>
|
|
39
38
|
|
|
@@ -96,7 +95,7 @@ Spawn `gsp-accessibility-auditor` with:
|
|
|
96
95
|
Display result:
|
|
97
96
|
|
|
98
97
|
```
|
|
99
|
-
/gsp
|
|
98
|
+
/gsp-accessibility-audit — design audit complete
|
|
100
99
|
═══════════════════════════════════════
|
|
101
100
|
|
|
102
101
|
{PROJECT_PATH}/critique/
|
|
@@ -107,7 +106,7 @@ Display result:
|
|
|
107
106
|
```
|
|
108
107
|
|
|
109
108
|
Use `AskUserQuestion`:
|
|
110
|
-
- **Run token audit** — "run `/gsp
|
|
109
|
+
- **Run token audit** — "run `/gsp-accessibility --tokens` to check design token contrast pairs"
|
|
111
110
|
- **Continue to build** — "implement designs in the codebase"
|
|
112
111
|
- **View audit** — "read the accessibility report"
|
|
113
112
|
- **Done** — "that's all for now"
|
|
@@ -134,7 +133,7 @@ Spawn `gsp-accessibility-auditor` with:
|
|
|
134
133
|
Display result:
|
|
135
134
|
|
|
136
135
|
```
|
|
137
|
-
/gsp
|
|
136
|
+
/gsp-accessibility-audit --code — code audit complete
|
|
138
137
|
═══════════════════════════════════════
|
|
139
138
|
|
|
140
139
|
{PROJECT_PATH}/review/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: brand-audit
|
|
2
|
+
name: gsp-brand-audit
|
|
3
3
|
description: Audit an existing brand before evolving it
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: opus
|
|
@@ -44,11 +44,11 @@ Resolve brand from `.design/branding/` (one → use it, multiple → ask). Set `
|
|
|
44
44
|
Read `{BRAND_PATH}/BRIEF.md` for aspirational direction.
|
|
45
45
|
Read `{BRAND_PATH}/config.json` to confirm `brand_mode` is `evolve`.
|
|
46
46
|
|
|
47
|
-
If missing, tell user to run `/gsp
|
|
47
|
+
If missing, tell user to run `/gsp-start` first.
|
|
48
48
|
|
|
49
49
|
## Step 2: Load brand assets from brief
|
|
50
50
|
|
|
51
|
-
Read `{BRAND_PATH}/BRIEF.md` — brand assets were already gathered during `/gsp
|
|
51
|
+
Read `{BRAND_PATH}/BRIEF.md` — brand assets were already gathered during `/gsp-start`. Extract any logos, colors, guidelines, URLs, or descriptions the user provided.
|
|
52
52
|
|
|
53
53
|
If the brief has no asset information (legacy or incomplete brief), use `AskUserQuestion`:
|
|
54
54
|
- **Share assets now** — "I have guidelines, colors, fonts, voice samples, or URLs to share"
|