ui-pro-forge-cli 2.5.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 (188) hide show
  1. package/README.md +99 -0
  2. package/assets/data/app-interface.csv +31 -0
  3. package/assets/data/charts.csv +26 -0
  4. package/assets/data/colors.csv +194 -0
  5. package/assets/data/google-fonts.csv +1924 -0
  6. package/assets/data/icons.csv +106 -0
  7. package/assets/data/landing.csv +35 -0
  8. package/assets/data/motion.csv +17 -0
  9. package/assets/data/products.csv +193 -0
  10. package/assets/data/react-performance.csv +45 -0
  11. package/assets/data/stacks/angular.csv +51 -0
  12. package/assets/data/stacks/astro.csv +54 -0
  13. package/assets/data/stacks/avalonia.csv +57 -0
  14. package/assets/data/stacks/flutter.csv +53 -0
  15. package/assets/data/stacks/html-tailwind.csv +56 -0
  16. package/assets/data/stacks/javafx.csv +76 -0
  17. package/assets/data/stacks/jetpack-compose.csv +53 -0
  18. package/assets/data/stacks/laravel.csv +51 -0
  19. package/assets/data/stacks/nextjs.csv +53 -0
  20. package/assets/data/stacks/nuxt-ui.csv +71 -0
  21. package/assets/data/stacks/nuxtjs.csv +59 -0
  22. package/assets/data/stacks/react-native.csv +52 -0
  23. package/assets/data/stacks/react.csv +54 -0
  24. package/assets/data/stacks/shadcn.csv +61 -0
  25. package/assets/data/stacks/solidjs.csv +21 -0
  26. package/assets/data/stacks/svelte.csv +54 -0
  27. package/assets/data/stacks/swiftui.csv +51 -0
  28. package/assets/data/stacks/threejs.csv +54 -0
  29. package/assets/data/stacks/uno.csv +60 -0
  30. package/assets/data/stacks/vue.csv +50 -0
  31. package/assets/data/stacks/winui.csv +60 -0
  32. package/assets/data/styles.csv +86 -0
  33. package/assets/data/typography.csv +75 -0
  34. package/assets/data/ui-reasoning.csv +162 -0
  35. package/assets/data/ux-guidelines.csv +100 -0
  36. package/assets/scripts/core.py +463 -0
  37. package/assets/scripts/design_system.py +1371 -0
  38. package/assets/scripts/search.py +162 -0
  39. package/assets/scripts/tests/test_core.py +134 -0
  40. package/assets/scripts/validate_data.py +114 -0
  41. package/assets/skills/banner-design/SKILL.md +196 -0
  42. package/assets/skills/banner-design/references/banner-sizes-and-styles.md +118 -0
  43. package/assets/skills/brand/SKILL.md +97 -0
  44. package/assets/skills/brand/references/approval-checklist.md +169 -0
  45. package/assets/skills/brand/references/asset-organization.md +157 -0
  46. package/assets/skills/brand/references/brand-guideline-template.md +140 -0
  47. package/assets/skills/brand/references/color-palette-management.md +186 -0
  48. package/assets/skills/brand/references/consistency-checklist.md +94 -0
  49. package/assets/skills/brand/references/logo-usage-rules.md +185 -0
  50. package/assets/skills/brand/references/messaging-framework.md +85 -0
  51. package/assets/skills/brand/references/typography-specifications.md +214 -0
  52. package/assets/skills/brand/references/update.md +118 -0
  53. package/assets/skills/brand/references/visual-identity.md +96 -0
  54. package/assets/skills/brand/references/voice-framework.md +88 -0
  55. package/assets/skills/brand/scripts/extract-colors.cjs +341 -0
  56. package/assets/skills/brand/scripts/inject-brand-context.cjs +349 -0
  57. package/assets/skills/brand/scripts/sync-brand-to-tokens.cjs +248 -0
  58. package/assets/skills/brand/scripts/tests/test_sync_brand_to_tokens.py +52 -0
  59. package/assets/skills/brand/scripts/validate-asset.cjs +387 -0
  60. package/assets/skills/brand/templates/brand-guidelines-starter.md +275 -0
  61. package/assets/skills/design/SKILL.md +313 -0
  62. package/assets/skills/design/data/cip/deliverables.csv +51 -0
  63. package/assets/skills/design/data/cip/industries.csv +21 -0
  64. package/assets/skills/design/data/cip/mockup-contexts.csv +21 -0
  65. package/assets/skills/design/data/cip/styles.csv +21 -0
  66. package/assets/skills/design/data/icon/styles.csv +16 -0
  67. package/assets/skills/design/data/logo/colors.csv +56 -0
  68. package/assets/skills/design/data/logo/industries.csv +56 -0
  69. package/assets/skills/design/data/logo/styles.csv +56 -0
  70. package/assets/skills/design/references/banner-sizes-and-styles.md +118 -0
  71. package/assets/skills/design/references/cip-deliverable-guide.md +95 -0
  72. package/assets/skills/design/references/cip-design.md +121 -0
  73. package/assets/skills/design/references/cip-prompt-engineering.md +84 -0
  74. package/assets/skills/design/references/cip-style-guide.md +68 -0
  75. package/assets/skills/design/references/design-routing.md +207 -0
  76. package/assets/skills/design/references/icon-design.md +122 -0
  77. package/assets/skills/design/references/logo-color-psychology.md +101 -0
  78. package/assets/skills/design/references/logo-design.md +92 -0
  79. package/assets/skills/design/references/logo-prompt-engineering.md +158 -0
  80. package/assets/skills/design/references/logo-style-guide.md +109 -0
  81. package/assets/skills/design/references/slides-copywriting-formulas.md +84 -0
  82. package/assets/skills/design/references/slides-create.md +4 -0
  83. package/assets/skills/design/references/slides-html-template.md +295 -0
  84. package/assets/skills/design/references/slides-layout-patterns.md +137 -0
  85. package/assets/skills/design/references/slides-strategies.md +94 -0
  86. package/assets/skills/design/references/slides.md +42 -0
  87. package/assets/skills/design/references/social-photos-design.md +329 -0
  88. package/assets/skills/design/scripts/cip/core.py +215 -0
  89. package/assets/skills/design/scripts/cip/generate.py +484 -0
  90. package/assets/skills/design/scripts/cip/render-html.py +424 -0
  91. package/assets/skills/design/scripts/cip/search.py +127 -0
  92. package/assets/skills/design/scripts/icon/generate.py +487 -0
  93. package/assets/skills/design/scripts/logo/core.py +175 -0
  94. package/assets/skills/design/scripts/logo/generate.py +362 -0
  95. package/assets/skills/design/scripts/logo/search.py +114 -0
  96. package/assets/skills/design-system/SKILL.md +244 -0
  97. package/assets/skills/design-system/data/slide-backgrounds.csv +11 -0
  98. package/assets/skills/design-system/data/slide-charts.csv +26 -0
  99. package/assets/skills/design-system/data/slide-color-logic.csv +14 -0
  100. package/assets/skills/design-system/data/slide-copy.csv +26 -0
  101. package/assets/skills/design-system/data/slide-layout-logic.csv +16 -0
  102. package/assets/skills/design-system/data/slide-layouts.csv +26 -0
  103. package/assets/skills/design-system/data/slide-strategies.csv +16 -0
  104. package/assets/skills/design-system/data/slide-typography.csv +15 -0
  105. package/assets/skills/design-system/references/component-specs.md +236 -0
  106. package/assets/skills/design-system/references/component-tokens.md +214 -0
  107. package/assets/skills/design-system/references/primitive-tokens.md +203 -0
  108. package/assets/skills/design-system/references/semantic-tokens.md +215 -0
  109. package/assets/skills/design-system/references/states-and-variants.md +241 -0
  110. package/assets/skills/design-system/references/tailwind-integration.md +251 -0
  111. package/assets/skills/design-system/references/token-architecture.md +224 -0
  112. package/assets/skills/design-system/scripts/embed-tokens.cjs +99 -0
  113. package/assets/skills/design-system/scripts/fetch-background.py +317 -0
  114. package/assets/skills/design-system/scripts/generate-slide.py +770 -0
  115. package/assets/skills/design-system/scripts/generate-tokens.cjs +205 -0
  116. package/assets/skills/design-system/scripts/html-token-validator.py +327 -0
  117. package/assets/skills/design-system/scripts/search-slides.py +218 -0
  118. package/assets/skills/design-system/scripts/slide-token-validator.py +35 -0
  119. package/assets/skills/design-system/scripts/slide_search_core.py +453 -0
  120. package/assets/skills/design-system/scripts/tests/test_validate_tokens.py +48 -0
  121. package/assets/skills/design-system/scripts/validate-tokens.cjs +246 -0
  122. package/assets/skills/design-system/templates/design-tokens-starter.json +143 -0
  123. package/assets/skills/slides/SKILL.md +40 -0
  124. package/assets/skills/slides/references/copywriting-formulas.md +84 -0
  125. package/assets/skills/slides/references/create.md +4 -0
  126. package/assets/skills/slides/references/html-template.md +295 -0
  127. package/assets/skills/slides/references/layout-patterns.md +137 -0
  128. package/assets/skills/slides/references/slide-strategies.md +94 -0
  129. package/assets/skills/ui-styling/LICENSE.txt +202 -0
  130. package/assets/skills/ui-styling/SKILL.md +324 -0
  131. package/assets/skills/ui-styling/references/canvas-design-system.md +320 -0
  132. package/assets/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  133. package/assets/skills/ui-styling/references/shadcn-components.md +424 -0
  134. package/assets/skills/ui-styling/references/shadcn-theming.md +373 -0
  135. package/assets/skills/ui-styling/references/tailwind-customization.md +483 -0
  136. package/assets/skills/ui-styling/references/tailwind-responsive.md +382 -0
  137. package/assets/skills/ui-styling/references/tailwind-utilities.md +455 -0
  138. package/assets/skills/ui-styling/scripts/requirements.txt +17 -0
  139. package/assets/skills/ui-styling/scripts/shadcn_add.py +308 -0
  140. package/assets/skills/ui-styling/scripts/tailwind_config_gen.py +473 -0
  141. package/assets/skills/ui-styling/scripts/tests/coverage-ui.json +1 -0
  142. package/assets/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  143. package/assets/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  144. package/assets/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +394 -0
  145. package/assets/templates/base/quick-reference.md +297 -0
  146. package/assets/templates/base/skill-content.md +384 -0
  147. package/assets/templates/platforms/agent.json +21 -0
  148. package/assets/templates/platforms/augment.json +18 -0
  149. package/assets/templates/platforms/claude.json +21 -0
  150. package/assets/templates/platforms/codebuddy.json +21 -0
  151. package/assets/templates/platforms/codewhale.json +21 -0
  152. package/assets/templates/platforms/codex.json +21 -0
  153. package/assets/templates/platforms/continue.json +21 -0
  154. package/assets/templates/platforms/copilot.json +21 -0
  155. package/assets/templates/platforms/cursor.json +21 -0
  156. package/assets/templates/platforms/droid.json +21 -0
  157. package/assets/templates/platforms/gemini.json +21 -0
  158. package/assets/templates/platforms/kilocode.json +21 -0
  159. package/assets/templates/platforms/kiro.json +21 -0
  160. package/assets/templates/platforms/opencode.json +21 -0
  161. package/assets/templates/platforms/qoder.json +21 -0
  162. package/assets/templates/platforms/roocode.json +21 -0
  163. package/assets/templates/platforms/trae.json +21 -0
  164. package/assets/templates/platforms/warp.json +18 -0
  165. package/assets/templates/platforms/windsurf.json +21 -0
  166. package/dist/commands/init.d.ts +11 -0
  167. package/dist/commands/init.js +165 -0
  168. package/dist/commands/uninstall.d.ts +7 -0
  169. package/dist/commands/uninstall.js +131 -0
  170. package/dist/commands/update.d.ts +7 -0
  171. package/dist/commands/update.js +73 -0
  172. package/dist/commands/versions.d.ts +5 -0
  173. package/dist/commands/versions.js +36 -0
  174. package/dist/index.d.ts +2 -0
  175. package/dist/index.js +78 -0
  176. package/dist/types/index.d.ts +40 -0
  177. package/dist/types/index.js +25 -0
  178. package/dist/utils/detect.d.ts +8 -0
  179. package/dist/utils/detect.js +115 -0
  180. package/dist/utils/extract.d.ts +15 -0
  181. package/dist/utils/extract.js +125 -0
  182. package/dist/utils/github.d.ts +12 -0
  183. package/dist/utils/github.js +97 -0
  184. package/dist/utils/logger.d.ts +8 -0
  185. package/dist/utils/logger.js +9 -0
  186. package/dist/utils/template.d.ts +50 -0
  187. package/dist/utils/template.js +249 -0
  188. package/package.json +65 -0
