get-shit-pretty 0.5.1 → 0.6.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.
Files changed (60) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/bin/install.js +41 -19
  3. package/gsp/agents/gsp-accessibility-auditor.md +1 -4
  4. package/gsp/agents/gsp-ascii-artist.md +1 -1
  5. package/gsp/agents/gsp-brand-auditor.md +0 -2
  6. package/gsp/agents/gsp-brand-strategist.md +0 -2
  7. package/gsp/agents/gsp-brand-syncer.md +125 -0
  8. package/gsp/agents/gsp-builder.md +3 -8
  9. package/gsp/agents/gsp-campaign-director.md +0 -20
  10. package/gsp/agents/gsp-critic.md +15 -18
  11. package/gsp/agents/gsp-designer.md +0 -4
  12. package/gsp/agents/gsp-identity-designer.md +0 -4
  13. package/gsp/agents/gsp-pattern-architect.md +1 -63
  14. package/gsp/agents/gsp-project-researcher.md +0 -21
  15. package/gsp/agents/gsp-researcher.md +0 -2
  16. package/gsp/agents/gsp-reviewer.md +1 -12
  17. package/gsp/agents/gsp-scoper.md +0 -21
  18. package/gsp/hooks/hooks.json +11 -0
  19. package/gsp/prompts/01-design-system-architect.md +0 -46
  20. package/gsp/prompts/02-brand-identity-creator.md +1 -14
  21. package/gsp/prompts/03-ui-ux-pattern-master.md +1 -23
  22. package/gsp/prompts/04-marketing-asset-factory.md +1 -14
  23. package/gsp/prompts/05-implementation-spec-expert.md +0 -27
  24. package/gsp/prompts/06-design-critique-partner.md +1 -17
  25. package/gsp/prompts/07-design-trend-synthesizer.md +2 -29
  26. package/gsp/prompts/08-accessibility-auditor.md +4 -19
  27. package/gsp/prompts/09-design-to-code-translator.md +17 -31
  28. package/gsp/prompts/10-project-scoper.md +2 -36
  29. package/gsp/prompts/11-deliverable-reviewer.md +1 -50
  30. package/gsp/prompts/12-project-researcher.md +0 -39
  31. package/gsp/references/anti-patterns.md +173 -0
  32. package/gsp/references/block-patterns.md +44 -0
  33. package/gsp/references/chunk-format.md +31 -0
  34. package/gsp/references/style-preset-schema.md +63 -0
  35. package/gsp/references/visual-effects.md +247 -0
  36. package/gsp/references/visual-taste.md +120 -0
  37. package/gsp/skills/gsp-accessibility/SKILL.md +51 -186
  38. package/gsp/skills/gsp-accessibility-audit/SKILL.md +218 -0
  39. package/gsp/skills/gsp-brand-audit/SKILL.md +1 -3
  40. package/gsp/skills/gsp-brand-identity/SKILL.md +1 -3
  41. package/gsp/skills/gsp-brand-patterns/SKILL.md +3 -9
  42. package/gsp/skills/gsp-brand-refine/SKILL.md +147 -0
  43. package/gsp/skills/gsp-brand-research/SKILL.md +1 -3
  44. package/gsp/skills/gsp-brand-strategy/SKILL.md +1 -3
  45. package/gsp/skills/gsp-brand-sync/SKILL.md +99 -0
  46. package/gsp/skills/gsp-doctor/SKILL.md +1 -1
  47. package/gsp/skills/gsp-help/SKILL.md +2 -0
  48. package/gsp/skills/gsp-launch/SKILL.md +3 -8
  49. package/gsp/skills/gsp-palette/SKILL.md +2 -0
  50. package/gsp/skills/gsp-project-brief/SKILL.md +3 -11
  51. package/gsp/skills/gsp-project-build/SKILL.md +91 -7
  52. package/gsp/skills/gsp-project-critique/SKILL.md +6 -8
  53. package/gsp/skills/gsp-project-design/SKILL.md +4 -9
  54. package/gsp/skills/gsp-project-research/SKILL.md +2 -5
  55. package/gsp/skills/gsp-project-review/SKILL.md +4 -6
  56. package/gsp/skills/gsp-start/SKILL.md +21 -118
  57. package/gsp/skills/gsp-style/SKILL.md +25 -391
  58. package/gsp/skills/gsp-typescale/SKILL.md +38 -457
  59. package/package.json +1 -1
  60. package/scripts/gsp-context-recovery.sh +71 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsp",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Design engineering system for AI coding agents. Brand identity + design projects, from strategy to code.",
