get-shit-pretty 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +7 -12
  2. package/bin/install.js +125 -84
  3. package/gsp/agents/gsp-accessibility-auditor.md +4 -4
  4. package/gsp/agents/gsp-ascii-artist.md +2 -2
  5. package/gsp/agents/gsp-brand-auditor.md +3 -3
  6. package/gsp/agents/gsp-brand-engineer.md +131 -0
  7. package/gsp/agents/gsp-brand-strategist.md +3 -3
  8. package/gsp/agents/gsp-brand-syncer.md +8 -7
  9. package/gsp/agents/gsp-builder.md +49 -6
  10. package/gsp/agents/gsp-campaign-director.md +3 -4
  11. package/gsp/agents/gsp-creative-director.md +80 -0
  12. package/gsp/agents/gsp-critic.md +100 -18
  13. package/gsp/agents/gsp-designer.md +52 -5
  14. package/gsp/agents/gsp-project-researcher.md +4 -4
  15. package/gsp/agents/gsp-researcher.md +5 -5
  16. package/gsp/agents/gsp-reviewer.md +3 -3
  17. package/gsp/agents/gsp-scoper.md +3 -3
  18. package/gsp/hooks/hooks.json +5 -5
  19. package/gsp/skills/get-shit-pretty/SKILL.md +10 -9
  20. package/gsp/skills/gsp-accessibility/SKILL.md +12 -12
  21. package/gsp/skills/gsp-accessibility-audit/SKILL.md +8 -9
  22. package/gsp/skills/gsp-add-reference/SKILL.md +6 -1
  23. package/gsp/skills/gsp-art/SKILL.md +6 -1
  24. package/gsp/skills/gsp-brand-audit/SKILL.md +5 -5
  25. package/gsp/skills/gsp-brand-guidelines/SKILL.md +233 -0
  26. package/gsp/skills/gsp-brand-guidelines/token-mapping.md +329 -0
  27. package/gsp/skills/gsp-brand-identity/SKILL.md +29 -20
  28. package/gsp/skills/gsp-brand-refine/SKILL.md +30 -23
  29. package/gsp/skills/gsp-brand-research/SKILL.md +4 -4
  30. package/gsp/{references → skills/gsp-brand-research}/design-trends.md +4 -4
  31. package/gsp/skills/gsp-brand-strategy/SKILL.md +7 -7
  32. package/gsp/skills/gsp-brand-sync/SKILL.md +10 -10
  33. package/gsp/skills/gsp-brand-sync/chunk-format.md +79 -0
  34. package/gsp/skills/gsp-color/SKILL.md +73 -0
  35. package/gsp/skills/gsp-color/chunk-format.md +79 -0
  36. package/gsp/skills/{gsp-palette/SKILL.md → gsp-color/domains/palette.md} +31 -101
  37. package/gsp/skills/gsp-color/domains/system.md +123 -0
  38. package/gsp/skills/gsp-design-system/SKILL.md +9 -4
  39. package/gsp/skills/gsp-doctor/SKILL.md +25 -18
  40. package/gsp/skills/gsp-help/SKILL.md +30 -29
  41. package/gsp/skills/gsp-icons/SKILL.md +108 -0
  42. package/gsp/skills/gsp-icons/chunk-format.md +79 -0
  43. package/gsp/skills/gsp-launch/SKILL.md +3 -4
  44. package/gsp/skills/gsp-logo/SKILL.md +173 -0
  45. package/gsp/skills/gsp-logo/chunk-format.md +79 -0
  46. package/gsp/skills/gsp-phase-transition/SKILL.md +124 -0
  47. package/gsp/skills/gsp-pretty/SKILL.md +2 -2
  48. package/gsp/skills/gsp-progress/SKILL.md +20 -20
  49. package/gsp/skills/gsp-project-brief/SKILL.md +8 -9
  50. package/gsp/skills/gsp-project-build/SKILL.md +30 -25
  51. package/gsp/skills/gsp-project-critique/SKILL.md +17 -18
  52. package/gsp/{references → skills/gsp-project-critique}/visual-taste.md +1 -1
  53. package/gsp/skills/gsp-project-design/SKILL.md +18 -18
  54. package/gsp/skills/gsp-project-research/SKILL.md +6 -7
  55. package/gsp/skills/gsp-project-review/SKILL.md +8 -10
  56. package/gsp/skills/gsp-scaffold/SKILL.md +3 -3
  57. package/gsp/skills/gsp-start/SKILL.md +15 -15
  58. package/gsp/{references → skills/gsp-start}/questioning.md +1 -1
  59. package/gsp/skills/gsp-style/SKILL.md +43 -45
  60. package/gsp/skills/gsp-style/chunk-format.md +79 -0
  61. package/gsp/skills/gsp-style/style-preset-schema.md +124 -0
  62. package/gsp/skills/gsp-style/styles/INDEX.yml +1 -1
  63. package/gsp/skills/gsp-style/styles/academia.yml +80 -0
  64. package/gsp/skills/gsp-style/styles/art-deco.yml +81 -0
  65. package/gsp/skills/gsp-style/styles/bauhaus.yml +78 -0
  66. package/gsp/skills/gsp-style/styles/bold-typography.yml +73 -0
  67. package/gsp/skills/gsp-style/styles/botanical.yml +78 -0
  68. package/gsp/skills/gsp-style/styles/claymorphism.yml +84 -0
  69. package/gsp/skills/gsp-style/styles/cyberpunk.yml +87 -0
  70. package/gsp/skills/gsp-style/styles/enterprise.yml +81 -0
  71. package/gsp/skills/gsp-style/styles/flat-design.yml +67 -0
  72. package/gsp/skills/gsp-style/styles/fluent.yml +82 -0
  73. package/gsp/skills/gsp-style/styles/glassmorphism.yml +83 -0
  74. package/gsp/skills/gsp-style/styles/humanist-literary.yml +74 -0
  75. package/gsp/skills/gsp-style/styles/industrial.yml +82 -0
  76. package/gsp/skills/gsp-style/styles/kinetic.yml +94 -0
  77. package/gsp/skills/gsp-style/styles/liquid-glass.yml +91 -0
  78. package/gsp/skills/gsp-style/styles/luxury.yml +83 -0
  79. package/gsp/skills/gsp-style/styles/material.yml +83 -0
  80. package/gsp/skills/gsp-style/styles/maximalism.yml +92 -0
  81. package/gsp/skills/gsp-style/styles/minimal-dark.yml +75 -0
  82. package/gsp/skills/gsp-style/styles/modern-dark.yml +88 -0
  83. package/gsp/skills/gsp-style/styles/monochrome.yml +68 -0
  84. package/gsp/skills/gsp-style/styles/neubrutalism.yml +83 -0
  85. package/gsp/skills/gsp-style/styles/neumorphism.yml +77 -0
  86. package/gsp/skills/gsp-style/styles/newsprint.yml +81 -0
  87. package/gsp/skills/gsp-style/styles/organic.yml +77 -0
  88. package/gsp/skills/gsp-style/styles/playful-geometric.yml +90 -0
  89. package/gsp/skills/gsp-style/styles/professional.yml +67 -0
  90. package/gsp/skills/gsp-style/styles/retro.yml +85 -0
  91. package/gsp/skills/gsp-style/styles/saas.yml +83 -0
  92. package/gsp/skills/gsp-style/styles/sketch.yml +86 -0
  93. package/gsp/skills/gsp-style/styles/swiss-minimalist.yml +69 -0
  94. package/gsp/skills/gsp-style/styles/terminal.yml +83 -0
  95. package/gsp/skills/gsp-style/styles/vaporwave.yml +84 -0
  96. package/gsp/skills/gsp-style/styles/web3.yml +82 -0
  97. package/gsp/skills/gsp-typography/SKILL.md +70 -0
  98. package/gsp/skills/gsp-typography/chunk-format.md +79 -0
  99. package/gsp/skills/gsp-typography/domains/pairing.md +109 -0
  100. package/gsp/skills/gsp-typography/domains/scale.md +227 -0
  101. package/gsp/skills/gsp-typography/domains/system.md +108 -0
  102. package/gsp/skills/gsp-update/SKILL.md +1 -2
  103. package/gsp/skills/gsp-visuals/SKILL.md +82 -0
  104. package/gsp/skills/gsp-visuals/chunk-format.md +79 -0
  105. package/gsp/skills/gsp-visuals/domains/3d.md +127 -0
  106. package/gsp/skills/gsp-visuals/domains/imagery.md +145 -0
  107. package/gsp/skills/gsp-visuals/domains/textures.md +138 -0
  108. package/gsp/skills/gsp-visuals/domains/video.md +107 -0
  109. package/gsp/templates/branding/config.json +1 -1
  110. package/gsp/templates/branding/roadmap.md +9 -9
  111. package/gsp/templates/exports-index.md +8 -8
  112. package/gsp/templates/phases/brief.md +1 -1
  113. package/gsp/templates/phases/build.md +1 -1
  114. package/gsp/templates/phases/critique.md +1 -1
  115. package/gsp/templates/phases/design.md +2 -2
  116. package/gsp/templates/phases/discover.md +1 -1
  117. package/gsp/templates/phases/identity.md +1 -1
  118. package/gsp/templates/phases/launch.md +1 -1
  119. package/gsp/templates/phases/patterns.md +60 -71
  120. package/gsp/templates/phases/research.md +1 -1
  121. package/gsp/templates/phases/review.md +1 -1
  122. package/gsp/templates/phases/strategy.md +1 -1
  123. package/gsp/templates/phases/style.md +158 -0
  124. package/gsp/templates/projects/config.json +1 -1
  125. package/gsp/templates/projects/roadmap.md +7 -7
  126. package/gsp/templates/projects/state.md +1 -1
  127. package/package.json +1 -2
  128. package/.claude-plugin/plugin.json +0 -24
  129. package/gsp/agents/gsp-identity-designer.md +0 -74
  130. package/gsp/agents/gsp-pattern-architect.md +0 -189
  131. package/gsp/prompts/01-design-system-architect.md +0 -19
  132. package/gsp/prompts/02-brand-identity-creator.md +0 -16
  133. package/gsp/prompts/03-ui-ux-pattern-master.md +0 -21
  134. package/gsp/prompts/04-marketing-asset-factory.md +0 -14
  135. package/gsp/prompts/05-implementation-spec-expert.md +0 -15
  136. package/gsp/prompts/06-design-critique-partner.md +0 -14
  137. package/gsp/prompts/07-design-trend-synthesizer.md +0 -3
  138. package/gsp/prompts/08-accessibility-auditor.md +0 -23
  139. package/gsp/prompts/09-design-to-code-translator.md +0 -49
  140. package/gsp/prompts/10-project-scoper.md +0 -17
  141. package/gsp/prompts/11-deliverable-reviewer.md +0 -18
  142. package/gsp/prompts/12-project-researcher.md +0 -18
  143. package/gsp/references/phase-transitions.md +0 -132
  144. package/gsp/references/style-preset-schema.md +0 -63
  145. package/gsp/skills/gsp-brand-patterns/SKILL.md +0 -240
  146. package/gsp/skills/gsp-typescale/SKILL.md +0 -234
  147. /package/gsp/{references → skills/gsp-accessibility-audit}/wcag-checklist.md +0 -0
  148. /package/gsp/{references → skills/gsp-art}/terminal-art.md +0 -0
  149. /package/gsp/{references → skills/gsp-brand-audit}/chunk-format.md +0 -0
  150. /package/gsp/{references → skills/gsp-brand-guidelines}/design-tokens.md +0 -0
  151. /package/gsp/{references → skills/gsp-brand-strategy}/brand-archetypes.md +0 -0
  152. /package/gsp/{references → skills/gsp-brand-strategy}/brand-prism.md +0 -0
  153. /package/gsp/{references → skills/gsp-brand-strategy}/positioning-frameworks.md +0 -0
  154. /package/gsp/{references → skills/gsp-brand-strategy}/voice-tone.md +0 -0
  155. /package/gsp/{references → skills/gsp-color/references}/color-composition.md +0 -0
  156. /package/gsp/{references → skills/gsp-project-build}/visual-effects.md +0 -0
  157. /package/gsp/{references → skills/gsp-project-critique}/anti-patterns.md +0 -0
  158. /package/gsp/{references → skills/gsp-project-critique}/nielsen-heuristics.md +0 -0
  159. /package/gsp/{references → skills/gsp-project-design}/apple-hig-patterns.md +0 -0
  160. /package/gsp/{references → skills/gsp-project-design}/block-patterns.md +0 -0
  161. /package/gsp/{references → skills/gsp-typography/references}/typography-scales.md +0 -0