@@ -0,0 +1,137 @@
1
+ # Layout Patterns
2
+
3
+ 25 slide layouts with CSS structures and animation classes.
4
+
5
+ ## Layout Selection by Use Case
6
+
7
+ | Layout | Use Case | Animation |
8
+ |--------|----------|-----------|
9
+ | Title Slide | Opening/first impression | `animate-fade-up` |
10
+ | Problem Statement | Establish pain point | `animate-stagger` |
11
+ | Solution Overview | Introduce solution | `animate-scale` |
12
+ | Feature Grid | Show capabilities (3-6 cards) | `animate-stagger` |
13
+ | Metrics Dashboard | Display KPIs (3-4 metrics) | `animate-stagger-scale` |
14
+ | Comparison Table | Compare options | `animate-fade-up` |
15
+ | Timeline Flow | Show progression | `animate-stagger` |
16
+ | Team Grid | Introduce people | `animate-stagger` |
17
+ | Quote Testimonial | Customer endorsement | `animate-fade-up` |
18
+ | Two Column Split | Compare/contrast | `animate-fade-up` |
19
+ | Big Number Hero | Single powerful metric | `animate-count` |
20
+ | Product Screenshot | Show product UI | `animate-scale` |
21
+ | Pricing Cards | Present tiers | `animate-stagger` |
22
+ | CTA Closing | Drive action | `animate-pulse` |
23
+
24
+ ## CSS Structures
25
+
26
+ ### Title Slide
27
+ ```css
28
+ .slide-title {
29
+ display: flex;
30
+ flex-direction: column;
31
+ justify-content: center;
32
+ align-items: center;
33
+ text-align: center;
34
+ }
35
+ ```
36
+
37
+ ### Two Column Split
38
+ ```css
39
+ .slide-split {
40
+ display: grid;
41
+ grid-template-columns: 1fr 1fr;
42
+ gap: 48px;
43
+ align-items: center;
44
+ }
45
+ @media (max-width: 768px) {
46
+ .slide-split { grid-template-columns: 1fr; gap: 24px; }
47
+ }
48
+ ```
49
+
50
+ ### Feature Grid (3 columns)
51
+ ```css
52
+ .slide-features {
53
+ display: grid;
54
+ grid-template-columns: repeat(3, 1fr);
55
+ gap: 24px;
56
+ }
57
+ @media (max-width: 768px) {
58
+ .slide-features { grid-template-columns: repeat(2, 1fr); gap: 16px; }
59
+ }
60
+ @media (max-width: 480px) {
61
+ .slide-features { grid-template-columns: 1fr; }
62
+ }
63
+ ```
64
+
65
+ ### Metrics Dashboard (4 columns)
66
+ ```css
67
+ .slide-metrics {
68
+ display: grid;
69
+ grid-template-columns: repeat(4, 1fr);
70
+ gap: 16px;
71
+ }
72
+ @media (max-width: 768px) {
73
+ .slide-metrics { grid-template-columns: repeat(2, 1fr); }
74
+ }
75
+ @media (max-width: 480px) {
76
+ .slide-metrics { grid-template-columns: 1fr; }
77
+ }
78
+ ```
79
+
80
+ ## Component Variants
81
+
82
+ ### Card Styles
83
+ | Style | CSS Class | Use For |
84
+ |-------|-----------|---------|
85
+ | Icon Left | `.card-icon-left` | Features with icons |
86
+ | Accent Bar | `.card-accent-bar` | Highlighted features |
87
+ | Metric Card | `.card-metric` | Numbers/stats |
88
+ | Avatar Card | `.card-avatar` | Team members |
89
+ | Pricing Card | `.card-pricing` | Price tiers |
90
+
91
+ ### Metric Styles
92
+ | Style | Effect |
93
+ |-------|--------|
94
+ | `gradient-number` | Gradient text on numbers |
95
+ | `oversized` | Extra large (120px+) |
96
+ | `sparkline` | Small inline chart |
97
+ | `funnel-numbers` | Conversion stages |
98
+
99
+ ## Visual Treatments
100
+
101
+ | Treatment | When to Use |
102
+ |-----------|-------------|
103
+ | `gradient-glow` | Title slides, CTAs |
104
+ | `subtle-border` | Problem statements |
105
+ | `icon-top` | Feature grids |
106
+ | `screenshot-shadow` | Product screenshots |
107
+ | `popular-highlight` | Pricing (scale 1.05) |
108
+ | `bg-overlay` | Background images |
109
+ | `contrast-pair` | Before/after |
110
+ | `logo-grayscale` | Client logos |
111
+
112
+ ## Search Commands
113
+
114
+ ```bash
115
+ # Find layout for specific use
116
+ python .claude/skills/design-system/scripts/search-slides.py "metrics dashboard" -d layout
117
+
118
+ # Contextual recommendation
119
+ python .claude/skills/design-system/scripts/search-slides.py "traction slide" \
120
+ --context --position 4 --total 10
121
+ ```
122
+
123
+ ## Layout Decision Flow
124
+
125
+ ```
126
+ 1. What's the slide goal?
127
+ └─> Search layout-logic.csv
128
+
129
+ 2. What emotion should it trigger?
130
+ └─> Search color-logic.csv
131
+
132
+ 3. What's the content type?
133
+ └─> Search typography.csv
134
+
135
+ 4. Should it break pattern?
136
+ └─> Check position (1/3, 2/3) → Use full-bleed
137
+ ```
@@ -0,0 +1,94 @@
1
+ # Slide Strategies
2
+
3
+ 15 proven deck structures with emotion arcs.
4
+
5
+ ## Strategy Selection
6
+
7
+ | Strategy | Slides | Goal | Audience |
8
+ |----------|--------|------|----------|
9
+ | YC Seed Deck | 10-12 | Raise seed funding | VCs |
10
+ | Guy Kawasaki | 10 | Pitch in 20 min | Investors |
11
+ | Series A | 12-15 | Raise Series A | Growth VCs |
12
+ | Product Demo | 5-8 | Demonstrate value | Prospects |
13
+ | Sales Pitch | 7-10 | Close deal | Qualified leads |
14
+ | Nancy Duarte Sparkline | Varies | Transform perspective | Any |
15
+ | Problem-Solution-Benefit | 3-5 | Quick persuasion | Time-pressed |
16
+ | QBR | 10-15 | Update stakeholders | Leadership |
17
+ | Team All-Hands | 8-12 | Align team | Employees |
18
+ | Conference Talk | 15-25 | Thought leadership | Attendees |
19
+ | Workshop | 20-40 | Teach skills | Learners |
20
+ | Case Study | 8-12 | Prove value | Prospects |
21
+ | Competitive Analysis | 6-10 | Strategic decisions | Internal |
22
+ | Board Meeting | 15-20 | Update board | Directors |
23
+ | Webinar | 20-30 | Generate leads | Registrants |
24
+
25
+ ## Common Structures
26
+
27
+ ### YC Seed Deck (10 slides)
28
+ 1. Title/Hook
29
+ 2. Problem
30
+ 3. Solution
31
+ 4. Traction
32
+ 5. Market
33
+ 6. Product
34
+ 7. Business Model
35
+ 8. Team
36
+ 9. Financials
37
+ 10. The Ask
38
+
39
+ **Emotion arc:** curiosity→frustration→hope→confidence→trust→urgency
40
+
41
+ ### Sales Pitch (9 slides)
42
+ 1. Personalized Hook
43
+ 2. Their Problem
44
+ 3. Cost of Inaction
45
+ 4. Your Solution
46
+ 5. Proof/Case Studies
47
+ 6. Differentiators
48
+ 7. Pricing/ROI
49
+ 8. Objection Handling
50
+ 9. CTA + Next Steps
51
+
52
+ **Emotion arc:** connection→frustration→fear→hope→trust→confidence→urgency
53
+
54
+ ### Product Demo (6 slides)
55
+ 1. Hook/Problem
56
+ 2. Solution Overview
57
+ 3. Live Demo/Screenshots
58
+ 4. Key Features
59
+ 5. Benefits/Pricing
60
+ 6. CTA
61
+
62
+ **Emotion arc:** curiosity→frustration→hope→confidence→urgency
63
+
64
+ ## Duarte Sparkline Pattern
65
+
66
+ Alternate between "What Is" (current pain) and "What Could Be" (better future):
67
+
68
+ ```
69
+ What Is → What Could Be → What Is → What Could Be → New Bliss
70
+ (pain) (hope) (pain) (hope) (resolution)
71
+ ```
72
+
73
+ Pattern breaks at 1/3 and 2/3 positions create engagement peaks.
74
+
75
+ ## Search Commands
76
+
77
+ ```bash
78
+ # Find strategy by goal
79
+ python .claude/skills/design-system/scripts/search-slides.py "investor pitch" -d strategy
80
+
81
+ # Get emotion arc
82
+ python .claude/skills/design-system/scripts/search-slides.py "series a funding" -d strategy --json
83
+ ```
84
+
85
+ ## Matching Strategy to Context
86
+
87
+ | Context | Recommended Strategy |
88
+ |---------|---------------------|
89
+ | Raising money | YC Seed, Series A, Guy Kawasaki |
90
+ | Selling product | Sales Pitch, Product Demo |
91
+ | Internal update | QBR, All-Hands, Board Meeting |
92
+ | Public speaking | Conference Talk, Workshop |
93
+ | Proving value | Case Study, Competitive Analysis |
94
+ | Lead generation | Webinar |
@@ -0,0 +1,42 @@
1
+ # Slides Reference
2
+
3
+ Strategic HTML presentation design with Chart.js data visualization, design tokens, responsive layouts, and copywriting formulas.
4
+
5
+ ## Usage
6
+
7
+ Activate the `design` skill and specify slides task, e.g. "create a pitch deck".
8
+
9
+ ## Knowledge Base
10
+
11
+ | Topic | File | Purpose |
12
+ |-------|------|---------|
13
+ | Creation Guide | `references/slides-create.md` | Step-by-step slide creation workflow |
14
+ | Layout Patterns | `references/slides-layout-patterns.md` | Slide layout templates and grid systems |
15
+ | HTML Template | `references/slides-html-template.md` | Base HTML structure for presentations |
16
+ | Copywriting | `references/slides-copywriting-formulas.md` | AIDA, PAS, FAB for slide content |
17
+ | Strategies | `references/slides-strategies.md` | Contextual strategies by presentation type |
18
+
19
+ ## When to Use
20
+
21
+ - Marketing presentations and pitch decks
22
+ - Data-driven slides with Chart.js visualizations
23
+ - Strategic slide design with layout patterns
24
+ - Copywriting-optimized presentation content
25
+ - Investor decks, sales presentations, team updates
26
+
27
+ ## Key Features
28
+
29
+ - **Chart.js Integration**: Bar, line, pie, doughnut, radar charts
30
+ - **Design Tokens**: Consistent spacing, colors, typography
31
+ - **Responsive**: Works on desktop and mobile
32
+ - **Copywriting**: Built-in AIDA, PAS, FAB formulas
33
+ - **Layout Patterns**: Hero, split, grid, comparison, timeline
34
+
35
+ ## Workflow
36
+
37
+ 1. Parse presentation type from user request
38
+ 2. Load `references/slides-create.md` for creation guide
39
+ 3. Select layout patterns from `references/slides-layout-patterns.md`
40
+ 4. Apply copywriting formulas from `references/slides-copywriting-formulas.md`
41
+ 5. Use HTML template from `references/slides-html-template.md`
42
+ 6. Apply strategy from `references/slides-strategies.md`
@@ -0,0 +1,329 @@
1
+ # Social Photos Design Guide
2
+
3
+ Design social media images via HTML/CSS rendering + screenshot export. Orchestrates `ui-pro-forge`, `brand`, `design-system`, and `chrome-devtools` skills.
4
+
5
+ ## Platform Sizes
6
+
7
+ | Platform | Type | Size (px) | Aspect |
8
+ |----------|------|-----------|--------|
9
+ | Instagram | Post | 1080 x 1080 | 1:1 |
10
+ | Instagram | Story/Reel | 1080 x 1920 | 9:16 |
11
+ | Instagram | Carousel | 1080 x 1350 | 4:5 |
12
+ | Facebook | Post | 1200 x 630 | ~1.9:1 |
13
+ | Facebook | Story | 1080 x 1920 | 9:16 |
14
+ | Twitter/X | Post | 1200 x 675 | 16:9 |
15
+ | Twitter/X | Card | 800 x 418 | ~1.91:1 |
16
+ | LinkedIn | Post | 1200 x 627 | ~1.91:1 |
17
+ | LinkedIn | Article | 1200 x 644 | ~1.86:1 |
18
+ | Pinterest | Pin | 1000 x 1500 | 2:3 |
19
+ | YouTube | Thumbnail | 1280 x 720 | 16:9 |
20
+ | TikTok | Cover | 1080 x 1920 | 9:16 |
21
+ | Threads | Post | 1080 x 1080 | 1:1 |
22
+
23
+ ## Workflow
24
+
25
+ ### Step 1: Activate Project Management
26
+
27
+ Invoke `project-management` skill to create persistent TODO tasks via Claude's native task orchestration. Break down into:
28
+ - Requirement analysis task
29
+ - Idea generation task(s)
30
+ - HTML design task(s) — can parallelize per size/variant
31
+ - Screenshot export task(s) — can parallelize per file
32
+ - Report generation task
33
+
34
+ Spawn parallel subagents for independent tasks (e.g., multiple HTML files for different sizes).
35
+
36
+ ### Step 2: Analyze Requirements
37
+
38
+ Parse user input for:
39
+ - **Subject/topic** — what the social photo represents
40
+ - **Target platforms** — which sizes needed (default: Instagram Post 1:1 + Story 9:16)
41
+ - **Visual style** — minimalist, bold, gradient, photo-based, etc.
42
+ - **Brand context** — read from `docs/brand-guidelines.md` if exists
43
+ - **Content elements** — headline, subtext, CTA, images, icons
44
+ - **Quantity** — how many variations (default: 3)
45
+
46
+ ### Step 3: Generate Ideas
47
+
48
+ Create 3-5 concept ideas that:
49
+ - Match the input prompt/requirements
50
+ - Consider platform-specific best practices
51
+ - Vary in composition, color, typography approach
52
+ - Align with brand guidelines if available
53
+
54
+ Present ideas to user via `AskUserQuestion` for approval before designing.
55
+
56
+ ### Step 4: Design HTML Files
57
+
58
+ Activate these skills in sequence:
59
+
60
+ 1. **`/ckm:brand`** — Extract brand colors, fonts, voice from user's project
61
+ 2. **`/ckm:design-system`** — Get design tokens (spacing, typography scale, color palette)
62
+ 3. **Randomly invoke ONE of:** `/ck:ui-pro-forge` OR `/ck:frontend-design` — for layout, hierarchy, visual balance. Pick one at random each run for design variety.
63
+
64
+ For each approved idea + each target size, create an HTML file:
65
+
66
+ ```
67
+ output/social-photos/
68
+ ├── idea-1-instagram-post-1080x1080.html
69
+ ├── idea-1-instagram-story-1080x1920.html
70
+ ├── idea-2-instagram-post-1080x1080.html
71
+ ├── idea-2-instagram-story-1080x1920.html
72
+ └── ...
73
+ ```
74
+
75
+ #### HTML Design Rules
76
+
77
+ - **Viewport** — Set exact pixel dimensions matching target size
78
+ - **Self-contained** — Inline all CSS, embed fonts via Google Fonts CDN
79
+ - **No scrolling** — Everything fits in one viewport
80
+ - **High contrast** — Text readable at thumbnail size
81
+ - **Brand-aligned** — Use extracted brand colors/fonts
82
+ - **Safe zones** — Critical content within central 80% area
83
+ - **Typography** — Min 24px for headlines, min 16px for body at 1080px width
84
+ - **Visual hierarchy** — One focal point, clear reading flow
85
+
86
+ #### HTML Template Structure
87
+
88
+ ```html
89
+ <!DOCTYPE html>
90
+ <html>
91
+ <head>
92
+ <meta charset="UTF-8">
93
+ <meta name="viewport" content="width={WIDTH}, initial-scale=1.0">
94
+ <link href="https://fonts.googleapis.com/css2?family={FONT}&display=swap" rel="stylesheet">
95
+ <style>
96
+ * { margin: 0; padding: 0; box-sizing: border-box; }
97
+ html, body {
98
+ width: {WIDTH}px;
99
+ height: {HEIGHT}px;
100
+ overflow: hidden;
101
+ font-family: '{FONT}', sans-serif;
102
+ }
103
+ .canvas {
104
+ width: {WIDTH}px;
105
+ height: {HEIGHT}px;
106
+ position: relative;
107
+ /* Background: gradient, solid, or image */
108
+ }
109
+ /* Design tokens from brand/design-system */
110
+ </style>
111
+ </head>
112
+ <body>
113
+ <div class="canvas">
114
+ <!-- Content layers -->
115
+ </div>
116
+ </body>
117
+ </html>
118
+ ```
119
+
120
+ ### Step 5: Screenshot Export
121
+
122
+ Use Chrome headless, `chrome-devtools` skill, or Playwright/Puppeteer to capture exact-size screenshots.
123
+
124
+ **IMPORTANT:** Always add a delay (3-5s) after page load for fonts/images to fully render before capture.
125
+
126
+ #### Option A: Chrome Headless CLI (Recommended — zero dependencies)
127
+
128
+ ```bash
129
+ CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
130
+ DELAY=5 # seconds for fonts/images to load
131
+
132
+ "$CHROME" \
133
+ --headless \
134
+ --disable-gpu \
135
+ --no-sandbox \
136
+ --hide-scrollbars \
137
+ --window-size="${WIDTH},${HEIGHT}" \
138
+ --virtual-time-budget=$((DELAY * 1000)) \
139
+ --screenshot="output.png" \
140
+ "file:///path/to/file.html"
141
+ ```
142
+
143
+ Key flags:
144
+ - `--virtual-time-budget=5000` — waits 5s virtual time for assets (Google Fonts, images) to load
145
+ - `--hide-scrollbars` — prevents scrollbar artifacts in screenshots
146
+ - `--window-size=WxH` — sets exact pixel dimensions
147
+
148
+ #### Option B: chrome-devtools skill
149
+
150
+ Invoke `/chrome-devtools` with instructions to:
151
+ 1. Open each HTML file in browser
152
+ 2. Set viewport to exact target dimensions
153
+ 3. Wait 3-5s for fonts/images to fully load
154
+ 4. Screenshot full page to PNG
155
+ 5. Save to `output/social-photos/exports/`
156
+
157
+ #### Option C: Playwright script
158
+
159
+ ```javascript
160
+ const { chromium } = require('playwright');
161
+
162
+ async function captureScreenshots(htmlFiles) {
163
+ const browser = await chromium.launch();
164
+
165
+ for (const file of htmlFiles) {
166
+ const [width, height] = file.match(/(\d+)x(\d+)/).slice(1).map(Number);
167
+
168
+ const page = await browser.newPage();
169
+ await page.setViewportSize({ width, height });
170
+ await page.goto(`file://${file}`, { waitUntil: 'networkidle' });
171
+ // Wait for fonts/images to fully render
172
+ await page.waitForTimeout(3000);
173
+
174
+ const outputPath = file.replace('.html', '.png').replace('social-photos/', 'social-photos/exports/');
175
+ await page.screenshot({ path: outputPath, type: 'png' });
176
+ await page.close();
177
+ }
178
+
179
+ await browser.close();
180
+ }
181
+ ```
182
+
183
+ #### Option D: Puppeteer script
184
+
185
+ ```javascript
186
+ const puppeteer = require('puppeteer');
187
+
188
+ async function captureScreenshots(htmlFiles) {
189
+ const browser = await puppeteer.launch();
190
+
191
+ for (const file of htmlFiles) {
192
+ const [width, height] = file.match(/(\d+)x(\d+)/).slice(1).map(Number);
193
+
194
+ const page = await browser.newPage();
195
+ await page.setViewport({ width, height, deviceScaleFactor: 2 }); // 2x for retina
196
+ await page.goto(`file://${file}`, { waitUntil: 'networkidle0' });
197
+ // Wait for fonts/images to fully render
198
+ await new Promise(r => setTimeout(r, 3000));
199
+
200
+ const outputPath = file.replace('.html', '.png').replace('social-photos/', 'social-photos/exports/');
201
+ await page.screenshot({ path: outputPath, type: 'png' });
202
+ await page.close();
203
+ }
204
+
205
+ await browser.close();
206
+ }
207
+ ```
208
+
209
+ **IMPORTANT:** Use `deviceScaleFactor: 2` for retina-quality output (Puppeteer only).
210
+
211
+ ### Step 6: Verify & Fix Designs
212
+
213
+ Use Chrome MCP or `chrome-devtools` skill to visually inspect each exported PNG:
214
+
215
+ 1. Open exported screenshots and check for layout/styling issues
216
+ 2. Verify: fonts rendered correctly, colors match brand, text readable at thumbnail size
217
+ 3. Check: no overflow, no cut-off content, safe zones respected, visual hierarchy clear
218
+ 4. If issues found → fix HTML source → re-export screenshot → verify again
219
+ 5. Repeat until all designs pass visual QA
220
+
221
+ **Common issues to check:**
222
+ - Fonts not loaded (fallback to system fonts)
223
+ - Text overflow or clipping
224
+ - Elements outside safe zone (central 80%)
225
+ - Low contrast text (below WCAG AA 4.5:1)
226
+ - Misaligned elements or broken layouts
227
+
228
+ ### Step 7: Generate Summary Report
229
+
230
+ Save report to `plans/reports/` with naming pattern from session hooks.
231
+
232
+ Report structure:
233
+
234
+ ```markdown
235
+ # Social Photos Design Report
236
+
237
+ ## Overview
238
+ - Prompt/requirements: {original input}
239
+ - Platforms: {target platforms}
240
+ - Variations: {count}
241
+ - Style: {chosen style}
242
+
243
+ ## Ideas Generated
244
+ 1. **{Idea name}** — {brief description, rationale}
245
+ 2. ...
246
+
247
+ ## Design Decisions
248
+ - Color palette: {colors used, why}
249
+ - Typography: {fonts, sizes, why}
250
+ - Layout: {composition approach, why}
251
+ - Brand alignment: {how brand guidelines influenced design}
252
+
253
+ ## Output Files
254
+ | File | Size | Platform | Preview |
255
+ |------|------|----------|---------|
256
+ | exports/{filename}.png | {WxH} | {platform} | {description} |
257
+
258
+ ## Why This Works
259
+ - {Platform-specific reasoning}
260
+ - {Brand alignment reasoning}
261
+ - {Visual hierarchy reasoning}
262
+ - {Engagement potential reasoning}
263
+
264
+ ## Recommendations
265
+ - {A/B test suggestions}
266
+ - {Platform-specific tips}
267
+ - {Iteration opportunities}
268
+ ```
269
+
270
+ ### Step 8: Organize Output
271
+
272
+ Invoke `assets-organizing` skill to organize all output files and reports:
273
+ - Move/copy exported PNGs to proper asset directories
274
+ - Ensure reports are in `plans/reports/` with correct naming
275
+ - Clean up intermediate HTML files if requested
276
+ - Tag outputs with metadata (platform, size, concept name)
277
+
278
+ ## Design Best Practices
279
+
280
+ ### Platform-Specific Tips
281
+
282
+ - **Instagram** — Visual-first, minimal text (<20%), strong colors, lifestyle feel
283
+ - **Facebook** — Informative, can have more text, eye-catching in feed
284
+ - **Twitter/X** — Bold headlines, contrast for dark/light mode, clear message
285
+ - **LinkedIn** — Professional, clean, data-driven visuals, thought leadership
286
+ - **Pinterest** — Vertical format, text overlay on images, how-to style
287
+ - **YouTube** — Face close-ups perform best, bright colors, readable at small size
288
+ - **TikTok** — Trendy, energetic, bold typography, youth-oriented
289
+
290
+ ### Art Direction Styles (Reuse from Banner)
291
+
292
+ | Style | Best For | Key Elements |
293
+ |-------|----------|--------------|
294
+ | Minimalist | SaaS, tech, luxury | Whitespace, single accent color, clean type |
295
+ | Bold Typography | Announcements, quotes | Large type, high contrast, minimal imagery |
296
+ | Gradient Mesh | Modern brands, apps | Fluid color transitions, floating elements |
297
+ | Photo-Based | Lifestyle, e-commerce | Hero image, subtle overlay, text on image |
298
+ | Geometric | Tech, fintech | Shapes, patterns, structured layouts |
299
+ | Glassmorphism | SaaS, modern apps | Frosted glass, blur effects, transparency |
300
+ | Flat Illustration | Education, health | Custom illustrations, friendly, approachable |
301
+ | Duotone | Creative, editorial | Two-color treatment on photos |
302
+ | Collage | Fashion, culture | Mixed media, overlapping elements |
303
+ | 3D/Isometric | Tech, product | Depth, shadows, modern perspective |
304
+
305
+ ### Color & Contrast
306
+
307
+ - Ensure WCAG AA contrast ratio (4.5:1 min) for all text
308
+ - Test designs at 50% size to verify readability
309
+ - Consider platform dark/light mode compatibility
310
+ - Use brand primary color as dominant, secondary as accent
311
+
312
+ ### Typography Hierarchy
313
+
314
+ | Element | Min Size (at 1080px) | Weight |
315
+ |---------|---------------------|--------|
316
+ | Headline | 48px | Bold/Black |
317
+ | Subheadline | 32px | Semibold |
318
+ | Body | 24px | Regular |
319
+ | Caption | 18px | Regular/Light |
320
+ | CTA | 28px | Bold |
321
+
322
+ ## Security & Scope
323
+
324
+ This sub-skill handles social media image design only. Does NOT handle:
325
+ - Video content creation
326
+ - Animation/motion graphics
327
+ - Print production files (CMYK, bleed)
328
+ - Direct social media posting/scheduling
329
+ - AI image generation (use `ai-artist` skill for that)