get-shit-pretty 0.6.3 → 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/bin/install.js +36 -20
- package/gsp/agents/gsp-accessibility-auditor.md +1 -1
- package/gsp/agents/gsp-ascii-artist.md +1 -1
- package/gsp/agents/gsp-brand-auditor.md +1 -1
- package/gsp/agents/gsp-brand-strategist.md +1 -1
- package/gsp/agents/gsp-builder.md +1 -1
- package/gsp/agents/gsp-campaign-director.md +1 -1
- package/gsp/agents/gsp-creative-director.md +4 -4
- package/gsp/agents/gsp-critic.md +3 -3
- package/gsp/agents/gsp-designer.md +2 -2
- package/gsp/agents/gsp-project-researcher.md +1 -1
- package/gsp/agents/gsp-researcher.md +1 -1
- package/gsp/agents/gsp-reviewer.md +1 -1
- package/gsp/agents/gsp-scoper.md +1 -1
- package/gsp/skills/get-shit-pretty/SKILL.md +10 -9
- package/gsp/skills/gsp-accessibility/SKILL.md +1 -1
- package/gsp/skills/gsp-accessibility-audit/SKILL.md +2 -2
- package/gsp/skills/gsp-add-reference/SKILL.md +5 -0
- package/gsp/skills/gsp-art/SKILL.md +5 -0
- package/gsp/skills/gsp-brand-audit/SKILL.md +2 -2
- package/gsp/skills/gsp-brand-guidelines/SKILL.md +2 -2
- package/gsp/skills/gsp-brand-identity/SKILL.md +3 -3
- package/gsp/skills/gsp-brand-refine/SKILL.md +1 -1
- package/gsp/skills/gsp-brand-research/SKILL.md +2 -2
- package/gsp/skills/gsp-brand-strategy/SKILL.md +4 -4
- package/gsp/skills/gsp-brand-sync/SKILL.md +3 -3
- package/gsp/skills/gsp-brand-sync/chunk-format.md +79 -0
- package/gsp/skills/gsp-color/SKILL.md +24 -56
- 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 +5 -0
- package/gsp/skills/gsp-help/SKILL.md +4 -3
- package/gsp/skills/gsp-icons/SKILL.md +1 -1
- package/gsp/skills/gsp-icons/chunk-format.md +79 -0
- package/gsp/skills/gsp-launch/SKILL.md +1 -1
- package/gsp/skills/gsp-logo/SKILL.md +2 -2
- package/gsp/skills/gsp-logo/chunk-format.md +79 -0
- package/gsp/skills/gsp-phase-transition/SKILL.md +124 -0
- package/gsp/skills/gsp-project-brief/SKILL.md +1 -1
- package/gsp/skills/gsp-project-build/SKILL.md +10 -5
- package/gsp/skills/gsp-project-critique/SKILL.md +5 -5
- package/gsp/{references → skills/gsp-project-critique}/visual-taste.md +1 -1
- package/gsp/skills/gsp-project-design/SKILL.md +1 -1
- package/gsp/skills/gsp-project-research/SKILL.md +1 -1
- package/gsp/skills/gsp-project-review/SKILL.md +1 -1
- package/gsp/skills/gsp-start/SKILL.md +1 -1
- package/gsp/skills/gsp-style/SKILL.md +4 -4
- 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-typography/SKILL.md +28 -66
- 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-visuals/SKILL.md +82 -0
- package/gsp/skills/gsp-visuals/chunk-format.md +79 -0
- package/gsp/skills/{gsp-3d/SKILL.md → gsp-visuals/domains/3d.md} +62 -47
- package/gsp/skills/{gsp-images/SKILL.md → gsp-visuals/domains/imagery.md} +17 -69
- package/gsp/skills/{gsp-textures/SKILL.md → gsp-visuals/domains/textures.md} +54 -48
- package/gsp/skills/{gsp-video/SKILL.md → gsp-visuals/domains/video.md} +53 -47
- package/gsp/templates/branding/config.json +1 -1
- package/gsp/templates/phases/brief.md +1 -1
- package/gsp/templates/phases/critique.md +1 -1
- package/gsp/templates/phases/design.md +1 -1
- 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 +1 -1
- 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/projects/config.json +1 -1
- package/package.json +1 -1
- package/gsp/references/phase-transitions.md +0 -132
- package/gsp/references/style-preset-schema.md +0 -63
- 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-guidelines}/token-mapping.md +0 -0
- /package/gsp/{references → skills/gsp-brand-research}/design-trends.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-start}/questioning.md +0 -0
- /package/gsp/{references → skills/gsp-typography/references}/typography-scales.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsp-color
|
|
3
|
-
description: Design color systems — palettes, contrast, semantic mapping, dark mode
|
|
3
|
+
description: "Design color systems — palettes, contrast, semantic mapping, dark mode"
|
|
4
4
|
user-invocable: true
|
|
5
5
|
model: sonnet
|
|
6
6
|
allowed-tools:
|
|
@@ -15,22 +15,20 @@ allowed-tools:
|
|
|
15
15
|
You are a GSP color director. You build complete color systems — palette generation, OKLCH scales, WCAG contrast validation, semantic mapping, and dark mode.
|
|
16
16
|
|
|
17
17
|
This is a standalone composable skill. It works two ways:
|
|
18
|
-
1. **Standalone** — user runs `/gsp-color` directly for palette exploration
|
|
18
|
+
1. **Standalone** — user runs `/gsp-color` directly for palette exploration, contrast checking, or full system design
|
|
19
19
|
2. **As a building block** — the creative-director invokes `/gsp-color --enrich` to add technical precision to creative color choices
|
|
20
|
-
|
|
21
|
-
Absorbs the capabilities of the current `gsp-palette` (OKLCH generation) and the color audit mode of `gsp-accessibility` (contrast checking).
|
|
22
20
|
</context>
|
|
23
21
|
|
|
24
22
|
<objective>
|
|
25
|
-
Build
|
|
23
|
+
Build production-ready color palettes or full color systems from brand colors or user input.
|
|
26
24
|
|
|
27
|
-
**Input:** Hex colors
|
|
25
|
+
**Input:** Hex colors, `--preview`, `--enrich`, or interactive
|
|
28
26
|
**Output:** `color-system.md` chunk + `palettes.json` (OKLCH scales)
|
|
29
27
|
**Agent:** None — inline skill, deterministic palette generation + contrast math
|
|
30
28
|
</objective>
|
|
31
29
|
|
|
32
30
|
<execution_context>
|
|
33
|
-
@${CLAUDE_SKILL_DIR}
|
|
31
|
+
@${CLAUDE_SKILL_DIR}/chunk-format.md
|
|
34
32
|
</execution_context>
|
|
35
33
|
|
|
36
34
|
<rules>
|
|
@@ -40,66 +38,36 @@ Build a production-ready color system from brand colors or user input.
|
|
|
40
38
|
- Color names must be semantic (primary, secondary, accent, neutral) not literal (red, blue)
|
|
41
39
|
- All foreground/background pairs must report WCAG AA contrast ratios
|
|
42
40
|
- Dark mode mapping must maintain equivalent contrast relationships
|
|
41
|
+
- Foundation chunks follow chunk-format.md format exactly
|
|
43
42
|
</rules>
|
|
44
43
|
|
|
45
44
|
<process>
|
|
46
|
-
## Step 0:
|
|
47
|
-
|
|
48
|
-
| Input | Mode |
|
|
49
|
-
|-------|------|
|
|
50
|
-
| `/gsp-color --enrich` | Enrich existing color-system.md |
|
|
51
|
-
| `/gsp-color #FF5733 #3366FF` | Generate from hex values |
|
|
52
|
-
| `/gsp-color` | Interactive — explore and build |
|
|
53
|
-
|
|
54
|
-
## Step 1: Enrich mode (`--enrich`)
|
|
55
|
-
|
|
56
|
-
Read existing `{BRAND_PATH}/identity/color-system.md`. Extract chosen hex values and rationale.
|
|
57
|
-
|
|
58
|
-
Read `references/color-composition.md` for domain expertise.
|
|
59
|
-
|
|
60
|
-
Enrich the file with:
|
|
61
|
-
- OKLCH 11-stop scales via tints.dev API: `https://tints.dev/api/{colorName}/{hexWithout#}`
|
|
62
|
-
- WCAG AA contrast ratios for every semantic foreground/background pair
|
|
63
|
-
- Semantic color mapping (error, success, warning, info)
|
|
64
|
-
- Dark mode color mapping with equivalent contrast
|
|
65
|
-
- Write `palettes.json` alongside color-system.md
|
|
66
|
-
|
|
67
|
-
Overwrite `color-system.md` with enriched version. Preserve the creative rationale — add technical data around it.
|
|
68
|
-
|
|
69
|
-
## Step 2: Interactive mode (no args)
|
|
70
|
-
|
|
71
|
-
One `AskUserQuestion` at a time:
|
|
45
|
+
## Step 0: Parse mode
|
|
72
46
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
4. Confirm or iterate
|
|
47
|
+
| Input | Mode | Domain |
|
|
48
|
+
|-------|------|--------|
|
|
49
|
+
| `/gsp-color #hex [#hex...] --preview` | Preview scales | palette |
|
|
50
|
+
| `/gsp-color #hex [#hex...]` | Generate from hex | palette |
|
|
51
|
+
| `/gsp-color --enrich` | Enrich existing system | system |
|
|
52
|
+
| `/gsp-color` | Interactive full system | system |
|
|
80
53
|
|
|
81
|
-
## Step
|
|
54
|
+
## Step 1: Load domain
|
|
82
55
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
56
|
+
Read the domain file for the detected mode:
|
|
57
|
+
- **palette** mode → Read `${CLAUDE_SKILL_DIR}/domains/palette.md`
|
|
58
|
+
- **system** mode → Read `${CLAUDE_SKILL_DIR}/domains/system.md`
|
|
86
59
|
|
|
87
|
-
|
|
88
|
-
- Map brand colors to semantic roles (primary → CTAs, secondary → supporting, accent → highlights)
|
|
89
|
-
- Define standard semantic colors (error, success, warning, info)
|
|
90
|
-
- Map dark mode equivalents
|
|
60
|
+
For system mode, also read `${CLAUDE_SKILL_DIR}/references/color-composition.md`.
|
|
91
61
|
|
|
92
|
-
|
|
93
|
-
- Every text/background pair → WCAG AA ratio (4.5:1 normal, 3:1 large)
|
|
94
|
-
- Flag failures with suggested alternatives
|
|
62
|
+
## Step 2: Execute domain framework
|
|
95
63
|
|
|
96
|
-
|
|
64
|
+
Follow the loaded domain file's complete workflow — it contains all generation logic, API calls, output formats, and completion steps.
|
|
97
65
|
|
|
98
|
-
|
|
66
|
+
## Step 3: Write output
|
|
99
67
|
|
|
100
|
-
|
|
68
|
+
Write `color-system.md` + `palettes.json` to the resolved output path (skip if `--preview`).
|
|
101
69
|
|
|
102
|
-
## Step
|
|
70
|
+
## Step 4: Summary
|
|
103
71
|
|
|
104
|
-
Display
|
|
72
|
+
Display result summary and offer next steps per the domain file's completion section.
|
|
105
73
|
</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
|
|
@@ -1,85 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
name: gsp-palette
|
|
3
|
-
description: Generate OKLCH color palettes — standalone or as a building block for identity
|
|
4
|
-
user-invocable: true
|
|
5
|
-
model: sonnet
|
|
6
|
-
allowed-tools:
|
|
7
|
-
- Read
|
|
8
|
-
- Write
|
|
9
|
-
- Bash
|
|
10
|
-
- AskUserQuestion
|
|
11
|
-
- WebFetch
|
|
12
|
-
---
|
|
13
|
-
<context>
|
|
14
|
-
You are a GSP palette generator. You produce OKLCH 11-stop color scales from input hex colors using the tints.dev API. Downstream agents (creative-director, system-architect, builder) consume the output files.
|
|
15
|
-
|
|
16
|
-
This is a standalone composable skill. It works two ways:
|
|
17
|
-
1. **Standalone** — user runs `/gsp-palette #FF5733 #3366FF` directly, gets palettes
|
|
18
|
-
2. **As a building block** — identity phase detects existing palette files and reuses them
|
|
19
|
-
</context>
|
|
20
|
-
|
|
21
|
-
<objective>
|
|
22
|
-
Generate production-ready OKLCH color palettes from hex colors.
|
|
23
|
-
|
|
24
|
-
**Input:** Hex color(s), optional flags (`--preview`)
|
|
25
|
-
**Output:** `palettes.json` + `color-system.md` foundation chunk in the target directory
|
|
26
|
-
**Agent:** None — deterministic API calls, handled inline
|
|
27
|
-
</objective>
|
|
1
|
+
# Palette Generation
|
|
28
2
|
|
|
29
|
-
|
|
30
|
-
@${CLAUDE_SKILL_DIR}/../../references/chunk-format.md
|
|
31
|
-
</execution_context>
|
|
3
|
+
Domain expertise for OKLCH palette generation from hex colors.
|
|
32
4
|
|
|
33
|
-
|
|
34
|
-
- Always use `AskUserQuestion` for user interaction — never prompt via plain text
|
|
35
|
-
- One decision per question — never batch multiple questions in a single message
|
|
36
|
-
- Palettes are deterministic — same hex input always produces the same OKLCH scales
|
|
37
|
-
- Foundation chunks follow `references/chunk-format.md` format exactly
|
|
38
|
-
- Every palette gets the full 11-stop scale: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950
|
|
39
|
-
- Minimum colors: primary. Secondary and accent are recommended but optional
|
|
40
|
-
- Color names must be semantic (primary, secondary, accent, neutral) not literal (red, blue)
|
|
41
|
-
</rules>
|
|
42
|
-
|
|
43
|
-
<process>
|
|
44
|
-
## Step 0: Parse invocation
|
|
5
|
+
---
|
|
45
6
|
|
|
46
|
-
|
|
7
|
+
## Modes
|
|
47
8
|
|
|
48
9
|
| Input | Mode |
|
|
49
10
|
|-------|------|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
| `/gsp-palette` | Interactive — ask for colors |
|
|
11
|
+
| `#hex [#hex...]` | Direct — parse hex values, assign roles in order |
|
|
12
|
+
| `#hex [#hex...] --preview` | Preview — show scales without writing files |
|
|
53
13
|
|
|
54
|
-
##
|
|
14
|
+
## Color role assignment
|
|
55
15
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
Parse hex values from the invocation. Assign semantic roles in order:
|
|
16
|
+
Parse hex values from invocation and assign semantic roles in order:
|
|
59
17
|
1. First color → **primary**
|
|
60
18
|
2. Second color → **secondary**
|
|
61
19
|
3. Third color → **accent**
|
|
62
20
|
4. Additional colors → **custom-{n}**
|
|
63
21
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
Use `AskUserQuestion` to collect colors:
|
|
22
|
+
Minimum colors: primary. Secondary and accent are recommended but optional.
|
|
67
23
|
|
|
68
|
-
|
|
24
|
+
Color names must be semantic (primary, secondary, accent, neutral) — not literal (red, blue).
|
|
69
25
|
|
|
70
|
-
|
|
71
|
-
- **Add secondary** — "I have a secondary color"
|
|
72
|
-
- **Add accent** — "I have an accent color"
|
|
73
|
-
- **Generate complements** — "suggest secondary/accent from my primary"
|
|
74
|
-
- **Just primary** — "that's enough, generate from one color"
|
|
26
|
+
## Complement generation
|
|
75
27
|
|
|
76
|
-
|
|
77
|
-
- Secondary
|
|
78
|
-
- Accent
|
|
28
|
+
When the user has only a primary and wants suggestions:
|
|
29
|
+
- **Secondary:** rotate hue by 180 degrees (complement)
|
|
30
|
+
- **Accent:** rotate hue by 30 degrees (analogous)
|
|
79
31
|
|
|
80
|
-
Present the generated suggestions and let the user confirm or adjust
|
|
32
|
+
Present the generated suggestions and let the user confirm or adjust via `AskUserQuestion`.
|
|
81
33
|
|
|
82
|
-
##
|
|
34
|
+
## OKLCH scale generation via tints.dev API
|
|
83
35
|
|
|
84
36
|
For each color, call the tints.dev API:
|
|
85
37
|
|
|
@@ -93,14 +45,16 @@ Where:
|
|
|
93
45
|
|
|
94
46
|
The API returns an 11-stop OKLCH scale (50-950) with L, C, H values for each stop.
|
|
95
47
|
|
|
96
|
-
|
|
48
|
+
Every palette gets the full 11-stop scale: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950.
|
|
97
49
|
|
|
98
|
-
|
|
50
|
+
Palettes are deterministic — same hex input always produces the same OKLCH scales.
|
|
99
51
|
|
|
100
|
-
|
|
52
|
+
## Preview mode (`--preview`)
|
|
53
|
+
|
|
54
|
+
Display scales without writing files:
|
|
101
55
|
|
|
102
56
|
```
|
|
103
|
-
/gsp-
|
|
57
|
+
/gsp-color preview
|
|
104
58
|
═══════════════════════════════════════
|
|
105
59
|
|
|
106
60
|
primary (#FF5733)
|
|
@@ -120,14 +74,12 @@ If `--preview`, display the scales without writing files:
|
|
|
120
74
|
...
|
|
121
75
|
|
|
122
76
|
─────────────────────────────────────
|
|
123
|
-
Run /gsp-
|
|
77
|
+
Run /gsp-color #FF5733 #3366FF to write files.
|
|
124
78
|
```
|
|
125
79
|
|
|
126
80
|
Stop here. Do not write any files.
|
|
127
81
|
|
|
128
|
-
##
|
|
129
|
-
|
|
130
|
-
Determine where to write the palette output:
|
|
82
|
+
## Output path resolution
|
|
131
83
|
|
|
132
84
|
### Within a brand identity
|
|
133
85
|
If a brand context exists (`.design/branding/{brand}/`):
|
|
@@ -138,15 +90,13 @@ If a brand context exists (`.design/branding/{brand}/`):
|
|
|
138
90
|
- Write to `.design/branding/_palette/`
|
|
139
91
|
- Create minimal directory structure
|
|
140
92
|
|
|
141
|
-
##
|
|
93
|
+
## palettes.json format
|
|
142
94
|
|
|
143
|
-
If `{OUTPUT_PATH}/palettes.json` already exists, use `AskUserQuestion`: "palettes.json already exists — overwrite with new palette?" with options **Overwrite** and **Cancel**. If cancelled, skip writing
|
|
144
|
-
|
|
145
|
-
Write `{OUTPUT_PATH}/palettes.json` with the full OKLCH scales:
|
|
95
|
+
If `{OUTPUT_PATH}/palettes.json` already exists, use `AskUserQuestion`: "palettes.json already exists — overwrite with new palette?" with options **Overwrite** and **Cancel**. If cancelled, skip writing.
|
|
146
96
|
|
|
147
97
|
```json
|
|
148
98
|
{
|
|
149
|
-
"$description": "OKLCH 11-stop color palettes generated by /gsp-
|
|
99
|
+
"$description": "OKLCH 11-stop color palettes generated by /gsp-color",
|
|
150
100
|
"$source": "tints.dev",
|
|
151
101
|
"primary": {
|
|
152
102
|
"source": "#FF5733",
|
|
@@ -167,9 +117,9 @@ Write `{OUTPUT_PATH}/palettes.json` with the full OKLCH scales:
|
|
|
167
117
|
}
|
|
168
118
|
```
|
|
169
119
|
|
|
170
|
-
##
|
|
120
|
+
## color-system.md format (palette-only)
|
|
171
121
|
|
|
172
|
-
Write `{OUTPUT_PATH}/color-system.md` as a foundation chunk per
|
|
122
|
+
Write `{OUTPUT_PATH}/color-system.md` as a foundation chunk per chunk-format.md:
|
|
173
123
|
|
|
174
124
|
```markdown
|
|
175
125
|
# Color System
|
|
@@ -222,16 +172,6 @@ Write `{OUTPUT_PATH}/color-system.md` as a foundation chunk per `references/chun
|
|
|
222
172
|
| primary-900 (text) | primary-100 | Invert for readability |
|
|
223
173
|
| secondary-500 | secondary-400 | Same shift as primary |
|
|
224
174
|
|
|
225
|
-
## Semantic Assignments
|
|
226
|
-
|
|
227
|
-
| Token | Light value | Dark value |
|
|
228
|
-
|-------|-------------|------------|
|
|
229
|
-
| --color-brand | primary-500 | primary-400 |
|
|
230
|
-
| --color-brand-hover | primary-600 | primary-300 |
|
|
231
|
-
| --color-surface | primary-50 | primary-950 |
|
|
232
|
-
| --color-text | primary-900 | primary-50 |
|
|
233
|
-
| --color-accent | accent-500 | accent-400 |
|
|
234
|
-
|
|
235
175
|
---
|
|
236
176
|
|
|
237
177
|
## Related
|
|
@@ -240,12 +180,10 @@ Write `{OUTPUT_PATH}/color-system.md` as a foundation chunk per `references/chun
|
|
|
240
180
|
- [typography.md](./typography.md)
|
|
241
181
|
```
|
|
242
182
|
|
|
243
|
-
##
|
|
244
|
-
|
|
245
|
-
Display the result:
|
|
183
|
+
## Completion output
|
|
246
184
|
|
|
247
185
|
```
|
|
248
|
-
/gsp-
|
|
186
|
+
/gsp-color — {n} colors scaled
|
|
249
187
|
═══════════════════════════════════════
|
|
250
188
|
|
|
251
189
|
{OUTPUT_PATH}/
|
|
@@ -257,11 +195,3 @@ Display the result:
|
|
|
257
195
|
|
|
258
196
|
─────────────────────────────────────
|
|
259
197
|
```
|
|
260
|
-
|
|
261
|
-
Then use `AskUserQuestion` with routing options:
|
|
262
|
-
|
|
263
|
-
- **Generate type scale** — "pair these palettes with typography" → route to `/gsp-typescale`
|
|
264
|
-
- **Apply a full style** — "use a style preset for the complete system" → route to `/gsp-style`
|
|
265
|
-
- **Continue to identity** — "use these palettes in the branding diamond" → route to `/gsp-brand-identity`
|
|
266
|
-
- **Done** — "that's all for now"
|
|
267
|
-
</process>
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Color System
|
|
2
|
+
|
|
3
|
+
Domain expertise for full color system design — creative rationale, contrast validation, semantic mapping, dark mode.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Modes
|
|
8
|
+
|
|
9
|
+
| Input | Mode |
|
|
10
|
+
|-------|------|
|
|
11
|
+
| `--enrich` | Enrich existing color-system.md with technical precision |
|
|
12
|
+
| *(no args)* | Interactive — explore and build a color system from scratch |
|
|
13
|
+
|
|
14
|
+
## Enrich mode (`--enrich`)
|
|
15
|
+
|
|
16
|
+
Read existing `{BRAND_PATH}/identity/color-system.md`. Extract chosen hex values and rationale.
|
|
17
|
+
|
|
18
|
+
Read `references/color-composition.md` via `${CLAUDE_SKILL_DIR}/references/color-composition.md` for domain expertise on composition strategies.
|
|
19
|
+
|
|
20
|
+
Enrich the file with:
|
|
21
|
+
- OKLCH 11-stop scales via tints.dev API: `https://www.tints.dev/api/{colorName}/{hexWithoutHash}`
|
|
22
|
+
- WCAG AA contrast ratios for every semantic foreground/background pair
|
|
23
|
+
- Semantic color mapping (error, success, warning, info)
|
|
24
|
+
- Dark mode color mapping with equivalent contrast
|
|
25
|
+
- Write `palettes.json` alongside color-system.md
|
|
26
|
+
|
|
27
|
+
Overwrite `color-system.md` with enriched version. Preserve the creative rationale — add technical data around it.
|
|
28
|
+
|
|
29
|
+
## Interactive mode (no args)
|
|
30
|
+
|
|
31
|
+
One `AskUserQuestion` at a time:
|
|
32
|
+
|
|
33
|
+
1. **Starting point** — use `AskUserQuestion`:
|
|
34
|
+
- **I have hex values** — "I know my brand colors"
|
|
35
|
+
- **From a style preset** — "Start from a GSP preset palette"
|
|
36
|
+
- **Explore** — "Help me find the right palette"
|
|
37
|
+
2. If exploring: ask about mood (warm/cool/neutral), energy (vibrant/muted/earthy), context (tech/health/luxury/etc.)
|
|
38
|
+
3. Propose a palette with primary + secondary + accent + neutral, show hex swatches
|
|
39
|
+
4. Confirm or iterate
|
|
40
|
+
|
|
41
|
+
After colors are confirmed, build the full system (contrast, semantics, dark mode).
|
|
42
|
+
|
|
43
|
+
## WCAG AA contrast validation
|
|
44
|
+
|
|
45
|
+
Calculate contrast for every text/background pair:
|
|
46
|
+
- Normal text: 4.5:1 minimum
|
|
47
|
+
- Large text (18px+ or 14px+ bold): 3:1 minimum
|
|
48
|
+
- Flag failures with suggested alternatives from the palette scale
|
|
49
|
+
|
|
50
|
+
Test these combinations:
|
|
51
|
+
- Each semantic color on white (#fff) and black (#000)
|
|
52
|
+
- Primary text on secondary backgrounds and vice versa
|
|
53
|
+
- All foreground/background pairs used in semantic assignments
|
|
54
|
+
|
|
55
|
+
## Semantic color mapping
|
|
56
|
+
|
|
57
|
+
Map brand colors to semantic roles:
|
|
58
|
+
- **Primary** → CTAs, primary buttons, links
|
|
59
|
+
- **Secondary** → supporting UI, secondary surfaces
|
|
60
|
+
- **Accent** → highlights, badges, decorative
|
|
61
|
+
|
|
62
|
+
Define standard semantic colors:
|
|
63
|
+
- **Error** — red-family, distinct from brand palette
|
|
64
|
+
- **Success** — green-family
|
|
65
|
+
- **Warning** — amber/yellow-family
|
|
66
|
+
- **Info** — blue-family (or brand secondary if blue-adjacent)
|
|
67
|
+
|
|
68
|
+
Each semantic color needs its own 11-stop scale or at minimum light/default/dark stops.
|
|
69
|
+
|
|
70
|
+
## Dark mode mapping
|
|
71
|
+
|
|
72
|
+
Maintain equivalent contrast relationships:
|
|
73
|
+
|
|
74
|
+
| Light mode | Dark mode | Rationale |
|
|
75
|
+
|------------|-----------|-----------|
|
|
76
|
+
| primary-500 (buttons) | primary-400 | Lighter for dark bg contrast |
|
|
77
|
+
| primary-50 (bg tint) | primary-950 | Invert the tint |
|
|
78
|
+
| primary-900 (text) | primary-100 | Invert for readability |
|
|
79
|
+
| secondary-500 | secondary-400 | Same shift as primary |
|
|
80
|
+
| neutral-50 (page bg) | neutral-950 | Full inversion |
|
|
81
|
+
| neutral-900 (body text) | neutral-100 | Full inversion |
|
|
82
|
+
|
|
83
|
+
## Output structure
|
|
84
|
+
|
|
85
|
+
Write to the resolved output path:
|
|
86
|
+
|
|
87
|
+
### color-system.md
|
|
88
|
+
|
|
89
|
+
Full color system chunk (~100-150 lines) per chunk-format.md including:
|
|
90
|
+
- Source colors table
|
|
91
|
+
- Palette scales (all 11 stops per color)
|
|
92
|
+
- Contrast audit results (pass/fail per pair)
|
|
93
|
+
- Semantic color assignments (light + dark values)
|
|
94
|
+
- Dark mode mapping table
|
|
95
|
+
- Composition strategy recommendation (referencing color-composition.md strategies)
|
|
96
|
+
|
|
97
|
+
### palettes.json
|
|
98
|
+
|
|
99
|
+
Full OKLCH scales in structured JSON (same format as palette domain).
|
|
100
|
+
|
|
101
|
+
### Semantic assignments template
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
| Token | Light value | Dark value |
|
|
105
|
+
|-------|-------------|------------|
|
|
106
|
+
| --color-brand | primary-500 | primary-400 |
|
|
107
|
+
| --color-brand-hover | primary-600 | primary-300 |
|
|
108
|
+
| --color-surface | primary-50 | primary-950 |
|
|
109
|
+
| --color-text | primary-900 | primary-50 |
|
|
110
|
+
| --color-accent | accent-500 | accent-400 |
|
|
111
|
+
| --color-error | error-500 | error-400 |
|
|
112
|
+
| --color-success | success-500 | success-400 |
|
|
113
|
+
| --color-warning | warning-500 | warning-400 |
|
|
114
|
+
| --color-info | info-500 | info-400 |
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Completion
|
|
118
|
+
|
|
119
|
+
Display palette summary with contrast status. Offer next steps via `AskUserQuestion`:
|
|
120
|
+
- **Generate type scale** — route to `/gsp-typography`
|
|
121
|
+
- **Apply a full style** — route to `/gsp-style`
|
|
122
|
+
- **Continue to identity** — route to `/gsp-brand-identity`
|
|
123
|
+
- **Done** — "that's all for now"
|
|
@@ -35,6 +35,11 @@ Scan the codebase and produce five focused design system documents.
|
|
|
35
35
|
@${CLAUDE_SKILL_DIR}/../../templates/system/CONCERNS.md
|
|
36
36
|
</execution_context>
|
|
37
37
|
|
|
38
|
+
<rules>
|
|
39
|
+
- Always use `AskUserQuestion` for user interaction — never prompt via plain text
|
|
40
|
+
- One decision per question — never batch multiple questions in a single message
|
|
41
|
+
</rules>
|
|
42
|
+
|
|
38
43
|
<process>
|
|
39
44
|
## Step 0: Prepare output directory
|
|
40
45
|
|
|
@@ -56,11 +56,12 @@ Skill names are left-padded with 4 spaces. Descriptions start at column 27 (4 in
|
|
|
56
56
|
/gsp-project-review QA validate implementation against designs
|
|
57
57
|
/gsp-add-reference add reference material to a project
|
|
58
58
|
|
|
59
|
-
───
|
|
59
|
+
─── Expertise ───────────────────────
|
|
60
60
|
|
|
61
|
+
/gsp-color color systems — palettes, contrast, semantic mapping, dark mode
|
|
62
|
+
/gsp-typography type systems — scale, pairing, fluid type, vertical rhythm
|
|
63
|
+
/gsp-visuals visual direction — imagery, 3D, video, textures
|
|
61
64
|
/gsp-accessibility accessibility audit — contrast, WCAG, code checks
|
|
62
|
-
/gsp-palette generate OKLCH color palettes
|
|
63
|
-
/gsp-typescale generate mathematical type scales
|
|
64
65
|
/gsp-style apply a design style preset
|
|
65
66
|
|
|
66
67
|
─── Utilities ────────────────────────
|
|
@@ -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
|
|
@@ -93,5 +93,5 @@ Update `{PROJECT_PATH}/STATE.md`:
|
|
|
93
93
|
|
|
94
94
|
## Step 4: Phase transition output
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
Invoke `/gsp-phase-transition` with phase `launch` and output directory `{PROJECT_PATH}/launch/`.
|
|
97
97
|
</process>
|