@@ -54,5 +54,91 @@ dark_mode:
54
54
  surface: "#2D2D48"
55
55
  on-background: "#FDFBF7"
56
56
 
57
+ intensity:
58
+ variance: 8 # wobbly borders, random rotations, asymmetric radii, tape/tack decorations
59
+ motion: 4 # subtle jiggle hovers and bounce on decorations — motion is casual, not cinematic
60
+ density: 5 # layered but breathable — paper texture + dashed accents + scattered decorations
61
+
62
+ patterns:
63
+ card:
64
+ border: "{shape.border-width} solid {shape.border-color}"
65
+ shadow: "{elevation.shadow-md} — hard offset, zero blur"
66
+ radius: "wobbly — border-radius: 255px 15px 225px 15px / 15px 225px 15px 255px"
67
+ background: "{color.surface}"
68
+ decoration: "tape (translucent gray bar, rotated) OR tack (red circle at top center) OR none"
69
+ variants: "post-it yellow (#fff9c4) for features, speech-bubble tail for testimonials"
70
+ button-primary:
71
+ background: "{color.surface}"
72
+ border: "border-[3px] solid {shape.border-color}"
73
+ shadow: "{elevation.shadow-md}"
74
+ text: "{color.on-background}, {typography.font-family-secondary}"
75
+ radius: "wobbly oval — custom irregular border-radius"
76
+ fill: "hover fills {color.accent}, text turns white"
77
+ button-secondary:
78
+ background: "muted (#e5e0d8)"
79
+ border: "border-[3px] solid {shape.border-color}"
80
+ shadow: "{elevation.shadow-sm}"
81
+ text: "{color.on-background}"
82
+ radius: "wobbly oval"
83
+ fill: "hover fills {color.secondary} (blue ballpoint)"
84
+ input:
85
+ border: "{shape.border-width} solid {shape.border-color}"
86
+ radius: "wobbly — irregular border-radius matching button aesthetic"
87
+ background: "{color.surface}"
88
+ focus: "border-{color.secondary}, ring-2 ring-{color.secondary}/20"
89
+ font: "{typography.font-family-secondary} — handwritten feel in inputs"
90
+ badge:
91
+ shape: "wobbly pill, {shape.border-width} dashed border"
92
+ text: "handwritten font, text-sm, accent or secondary color"
93
+ decoration: "rotate-2 to rotate-4, looks like a torn tag"
94
+ nav:
95
+ logo: "heading font (Kalam), bold, slight rotation"
96
+ links: "handwritten font, hover adds wavy underline SVG"
97
+ mobile: "doodled hamburger icon with wobbly circle background"
98
+ layout:
99
+ archetype: "sketchbook-collage"
100
+ max-width: "max-w-5xl — contained like a sketchbook"
101
+ section-spacing: "py-20 — consistent rhythm"
102
+ grid-gap: "gap-8"
103
+ asymmetry: "small rotations on cards (rotate-1, -rotate-2), overlapping avatar circles"
104
+ surfaces: "dot-grid paper texture (radial-gradient 24px spacing), dashed line dividers"
105
+ decoration: "hand-drawn SVG arrows, squiggly connectors, corner frame marks, tape strips"
106
+
107
+ constraints:
108
+ never:
109
+ - "standard border-radius classes alone — always use irregular wobbly values"
110
+ - "soft blur shadows — only hard-offset shadows (zero blur)"
111
+ - "clean geometric shapes — everything organic, hand-drawn, imperfect"
112
+ - "sans-serif body fonts — handwritten fonts (Patrick Hand, Kalam) are mandatory"
113
+ - "pure black (#000000) — use soft pencil black (#2D2D2D or #2D3748)"
114
+ - "corporate or sterile feel — every element should look sketched"
115
+ - "neon or saturated technology colors — pencil blacks, paper whites, correction red, ballpoint blue"
116
+ - "smooth transitions above 200ms — interactions should feel snappy and casual"
117
+ always:
118
+ - "wobbly irregular border-radius on every container, button, and card"
119
+ - "hard-offset shadows (2-8px offset, zero blur) on elevated elements"
120
+ - "paper dot-grid texture (radial-gradient) on page background"
121
+ - "handwritten fonts for all visible text (Kalam headings, Patrick Hand body)"
122
+ - "at least one tape strip, thumbtack, or hand-drawn arrow decoration per page"
123
+ - "dashed borders on secondary elements and dividers"
124
+ - "thick borders (border-2 minimum, border-3 or border-4 for emphasis)"
125
+
126
+ effects:
127
+ interaction-vocabulary: [jiggle-nudge, press-flat, scribble-reveal, doodle-fill]
128
+ hover:
129
+ card: "jiggle-nudge — rotate(1deg) or rotate(-1deg), slight lift"
130
+ button: "doodle-fill — background fills {color.accent}, shadow reduces to 2px 2px"
131
+ link: "scribble-reveal — wavy underline SVG appears beneath text"
132
+ badge: "jiggle-nudge — rotation increases, slight bounce"
133
+ active:
134
+ button: "press-flat — shadow disappears, translate(4px, 4px) — pressed into paper"
135
+ focus:
136
+ input: "border-{color.secondary}, ring-2 ring-{color.secondary}/20 — subtle blue glow"
137
+ general: "border-{color.accent} — border-based focus, maintains wobbly shape"
138
+ transition: "duration-100 to duration-200, ease — fast and casual"
139
+ ambient:
140
+ - "gentle-bounce — decorative elements (tacks, arrows) bob subtly (3s ease-in-out)"
141
+ - "pencil-wobble — wobbly borders shimmer slightly on idle (optional, reduced motion aware)"
142
+
57
143
  compatibility: [organic, playful-geometric]
