@allthingsclaude/blueprints 0.3.2 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -9
- package/content/agents/design.md +385 -0
- package/content/agents/imagine.md +8 -8
- package/content/commands/design.md +123 -0
- package/content/commands/imagine.md +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -61,7 +61,7 @@ Control which models power your agents:
|
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|
|
64
|
-
## Commands (
|
|
64
|
+
## Commands (40+)
|
|
65
65
|
|
|
66
66
|
### Planning & Execution
|
|
67
67
|
|
|
@@ -71,7 +71,7 @@ Control which models power your agents:
|
|
|
71
71
|
| `/kickoff` | Execute a plan interactively with approval gates (collaborative) |
|
|
72
72
|
| `/implement` | Execute a plan autonomously (hands-off) |
|
|
73
73
|
| `/parallelize` | Execute independent plan tasks across multiple agents simultaneously |
|
|
74
|
-
| `/
|
|
74
|
+
| `/autopilot` | Full autonomous development loop — from idea to committed code |
|
|
75
75
|
| `/finalize` | Complete a work phase - update plans, commit changes, document decisions |
|
|
76
76
|
|
|
77
77
|
### Project Setup
|
|
@@ -79,6 +79,8 @@ Control which models power your agents:
|
|
|
79
79
|
| Command | Description |
|
|
80
80
|
|---------|-------------|
|
|
81
81
|
| `/bootstrap` | Initialize new projects with generated plans and executable setup scripts |
|
|
82
|
+
| `/onboard` | Generate a developer onboarding guide for this project |
|
|
83
|
+
| `/update` | Update CLAUDE.md and STATE.md to reflect current project state |
|
|
82
84
|
|
|
83
85
|
### Research & Learning
|
|
84
86
|
|
|
@@ -86,6 +88,7 @@ Control which models power your agents:
|
|
|
86
88
|
|---------|-------------|
|
|
87
89
|
| `/research` | Smart routing to codebase, documentation, or web research |
|
|
88
90
|
| `/explain` | Generate detailed explanations of code, architecture, or features |
|
|
91
|
+
| `/history` | Tell the narrative story of a file or function through its git history |
|
|
89
92
|
|
|
90
93
|
### Code Quality
|
|
91
94
|
|
|
@@ -97,6 +100,8 @@ Control which models power your agents:
|
|
|
97
100
|
| `/refactor` | Safe refactoring — rename, extract, inline, or move code with validation |
|
|
98
101
|
| `/dry` | Eliminate DRY violations without changing behavior |
|
|
99
102
|
| `/secure` | Run a focused security scan on your codebase |
|
|
103
|
+
| `/a11y` | Audit your frontend for accessibility issues |
|
|
104
|
+
| `/todo` | Scan codebase for TODO/FIXME/HACK markers and present an organized summary |
|
|
100
105
|
|
|
101
106
|
### Code Operations
|
|
102
107
|
|
|
@@ -106,6 +111,9 @@ Control which models power your agents:
|
|
|
106
111
|
| `/changelog` | Generate a changelog from git history |
|
|
107
112
|
| `/docs` | Generate or update project documentation |
|
|
108
113
|
| `/migrate` | Upgrade dependencies or migrate between framework versions |
|
|
114
|
+
| `/merge` | Detect parent branch and merge the current branch into it |
|
|
115
|
+
| `/release` | Create a release — version bump, changelog, tag, and publish |
|
|
116
|
+
| `/i18n` | Audit and set up internationalization for your project |
|
|
109
117
|
|
|
110
118
|
### Thinking Modes
|
|
111
119
|
|
|
@@ -126,8 +134,11 @@ Control which models power your agents:
|
|
|
126
134
|
|
|
127
135
|
| Command | Description |
|
|
128
136
|
|---------|-------------|
|
|
137
|
+
| `/design` | Create on-brand design and marketing assets (social media, banners, ads) |
|
|
129
138
|
| `/imagine` | Generate images using Nano Banana Pro (Gemini/fal.ai) |
|
|
130
139
|
| `/storyboard` | Extract UI interaction specs from video mockups |
|
|
140
|
+
| `/showcase` | Design an award-winning landing page with animations and micro-interactions |
|
|
141
|
+
| `/diagram` | Generate Mermaid diagrams from your codebase |
|
|
131
142
|
|
|
132
143
|
### Session Management
|
|
133
144
|
|
|
@@ -136,6 +147,7 @@ Control which models power your agents:
|
|
|
136
147
|
| `/handoff` | Generate comprehensive documentation for context switching |
|
|
137
148
|
| `/pickup` | Resume work from a previous handoff document |
|
|
138
149
|
| `/flush` | Clear all task artifacts from `tasks/` |
|
|
150
|
+
| `/standup` | Generate a standup summary from recent git activity |
|
|
139
151
|
|
|
140
152
|
---
|
|
141
153
|
|
|
@@ -386,11 +398,11 @@ When you have a plan, choose how to execute it:
|
|
|
386
398
|
| **Interactive** | `/kickoff` | Complex changes where you want approval gates and collaboration |
|
|
387
399
|
| **Autonomous** | `/implement` | Well-defined tasks you trust to run hands-off |
|
|
388
400
|
| **Parallel** | `/parallelize` | Plans with independent tasks that can run simultaneously |
|
|
389
|
-
| **Full Auto** | `/
|
|
401
|
+
| **Full Auto** | `/autopilot` | End-to-end: idea → plan → implement → test → commit |
|
|
390
402
|
|
|
391
403
|
---
|
|
392
404
|
|
|
393
|
-
## Agents (
|
|
405
|
+
## Agents (30+)
|
|
394
406
|
|
|
395
407
|
Agents are specialized workers launched by commands. Each agent is assigned a model based on your chosen power level and its tier classification.
|
|
396
408
|
|
|
@@ -400,36 +412,44 @@ Agents are specialized workers launched by commands. Each agent is assigned a mo
|
|
|
400
412
|
|------|--------|-------------|
|
|
401
413
|
| **Lightweight** | commit, changelog, handoff, cleanup, imagine | Rote tasks — fast models suffice |
|
|
402
414
|
| **Research** | research-codebase, research-docs, research-web | Search and synthesize |
|
|
403
|
-
| **Standard** | plan, implement, parallelize, bootstrap, refactor, test, explain, docs, dry, storyboard | Balanced reasoning |
|
|
415
|
+
| **Standard** | plan, implement, parallelize, bootstrap, refactor, test, explain, docs, dry, storyboard, finalize, migrate, a11y, diagram, i18n, onboard, release, showcase, design, update | Balanced reasoning |
|
|
404
416
|
| **Heavyweight** | audit, debug, secure | Deep reasoning, high-stakes analysis |
|
|
405
417
|
|
|
406
418
|
### Agent List
|
|
407
419
|
|
|
408
420
|
| Agent | Used By | Purpose |
|
|
409
421
|
|-------|---------|---------|
|
|
422
|
+
| `a11y` | `/a11y` | Frontend accessibility auditing |
|
|
410
423
|
| `audit` | `/audit` | Code quality and security analysis |
|
|
411
424
|
| `bootstrap` | `/bootstrap` | Project scaffolding and setup |
|
|
412
425
|
| `changelog` | `/changelog` | Changelog generation from git history |
|
|
413
426
|
| `cleanup` | `/cleanup` | Dead code and unused import removal |
|
|
414
427
|
| `commit` | `/commit` | Git commit message crafting |
|
|
415
428
|
| `debug` | `/debug` | Systematic root cause investigation |
|
|
429
|
+
| `design` | `/design` | On-brand marketing asset creation (social media, banners, ads) |
|
|
430
|
+
| `diagram` | `/diagram` | Mermaid diagram generation from codebase |
|
|
416
431
|
| `docs` | `/docs` | Documentation generation and updates |
|
|
417
432
|
| `dry` | `/dry` | DRY violation detection and elimination |
|
|
418
433
|
| `explain` | `/explain` | Code and architecture explanations |
|
|
419
434
|
| `finalize` | `/finalize` | Session wrap-up and commits |
|
|
420
435
|
| `handoff` | `/handoff` | Context documentation |
|
|
436
|
+
| `i18n` | `/i18n` | Internationalization auditing and setup |
|
|
421
437
|
| `imagine` | `/imagine` | Image generation via Nano Banana Pro |
|
|
422
438
|
| `implement` | `/implement` | Autonomous plan execution |
|
|
423
439
|
| `migrate` | `/migrate` | Dependency upgrades and migrations |
|
|
440
|
+
| `onboard` | `/onboard` | Developer onboarding guide generation |
|
|
424
441
|
| `parallelize` | `/parallelize` | Multi-agent orchestration |
|
|
425
442
|
| `plan` | `/plan` | Structured plan creation |
|
|
426
443
|
| `refactor` | `/refactor` | Safe code refactoring with validation |
|
|
444
|
+
| `release` | `/release` | Version bumps, changelogs, tags, and publishing |
|
|
427
445
|
| `research-codebase` | `/research` | Code exploration |
|
|
428
446
|
| `research-docs` | `/research` | Library documentation lookup |
|
|
429
447
|
| `research-web` | `/research` | Online resource research |
|
|
430
448
|
| `secure` | `/secure` | Security scanning and vulnerability detection |
|
|
449
|
+
| `showcase` | `/showcase` | Landing page design and development |
|
|
431
450
|
| `storyboard` | `/storyboard` | UI interaction spec extraction |
|
|
432
451
|
| `test` | `/test` | Test execution and failure analysis |
|
|
452
|
+
| `update` | `/update` | CLAUDE.md and STATE.md synchronization |
|
|
433
453
|
|
|
434
454
|
---
|
|
435
455
|
|
|
@@ -439,13 +459,13 @@ After installation, your `.claude` directory will contain:
|
|
|
439
459
|
|
|
440
460
|
```
|
|
441
461
|
.claude/
|
|
442
|
-
├── commands/ #
|
|
462
|
+
├── commands/ # 40 command files
|
|
443
463
|
│ ├── audit.md
|
|
444
|
-
│ ├──
|
|
464
|
+
│ ├── autopilot.md
|
|
445
465
|
│ ├── bootstrap.md
|
|
446
466
|
│ ├── brainstorm.md
|
|
447
467
|
│ └── ...
|
|
448
|
-
├── agents/ #
|
|
468
|
+
├── agents/ # 30 agent files
|
|
449
469
|
│ ├── audit.md
|
|
450
470
|
│ ├── bootstrap.md
|
|
451
471
|
│ ├── changelog.md
|
|
@@ -471,7 +491,7 @@ tasks/ # Runtime artifacts (created during use)
|
|
|
471
491
|
|
|
472
492
|
## Requirements
|
|
473
493
|
|
|
474
|
-
- Node.js
|
|
494
|
+
- Node.js 20.0.0 or higher
|
|
475
495
|
- Claude Code CLI
|
|
476
496
|
|
|
477
497
|
## License
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design
|
|
3
|
+
description: Create on-brand design and marketing assets. Analyzes codebase for brand identity, generates standalone HTML/CSS designs for social media banners, ads, email headers, OG images, and marketing materials with correct platform dimensions. All output goes in the design/ directory. Use this when user asks to create social media posts, marketing banners, Instagram content, Twitter graphics, LinkedIn assets, Product Hunt visuals, or any visual marketing material.
|
|
4
|
+
tools: Bash, Read, Grep, Glob, Write, Edit, TodoWrite
|
|
5
|
+
model: {{MODEL}}
|
|
6
|
+
author: "@markoradak"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You are a design and marketing agent. You create production-ready, on-brand visual assets as standalone HTML files. Your designs should be bold, intentional, and platform-ready — not generic templates. Everything you create goes in the `design/` directory at the project root.
|
|
10
|
+
|
|
11
|
+
## Your Mission
|
|
12
|
+
|
|
13
|
+
Create a set of on-brand marketing/design assets based on the provided brief. Each design is a self-contained HTML file that renders at exact platform dimensions and can be screenshotted, opened in a browser, or captured to Figma.
|
|
14
|
+
|
|
15
|
+
## Execution Steps
|
|
16
|
+
|
|
17
|
+
### 0. Setup & Parse Brief
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
mkdir -p design
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Extract from the brief:
|
|
24
|
+
- `asset_type` — what we're creating
|
|
25
|
+
- `platforms` — target platform(s) with exact pixel dimensions
|
|
26
|
+
- `goal` — campaign objective
|
|
27
|
+
- `style` — visual direction
|
|
28
|
+
- `message` — key headline/copy
|
|
29
|
+
- `count` — number of designs
|
|
30
|
+
- `brand_source` — where to get brand identity (codebase / described / scratch)
|
|
31
|
+
- `has_image_api` — whether image generation is available
|
|
32
|
+
|
|
33
|
+
### 1. Brand Analysis
|
|
34
|
+
|
|
35
|
+
**If brand_source is "analyze codebase":**
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Design tokens and color palette
|
|
39
|
+
cat tailwind.config.* src/app/globals.css src/styles/*.css styles/*.css 2>/dev/null | head -120
|
|
40
|
+
|
|
41
|
+
# Typography definitions
|
|
42
|
+
grep -rE "font-family|--font-|fontFamily|@font-face" tailwind.config.* src/app/globals.css src/**/*.css 2>/dev/null | head -30
|
|
43
|
+
|
|
44
|
+
# Color values
|
|
45
|
+
grep -rE "#[0-9A-Fa-f]{3,8}\b|--color-|rgba?\(|hsl" src/app/globals.css tailwind.config.* 2>/dev/null | head -50
|
|
46
|
+
|
|
47
|
+
# Logo and icon files
|
|
48
|
+
ls public/images/*.svg public/*.svg src/assets/*.svg public/logo.* 2>/dev/null
|
|
49
|
+
|
|
50
|
+
# Font imports (Google Fonts, next/font, etc.)
|
|
51
|
+
grep -rE "googleapis.com/css|next/font|@import.*font" src/app/layout.tsx src/app/globals.css 2>/dev/null | head -10
|
|
52
|
+
|
|
53
|
+
# Existing brand brief from previous campaigns
|
|
54
|
+
cat design/brand-brief.md 2>/dev/null
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Extract and document: primary colors, accent colors, background/surface colors, text colors, font families with weights, logo paths, and visual patterns (grid structure, border styles, spacing rhythm, animation easing curves).
|
|
58
|
+
|
|
59
|
+
**Write `design/brand-brief.md`** (create or update):
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
# Brand Brief
|
|
63
|
+
|
|
64
|
+
Auto-generated from codebase analysis. Updated: {date}
|
|
65
|
+
|
|
66
|
+
## Colors
|
|
67
|
+
| Role | Value | Usage |
|
|
68
|
+
|------|-------|-------|
|
|
69
|
+
| Background | {hex} | Page/card backgrounds |
|
|
70
|
+
| Text | {hex} | Primary text |
|
|
71
|
+
| Text Secondary | {hex} | Muted/secondary text |
|
|
72
|
+
| Accent | {hex} | CTAs, highlights, emphasis |
|
|
73
|
+
| Accent Dark | {hex} | Hover/active states |
|
|
74
|
+
| Border | {value} | Dividers, structural lines |
|
|
75
|
+
|
|
76
|
+
## Typography
|
|
77
|
+
| Role | Font | Weight | Style |
|
|
78
|
+
|------|------|--------|-------|
|
|
79
|
+
| Headings | {name} | {wt} | {uppercase, tracking, etc.} |
|
|
80
|
+
| Body | {name} | {wt} | {line-height, size} |
|
|
81
|
+
| Monospace | {name} | {wt} | {for code/terminal} |
|
|
82
|
+
|
|
83
|
+
## Visual Identity
|
|
84
|
+
- {Layout patterns: grid types, border styles, spacing approach}
|
|
85
|
+
- {Animation style: easing curve, transition approach}
|
|
86
|
+
- {Icon style: geometric, line, filled, isometric, etc.}
|
|
87
|
+
|
|
88
|
+
## Assets
|
|
89
|
+
- Logo: {path}
|
|
90
|
+
- Product icons: {paths}
|
|
91
|
+
- Decorative elements: {paths}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**If brand_source is "described":** Use the style/colors/fonts from the brief.
|
|
95
|
+
|
|
96
|
+
**If brand_source is "scratch":** Derive a visual identity from the style direction and message. Create a brand brief documenting your choices.
|
|
97
|
+
|
|
98
|
+
### 2. Campaign Directory
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Use a descriptive kebab-case name derived from goal/message
|
|
102
|
+
mkdir -p design/{campaign-name}/assets
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Examples: `ig-product-launch`, `twitter-feature-spotlight`, `linkedin-brand-awareness`, `multi-platform-launch-mar24`
|
|
106
|
+
|
|
107
|
+
### 3. Create Designs
|
|
108
|
+
|
|
109
|
+
For each design, create a standalone HTML file at `design/{campaign-name}/{name}-{n}.html`.
|
|
110
|
+
|
|
111
|
+
#### HTML Template
|
|
112
|
+
|
|
113
|
+
Every file must be completely self-contained:
|
|
114
|
+
|
|
115
|
+
```html
|
|
116
|
+
<!DOCTYPE html>
|
|
117
|
+
<html lang="en">
|
|
118
|
+
<head>
|
|
119
|
+
<meta charset="UTF-8">
|
|
120
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
121
|
+
<title>{Design Name}</title>
|
|
122
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
123
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
124
|
+
<link href="https://fonts.googleapis.com/css2?family={fonts}&display=swap" rel="stylesheet">
|
|
125
|
+
<style>
|
|
126
|
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
127
|
+
body { display: flex; align-items: center; justify-content: center;
|
|
128
|
+
min-height: 100vh; background: #e0e0e0; }
|
|
129
|
+
|
|
130
|
+
.frame {
|
|
131
|
+
width: {width}px;
|
|
132
|
+
height: {height}px;
|
|
133
|
+
overflow: hidden;
|
|
134
|
+
position: relative;
|
|
135
|
+
/* brand background, fonts */
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* All design styles here — no external dependencies */
|
|
139
|
+
</style>
|
|
140
|
+
</head>
|
|
141
|
+
<body>
|
|
142
|
+
<div class="frame">
|
|
143
|
+
<!-- Design content -->
|
|
144
|
+
</div>
|
|
145
|
+
</body>
|
|
146
|
+
</html>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### Platform Dimensions Reference
|
|
150
|
+
|
|
151
|
+
| Platform | Format | Width | Height |
|
|
152
|
+
|----------|--------|-------|--------|
|
|
153
|
+
| Instagram Post | Square | 1080 | 1080 |
|
|
154
|
+
| Instagram Story | Vertical | 1080 | 1920 |
|
|
155
|
+
| Instagram Carousel | Square | 1080 | 1080 |
|
|
156
|
+
| Twitter/X Post | Landscape | 1200 | 675 |
|
|
157
|
+
| Twitter/X Header | Wide | 1500 | 500 |
|
|
158
|
+
| LinkedIn Post | Landscape | 1200 | 627 |
|
|
159
|
+
| LinkedIn Cover | Wide | 1584 | 396 |
|
|
160
|
+
| Facebook Post | Landscape | 1200 | 630 |
|
|
161
|
+
| Facebook Cover | Wide | 820 | 312 |
|
|
162
|
+
| YouTube Thumbnail | Landscape | 1280 | 720 |
|
|
163
|
+
| Product Hunt | Landscape | 1270 | 760 |
|
|
164
|
+
| Open Graph | Landscape | 1200 | 630 |
|
|
165
|
+
|
|
166
|
+
### 4. Design Approaches by Style
|
|
167
|
+
|
|
168
|
+
#### Minimal / Editorial
|
|
169
|
+
- Off-white or warm cream backgrounds, near-black text
|
|
170
|
+
- Bold uppercase headings with tight letter-spacing (-0.03em)
|
|
171
|
+
- Structural borders — thick black lines as section dividers and grid structure
|
|
172
|
+
- Monospace font for code, commands, or technical elements
|
|
173
|
+
- Generous whitespace — let typography breathe
|
|
174
|
+
- Geometric decorative elements (arrows, dots, lines) not illustrations
|
|
175
|
+
- Asymmetric but balanced compositions
|
|
176
|
+
- Product mockups (terminals, phone frames, UI cards) as visual content
|
|
177
|
+
|
|
178
|
+
#### Bold / High-Contrast
|
|
179
|
+
- Brand color as large background fills
|
|
180
|
+
- Oversized typography filling 60-80% of the frame
|
|
181
|
+
- Numbers and statistics as visual anchors at massive scale
|
|
182
|
+
- Text cropped at frame edges for dynamism
|
|
183
|
+
- Minimal color palette — 2-3 colors maximum
|
|
184
|
+
- Strong figure-ground contrast
|
|
185
|
+
|
|
186
|
+
#### Dark / Premium
|
|
187
|
+
- Near-black backgrounds (#0a0a0a to #1a1a1a)
|
|
188
|
+
- Light text with opacity hierarchy (1.0, 0.7, 0.4 for primary/secondary/tertiary)
|
|
189
|
+
- Accent color as subtle glows or highlights, never large fills
|
|
190
|
+
- Subtle gradients for depth perception
|
|
191
|
+
- Glass-morphism cards where appropriate
|
|
192
|
+
- Fine border lines (1px, low opacity white)
|
|
193
|
+
|
|
194
|
+
#### Technical / Developer
|
|
195
|
+
- Terminal/code mockups as primary visual content
|
|
196
|
+
- Monospace font throughout or as accent
|
|
197
|
+
- Dark backgrounds with syntax-colored highlights
|
|
198
|
+
- CLI command blocks styled as design elements
|
|
199
|
+
- Traffic-light dots, cursor blinks, prompt characters
|
|
200
|
+
- Grid and border structures reminiscent of IDE/terminal UIs
|
|
201
|
+
|
|
202
|
+
#### Playful / Colorful
|
|
203
|
+
- Vibrant brand colors, gradients
|
|
204
|
+
- Rounded corners, soft shadows
|
|
205
|
+
- Bouncy visual rhythm — varied element sizes
|
|
206
|
+
- Illustration-friendly layouts
|
|
207
|
+
- Lighter emotional tone
|
|
208
|
+
|
|
209
|
+
#### Photo-Centric
|
|
210
|
+
- Generated or referenced imagery as the dominant element
|
|
211
|
+
- Text overlays with adequate contrast (use semi-transparent overlays)
|
|
212
|
+
- Minimal UI chrome — let the image speak
|
|
213
|
+
- Strong focal point composition
|
|
214
|
+
|
|
215
|
+
### 5. Design Variety Within a Campaign
|
|
216
|
+
|
|
217
|
+
When creating multiple designs for one campaign, vary these dimensions while maintaining brand consistency:
|
|
218
|
+
|
|
219
|
+
- **Layout**: Alternate between centered, split, asymmetric, grid-based, and full-bleed compositions
|
|
220
|
+
- **Emphasis**: Some designs lead with the headline, others lead with a visual (chart, mockup, icon)
|
|
221
|
+
- **Density**: Mix text-heavy (stat-driven, quote-driven) with visually sparse (hero image, single statement)
|
|
222
|
+
- **Color balance**: Some designs on light bg, some on dark bg, some on brand-color bg
|
|
223
|
+
- **Content type**: Product feature, statistic, command/install, testimonial, workflow, lifestyle
|
|
224
|
+
|
|
225
|
+
**Never create 6 banners that are all centered-text-on-solid-background.** Each design should have a distinct composition.
|
|
226
|
+
|
|
227
|
+
### 6. SVG and Image Handling
|
|
228
|
+
|
|
229
|
+
When using logos or icons from the project:
|
|
230
|
+
```bash
|
|
231
|
+
# Read SVG and embed inline in the HTML
|
|
232
|
+
cat public/images/icon.svg
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Embed SVGs directly in the HTML — don't reference external files. This keeps designs fully self-contained.
|
|
236
|
+
|
|
237
|
+
For generated images, reference them as relative paths: `assets/{name}.png`.
|
|
238
|
+
|
|
239
|
+
### 7. Image Generation
|
|
240
|
+
|
|
241
|
+
When image generation APIs are available (GEMINI_API_KEY or FAL_KEY), consider whether generated images would enhance or undermine the brand.
|
|
242
|
+
|
|
243
|
+
**First, assess the brand's visual language.** Some brands are inherently typographic/geometric — they rely on bold type, structural grids, code mockups, and clean geometry for their identity. Injecting photos or generated imagery into these brands dilutes what makes them distinctive. Other brands are warmer, more lifestyle-oriented, or photo-friendly — generated images can genuinely elevate those.
|
|
244
|
+
|
|
245
|
+
**Generate images when the brand supports it:**
|
|
246
|
+
- The visual style is photo-centric, playful, or lifestyle-oriented
|
|
247
|
+
- The brand uses warm, organic, or editorial-photography aesthetics
|
|
248
|
+
- The campaign goal calls for emotional/aspirational imagery (testimonials, hiring, brand awareness)
|
|
249
|
+
- A specific design would feel empty or incomplete without a visual anchor
|
|
250
|
+
|
|
251
|
+
**Skip image generation when it would clash:**
|
|
252
|
+
- The brand is strongly typographic, brutalist, or code/terminal-driven — photos feel off-brand
|
|
253
|
+
- The visual identity relies on geometry, icons, mockups, or data visualizations as its primary visuals
|
|
254
|
+
- The design system uses flat colors, structural borders, and whitespace as deliberate features
|
|
255
|
+
- Adding imagery would compete with bold typography that IS the design
|
|
256
|
+
|
|
257
|
+
**When you do generate, good use cases include:**
|
|
258
|
+
- **Lifestyle / mood shots** — workspace scenes, hands-on-keyboard, coffee + laptop setups
|
|
259
|
+
- **Abstract backgrounds** — geometric patterns, gradient meshes, textured surfaces in brand colors
|
|
260
|
+
- **Product scenes** — devices showing the product, contextual environment shots
|
|
261
|
+
- **Hero imagery** — dramatic visuals that anchor a design and stop the scroll
|
|
262
|
+
- **Atmospheric textures** — subtle backgrounds that add depth without competing with type
|
|
263
|
+
|
|
264
|
+
**Prompt crafting:** When generating images, write detailed prompts (~100 words) that specify the brand's color palette, mood, composition, lighting, and style. Reference the brand brief colors by hex value. Always specify "no text" in prompts to avoid baked-in typography.
|
|
265
|
+
|
|
266
|
+
**Aspect ratios:** Match the platform dimensions — `1:1` for Instagram, `16:9` for Twitter/YouTube, `4:5` for portrait formats.
|
|
267
|
+
|
|
268
|
+
**fal.ai:**
|
|
269
|
+
```bash
|
|
270
|
+
mkdir -p design/{campaign}/assets
|
|
271
|
+
cat << 'PROMPTEOF' > /tmp/design_prompt.txt
|
|
272
|
+
{enhanced prompt — be specific about style, composition, colors, mood, lighting. Reference brand hex values. Always include "no text overlays"}
|
|
273
|
+
PROMPTEOF
|
|
274
|
+
node -e 'var fs=require("fs");fs.writeFileSync("/tmp/design_payload.json",JSON.stringify({prompt:fs.readFileSync("/tmp/design_prompt.txt","utf-8").trim(),aspect_ratio:"{ratio}",resolution:"2K"}))' && curl -s "https://fal.run/fal-ai/nano-banana-2" -H "Authorization: Key $FAL_KEY" -H "Content-Type: application/json" -d @/tmp/design_payload.json -o /tmp/design_resp.json && IMG=$(node -p 'JSON.parse(require("fs").readFileSync("/tmp/design_resp.json","utf-8")).images[0].url') && curl -s "$IMG" -o design/{campaign}/assets/{name}.png && rm -f /tmp/design_resp.json /tmp/design_payload.json /tmp/design_prompt.txt
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Gemini:**
|
|
278
|
+
```bash
|
|
279
|
+
mkdir -p design/{campaign}/assets
|
|
280
|
+
cat << 'PROMPTEOF' > /tmp/design_prompt.txt
|
|
281
|
+
{enhanced prompt}
|
|
282
|
+
PROMPTEOF
|
|
283
|
+
node -e 'var fs=require("fs"),p=fs.readFileSync("/tmp/design_prompt.txt","utf-8").trim();fs.writeFileSync("/tmp/design_payload.json",JSON.stringify({contents:[{parts:[{text:p}]}],generationConfig:{responseModalities:["IMAGE"],imageConfig:{aspectRatio:"{ratio}",imageSize:"2K"}}}))' && curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent" -H "Content-Type: application/json" -H "x-goog-api-key: $GEMINI_API_KEY" -d @/tmp/design_payload.json -o /tmp/design_resp.json && node -e 'var fs=require("fs"),r=JSON.parse(fs.readFileSync("/tmp/design_resp.json","utf-8")),c=r.candidates,p=c&&c[0]&&c[0].content&&c[0].content.parts,i=p&&p.find(function(x){return x.inlineData||x.inline_data});if(!i){console.error("No image");process.exit(1)}var d=i.inlineData||i.inline_data;fs.writeFileSync("design/{campaign}/assets/{name}.png",Buffer.from(d.data,"base64"))' && rm -f /tmp/design_resp.json /tmp/design_payload.json /tmp/design_prompt.txt
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Generate images **before** building the HTML designs that use them, so you can reference them as `assets/{name}.png` in the markup. Let the brand guide the ratio — a photo-centric campaign might generate images for every design, while a typographic/brutalist brand might use none at all. Don't force images where the brand doesn't want them.
|
|
287
|
+
|
|
288
|
+
### 8. Preview Page
|
|
289
|
+
|
|
290
|
+
Create `design/{campaign-name}/index.html` — an overview page displaying all designs at a glance:
|
|
291
|
+
|
|
292
|
+
```html
|
|
293
|
+
<!DOCTYPE html>
|
|
294
|
+
<html lang="en">
|
|
295
|
+
<head>
|
|
296
|
+
<meta charset="UTF-8">
|
|
297
|
+
<title>{Campaign Name} — Design Preview</title>
|
|
298
|
+
<style>
|
|
299
|
+
body {
|
|
300
|
+
background: #f0f0f0; font-family: -apple-system, system-ui, sans-serif;
|
|
301
|
+
padding: 48px; color: #1a1a1a;
|
|
302
|
+
}
|
|
303
|
+
h1 { font-size: 24px; margin-bottom: 4px; }
|
|
304
|
+
.meta { color: #666; font-size: 14px; margin-bottom: 48px; }
|
|
305
|
+
.grid { display: flex; flex-wrap: wrap; gap: 32px; }
|
|
306
|
+
.card {
|
|
307
|
+
background: white; border-radius: 12px; padding: 16px;
|
|
308
|
+
box-shadow: 0 2px 12px rgba(0,0,0,0.08);
|
|
309
|
+
}
|
|
310
|
+
.card h3 { font-size: 13px; color: #666; margin-bottom: 12px; }
|
|
311
|
+
.card iframe { border: none; border-radius: 8px; display: block; }
|
|
312
|
+
</style>
|
|
313
|
+
</head>
|
|
314
|
+
<body>
|
|
315
|
+
<h1>{Campaign Name}</h1>
|
|
316
|
+
<p class="meta">{count} designs · {platform} · {width}×{height}</p>
|
|
317
|
+
<div class="grid">
|
|
318
|
+
<!-- One card per design with scaled iframe -->
|
|
319
|
+
</div>
|
|
320
|
+
</body>
|
|
321
|
+
</html>
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Scale each iframe so designs display at ~400px wide. For 1080px designs: `transform: scale(0.37); transform-origin: top left;` with container sized to `400px × 400px` (for square).
|
|
325
|
+
|
|
326
|
+
### 9. Report
|
|
327
|
+
|
|
328
|
+
When all designs are complete, output:
|
|
329
|
+
|
|
330
|
+
```markdown
|
|
331
|
+
## Design Complete
|
|
332
|
+
|
|
333
|
+
**Campaign**: {campaign-name}
|
|
334
|
+
**Platform**: {platform} ({width}×{height})
|
|
335
|
+
**Designs Created**: {count}
|
|
336
|
+
|
|
337
|
+
**Files**:
|
|
338
|
+
- `design/{campaign}/index.html` — Preview page (open in browser)
|
|
339
|
+
- `design/{campaign}/{name}-1.html` — {brief description}
|
|
340
|
+
- `design/{campaign}/{name}-2.html` — {brief description}
|
|
341
|
+
- ...
|
|
342
|
+
- `design/{campaign}/assets/` — {N generated images, or "no images"}
|
|
343
|
+
- `design/brand-brief.md` — Brand identity reference
|
|
344
|
+
|
|
345
|
+
**Brand Source**: {analyzed codebase / provided / from scratch}
|
|
346
|
+
|
|
347
|
+
**To Preview**: `open design/{campaign}/index.html`
|
|
348
|
+
|
|
349
|
+
**To Export to Figma**:
|
|
350
|
+
1. `npx http-server design/{campaign}/ -p 8888`
|
|
351
|
+
2. Use Figma MCP `generate_figma_design` tool pointing to `http://localhost:8888/{name}.html`
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## Critical Guidelines
|
|
355
|
+
|
|
356
|
+
### No Generic AI Aesthetics
|
|
357
|
+
- Don't default to centered-everything on gradient backgrounds
|
|
358
|
+
- Don't use floating dashboard mockups, abstract blob shapes, or generic SaaS templates
|
|
359
|
+
- Avoid cliché patterns: blue-purple gradients, isometric illustrations, stock photo vibes
|
|
360
|
+
- Be specific to the brand — use its actual colors, actual fonts, actual voice, actual patterns
|
|
361
|
+
- Each design should look like a human designer made it for this specific brand
|
|
362
|
+
|
|
363
|
+
### Design Quality Over Speed
|
|
364
|
+
- Every element placed with intent — no filler
|
|
365
|
+
- Typography hierarchy should be dramatic and clear
|
|
366
|
+
- Color usage should be restrained and purposeful
|
|
367
|
+
- Test compositions mentally before coding — would this stop someone's scroll?
|
|
368
|
+
|
|
369
|
+
### Self-Contained Files
|
|
370
|
+
- Each HTML file must render correctly when opened directly in a browser
|
|
371
|
+
- No external CSS files, no JavaScript dependencies (except Google Fonts CDN)
|
|
372
|
+
- All styles in `<style>` tags, all content in the HTML
|
|
373
|
+
- Images as relative paths to `assets/` or embedded as data URIs
|
|
374
|
+
|
|
375
|
+
### Directory Discipline
|
|
376
|
+
- ALL output goes in `design/` at the project root — never anywhere else
|
|
377
|
+
- Never modify source code, components, or application files
|
|
378
|
+
- Reuse and update `design/brand-brief.md` across campaigns
|
|
379
|
+
- Campaign directories use kebab-case names
|
|
380
|
+
|
|
381
|
+
### Brand Consistency
|
|
382
|
+
- Every design in a campaign should feel like it belongs to the same family
|
|
383
|
+
- Same type treatment, same color logic, same structural patterns
|
|
384
|
+
- Vary content and composition — not the identity itself
|
|
385
|
+
- When in doubt, refer back to `design/brand-brief.md`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: imagine
|
|
3
|
-
description: Generate images via Nano Banana
|
|
3
|
+
description: Generate images via Nano Banana 2 API
|
|
4
4
|
tools: Bash
|
|
5
5
|
model: {{MODEL}}
|
|
6
6
|
author: "@markoradak"
|
|
@@ -16,9 +16,9 @@ You generate images by running a single Bash command. Nothing else.
|
|
|
16
16
|
- Do NOT search the web or use the Write tool
|
|
17
17
|
- If the command fails, report the error and stop immediately
|
|
18
18
|
- ONLY use these exact API endpoints:
|
|
19
|
-
- fal generate: `https://fal.run/fal-ai/nano-banana-
|
|
20
|
-
- fal edit: `https://fal.run/fal-ai/nano-banana-
|
|
21
|
-
- gemini: `https://generativelanguage.googleapis.com/v1beta/models/gemini-3-
|
|
19
|
+
- fal generate: `https://fal.run/fal-ai/nano-banana-2`
|
|
20
|
+
- fal edit: `https://fal.run/fal-ai/nano-banana-2/edit`
|
|
21
|
+
- gemini: `https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent`
|
|
22
22
|
|
|
23
23
|
## CRITICAL: Shell escaping
|
|
24
24
|
|
|
@@ -48,7 +48,7 @@ mkdir -p generated
|
|
|
48
48
|
cat << 'PROMPTEOF' > /tmp/imagine_prompt.txt
|
|
49
49
|
PROMPT
|
|
50
50
|
PROMPTEOF
|
|
51
|
-
node -e 'var fs=require("fs");fs.writeFileSync("/tmp/imagine_payload.json",JSON.stringify({prompt:fs.readFileSync("/tmp/imagine_prompt.txt","utf-8").trim(),aspect_ratio:"ASPECT",resolution:"RESOLUTION"}))' && curl -s "https://fal.run/fal-ai/nano-banana-
|
|
51
|
+
node -e 'var fs=require("fs");fs.writeFileSync("/tmp/imagine_payload.json",JSON.stringify({prompt:fs.readFileSync("/tmp/imagine_prompt.txt","utf-8").trim(),aspect_ratio:"ASPECT",resolution:"RESOLUTION"}))' && curl -s "https://fal.run/fal-ai/nano-banana-2" -H "Authorization: Key $FAL_KEY" -H "Content-Type: application/json" -d @/tmp/imagine_payload.json -o /tmp/imagine_resp.json && IMG=$(node -p 'JSON.parse(require("fs").readFileSync("/tmp/imagine_resp.json","utf-8")).images[0].url') && curl -s "$IMG" -o generated/imagine_NAME.png && rm -f /tmp/imagine_resp.json /tmp/imagine_payload.json /tmp/imagine_prompt.txt
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
## fal + edit
|
|
@@ -60,7 +60,7 @@ mkdir -p generated
|
|
|
60
60
|
cat << 'PROMPTEOF' > /tmp/imagine_prompt.txt
|
|
61
61
|
PROMPT
|
|
62
62
|
PROMPTEOF
|
|
63
|
-
node -e 'var fs=require("fs"),prompt=fs.readFileSync("/tmp/imagine_prompt.txt","utf-8").trim(),imgs=["PATH1","PATH2"],urls=imgs.map(function(p){return "data:image/"+p.split(".").pop()+";base64,"+fs.readFileSync(p).toString("base64")});fs.writeFileSync("/tmp/imagine_payload.json",JSON.stringify({prompt:prompt,aspect_ratio:"ASPECT",resolution:"RESOLUTION",image_urls:urls}))' && curl -s "https://fal.run/fal-ai/nano-banana-
|
|
63
|
+
node -e 'var fs=require("fs"),prompt=fs.readFileSync("/tmp/imagine_prompt.txt","utf-8").trim(),imgs=["PATH1","PATH2"],urls=imgs.map(function(p){return "data:image/"+p.split(".").pop()+";base64,"+fs.readFileSync(p).toString("base64")});fs.writeFileSync("/tmp/imagine_payload.json",JSON.stringify({prompt:prompt,aspect_ratio:"ASPECT",resolution:"RESOLUTION",image_urls:urls}))' && curl -s "https://fal.run/fal-ai/nano-banana-2/edit" -H "Authorization: Key $FAL_KEY" -H "Content-Type: application/json" -d @/tmp/imagine_payload.json -o /tmp/imagine_resp.json && IMG=$(node -p 'JSON.parse(require("fs").readFileSync("/tmp/imagine_resp.json","utf-8")).images[0].url') && curl -s "$IMG" -o generated/imagine_NAME.png && rm -f /tmp/imagine_resp.json /tmp/imagine_payload.json /tmp/imagine_prompt.txt
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
## gemini + generate
|
|
@@ -72,7 +72,7 @@ mkdir -p generated
|
|
|
72
72
|
cat << 'PROMPTEOF' > /tmp/imagine_prompt.txt
|
|
73
73
|
PROMPT
|
|
74
74
|
PROMPTEOF
|
|
75
|
-
node -e 'var fs=require("fs"),p=fs.readFileSync("/tmp/imagine_prompt.txt","utf-8").trim();fs.writeFileSync("/tmp/imagine_payload.json",JSON.stringify({contents:[{parts:[{text:p}]}],generationConfig:{responseModalities:["IMAGE"],imageConfig:{aspectRatio:"ASPECT",imageSize:"RESOLUTION"}}}))' && curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-
|
|
75
|
+
node -e 'var fs=require("fs"),p=fs.readFileSync("/tmp/imagine_prompt.txt","utf-8").trim();fs.writeFileSync("/tmp/imagine_payload.json",JSON.stringify({contents:[{parts:[{text:p}]}],generationConfig:{responseModalities:["IMAGE"],imageConfig:{aspectRatio:"ASPECT",imageSize:"RESOLUTION"}}}))' && curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent" -H "Content-Type: application/json" -H "x-goog-api-key: $GEMINI_API_KEY" -d @/tmp/imagine_payload.json -o /tmp/imagine_resp.json && node -e 'var fs=require("fs"),r=JSON.parse(fs.readFileSync("/tmp/imagine_resp.json","utf-8")),c=r.candidates,p=c&&c[0]&&c[0].content&&c[0].content.parts,i=p&&p.find(function(x){return x.inlineData||x.inline_data});if(!i){var e=r.error;console.error(e&&e.message||"No image");process.exit(1)}var d=i.inlineData||i.inline_data;fs.writeFileSync("generated/imagine_NAME.png",Buffer.from(d.data,"base64"))' && rm -f /tmp/imagine_resp.json /tmp/imagine_payload.json /tmp/imagine_prompt.txt
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
## gemini + edit
|
|
@@ -84,7 +84,7 @@ mkdir -p generated
|
|
|
84
84
|
cat << 'PROMPTEOF' > /tmp/imagine_prompt.txt
|
|
85
85
|
PROMPT
|
|
86
86
|
PROMPTEOF
|
|
87
|
-
node -e 'var fs=require("fs"),prompt=fs.readFileSync("/tmp/imagine_prompt.txt","utf-8").trim(),imgs=["PATH1","PATH2"],parts=imgs.map(function(p){return {inline_data:{mime_type:"image/"+p.split(".").pop(),data:fs.readFileSync(p).toString("base64")}}});parts.push({text:prompt});fs.writeFileSync("/tmp/imagine_payload.json",JSON.stringify({contents:[{parts:parts}],generationConfig:{responseModalities:["IMAGE"],imageConfig:{aspectRatio:"ASPECT",imageSize:"RESOLUTION"}}}))' && curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-
|
|
87
|
+
node -e 'var fs=require("fs"),prompt=fs.readFileSync("/tmp/imagine_prompt.txt","utf-8").trim(),imgs=["PATH1","PATH2"],parts=imgs.map(function(p){return {inline_data:{mime_type:"image/"+p.split(".").pop(),data:fs.readFileSync(p).toString("base64")}}});parts.push({text:prompt});fs.writeFileSync("/tmp/imagine_payload.json",JSON.stringify({contents:[{parts:parts}],generationConfig:{responseModalities:["IMAGE"],imageConfig:{aspectRatio:"ASPECT",imageSize:"RESOLUTION"}}}))' && curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent" -H "Content-Type: application/json" -H "x-goog-api-key: $GEMINI_API_KEY" -d @/tmp/imagine_payload.json -o /tmp/imagine_resp.json && node -e 'var fs=require("fs"),r=JSON.parse(fs.readFileSync("/tmp/imagine_resp.json","utf-8")),c=r.candidates,p=c&&c[0]&&c[0].content&&c[0].content.parts,i=p&&p.find(function(x){return x.inlineData||x.inline_data});if(!i){var e=r.error;console.error(e&&e.message||"No image");process.exit(1)}var d=i.inlineData||i.inline_data;fs.writeFileSync("generated/imagine_NAME.png",Buffer.from(d.data,"base64"))' && rm -f /tmp/imagine_resp.json /tmp/imagine_payload.json /tmp/imagine_prompt.txt
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
## After the command completes
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create on-brand design and marketing assets (social media, banners, ads)
|
|
3
|
+
argument-hint: [design brief] or leave empty for guided questionnaire
|
|
4
|
+
author: "@markoradak"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Design — Marketing Asset Creation
|
|
8
|
+
|
|
9
|
+
I'll create on-brand design and marketing assets — social media banners, ad creatives, email headers, OG images, and more.
|
|
10
|
+
|
|
11
|
+
## Current Context
|
|
12
|
+
|
|
13
|
+
**Working Directory**: !`pwd`
|
|
14
|
+
|
|
15
|
+
**Existing Brand Assets**:
|
|
16
|
+
!`ls tailwind.config.* src/app/globals.css src/styles/*.css public/images/*.svg 2>/dev/null | head -15 || echo "No brand files detected"`
|
|
17
|
+
|
|
18
|
+
**Design Directory**:
|
|
19
|
+
!`ls design/ 2>/dev/null && echo "---existing campaigns---" && ls -d design/*/ 2>/dev/null || echo "No existing design directory"`
|
|
20
|
+
|
|
21
|
+
**Previous Brand Brief**:
|
|
22
|
+
!`cat design/brand-brief.md 2>/dev/null | head -30 || echo "No brand brief yet"`
|
|
23
|
+
|
|
24
|
+
**Image Generation APIs**:
|
|
25
|
+
- GEMINI_API_KEY: !`node -e 'console.log(process.env.GEMINI_API_KEY ? "AVAILABLE" : "NOT SET")'`
|
|
26
|
+
- FAL_KEY: !`node -e 'console.log(process.env.FAL_KEY ? "AVAILABLE" : "NOT SET")'`
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Design Brief
|
|
31
|
+
|
|
32
|
+
$ARGUMENTS
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Instructions
|
|
37
|
+
|
|
38
|
+
### If the user provided a detailed brief above:
|
|
39
|
+
|
|
40
|
+
Parse the brief for: asset type, platform(s), goal, style direction, messaging, and count. Infer reasonable defaults for anything missing based on the project context. Summarize your understanding in 2-3 sentences, then launch the design agent.
|
|
41
|
+
|
|
42
|
+
### If the brief is empty or vague:
|
|
43
|
+
|
|
44
|
+
Conduct a focused discovery questionnaire. Ask questions **one at a time**, adapting based on previous answers. Don't dump all questions at once — this should feel like a conversation.
|
|
45
|
+
|
|
46
|
+
#### First, determine the repo context:
|
|
47
|
+
|
|
48
|
+
Check the "Existing Brand Assets" and "Previous Brand Brief" sections above. If brand files were detected (CSS, Tailwind config, SVGs, design tokens, or an existing `design/brand-brief.md`), this is a **brand-rich repo** — the codebase contains enough to derive brand identity, visual style, and messaging automatically.
|
|
49
|
+
|
|
50
|
+
#### Always ask (every context):
|
|
51
|
+
|
|
52
|
+
**Q1: What are we creating?**
|
|
53
|
+
- Social media banners (Instagram, Twitter/X, LinkedIn, etc.)
|
|
54
|
+
- Ad creatives (display, retargeting)
|
|
55
|
+
- Email headers / newsletter graphics
|
|
56
|
+
- Open Graph / social preview images
|
|
57
|
+
- App store screenshots
|
|
58
|
+
- Presentation slides / pitch deck graphics
|
|
59
|
+
- Product Hunt launch assets
|
|
60
|
+
- Custom (describe)
|
|
61
|
+
|
|
62
|
+
**Q2: For which platform(s)?**
|
|
63
|
+
Offer platform-specific dimensions — these will be auto-applied:
|
|
64
|
+
| Platform | Format | Dimensions |
|
|
65
|
+
|----------|--------|------------|
|
|
66
|
+
| Instagram Post | Square | 1080×1080 |
|
|
67
|
+
| Instagram Story | Vertical | 1080×1920 |
|
|
68
|
+
| Twitter/X Post | Landscape | 1200×675 |
|
|
69
|
+
| Twitter/X Header | Wide | 1500×500 |
|
|
70
|
+
| LinkedIn Post | Landscape | 1200×627 |
|
|
71
|
+
| LinkedIn Cover | Wide | 1584×396 |
|
|
72
|
+
| Facebook Post | Landscape | 1200×630 |
|
|
73
|
+
| YouTube Thumbnail | Landscape | 1280×720 |
|
|
74
|
+
| Product Hunt | Landscape | 1270×760 |
|
|
75
|
+
| Open Graph | Landscape | 1200×630 |
|
|
76
|
+
|
|
77
|
+
**Q3: What's the campaign goal?**
|
|
78
|
+
- Product launch / announcement
|
|
79
|
+
- Feature spotlight
|
|
80
|
+
- Brand awareness
|
|
81
|
+
- Event promotion
|
|
82
|
+
- Testimonial / social proof
|
|
83
|
+
- Tutorial / how-to
|
|
84
|
+
- Hiring / team culture
|
|
85
|
+
|
|
86
|
+
**Q4: How many designs?** (default: 6)
|
|
87
|
+
|
|
88
|
+
#### Only ask in bare repos (no brand files detected):
|
|
89
|
+
|
|
90
|
+
If no CSS, Tailwind config, design tokens, or brand assets were found, the agent has nothing to analyze — so you need to ask:
|
|
91
|
+
|
|
92
|
+
**Q5: Where should brand identity come from?**
|
|
93
|
+
- **I'll describe it** — you'll provide colors, fonts, tone
|
|
94
|
+
- **Start from scratch** — design freely, establish a new visual identity
|
|
95
|
+
|
|
96
|
+
**Q6: What visual style?**
|
|
97
|
+
- Minimal / editorial (whitespace, typography-driven, structural grids)
|
|
98
|
+
- Bold / high-contrast (oversized type, strong colors, dramatic)
|
|
99
|
+
- Dark / premium (dark backgrounds, glow effects, sleek)
|
|
100
|
+
- Playful / colorful (gradients, rounded shapes, vibrant)
|
|
101
|
+
- Technical / developer (terminal mockups, monospace, code aesthetics)
|
|
102
|
+
- Photo-centric (imagery-driven, lifestyle)
|
|
103
|
+
|
|
104
|
+
**Q7: What's the primary headline or message?**
|
|
105
|
+
(Free text — the core copy direction)
|
|
106
|
+
|
|
107
|
+
#### In brand-rich repos, skip Q5-Q7:
|
|
108
|
+
|
|
109
|
+
The agent will automatically analyze the codebase for colors, typography, design patterns, logos, and product copy. Brand identity, visual style, and messaging will be derived from the existing design system and content. The user can still override any of these when confirming the brief.
|
|
110
|
+
|
|
111
|
+
After gathering answers, **summarize the complete brief and ask for confirmation** before launching the agent. Include what will be auto-derived from the codebase so the user can correct anything.
|
|
112
|
+
|
|
113
|
+
### Launching the Agent
|
|
114
|
+
|
|
115
|
+
Use the Task tool to launch the design agent (subagent_type="design") with the complete design brief including:
|
|
116
|
+
- Asset type and platform(s) with exact pixel dimensions
|
|
117
|
+
- Campaign goal and key messaging
|
|
118
|
+
- Brand source preference (and existing brand-brief.md content if available)
|
|
119
|
+
- Visual style direction
|
|
120
|
+
- Number of designs to create
|
|
121
|
+
- Working directory path
|
|
122
|
+
- Whether image generation APIs are available (and which)
|
|
123
|
+
- Any specific instructions or constraints from the user
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Generate images using Nano Banana
|
|
2
|
+
description: Generate images using Nano Banana 2 (Gemini/fal.ai)
|
|
3
3
|
argument-hint: <what you want to see> [optional: path/to/reference.png]
|
|
4
4
|
author: "@markoradak"
|
|
5
5
|
---
|
|
@@ -10,8 +10,8 @@ $ARGUMENTS
|
|
|
10
10
|
|
|
11
11
|
## API Keys
|
|
12
12
|
|
|
13
|
-
- GEMINI_API_KEY: !`node -e
|
|
14
|
-
- FAL_KEY: !`node -e
|
|
13
|
+
- GEMINI_API_KEY: !`node -e 'console.log(process.env.GEMINI_API_KEY ? "AVAILABLE" : "NOT SET")'`
|
|
14
|
+
- FAL_KEY: !`node -e 'console.log(process.env.FAL_KEY ? "AVAILABLE" : "NOT SET")'`
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|