5
5
  "author": {
6
6
  "name": "jubscodes",
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 sparkleWidth = Math.min(34, columns - 4);
172
- const showSparkles = columns >= 40;
171
+ const boxWidth = 48;
172
+ const innerWidth = boxWidth - 2; // inside the border chars
173
+ const showSparkles = columns >= 44;
173
174
 
174
- const banner = '\n\n' +
175
- (showSparkles ? center(`${c.dim}${sparkleLine(sparkleWidth)}${c.reset}`, columns) + '\n' : '') +
176
- (showSparkles ? center(`${c.dim}${sparkleLine(sparkleWidth)}${c.reset}`, columns) + '\n' : '') +
177
- '\n' +
178
- center(rampText, columns) + '\n' +
179
- '\n' +
180
- (showSparkles ? center(`${c.dim}${sparkleLine(sparkleWidth)}${c.reset}`, columns) + '\n' : '') +
181
- (showSparkles ? center(`${c.dim}${sparkleLine(sparkleWidth)}${c.reset}`, columns) + '\n' : '') +
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
- for (const file of fs.readdirSync(destDir)) {
987
- if (file.startsWith('gsp-') && file.endsWith('.md')) {
988
- fs.unlinkSync(path.join(destDir, file));
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');
@@ -1685,6 +1704,9 @@ function finishInstall(settingsPath, settings, statuslineCommand, shouldInstallS
1685
1704
  if (!onboardingShown && !hasQuiet) {
1686
1705
  onboardingShown = true;
1687
1706
  console.log(`
1707
+ ${c.secondary}Design engineering for AI coding tools.${c.reset}
1708
+ ${c.secondary}Brand strategy, visual identity, design systems, UI — built by agents.${c.reset}
1709
+
1688
1710
  ${c.bold}Get started:${c.reset}
1689
1711
  ${c.accent}${newCmd}${c.reset} ${c.secondary}start here — brand, project, or both${c.reset}
1690
1712
  ${c.accent}${helpCmd}${c.reset} ${c.secondary}all commands${c.reset}
@@ -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 not optional polish — it's a core quality requirement. Be thorough and specific.
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 **magenta** for brand accents (GSP's color)
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 `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.
53
+ **Chunk-aware mode:** Work with the chunk context provided. Do not request additional 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>
@@ -80,9 +78,6 @@ Before writing any code:
80
78
  9. **Wire it up** — Connect components to pages/routes, add imports, ensure the app compiles
81
79
 
82
80
  ## Quality Standards
83
- - Code must compile and run (imports, types, exports all correct)
84
- - Every interactive element needs keyboard support
85
- - Every component needs ARIA attributes
86
81
  - Animations respect `prefers-reduced-motion`
87
82
  - Dark mode support via design tokens
88
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>
@@ -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
- Be constructive, specific, and actionable. Every criticism must include a concrete fix. Tone: the senior designer who makes you better, not the one who tears you down.
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 from the design
24
- 2. **Assess visual design** — Hierarchy, typography, color usage, whitespace, consistency, imagery direction (does it match the brand's imagery style photography vs illustration vs CSS-only?)
25
- 3. **Check usability** — Task flows, cognitive load, learnability, error recovery
26
- 4. **Evaluate strategy** — Alignment with brief goals, audience fit, brand consistency
27
- 5. **Identify differentiation** — What makes this design stand out (or not)
28
- 6. **Prioritize fixes** — Critical (must fix), Important (high priority), Polish (if time)
29
- 7. **Propose alternatives** — 2 redesign directions described clearly
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 Guide (Nielsen's Heuristics)
32
- | Score | Meaning |
33
- |-------|---------|
34
- | 1 | Usability catastrophe must fix before launch |
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 with examples), overall score X/50, visual hierarchy assessment, typography & color assessment, usability analysis, strategic alignment
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.
@@ -37,8 +35,6 @@ When an **Existing Components** inventory is provided (for `shadcn`, `rn-reusabl
37
35
 
38
36
  ## Quality Standards
39
37
  - Every screen needs all 4 states: default, empty, loading, error
40
- - Navigation must follow Apple HIG patterns (or justify deviation)
41
- - Touch targets ≥ 44x44pt
42
38
  - Accessibility annotations on every screen
43
39
  - Responsive behavior defined for mobile, tablet, desktop
44
40
  - Interactions described with trigger, animation, duration, easing
@@ -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
 
@@ -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. Use the preset `.yml` file (provided as format reference) as the structural template. Derive all values from the foundations you just built — do not invent new values.
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>
@@ -12,8 +12,6 @@ color: magenta
12
12
  You are a GSP design researcher spawned by `/gsp:brand-research`.
13
13
 
14
14
  Act as a senior design researcher. Analyze the market landscape and competitive positioning for this brand. Be specific and opinionated — "Use X because Y" not "Options are X, Y, Z."
15
-
16
- Your output feeds brand strategy. Write for both human review and agent consumption.
17
15
  </role>
18
16
 
19
17
  <inputs>
@@ -15,7 +15,7 @@ You are a GSP QA reviewer spawned by `/gsp:project-review`.
15
15
 
16
16
  Act as a Senior QA Design Engineer. Your job is to validate that the actual codebase implementation matches the design intent — checking real source files for token usage, screen coverage, component quality, and accessibility compliance.
17
17
 
18
- You are the final quality gate before a project ships. You review real code, not specs. Be thorough but fair.
18
+ You are the final quality gate. You review real code, not specs.
19
19
  </role>
20
20
 
21
21
  <methodology>
@@ -40,18 +40,7 @@ Cross-reference these against design specs to validate the implementation.
40
40
  9. **Imagery audit** — verify image resources match the brand's imagery style (photography vs illustration vs CSS-only). Check for generic gray placeholders or mismatched imagery types
41
41
  10. **Design fidelity** — overall assessment of how faithfully the build represents the design
42
42
 
43
- ### How to Investigate
44
-
45
- - Use `Grep` to search for hardcoded values (e.g., `#3B82F6`, `16px`, `1rem`)
46
- - Use `Grep` to verify ARIA attributes exist on interactive elements
47
- - Use `Glob` to find all files matching component patterns
48
- - Use `Bash` to run `git diff` and see actual changes
49
- - Read actual source files, not `.design/build/` specs
50
-
51
43
  ## Quality Standards
52
- - Every designed screen must have a corresponding implementation check in the actual codebase
53
- - Token audit must catch magic numbers and incorrect token usage in real code
54
- - Accessibility checks must verify actual ARIA attributes and keyboard behavior in source files
55
44
  - Issues must reference actual codebase file paths and line numbers (not `.design/build/` paths)
56
45
  - Verdict must be clear: Pass, Conditional Pass, or Fail
57
46
  </methodology>
@@ -80,27 +80,6 @@ After writing all chunks, write `INDEX.md` in the brief directory:
80
80
  | File References | [file-references.md](./file-references.md) | ~{N} |
81
81
  ```
82
82
 
83
- Only include rows for chunks that were actually produced.
84
-
85
- ### Update project exports/INDEX.md
86
-
87
- After generating chunks, update the project's `exports/INDEX.md`:
88
-
89
- 1. If INDEX.md doesn't exist, copy it from `templates/exports-index.md`
90
- 2. Replace everything between `<!-- BEGIN:brief -->` and `<!-- END:brief -->` with populated table:
91
-
92
- ```markdown
93
- <!-- BEGIN:brief -->
94
- | Section | File |
95
- |---------|------|
96
- | Scope | [scope.md](../brief/scope.md) |
97
- | Target Adaptations | [target-adaptations.md](../brief/target-adaptations.md) |
98
- | Install Manifest | [install-manifest.md](../brief/install-manifest.md) |
99
- | Gap Analysis | [gap-analysis.md](../brief/gap-analysis.md) |
100
- | File References | [file-references.md](../brief/file-references.md) |
101
- <!-- END:brief -->
102
- ```
103
-
104
83
  Only include rows for chunks that were actually produced.
105
84
  </output>
106
85
  </output>
@@ -1,5 +1,16 @@
1
1
  {
2
2
  "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "compact",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/gsp-context-recovery.sh"
10
+ }
11
+ ]
12
+ }
13
+ ],
3
14
  "SubagentStop": [
4
15
  {
5
16
  "matcher": "gsp-builder",