58
144
  clashes: [professional, enterprise, modern-dark]
@@ -55,5 +55,74 @@ dark_mode:
55
55
  border-color: "#333333"
56
56
  muted: "#9CA3AF"
57
57
 
58
+ intensity:
59
+ variance: 2 # strict grid law, asymmetric but mathematically precise
60
+ motion: 2 # instant mechanical snaps, no fluidity
61
+ density: 3 # generous negative space as active structural element
62
+
63
+ patterns:
64
+ card:
65
+ border: "{shape.border-width} solid {shape.border-color}"
66
+ shadow: "none — depth from texture overlay only"
67
+ radius: "0px"
68
+ background: "{color.surface} or {color.background}"
69
+ padding: "p-8 to p-12 — generous and uniform"
70
+ button-primary:
71
+ background: "{color.primary}"
72
+ border: "none"
73
+ text: "uppercase, weight {typography.font-weight-heading}, tracking-wide"
74
+ radius: "0px"
75
+ button-secondary:
76
+ background: "transparent"
77
+ border: "2px solid {color.primary}"
78
+ text: "uppercase, weight {typography.font-weight-heading}, tracking-wide"
79
+ radius: "0px"
80
+ input:
81
+ border: "border-b 2px solid {shape.border-color}"
82
+ radius: "0px"
83
+ background: "{color.background}"
84
+ focus: "border-color shifts to {color.secondary} — no glow, no ring"
85
+ badge:
86
+ shape: "0px radius, {shape.border-width} border"
87
+ text: "uppercase, tracking-widest, text-xs, font-medium"
88
+ nav:
89
+ style: "clean horizontal with visible border-bottom separator"
90
+ links: "uppercase tracking-wider, hover shifts to {color.secondary}"
91
+ layout:
92
+ archetype: "asymmetric-grid"
93
+ max-width: "max-w-7xl"
94
+ section-spacing: "py-16 to py-32"
95
+ grid-gap: "gap-6 to gap-8"
96
+ surfaces: "grid pattern (24px) and dot matrix at 3-4% opacity — structure visible"
97
+ decoration: "numbered section labels in {color.secondary}, geometric Bauhaus shapes"
98
+
99
+ constraints:
100
+ never:
101
+ - "rounded corners of any size — 0px radius everywhere"
102
+ - "gradient backgrounds — solid color blocks only"
103
+ - "drop shadows — depth from pattern and typography only"
104
+ - "center-aligned body text — flush-left ragged-right always"
105
+ - "decorative imagery competing with type — typography is the interface"
106
+ - "ease-in-out or spring easing — mechanical linear or ease-out only"
107
+ - "more than one accent color — monochrome plus {color.secondary} signal only"
108
+ always:
109
+ - "visible grid structure through borders and texture patterns"
110
+ - "uppercase on headings, labels, and buttons"
111
+ - "extreme type scale contrast between headline and body"
112
+ - "flush-left text alignment to grid"
113
+ - "active negative space framing content"
114
+ - "texture overlays (grid, dots, noise) on backgrounds for tactile depth"
115
+
116
+ effects:
117
+ interaction-vocabulary: [color-invert, snap-fill, scale-lift, icon-rotate]
118
+ hover:
119
+ card: "color-invert — background snaps to {color.primary} or {color.secondary}, text inverts"
120
+ button: "color-invert — black/white swap or shift to {color.secondary}"
121
+ active:
122
+ button: "scale-lift — translate-y-[-1px], instant mechanical press"
123
+ focus:
124
+ general: "ring-2 ring-{color.secondary} ring-offset-2 — high contrast"
125
+ transition: "duration-100 to duration-200, ease-out or linear"
126
+
58
127
  compatibility: [bento-grid]
