get-shit-pretty 0.5.0 → 0.5.2
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/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/bin/install.js +38 -19
- package/gsp/agents/gsp-accessibility-auditor.md +1 -4
- package/gsp/agents/gsp-ascii-artist.md +1 -1
- package/gsp/agents/gsp-brand-auditor.md +0 -2
- package/gsp/agents/gsp-brand-strategist.md +0 -2
- package/gsp/agents/gsp-brand-syncer.md +125 -0
- package/gsp/agents/gsp-builder.md +11 -14
- package/gsp/agents/gsp-campaign-director.md +0 -20
- package/gsp/agents/gsp-critic.md +15 -18
- package/gsp/agents/gsp-designer.md +6 -6
- package/gsp/agents/gsp-identity-designer.md +0 -4
- package/gsp/agents/{gsp-system-architect.md → gsp-pattern-architect.md} +5 -67
- package/gsp/agents/gsp-project-researcher.md +0 -21
- package/gsp/agents/gsp-researcher.md +0 -2
- package/gsp/agents/gsp-reviewer.md +4 -14
- package/gsp/agents/gsp-scoper.md +1 -22
- package/gsp/hooks/hooks.json +11 -0
- package/gsp/prompts/01-design-system-architect.md +0 -46
- package/gsp/prompts/02-brand-identity-creator.md +1 -14
- package/gsp/prompts/03-ui-ux-pattern-master.md +1 -21
- package/gsp/prompts/04-marketing-asset-factory.md +1 -14
- package/gsp/prompts/05-implementation-spec-expert.md +0 -27
- package/gsp/prompts/06-design-critique-partner.md +1 -17
- package/gsp/prompts/07-design-trend-synthesizer.md +2 -29
- package/gsp/prompts/08-accessibility-auditor.md +4 -19
- package/gsp/prompts/09-design-to-code-translator.md +21 -20
- package/gsp/prompts/10-project-scoper.md +2 -36
- package/gsp/prompts/11-deliverable-reviewer.md +1 -50
- package/gsp/prompts/12-project-researcher.md +0 -39
- package/gsp/references/anti-patterns.md +173 -0
- package/gsp/references/block-patterns.md +135 -0
- package/gsp/references/chunk-format.md +31 -0
- package/gsp/references/phase-transitions.md +78 -33
- package/gsp/references/style-preset-schema.md +63 -0
- package/gsp/references/visual-effects.md +475 -0
- package/gsp/references/visual-taste.md +120 -0
- package/gsp/skills/gsp-accessibility/SKILL.md +1 -1
- package/gsp/skills/gsp-brand-audit/SKILL.md +1 -3
- package/gsp/skills/gsp-brand-identity/SKILL.md +1 -4
- package/gsp/skills/gsp-brand-patterns/SKILL.md +30 -50
- package/gsp/skills/gsp-brand-research/SKILL.md +7 -4
- package/gsp/skills/gsp-brand-strategy/SKILL.md +1 -4
- package/gsp/skills/gsp-brand-sync/SKILL.md +101 -0
- package/gsp/skills/gsp-design-system/SKILL.md +1 -1
- package/gsp/skills/gsp-doctor/SKILL.md +7 -7
- package/gsp/skills/gsp-help/SKILL.md +2 -1
- package/gsp/skills/gsp-launch/SKILL.md +2 -3
- package/gsp/skills/gsp-project-brief/SKILL.md +7 -22
- package/gsp/skills/gsp-project-build/SKILL.md +108 -26
- package/gsp/skills/gsp-project-critique/SKILL.md +5 -33
- package/gsp/skills/gsp-project-design/SKILL.md +25 -26
- package/gsp/skills/gsp-project-research/SKILL.md +8 -17
- package/gsp/skills/gsp-project-review/SKILL.md +6 -37
- package/gsp/skills/gsp-start/SKILL.md +29 -12
- package/gsp/skills/gsp-style/SKILL.md +20 -223
- package/gsp/skills/gsp-typescale/SKILL.md +23 -319
- package/gsp/skills/gsp-update/SKILL.md +18 -10
- package/gsp/templates/branding/brief.md +13 -1
- package/gsp/templates/branding/roadmap.md +2 -2
- package/gsp/templates/branding/state.md +1 -1
- package/gsp/templates/phases/brief.md +1 -1
- package/gsp/templates/phases/{system.md → patterns.md} +3 -3
- package/gsp/templates/phases/review.md +1 -1
- package/package.json +1 -1
- package/scripts/gsp-context-recovery.sh +71 -0
- package/scripts/gsp-statusline.js +5 -1
package/README.md
CHANGED
|
@@ -110,7 +110,7 @@ Create your visual identity — logo directions, color palette, typography syste
|
|
|
110
110
|
|
|
111
111
|
Translate your brand into tokens, components, and a living design system. Everything codified and ready to build with.
|
|
112
112
|
|
|
113
|
-
**Creates:** `.design/branding/{brand}/
|
|
113
|
+
**Creates:** `.design/branding/{brand}/patterns/`
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
package/bin/install.js
CHANGED
|
@@ -149,10 +149,10 @@ const tagline = taglines[Math.floor(Math.random() * taglines.length)];
|
|
|
149
149
|
|
|
150
150
|
// ── Sparkle field + density ramp banner ──
|
|
151
151
|
|
|
152
|
-
function sparkleLine(width) {
|
|
153
|
-
const chars = ['
|
|
152
|
+
function sparkleLine(width, density = 'normal') {
|
|
153
|
+
const chars = ['.', '.', '·', '·', '*', '+'];
|
|
154
154
|
const line = Array(width).fill(' ');
|
|
155
|
-
const count = 4 + Math.floor(Math.random() * 5);
|
|
155
|
+
const count = density === 'dense' ? 8 + Math.floor(Math.random() * 6) : 4 + Math.floor(Math.random() * 5);
|
|
156
156
|
for (let i = 0; i < count; i++) {
|
|
157
157
|
const pos = Math.floor(Math.random() * width);
|
|
158
158
|
line[pos] = chars[Math.floor(Math.random() * chars.length)];
|
|
@@ -168,17 +168,34 @@ function center(text, width) {
|
|
|
168
168
|
|
|
169
169
|
const columns = process.stdout.columns || 80;
|
|
170
170
|
const rampText = `${c.accent}░▒▓█${c.reset} ${c.bold} GET SHIT PRETTY ${c.reset} ${c.accent}█▓▒░${c.reset}`;
|
|
171
|
-
const
|
|
172
|
-
const
|
|
171
|
+
const boxWidth = 48;
|
|
172
|
+
const innerWidth = boxWidth - 2; // inside the border chars
|
|
173
|
+
const showSparkles = columns >= 44;
|
|
173
174
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
function centerInBox(text, width) {
|
|
176
|
+
const stripped = text.replace(/\x1b\[[0-9;]*m/g, '');
|
|
177
|
+
const pad = Math.max(0, Math.floor((width - stripped.length) / 2));
|
|
178
|
+
const rightPad = Math.max(0, width - stripped.length - pad);
|
|
179
|
+
return ' '.repeat(pad) + text + ' '.repeat(rightPad);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const indent = ' ';
|
|
183
|
+
const topBorder = `${indent}${c.dim}╭${'─'.repeat(innerWidth)}╮${c.reset}`;
|
|
184
|
+
const bottomBorder = `${indent}${c.dim}╰${'─'.repeat(innerWidth)}╯${c.reset}`;
|
|
185
|
+
const emptyLine = `${indent}${c.dim}│${c.reset}${' '.repeat(innerWidth)}${c.dim}│${c.reset}`;
|
|
186
|
+
const boxLine = (content) => `${indent}${c.dim}│${c.reset}${centerInBox(content, innerWidth)}${c.dim}│${c.reset}`;
|
|
187
|
+
const sparkle = (d) => boxLine(`${c.dim}${sparkleLine(innerWidth - 4, d)}${c.reset}`);
|
|
188
|
+
|
|
189
|
+
const banner = '\n' +
|
|
190
|
+
topBorder + '\n' +
|
|
191
|
+
(showSparkles ? sparkle('dense') + '\n' : '') +
|
|
192
|
+
(showSparkles ? sparkle('dense') + '\n' : '') +
|
|
193
|
+
emptyLine + '\n' +
|
|
194
|
+
boxLine(rampText) + '\n' +
|
|
195
|
+
emptyLine + '\n' +
|
|
196
|
+
(showSparkles ? sparkle('dense') + '\n' : '') +
|
|
197
|
+
(showSparkles ? sparkle('dense') + '\n' : '') +
|
|
198
|
+
bottomBorder + '\n' +
|
|
182
199
|
'\n' +
|
|
183
200
|
` ${c.bold}${c.accent}/gsp:${c.reset} ${c.tertiary}◇◇${c.reset} ${c.dim}v${pkg.version}${c.reset}\n` +
|
|
184
201
|
` ${c.dim}${tagline}${c.reset}\n`;
|
|
@@ -979,13 +996,15 @@ function copyGeminiSkills(srcDir, destDir, pathPrefix) {
|
|
|
979
996
|
* Returns count of gsp- agents installed.
|
|
980
997
|
* runtime: 'claude' | 'opencode' | 'gemini' (Codex skips agents entirely)
|
|
981
998
|
*/
|
|
982
|
-
function copyAgents(srcDir, destDir, pathPrefix, runtime) {
|
|
999
|
+
function copyAgents(srcDir, destDir, pathPrefix, runtime, { clean = false } = {}) {
|
|
983
1000
|
fs.mkdirSync(destDir, { recursive: true });
|
|
984
1001
|
|
|
985
|
-
// Remove old GSP agents before copying new ones
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
1002
|
+
// Remove old GSP agents before copying new ones (only when clean=true)
|
|
1003
|
+
if (clean) {
|
|
1004
|
+
for (const file of fs.readdirSync(destDir)) {
|
|
1005
|
+
if (file.startsWith('gsp-') && file.endsWith('.md')) {
|
|
1006
|
+
fs.unlinkSync(path.join(destDir, file));
|
|
1007
|
+
}
|
|
989
1008
|
}
|
|
990
1009
|
}
|
|
991
1010
|
|
|
@@ -1347,7 +1366,7 @@ function install(isGlobal, runtime = 'claude') {
|
|
|
1347
1366
|
const agentsSrc = path.join(gspRoot, 'agents');
|
|
1348
1367
|
if (fs.existsSync(agentsSrc)) {
|
|
1349
1368
|
const agentsDest = path.join(targetDir, 'agents');
|
|
1350
|
-
const agentCount = copyAgents(agentsSrc, agentsDest, pathPrefix, runtime);
|
|
1369
|
+
const agentCount = copyAgents(agentsSrc, agentsDest, pathPrefix, runtime, { clean: true });
|
|
1351
1370
|
|
|
1352
1371
|
// ── Custom agents (agents/custom/) ──
|
|
1353
1372
|
const customAgentsSrc = path.join(agentsSrc, 'custom');
|
|
@@ -14,7 +14,7 @@ You are a GSP accessibility auditor spawned by `/gsp:accessibility` or `/gsp:pro
|
|
|
14
14
|
|
|
15
15
|
Act as Apple Accessibility Specialist. Your job is to audit designs or code against WCAG 2.2 AA/AAA standards and produce a comprehensive accessibility report with pass/fail results and remediation guidance.
|
|
16
16
|
|
|
17
|
-
Accessibility is
|
|
17
|
+
Accessibility is a core quality requirement.
|
|
18
18
|
</role>
|
|
19
19
|
|
|
20
20
|
<methodology>
|
|
@@ -34,10 +34,7 @@ Accessibility is not optional polish — it's a core quality requirement. Be tho
|
|
|
34
34
|
- Focus indicators: >= 3:1 with >= 2px outline
|
|
35
35
|
|
|
36
36
|
## Quality Standards
|
|
37
|
-
- Check every color combination mentioned in the design system
|
|
38
|
-
- Verify every interactive element has keyboard access
|
|
39
37
|
- Confirm every form has proper labels and error messages
|
|
40
|
-
- Check touch targets (>= 24x24 CSS px, >= 44x44 recommended)
|
|
41
38
|
- Verify heading hierarchy is logical
|
|
42
39
|
|
|
43
40
|
## Code Audit Mode
|
|
@@ -45,7 +45,7 @@ You are a creative who happens to work in a grid of fixed-width cells. Every pie
|
|
|
45
45
|
|
|
46
46
|
- Use **dim** (`\x1b[2m`) for background decoration (dots, frames, scatter)
|
|
47
47
|
- Use **bold** (`\x1b[1m`) for the main text / focal element
|
|
48
|
-
- Use
|
|
48
|
+
- Use colors that match the art's subject and mood
|
|
49
49
|
- Use **cyan** for secondary accents
|
|
50
50
|
- Use **yellow** sparingly for highlights
|
|
51
51
|
- Avoid red and green — they carry semantic meaning (error/success)
|
|
@@ -12,8 +12,6 @@ color: magenta
|
|
|
12
12
|
You are a GSP brand auditor spawned by `/gsp:brand-audit`.
|
|
13
13
|
|
|
14
14
|
Assess existing brand identities — coherence, market fit, equity, evolution opportunity. Produce a structured audit that downstream phases consume as baseline context.
|
|
15
|
-
|
|
16
|
-
Write for both human review and agent consumption.
|
|
17
15
|
</role>
|
|
18
16
|
|
|
19
17
|
<inputs>
|
|
@@ -13,7 +13,6 @@ You are a GSP brand strategist spawned by `/gsp:brand-strategy`.
|
|
|
13
13
|
|
|
14
14
|
Act as Head of Strategy at a top branding agency. Define the strategic foundation — positioning, archetype, platform, voice, and messaging — that the visual identity will be built on.
|
|
15
15
|
|
|
16
|
-
Write for both human review and agent consumption by downstream phases.
|
|
17
16
|
</role>
|
|
18
17
|
|
|
19
18
|
<inputs>
|
|
@@ -35,7 +34,6 @@ Write for both human review and agent consumption by downstream phases.
|
|
|
35
34
|
6. **Build messaging** — core message → 3 supporting messages with proof points → elevator pitch → tagline directions → audience-segment mapping
|
|
36
35
|
|
|
37
36
|
## Quality Standards
|
|
38
|
-
- Every output must be specific to this brand — swap in a competitor's name and it should break
|
|
39
37
|
- Archetype must align with persona needs and competitive gaps
|
|
40
38
|
- Positioning axes must matter to the target audience
|
|
41
39
|
- Values must be behavioral (actionable), not aspirational platitudes
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsp-brand-syncer
|
|
3
|
+
description: Analyzes project-to-brand divergences across tokens, voice, visuals, and personality. Spawned by /gsp:brand-sync.
|
|
4
|
+
tools: Read, Grep, Glob, Write
|
|
5
|
+
disallowedTools: Edit
|
|
6
|
+
maxTurns: 40
|
|
7
|
+
permissionMode: acceptEdits
|
|
8
|
+
color: magenta
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<role>
|
|
12
|
+
You are a GSP brand syncer spawned by `/gsp:brand-sync`.
|
|
13
|
+
|
|
14
|
+
Analyze a project's shipped codebase against its source brand system. Detect divergences across four dimensions: tokens, voice & tone, visual patterns, and personality. Produce a structured sync report that the skill uses to confirm updates with the user.
|
|
15
|
+
</role>
|
|
16
|
+
|
|
17
|
+
<inputs>
|
|
18
|
+
- `BRAND_PATH` — path to the brand directory (e.g., `.design/branding/{brand}`)
|
|
19
|
+
- Brand tokens: `{BRAND_PATH}/patterns/tokens.json`
|
|
20
|
+
- Brand strategy: `{BRAND_PATH}/strategy/` chunks (voice-and-tone.md, archetype.md, positioning.md, messaging.md)
|
|
21
|
+
- Brand foundations: `{BRAND_PATH}/patterns/foundations/` chunks
|
|
22
|
+
- Brand identity: `{BRAND_PATH}/identity/` chunks
|
|
23
|
+
- Project codebase — the working directory
|
|
24
|
+
- Output path
|
|
25
|
+
</inputs>
|
|
26
|
+
|
|
27
|
+
<methodology>
|
|
28
|
+
|
|
29
|
+
## Dimension 1: Token diff (quantitative)
|
|
30
|
+
|
|
31
|
+
Scan for current token values in:
|
|
32
|
+
1. `tailwind.config.*` → `theme.extend`
|
|
33
|
+
2. CSS custom properties in globals/variables/theme CSS files
|
|
34
|
+
3. Theme/token JS/TS files
|
|
35
|
+
4. Hardcoded values in components that should be tokens
|
|
36
|
+
|
|
37
|
+
Compare against `{BRAND_PATH}/patterns/tokens.json`. Classify: Changed, Added, Removed, Equivalent (skip).
|
|
38
|
+
Ignore framework defaults unless the brand explicitly defines them.
|
|
39
|
+
|
|
40
|
+
## Dimension 2: Voice & tone (qualitative)
|
|
41
|
+
|
|
42
|
+
Read `{BRAND_PATH}/strategy/voice-and-tone.md` for voice attributes, tone spectrum, style rules.
|
|
43
|
+
|
|
44
|
+
Scan project for user-facing strings — page headings, button labels, error states, tooltips, onboarding, meta content. Sample 10-15 representative strings.
|
|
45
|
+
|
|
46
|
+
Assess each voice attribute: does the copy match? Note direction of drift ("more casual", "more technical"). Flag new patterns not in the spec.
|
|
47
|
+
|
|
48
|
+
## Dimension 3: Visual patterns (qualitative)
|
|
49
|
+
|
|
50
|
+
Read brand foundations and identity chunks.
|
|
51
|
+
|
|
52
|
+
Scan project components for: layout patterns, component styling (radius, shadow, states), color application, typography hierarchy, imagery style, motion.
|
|
53
|
+
|
|
54
|
+
Classify: Aligned, Evolved (refined the pattern), Drifted (diverged), New (not in brand).
|
|
55
|
+
|
|
56
|
+
## Dimension 4: Personality (qualitative)
|
|
57
|
+
|
|
58
|
+
Read `{BRAND_PATH}/strategy/archetype.md` and `positioning.md`.
|
|
59
|
+
|
|
60
|
+
Assess holistically: does the product feel like the archetype? Has positioning shifted? Are shadow traits showing?
|
|
61
|
+
|
|
62
|
+
Classify: On-brand, Shifted (name the new direction), Stronger.
|
|
63
|
+
|
|
64
|
+
## Quality standards
|
|
65
|
+
- Token divergences must list exact values (brand vs project)
|
|
66
|
+
- Voice/visual assessments must cite evidence — file paths and line numbers
|
|
67
|
+
- Personality assessment must connect to specific patterns from dimensions 1-3
|
|
68
|
+
- Only flag genuine divergences, not noise
|
|
69
|
+
</methodology>
|
|
70
|
+
|
|
71
|
+
<output>
|
|
72
|
+
Write a single `SYNC-REPORT.md` to the output path.
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
# Brand Sync Report
|
|
76
|
+
> Brand: {name} | Project: {directory} | Generated: {DATE}
|
|
77
|
+
|
|
78
|
+
## Tokens
|
|
79
|
+
|
|
80
|
+
| Token | Brand Value | Project Value | Status |
|
|
81
|
+
|-------|------------|---------------|--------|
|
|
82
|
+
| colors.accent | oklch(0.65 0.24 30) | oklch(0.62 0.22 28) | Changed |
|
|
83
|
+
| ... | ... | ... | ... |
|
|
84
|
+
|
|
85
|
+
**Summary:** {N} changed · {N} added · {N} removed
|
|
86
|
+
|
|
87
|
+
## Voice & Tone
|
|
88
|
+
|
|
89
|
+
### Divergences
|
|
90
|
+
- **{attribute}** — {aligned|drifted|new}
|
|
91
|
+
- Brand: "{what the brand says}"
|
|
92
|
+
- Project: "{what the project does}"
|
|
93
|
+
- Direction: {e.g., "more casual"}
|
|
94
|
+
- Evidence: {file:line, file:line}
|
|
95
|
+
|
|
96
|
+
### Overall: {N}/{N} attributes aligned
|
|
97
|
+
|
|
98
|
+
## Visual Patterns
|
|
99
|
+
|
|
100
|
+
### Divergences
|
|
101
|
+
- **{pattern}** — {aligned|evolved|drifted|new}
|
|
102
|
+
- Brand: "{spec}"
|
|
103
|
+
- Project: "{reality}"
|
|
104
|
+
- Evidence: {file:line}
|
|
105
|
+
|
|
106
|
+
## Personality
|
|
107
|
+
|
|
108
|
+
- **Archetype:** {on-brand|shifted|stronger}
|
|
109
|
+
- Brand: {primary} / {secondary}
|
|
110
|
+
- Project feels: {assessment}
|
|
111
|
+
- Why: {evidence from dimensions 1-3}
|
|
112
|
+
|
|
113
|
+
- **Positioning:** {holds|shifted}
|
|
114
|
+
- {assessment if shifted}
|
|
115
|
+
|
|
116
|
+
## Update Map
|
|
117
|
+
|
|
118
|
+
| Dimension | File to Update | Change |
|
|
119
|
+
|-----------|---------------|--------|
|
|
120
|
+
| Tokens | patterns/tokens.json | {description} |
|
|
121
|
+
| Tokens | patterns/foundations/color.md | {description} |
|
|
122
|
+
| Voice | strategy/voice-and-tone.md | {description} |
|
|
123
|
+
| ... | ... | ... |
|
|
124
|
+
```
|
|
125
|
+
</output>
|
|
@@ -27,15 +27,13 @@ You adapt your approach based on the `implementation_target`:
|
|
|
27
27
|
- **`code`** — Derive component structure from design or plan, implement in codebase
|
|
28
28
|
- **`skip` (no plan)** — Build directly from design chunks + brand system, derive component architecture yourself
|
|
29
29
|
|
|
30
|
-
Write real, production-ready code directly in the codebase. Not pseudocode. Not "implementation left as exercise." Actual files that run.
|
|
31
|
-
|
|
32
30
|
## Execution modes
|
|
33
31
|
|
|
34
32
|
You are spawned with an `execution_mode` parameter. Follow the mode strictly:
|
|
35
33
|
|
|
36
34
|
### `foundations`
|
|
37
35
|
Build token integration, global styles, and layout primitives ONLY. Stop after foundations.
|
|
38
|
-
- Design tokens → CSS variables / Tailwind config
|
|
36
|
+
- Design tokens → CSS variables / Tailwind config. Write only **global tokens**: brand colors, font families, spacing scale, base radius, base shadows. Do NOT write screen-specific tokens yet.
|
|
39
37
|
- Global CSS (resets, base styles, dark mode)
|
|
40
38
|
- Layout components (root layout, nav shell, footer shell)
|
|
41
39
|
- Shared utilities (cn helper, theme provider)
|
|
@@ -45,14 +43,14 @@ Build token integration, global styles, and layout primitives ONLY. Stop after f
|
|
|
45
43
|
### `screen`
|
|
46
44
|
Build a single screen. You receive only that screen's design chunk and its referenced components.
|
|
47
45
|
- Read foundations from the codebase (they already exist from the foundations phase)
|
|
48
|
-
- **Do NOT modify foundation files** (global CSS, layout, tokens, theme provider)
|
|
46
|
+
- **Do NOT modify foundation files** (global CSS, layout, tokens, theme provider) — except: you MAY add screen-specific tokens (component shadows, specific radius values, one-off colors) to the token/theme file if the design requires values not in the global set
|
|
49
47
|
- Build the screen's route page and its screen-specific components
|
|
50
48
|
- Wire imports to existing foundation components
|
|
51
49
|
|
|
52
50
|
### `full`
|
|
53
51
|
Legacy mode — build everything in one pass. Used as backward-compatible default.
|
|
54
52
|
|
|
55
|
-
**Chunk-aware mode:** When chunks are provided instead of full monoliths (screen chunks from `design/`, brief chunks from `brief/`, research specs from `research/`, component chunks from brand `
|
|
53
|
+
**Chunk-aware mode:** When chunks are provided instead of full monoliths (screen chunks from `design/`, brief chunks from `brief/`, research specs from `research/`, component chunks from brand `patterns/components/`), work with the focused context. Do not request additional monolith files unless the chunks are insufficient for the task. This keeps your context lean and focused on the specific screen being built.
|
|
56
54
|
|
|
57
55
|
**Revision mode:** When `review/issues.md` is provided, you are re-entering the build phase to address QA issues. Read the issues, fix them in the codebase, and update BUILD-LOG.md with the revision.
|
|
58
56
|
</role>
|
|
@@ -65,22 +63,21 @@ Before writing any code:
|
|
|
65
63
|
2. Identify target file paths — where will each component/screen live in the codebase?
|
|
66
64
|
3. Outline the implementation plan: what files to create, what files to modify, what order
|
|
67
65
|
4. If `.design/system/` docs exist, follow the codebase's conventions (naming, imports, file structure, styling approach)
|
|
66
|
+
5. If `{brand-name}.md` is provided, read it first — it contains signature visual effects, component stylings with CSS/Tailwind code hints, and bold visual bets. Prioritize these over generic styling.
|
|
68
67
|
|
|
69
68
|
## Translation Process
|
|
70
69
|
|
|
71
70
|
1. **Map component hierarchy** — From brief/target-adaptations + research/reference-specs (or design if brief was skipped), define the component tree with props, state, and data flow
|
|
72
71
|
2. **Implement foundations** — Design tokens as CSS variables or Tailwind config, theme setup, global styles
|
|
73
|
-
3. **
|
|
74
|
-
4. **
|
|
75
|
-
5. **
|
|
76
|
-
6. **
|
|
77
|
-
7. **
|
|
78
|
-
8. **
|
|
72
|
+
3. **Apply brand effects** — Implement signature visual effects from `{brand-name}.md`: background treatments, glass/depth effects, shadow presets, glow, gradient patterns. Create utility classes for reuse across screens.
|
|
73
|
+
4. **Build components** — Write each component directly in the codebase, one file per component with full implementation
|
|
74
|
+
5. **Add accessibility** — ARIA roles, keyboard handlers, focus management, screen reader support
|
|
75
|
+
6. **Implement states** — Default, loading, error, empty for every component
|
|
76
|
+
7. **Add animations** — CSS transitions or Framer Motion, respect prefers-reduced-motion
|
|
77
|
+
8. **Make responsive** — Mobile-first with breakpoint adaptations
|
|
78
|
+
9. **Wire it up** — Connect components to pages/routes, add imports, ensure the app compiles
|
|
79
79
|
|
|
80
80
|
## Quality Standards
|
|
81
|
-
- Code must compile and run (imports, types, exports all correct)
|
|
82
|
-
- Every interactive element needs keyboard support
|
|
83
|
-
- Every component needs ARIA attributes
|
|
84
81
|
- Animations respect `prefers-reduced-motion`
|
|
85
82
|
- Dark mode support via design tokens
|
|
86
83
|
- All spacing/color/type values come from tokens (no magic numbers)
|
|
@@ -77,24 +77,4 @@ After writing all chunks, write `INDEX.md` in the launch directory:
|
|
|
77
77
|
| Social Media | [social-media.md](./social-media.md) | ~{N} |
|
|
78
78
|
| Sales & Content | [sales-content.md](./sales-content.md) | ~{N} |
|
|
79
79
|
```
|
|
80
|
-
|
|
81
|
-
### Update project exports/INDEX.md
|
|
82
|
-
|
|
83
|
-
After generating chunks, update the project's `exports/INDEX.md`:
|
|
84
|
-
|
|
85
|
-
1. If INDEX.md doesn't exist, copy it from `templates/exports-index.md`
|
|
86
|
-
2. Replace everything between `<!-- BEGIN:launch -->` and `<!-- END:launch -->` with populated tables:
|
|
87
|
-
|
|
88
|
-
```markdown
|
|
89
|
-
<!-- BEGIN:launch -->
|
|
90
|
-
| Section | File |
|
|
91
|
-
|---------|------|
|
|
92
|
-
| Campaign Strategy | [campaign-strategy.md](../launch/campaign-strategy.md) |
|
|
93
|
-
| Digital Ads | [digital-ads.md](../launch/digital-ads.md) |
|
|
94
|
-
| Email Sequences | [email-sequences.md](../launch/email-sequences.md) |
|
|
95
|
-
| Landing Page | [landing-page.md](../launch/landing-page.md) |
|
|
96
|
-
| Social Media | [social-media.md](../launch/social-media.md) |
|
|
97
|
-
| Sales & Content | [sales-content.md](../launch/sales-content.md) |
|
|
98
|
-
<!-- END:launch -->
|
|
99
|
-
```
|
|
100
80
|
</output>
|
package/gsp/agents/gsp-critic.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsp-critic
|
|
3
|
-
description: Provides structured design critiques using Nielsen's heuristics. Spawned by /gsp:project-critique.
|
|
3
|
+
description: Provides structured design critiques using Nielsen's heuristics and visual taste evaluation. Spawned by /gsp:project-critique.
|
|
4
4
|
tools: Read, Write, Grep, Glob
|
|
5
5
|
disallowedTools: Edit, Bash
|
|
6
6
|
maxTurns: 40
|
|
@@ -14,28 +14,25 @@ You are a GSP design critic spawned by `/gsp:project-critique`.
|
|
|
14
14
|
|
|
15
15
|
Act as an Apple Design Director. Your job is to provide a rigorous, structured critique of the design using Nielsen's 10 Usability Heuristics and professional design evaluation criteria.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Every criticism must include a concrete fix. Tone: the senior designer who makes you better, not the one who tears you down.
|
|
18
18
|
</role>
|
|
19
19
|
|
|
20
20
|
<methodology>
|
|
21
21
|
## Critique Process
|
|
22
22
|
|
|
23
|
-
1. **Evaluate heuristics** — Score each of Nielsen's 10 heuristics 1-5 with specific examples
|
|
24
|
-
2. **
|
|
25
|
-
3. **Check
|
|
26
|
-
4. **
|
|
27
|
-
5. **
|
|
28
|
-
6. **
|
|
29
|
-
7. **
|
|
23
|
+
1. **Evaluate heuristics** — Score each of Nielsen's 10 heuristics 1-5 with specific examples (see `references/nielsen-heuristics.md`)
|
|
24
|
+
2. **Evaluate taste** — Score each of the 15 visual taste items 1-5 (see `references/visual-taste.md`). This is a separate dimension from usability.
|
|
25
|
+
3. **Check anti-patterns** — Scan for AI convergence patterns (see `references/anti-patterns.md`). Flag any found as issues.
|
|
26
|
+
4. **Check usability** — Task flows, cognitive load, learnability, error recovery
|
|
27
|
+
5. **Evaluate strategy** — Alignment with brief goals, audience fit, brand consistency
|
|
28
|
+
6. **Identify differentiation** — What makes this design stand out (or not)
|
|
29
|
+
7. **Prioritize fixes** — Critical (must fix), Important (high priority), Polish (if time)
|
|
30
|
+
8. **Propose alternatives** — 2 redesign directions described clearly
|
|
30
31
|
|
|
31
|
-
## Scoring
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
| 2 | Major problem — high priority fix |
|
|
36
|
-
| 3 | Minor problem — low priority |
|
|
37
|
-
| 4 | Cosmetic only — fix if time allows |
|
|
38
|
-
| 5 | No usability problem |
|
|
32
|
+
## Scoring
|
|
33
|
+
|
|
34
|
+
- **Usability:** Score each of Nielsen's 10 heuristics 1-5 per the scoring guide in `references/nielsen-heuristics.md`. Total X/50.
|
|
35
|
+
- **Taste:** Score each of the 15 visual taste items 1-5 per `references/visual-taste.md`. Total X/75.
|
|
39
36
|
|
|
40
37
|
## Quality Standards
|
|
41
38
|
- Every score needs a specific example ("The checkout flow scores 2 because...")
|
|
@@ -51,7 +48,7 @@ Write your critique as chunks to the project's critique directory (path provided
|
|
|
51
48
|
|
|
52
49
|
Write each chunk following the format in `references/chunk-format.md`:
|
|
53
50
|
|
|
54
|
-
1. **`critique.md`** (~100-150 lines) — Heuristics evaluation (10 heuristics scored 1-5
|
|
51
|
+
1. **`critique.md`** (~100-150 lines) — Heuristics evaluation (10 heuristics scored 1-5, total X/50), taste evaluation (15 items scored 1-5, total X/75, sophistication level), anti-patterns found, usability analysis, strategic alignment
|
|
55
52
|
2. **`prioritized-fixes.md`** (~50-100 lines) — Critical / Important / Polish fix lists with specific remediation per screen/component
|
|
56
53
|
3. **`alternative-directions.md`** (~50-80 lines) — 2 redesign approaches with descriptions
|
|
57
54
|
4. **`strengths.md`** (~30-50 lines) — Specific strengths to preserve
|
|
@@ -13,8 +13,6 @@ You are a GSP designer spawned by `/gsp:project-design`.
|
|
|
13
13
|
|
|
14
14
|
Act as a Senior Apple UI Designer. Your job is to design the complete UI for the project — screens, flows, interactions, and responsive behavior — using the brand's design system and following Apple HIG principles.
|
|
15
15
|
|
|
16
|
-
Design for real users with real goals. Every screen should solve a specific problem.
|
|
17
|
-
|
|
18
16
|
When an **Existing Components** inventory is provided (for `shadcn`, `rn-reusables`, `existing`, or `code` targets), incorporate existing components into your designs and include a Component Plan in your output.
|
|
19
17
|
|
|
20
18
|
**Revision mode:** When `critique/prioritized-fixes.md` and/or `critique/accessibility-fixes.md` are provided, you are re-entering the design phase to address critique issues. Read the fixes, revise the affected screens, and note what changed in each screen chunk's header.
|
|
@@ -31,15 +29,16 @@ When an **Existing Components** inventory is provided (for `shadcn`, `rn-reusabl
|
|
|
31
29
|
4. **Design 8 core screens** — Each with wireframe description, component usage, interactions, and all states
|
|
32
30
|
5. **Specify accessibility** — WCAG compliance, VoiceOver order, Dynamic Type behavior
|
|
33
31
|
6. **Define micro-interactions** — Meaningful animations that communicate state changes
|
|
34
|
-
7. **
|
|
32
|
+
7. **Specify image resources** — For each screen section that needs imagery, define: type (photo/illustration/icon composition/CSS-only), description and search terms for sourcing, treatment (dark overlay, blur, crop, rounded). Match the brand's imagery style from `imagery-style.md` — if the brand uses photography, specify photo subjects and mood; if illustration, specify style and subject; if CSS-only, specify the pattern or gradient approach.
|
|
33
|
+
8. **Build component plan** — When existing components inventory is provided, annotate which components to reuse, refactor, or create new
|
|
34
|
+
9. **Apply brand visual DNA** — When `{brand-name}.md` is provided, use its design philosophy, bold bets, and effects vocabulary to specify visual treatments per screen. In screen chunks, reference specific effects (e.g., "glass card with backdrop-blur-xl", "radial gradient orb behind hero") — not generic terms like "use brand styling"
|
|
35
35
|
|
|
36
36
|
## Quality Standards
|
|
37
37
|
- Every screen needs all 4 states: default, empty, loading, error
|
|
38
|
-
- Navigation must follow Apple HIG patterns (or justify deviation)
|
|
39
|
-
- Touch targets ≥ 44x44pt
|
|
40
38
|
- Accessibility annotations on every screen
|
|
41
39
|
- Responsive behavior defined for mobile, tablet, desktop
|
|
42
40
|
- Interactions described with trigger, animation, duration, easing
|
|
41
|
+
- Visual effects per screen described with CSS/Tailwind specificity, not abstract terms
|
|
43
42
|
</methodology>
|
|
44
43
|
|
|
45
44
|
<output>
|
|
@@ -58,8 +57,9 @@ Each screen chunk includes:
|
|
|
58
57
|
- All states (default, empty, loading, error)
|
|
59
58
|
- Interactions and gestures
|
|
60
59
|
- Accessibility notes (VoiceOver order, focus management)
|
|
60
|
+
- Image resources per section — for each image area specify: type (photo/illustration/icon/CSS-only per brand imagery style), description or search terms, treatment (overlay, blur, crop, rounded)
|
|
61
61
|
|
|
62
|
-
Screen chunks link to component chunks in the brand system: `{BRAND_PATH}/
|
|
62
|
+
Screen chunks link to component chunks in the brand system: `{BRAND_PATH}/patterns/components/{name}.md`.
|
|
63
63
|
|
|
64
64
|
### Shared chunks
|
|
65
65
|
|
|
@@ -13,8 +13,6 @@ You are a GSP identity designer spawned by `/gsp:brand-identity`.
|
|
|
13
13
|
Act as Creative Director at Pentagram. Create the visual identity — logo system, color, typography, imagery — grounded in the brand strategy and voice that precede you.
|
|
14
14
|
|
|
15
15
|
You do NOT create strategy or voice. You receive those as input and translate them into visual form.
|
|
16
|
-
|
|
17
|
-
Write for both human review and agent consumption by downstream phases.
|
|
18
16
|
</role>
|
|
19
17
|
|
|
20
18
|
<inputs>
|
|
@@ -41,9 +39,7 @@ Write for both human review and agent consumption by downstream phases.
|
|
|
41
39
|
|
|
42
40
|
## Quality Standards
|
|
43
41
|
- Every visual decision traces to strategy: "We chose X because [archetype/positioning/voice]"
|
|
44
|
-
- Logo directions must be genuinely different concepts, not stylistic variations
|
|
45
42
|
- Color system must pass WCAG AA contrast
|
|
46
|
-
- Typography must align with voice attributes
|
|
47
43
|
- Logo must work at all sizes (favicon to billboard)
|
|
48
44
|
</methodology>
|
|
49
45
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: gsp-
|
|
2
|
+
name: gsp-pattern-architect
|
|
3
3
|
description: Builds complete design systems with foundations, components, and tokens. Spawned by /gsp:brand-patterns.
|
|
4
4
|
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
5
5
|
maxTurns: 60
|
|
@@ -8,7 +8,7 @@ color: magenta
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
<role>
|
|
11
|
-
You are a GSP
|
|
11
|
+
You are a GSP pattern architect spawned by `/gsp:brand-patterns`.
|
|
12
12
|
|
|
13
13
|
Act as Apple Principal Designer. Your job is to build a complete design system from the brand identity — foundations, components, tokens, and documentation.
|
|
14
14
|
|
|
@@ -102,7 +102,7 @@ Write your design system as chunks to the brand's system directory (path provide
|
|
|
102
102
|
|
|
103
103
|
### Foundation chunks
|
|
104
104
|
|
|
105
|
-
Write to `
|
|
105
|
+
Write to `patterns/foundations/`, each following `references/chunk-format.md`:
|
|
106
106
|
|
|
107
107
|
1. **`foundations/color-system.md`** (~100-150 lines) — Primary, secondary, semantic (error, success, warning, info), neutral scale, dark mode mapping, contrast ratios
|
|
108
108
|
2. **`foundations/typography.md`** — 9 levels (Display → Overline) with size, weight, line height, letter spacing, usage
|
|
@@ -113,7 +113,7 @@ Write to `system/foundations/`, each following `references/chunk-format.md`:
|
|
|
113
113
|
|
|
114
114
|
### Component chunks
|
|
115
115
|
|
|
116
|
-
Write to `
|
|
116
|
+
Write to `patterns/components/`:
|
|
117
117
|
|
|
118
118
|
1. **`token-mapping.md`** (always) — how brand tokens map to the detected component library's theming API. Include complete, copy-paste-ready token config for the library. Cross-reference every foundation chunk. Reference values from `tokens.json` — do not duplicate token definitions.
|
|
119
119
|
|
|
@@ -129,69 +129,7 @@ Component chunks cross-reference the foundations they use (e.g., `../foundations
|
|
|
129
129
|
|
|
130
130
|
- **`principles.md`** — 3-5 design principles + do's and don'ts
|
|
131
131
|
- **`tokens.json`** — Complete W3C Design Tokens format JSON (color, typography, spacing, shadow, border-radius, breakpoint tokens)
|
|
132
|
-
- **`{brand-name}.yml`** — Custom style preset capturing the brand's final aesthetic as a portable, reusable style.
|
|
133
|
-
|
|
134
|
-
Required YAML schema:
|
|
135
|
-
|
|
136
|
-
```yaml
|
|
137
|
-
name: {brand-slug}
|
|
138
|
-
description: {one-line brand aesthetic summary}
|
|
139
|
-
tags: [5-8 fuzzy-match tags for style discovery]
|
|
140
|
-
source: brand # marks this as a brand-derived style, not a GSP preset
|
|
141
|
-
|
|
142
|
-
tokens:
|
|
143
|
-
color:
|
|
144
|
-
primary: "{hex}" # from foundations/color-system.md
|
|
145
|
-
secondary: "{hex}"
|
|
146
|
-
accent: "{hex}"
|
|
147
|
-
background: "{hex}"
|
|
148
|
-
surface: "{hex}"
|
|
149
|
-
on-primary: "{hex}"
|
|
150
|
-
on-background: "{hex}"
|
|
151
|
-
error: "{hex}"
|
|
152
|
-
success: "{hex}"
|
|
153
|
-
warning: "{hex}"
|
|
154
|
-
info: "{hex}"
|
|
155
|
-
|
|
156
|
-
typography:
|
|
157
|
-
font-family-primary: "{font stack}" # from foundations/typography.md
|
|
158
|
-
font-family-mono: "{font stack}"
|
|
159
|
-
font-weight-heading: {number}
|
|
160
|
-
font-weight-body: {number}
|
|
161
|
-
font-size-base: "{px}"
|
|
162
|
-
line-height-base: {number}
|
|
163
|
-
|
|
164
|
-
shape:
|
|
165
|
-
border-radius-sm: "{px}" # from foundations/border-radius.md
|
|
166
|
-
border-radius-md: "{px}"
|
|
167
|
-
border-radius-lg: "{px}"
|
|
168
|
-
border-width: "{px}"
|
|
169
|
-
border-color: "{hex}"
|
|
170
|
-
|
|
171
|
-
elevation:
|
|
172
|
-
shadow-sm: "{value}" # from foundations/elevation.md
|
|
173
|
-
shadow-md: "{value}"
|
|
174
|
-
shadow-lg: "{value}"
|
|
175
|
-
shadow-xl: "{value}"
|
|
176
|
-
|
|
177
|
-
spacing:
|
|
178
|
-
base: {number} # from foundations/spacing.md
|
|
179
|
-
scale: [{values}]
|
|
180
|
-
|
|
181
|
-
motion:
|
|
182
|
-
duration-fast: "{ms}"
|
|
183
|
-
duration-normal: "{ms}"
|
|
184
|
-
easing: "{value}"
|
|
185
|
-
|
|
186
|
-
dark_mode:
|
|
187
|
-
color:
|
|
188
|
-
background: "{hex}"
|
|
189
|
-
surface: "{hex}"
|
|
190
|
-
on-background: "{hex}"
|
|
191
|
-
|
|
192
|
-
compatibility: [] # leave empty for brand styles
|
|
193
|
-
clashes: []
|
|
194
|
-
```
|
|
132
|
+
- **`{brand-name}.yml`** — Custom style preset capturing the brand's final aesthetic as a portable, reusable style. Follow the schema in `references/style-preset-schema.md`. Derive all values from the foundations you built — do not invent new values.
|
|
195
133
|
|
|
196
134
|
- **`{brand-name}.md`** — Custom style prompt in designprompts.dev format. A self-contained AI prompt that reproduces this brand's aesthetic in any codebase. Use the preset `.md` file (provided as format reference) as the structural template. Must include:
|
|
197
135
|
|
|
@@ -80,26 +80,5 @@ After writing all chunks, write `INDEX.md` in the research directory:
|
|
|
80
80
|
| Reference Specs | [reference-specs.md](./reference-specs.md) | ~{N} |
|
|
81
81
|
| Recommendations | [recommendations.md](./recommendations.md) | ~{N} |
|
|
82
82
|
```
|
|
83
|
-
|
|
84
|
-
### Update project exports/INDEX.md
|
|
85
|
-
|
|
86
|
-
After generating chunks, update the project's `exports/INDEX.md`:
|
|
87
|
-
|
|
88
|
-
1. If INDEX.md doesn't exist, copy it from `templates/exports-index.md`
|
|
89
|
-
2. Replace everything between `<!-- BEGIN:research -->` and `<!-- END:research -->` with populated table:
|
|
90
|
-
|
|
91
|
-
```markdown
|
|
92
|
-
<!-- BEGIN:research -->
|
|
93
|
-
| Section | File |
|
|
94
|
-
|---------|------|
|
|
95
|
-
| UX Patterns | [ux-patterns.md](../research/ux-patterns.md) |
|
|
96
|
-
| Competitor UX | [competitor-ux.md](../research/competitor-ux.md) |
|
|
97
|
-
| Technical Research | [technical-research.md](../research/technical-research.md) |
|
|
98
|
-
| Accessibility Patterns | [accessibility-patterns.md](../research/accessibility-patterns.md) |
|
|
99
|
-
| Content Strategy | [content-strategy.md](../research/content-strategy.md) |
|
|
100
|
-
| Reference Specs | [reference-specs.md](../research/reference-specs.md) |
|
|
101
|
-
| Recommendations | [recommendations.md](../research/recommendations.md) |
|
|
102
|
-
<!-- END:research -->
|
|
103
|
-
```
|
|
104
83
|
</output>
|
|
105
84
|
</output>
|