59
128
  clashes: [neubrutalism, cyberpunk, vaporwave]
@@ -60,5 +60,88 @@ dark_mode:
60
60
  background: "#010409"
61
61
  surface: "#0D1117"
62
62
 
63
+ intensity:
64
+ variance: 3 # rigid character grid, tmux-like splits, uniform pane structure
65
+ motion: 4 # cursor blink, typewriter effect, subtle glitch — no cinematic movement
66
+ density: 7 # dense pane layout, tight monospace text, information-heavy
67
+
68
+ patterns:
69
+ card:
70
+ border: "{shape.border-width} solid {shape.border-color}"
71
+ shadow: "none — flat panes, no elevation illusion"
72
+ radius: "{shape.border-radius-sm}"
73
+ background: "{color.surface}"
74
+ header: "title bar with ASCII decoration (+--- TITLE ---+) or solid inverted bar"
75
+ button-primary:
76
+ background: "{color.primary}"
77
+ border: "{shape.border-width} solid {color.primary}"
78
+ shadow: "none"
79
+ text: "uppercase, monospace, {color.on-primary}, bracketed ([ INITIATE ])"
80
+ radius: "{shape.border-radius-sm}"
81
+ button-secondary:
82
+ background: "transparent"
83
+ border: "{shape.border-width} solid {shape.border-color}"
84
+ shadow: "none"
85
+ text: "uppercase, monospace, {color.on-background}"
86
+ radius: "{shape.border-radius-sm}"
87
+ input:
88
+ border: "none — prompt-style (user@host:~$ prefix before input)"
89
+ radius: "0px"
90
+ background: "transparent"
91
+ focus: "blinking block cursor, no ring, no outline"
92
+ font: "monospace always"
93
+ badge:
94
+ shape: "0px radius, bordered"
95
+ text: "monospace uppercase, status codes ([OK], [ERR], [WARN])"
96
+ decoration: "color matches status — green success, red error, amber warning"
97
+ nav:
98
+ style: "terminal tab bar with active/inactive pane indicators"
99
+ background: "{color.background}"
100
+ border: "border-b {shape.border-width} {shape.border-color}"
101
+ links: "monospace, green text, > prefix on hover"
102
+ layout:
103
+ archetype: "terminal-panes"
104
+ max-width: "max-w-6xl"
105
+ section-spacing: "py-16 to py-24"
106
+ grid-gap: "gap-4 to gap-6"
107
+ surfaces: "CRT scanline overlay (faint, 3-4px repeating), text phosphor glow"
108
+ decoration: "ASCII art for logos, progress bars ([||||||.....]), shell prompt prefixes"
109
+ dividers: "ASCII rules (===============, ----------------) between sections"
110
+
111
+ constraints:
112
+ never:
113
+ - "non-monospace fonts — every character must be monospaced, no exceptions"
114
+ - "border-radius above 8px — tight mechanical edges only"
115
+ - "soft or colored shadows — no drop shadows, no elevation illusion"
116
+ - "background images or photos — text and ASCII only"
117
+ - "gradient backgrounds — solid dark colors only"
118
+ - "smooth organic easing — instant or linear transitions"
119
+ - "rounded pill buttons — bracketed text or inverted blocks only"
120
+ - "light mode — dark terminal background is mandatory"
121
+ always:
122
+ - "monospace font on every element (JetBrains Mono, Fira Code, or VT323)"
123
+ - "terminal green ({color.primary}) as primary text and accent color"
124
+ - "phosphor text glow (text-shadow: 0 0 5px rgba(green, 0.5))"
125
+ - "ASCII decorations for dividers, logos, and structural elements"
126
+ - "shell prompt prefixes (>, $, ~) on interactive elements"
127
+ - "status code badges ([OK], [ERR]) for state indication"
128
+ - "CRT scanline overlay for atmosphere"
129
+
130
+ effects:
131
+ interaction-vocabulary: [video-invert, cursor-blink, type-reveal, glitch-offset]
132
+ hover:
133
+ card: "border color brightens to {color.primary}"
134
+ button: "video-invert — background fills {color.primary}, text becomes {color.on-primary}"
135
+ link: "> prefix appears, color shifts to {color.primary}, no underline decoration"
136
+ active:
137
+ button: "translate-y-[1px], brief rapid blink"
138
+ focus:
139
+ general: "no ring — blinking cursor and inverted-video focus indication"
140
+ transition: "duration-0 to duration-100, linear — instant digital response"
141
+ ambient:
142
+ - "cursor-blink — block cursor blinks 1s step-end infinite"
143
+ - "type-reveal — hero text appears character-by-character"
144
+ - "scanline-hum — CRT overlay at constant low opacity"
145
+
63
146
  compatibility: [bento-grid, micro-interactions]
64
147
  clashes: [glassmorphism, liquid-glass, vaporwave]
@@ -57,5 +57,89 @@ dark_mode:
57
57
  background: "#0D0019"
58
58
  surface: "#1A0533"
59
59
 
60
+ intensity:
61
+ variance: 7 # skewed buttons, rotated icon diamonds, perspective grids, alternating timelines
62
+ motion: 7 # glow amplification, un-skew transforms, CRT ambient, continuous orb drift
63
+ density: 5 # balanced — neon effects need breathing room to read against dark void
64
+
65
+ patterns:
66
+ card:
67
+ border: "1px solid {color.primary}/30, border-t-2 {color.secondary} accent laser"
68
+ shadow: "{elevation.shadow-md}"
69
+ radius: "{shape.border-radius-sm}"
70
+ background: "{color.surface}/80 with backdrop-blur-md"
71
+ header: "cyan title with drop-shadow glow, monospace description"
72
+ button-primary:
73
+ background: "transparent"
74
+ border: "2px solid {color.secondary}"
75
+ shadow: "none resting, 0 0 20px {color.secondary} on hover"
76
+ text: "uppercase, tracking-wider, font-mono, {color.secondary}"
77
+ radius: "0px"
78
+ shape: "-skew-x-12 transform, inner content counter-skewed"
79
+ button-secondary:
80
+ background: "{color.primary}"
81
+ border: "2px solid {color.primary}"
82
+ shadow: "none"
83
+ text: "uppercase, tracking-wider, white"
84
+ radius: "0px"
85
+ shape: "-skew-x-12 transform"
86
+ input:
87
+ border: "border-b-2 {color.primary} — underline only"
88
+ radius: "0px"
89
+ background: "black"
90
+ focus: "border shifts to {color.secondary}, glow shadow appears"
91
+ font: "monospace, {color.secondary} text"
92
+ badge:
93
+ shape: "-skew-x-12, 0px radius, neon border"
94
+ text: "uppercase tracking-widest text-xs font-mono"
95
+ decoration: "neon glow shadow matching border color"
96
+ nav:
97
+ style: "terminal window chrome with colored dots (magenta, cyan, orange)"
98
+ background: "dark glass with backdrop-blur"
99
+ links: "monospace uppercase tracking-wider, glow on hover"
100
+ layout:
101
+ archetype: "neon-void"
102
+ max-width: "max-w-7xl"
103
+ section-spacing: "py-20 to py-32"
104
+ grid-gap: "gap-8 to gap-12"
105
+ surfaces: "CRT scanlines overlay (4px repeating), perspective grid floor, floating sun orb"
106
+ decoration: "RGB chromatic aberration, dot patterns (magenta 1px), gradient text fills"
107
+ depth: "z-layered — grid z-0, sun z-1, content z-10, scanlines z-50"
108
+
109
+ constraints:
110
+ never:
111
+ - "light backgrounds — dark void ({color.background}) is mandatory"
112
+ - "subtle or muted colors — all accents at maximum saturation"
113
+ - "organic easing curves — linear or instant for digital feel"
114
+ - "minimalist or sparse layouts — dense with effects, borders, and overlays"
115
+ - "removing CRT scanline overlay — always present for atmosphere"
116
+ - "soft diffused shadows — all shadows are colored neon glows"
117
+ - "serif fonts — geometric sans (Orbitron) and monospace (Share Tech Mono) only"
118
+ always:
119
+ - "CRT scanline overlay fixed across entire viewport"
120
+ - "perspective grid background in at least one section"
121
+ - "gradient text fill (sunset: orange via magenta to cyan) on hero headline"
122
+ - "skewed buttons with -skew-x-12 transform"
123
+ - "neon glow shadows (colored, not black) on interactive elements"
124
+ - "terminal/window chrome with colored dots on at least one container"
125
+ - "IRC-style angle bracket formatting on testimonials"
126
+
127
+ effects:
128
+ interaction-vocabulary: [un-skew, glow-explode, diamond-spin, neon-border-shift]
129
+ hover:
130
+ card: "neon-border-shift — border opacity increases, -translate-y-2, shadow deepens"
131
+ button: "un-skew — skew returns to 0, bg fills neon, text inverts to black, glow explodes 2-3x"
132
+ icon: "diamond-spin — rotate-45 container spins to rotate-90"
133
+ link: "neon-border-shift — underline appears, color shifts, glow added"
134
+ active:
135
+ button: "scale-95, glow dims slightly"
136
+ focus:
137
+ general: "ring-2 ring-{color.secondary} with ambient glow"
138
+ transition: "duration-200, ease-linear — fast, digital, unnatural"
139
+ ambient:
140
+ - "orb-drift — floating sun gradient (600px, blur-100px) slow drift"
141
+ - "scanline-flicker — CRT overlay at constant opacity"
142
+ - "icon-pulse — animate-pulse on placeholder icons"
143
+
60
144
  compatibility: [kinetic-typography, aurora-gradients]
61
145
  clashes: [swiss-minimalist, professional, terminal]
@@ -61,5 +61,87 @@ dark_mode:
61
61
  surface: "#0F1115"
62
62
  on-background: "#FFFFFF"
63
63
 
64
+ intensity:
65
+ variance: 5 # asymmetric pricing scale, corner border accents, but grid-disciplined overall
66
+ motion: 7 # spinning orbitals, floating cards, pulsing indicators, glow intensification
67
+ density: 5 # spacious — generous py-24 sections, but data-heavy stat displays
68
+
69
+ patterns:
70
+ card:
71
+ border: "{shape.border-width} solid rgba(255,255,255,0.10)"
72
+ shadow: "none resting, {elevation.shadow-md} on hover"
73
+ radius: "{shape.border-radius-md}"
74
+ background: "{color.surface}"
75
+ hover: "border shifts to {color.primary}/50, orange glow shadow appears, -translate-y-1"
76
+ button-primary:
77
+ background: "gradient from {color.secondary} to {color.primary}"
78
+ border: "none"
79
+ shadow: "{glow.primary}"
80
+ text: "white, bold, uppercase, tracking-wider"
81
+ radius: "{shape.border-radius-lg}"
82
+ button-secondary:
83
+ background: "transparent"
84
+ border: "2px solid rgba(255,255,255,0.20)"
85
+ shadow: "none"
86
+ text: "white, medium weight"
87
+ radius: "{shape.border-radius-lg}"
88
+ input:
89
+ border: "border-b-2 rgba(255,255,255,0.20) — bottom border only"
90
+ radius: "0px"
91
+ background: "rgba(0,0,0,0.50)"
92
+ focus: "border shifts to {color.primary}, orange glow shadow below, no outline"
93
+ font: "monospace for data precision"
94
+ badge:
95
+ shape: "rounded-lg or rounded-full, orange-tinted glass"
96
+ text: "monospace uppercase tracking-widest text-xs"
97
+ decoration: "animate-ping dot for live status indicators"
98
+ nav:
99
+ style: "minimal dark bar with pill CTA"
100
+ background: "transparent or glass (backdrop-blur-lg + bg-black/40)"
101
+ links: "monospace, muted white, hover shifts to {color.primary}"
102
+ layout:
103
+ archetype: "blockchain-grid"
104
+ max-width: "max-w-7xl"
105
+ section-spacing: "py-24"
106
+ grid-gap: "gap-8 to gap-12"
107
+ surfaces: "grid pattern (50px cells, fading vignette mask) — void is never flat"
108
+ decoration: "spinning orbital rings, gradient text fills (orange to gold), corner border accents"
109
+ depth: "radial gradient blurs ({color.primary} at 5-10% opacity, blur-[120px]) for ambient glow"
110
+
111
+ constraints:
112
+ never:
113
+ - "light backgrounds — true void ({color.background}) is mandatory"
114
+ - "pure black shadows — all shadows use orange/gold tints"
115
+ - "flat dark backgrounds without grid or radial texture — void must breathe"
116
+ - "serif fonts — geometric sans (Space Grotesk) and monospace (JetBrains Mono) only"
117
+ - "hard-line section dividers (<hr>) — spacing and background alternation separate sections"
118
+ - "muted or desaturated orange — Bitcoin orange at full intensity always"
119
+ always:
120
+ - "colored glow shadows (orange/gold tinted) on all interactive elements"
121
+ - "gradient text fill (orange to gold) on hero headline keywords"
122
+ - "grid pattern background on at least one section"
123
+ - "radial blur blobs for ambient background glow"
124
+ - "pill-shaped (rounded-full) primary buttons"
125
+ - "monospace font on stats, prices, badges, and technical labels"
126
+ - "corner border accents on at least one card type"
127
+
128
+ effects:
129
+ interaction-vocabulary: [glow-intensify, scale-lift, pulse-ping, orbital-spin]
130
+ hover:
131
+ card: "glow-intensify — border shifts orange/50, orange glow shadow appears, -translate-y-1"
132
+ button: "scale-lift — scale-105, glow radius and opacity increase"
133
+ image: "scale-lift — scale-110 + contrast-125"
134
+ icon-container: "glow-intensify — glow shadow appears (0 0 20px rgba(234,88,12,0.4))"
135
+ active:
136
+ button: "scale-95, glow dims"
137
+ focus:
138
+ general: "ring-2 ring-{color.primary} focus-visible"
139
+ transition: "duration-200 to duration-300, cubic-bezier(0.4, 0, 0.2, 1)"
140
+ ambient:
141
+ - "orbital-spin — outer ring 10s linear infinite, inner ring 15s reverse"
142
+ - "pulse-ping — animate-ping on status dots for live network feel"
143
+ - "card-float — floating stat cards animate-bounce with staggered delays (3-4s)"
144
+ - "orb-drift — hero 3D orb floats translateY(-20px) over 8s ease-in-out infinite"
145
+
64
146
  compatibility: [cyberpunk, modern-dark]
65
147
  clashes: [botanical, retro, sketch]
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: gsp-typography
3
+ description: "Design type systems — scale, pairing, fluid type, vertical rhythm"
4
+ user-invocable: true
5
+ model: sonnet
6
+ allowed-tools:
7
+ - Read
8
+ - Write
9
+ - Bash
10
+ - AskUserQuestion
11
+ - Glob
12
+ - Grep
13
+ - WebSearch
14
+ ---
15
+ <context>
16
+ Typography skill — thin router. Domain expertise lives in `domains/` files, reference material in `references/`.
17
+
18
+ This is a standalone composable skill. It works two ways:
19
+ 1. **Standalone** — user runs `/gsp-typography` directly for type scale generation, font pairing, or full system design
20
+ 2. **As a building block** — the creative-director invokes `/gsp-typography --enrich` to add technical precision to creative typeface choices
21
+
22
+ Visual companion: https://typescale.com/ — users can preview ratios interactively there, then feed the values here.
23
+ </context>
24
+
25
+ <objective>
26
+ Build a production-ready typography system — scale, pairing, fluid type, vertical rhythm, and font loading strategy.
27
+
28
+ **Input:** Font families + ratio, `--enrich`, `--list-ratios`, `--preview`, `--from-style`, or interactive
29
+ **Output:** `typography.md` foundation chunk + CSS file (Tailwind or vanilla)
30
+ **Agent:** None — inline skill, mathematical scale generation
31
+ </objective>
32
+
33
+ <execution_context>
34
+ @${CLAUDE_SKILL_DIR}/chunk-format.md
35
+ </execution_context>
36
+
37
+ <rules>
38
+ - Always use `AskUserQuestion` for user interaction — never prompt via plain text
39
+ - One decision per question — never batch multiple questions in a single message
40
+ - All sizes include px, rem, AND fluid clamp() values for headings
41
+ - CSS output defaults to Tailwind v4 / shadcn format unless `--vanilla` is passed
42
+ - Foundation chunks follow `chunk-format.md` format exactly
43
+ </rules>
44
+
45
+ <process>
46
+ ## Step 0: Parse mode
47
+
48
+ | Input | Mode | Domain |
49
+ |-------|------|--------|
50
+ | `"Inter" --ratio 1.25` | Direct scale | `domains/scale.md` |
51
+ | `--from-style cyberpunk` | From style preset | `domains/scale.md` |
52
+ | `--list-ratios` | List ratios | `domains/scale.md` |
53
+ | `--preview "Inter" --ratio 1.25` | Preview scale | `domains/scale.md` |
54
+ | `--enrich` | Enrich existing typography | `domains/pairing.md` |
55
+ | *(no args)* | Interactive full system | `domains/system.md` |
56
+
57
+ ## Step 1: Load domain
58
+
59
+ Read the domain file from `${CLAUDE_SKILL_DIR}/domains/{domain}.md`.
60
+
61
+ For scale modes, also read `${CLAUDE_SKILL_DIR}/references/typography-scales.md`.
62
+
63
+ ## Step 2: Follow domain framework
64
+
65
+ Execute the loaded domain's workflow. The domain file contains all rules, formulas, tables, and output specifications.
66
+
67
+ ## Step 3: Write output
68
+
69
+ Write `typography.md` + optional CSS file to the resolved output path. Display scale summary and offer next steps.
70
+ </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