@slamb2k/mad-skills 2.0.6
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/LICENSE +21 -0
- package/README.md +129 -0
- package/package.json +42 -0
- package/skills/brace/SKILL.md +51 -0
- package/skills/brace/assets/gitignore-template +28 -0
- package/skills/brace/assets/global-preferences-template.md +53 -0
- package/skills/brace/instructions.md +229 -0
- package/skills/brace/references/brace-workflow.md +109 -0
- package/skills/brace/references/claude-md-template.md +91 -0
- package/skills/brace/references/gotcha-principles.md +113 -0
- package/skills/brace/references/phase-prompts.md +228 -0
- package/skills/brace/references/report-template.md +38 -0
- package/skills/brace/references/scaffold-manifest.md +68 -0
- package/skills/brace/tests/evals.json +29 -0
- package/skills/build/SKILL.md +48 -0
- package/skills/build/instructions.md +293 -0
- package/skills/build/references/architecture-notes.md +34 -0
- package/skills/build/references/project-detection.md +45 -0
- package/skills/build/references/report-contracts.md +21 -0
- package/skills/build/references/stage-prompts.md +405 -0
- package/skills/build/tests/evals.json +28 -0
- package/skills/distil/SKILL.md +38 -0
- package/skills/distil/assets/DesignNav.tsx +54 -0
- package/skills/distil/instructions.md +255 -0
- package/skills/distil/references/design-guide.md +118 -0
- package/skills/distil/references/iteration-mode.md +186 -0
- package/skills/distil/references/project-setup.md +92 -0
- package/skills/distil/tests/evals.json +28 -0
- package/skills/manifest.json +76 -0
- package/skills/prime/SKILL.md +39 -0
- package/skills/prime/instructions.md +73 -0
- package/skills/prime/references/domains.md +38 -0
- package/skills/prime/tests/evals.json +28 -0
- package/skills/rig/SKILL.md +38 -0
- package/skills/rig/assets/azure-pipelines.yml +91 -0
- package/skills/rig/assets/ci.yml +104 -0
- package/skills/rig/assets/gitmessage +38 -0
- package/skills/rig/assets/lefthook.yml +29 -0
- package/skills/rig/assets/pull_request_template.md +24 -0
- package/skills/rig/instructions.md +162 -0
- package/skills/rig/references/configuration-steps.md +124 -0
- package/skills/rig/references/phase-prompts.md +180 -0
- package/skills/rig/references/report-template.md +28 -0
- package/skills/rig/tests/evals.json +29 -0
- package/skills/ship/SKILL.md +55 -0
- package/skills/ship/instructions.md +192 -0
- package/skills/ship/references/stage-prompts.md +322 -0
- package/skills/ship/tests/evals.json +30 -0
- package/skills/sync/SKILL.md +54 -0
- package/skills/sync/instructions.md +178 -0
- package/skills/sync/tests/evals.json +29 -0
- package/src/cli.js +419 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Distil Instructions
|
|
2
|
+
|
|
3
|
+
Generate multiple unique, creative web interface designs for any website or
|
|
4
|
+
web application. The primary agent acts as a thin orchestrator — all heavy
|
|
5
|
+
reading and file creation is delegated to subagents to protect the primary
|
|
6
|
+
context window.
|
|
7
|
+
|
|
8
|
+
## Arguments
|
|
9
|
+
|
|
10
|
+
Parse the following from the skill invocation:
|
|
11
|
+
- **count** (required): Number of designs to create (e.g., 5)
|
|
12
|
+
- **--spec** (optional): Path to a file containing site specification
|
|
13
|
+
- **--url** (optional): URL to existing site to review for context
|
|
14
|
+
- **--port** (required): Port for the Vite dev server
|
|
15
|
+
- **--favorites** (optional): Comma-separated list of design numbers for iteration mode
|
|
16
|
+
|
|
17
|
+
### Examples
|
|
18
|
+
```
|
|
19
|
+
/distil 5 --spec ./site-spec.md --port 5173
|
|
20
|
+
/distil 3 --favorites 2,4 --port 5173
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
If `--favorites` is provided, follow `references/iteration-mode.md` instead
|
|
24
|
+
of the steps below.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Pre-flight
|
|
29
|
+
|
|
30
|
+
Before starting, check all dependencies in this table:
|
|
31
|
+
|
|
32
|
+
| Dependency | Type | Check | Required | Resolution | Detail |
|
|
33
|
+
|-----------|------|-------|----------|------------|--------|
|
|
34
|
+
| npm | cli | `npm --version` | yes | stop | https://bun.sh or use npm |
|
|
35
|
+
| bencium-innovative-ux-designer | skill | `~/.claude/skills/bencium-innovative-ux-designer/SKILL.md` | no | ask | `npx skills add bencium/bencium-claude-code-design-skill@bencium-innovative-ux-designer -g -y` |
|
|
36
|
+
| web-animation-design | skill | `~/.claude/skills/web-animation-design/SKILL.md` | no | ask | `npx skills add connorads/dotfiles@web-animation-design -g -y` |
|
|
37
|
+
| design-system | skill | `~/.claude/skills/design-system/SKILL.md` | no | ask | `npx skills add lobbi-docs/claude@design-system -g -y` |
|
|
38
|
+
|
|
39
|
+
For each row, in order:
|
|
40
|
+
1. Run the Check command (for cli/npm) or test file existence (for agent/skill)
|
|
41
|
+
2. If found: continue silently
|
|
42
|
+
3. If missing: apply Resolution strategy
|
|
43
|
+
- **stop**: notify user with Detail, halt execution
|
|
44
|
+
- **url**: notify user with Detail (install link), halt execution
|
|
45
|
+
- **install**: notify user, run the command in Detail, continue if successful
|
|
46
|
+
- **ask**: notify user, offer to run command in Detail, continue either way (or halt if required)
|
|
47
|
+
- **fallback**: notify user with Detail, continue with degraded behavior
|
|
48
|
+
4. After all checks: summarize what's available and what's degraded
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Site Specification
|
|
53
|
+
|
|
54
|
+
The specification can be provided via:
|
|
55
|
+
|
|
56
|
+
1. **--spec flag**: Read the file at the provided path
|
|
57
|
+
2. **Pasted text**: Check conversation for a description of the site
|
|
58
|
+
3. **--url flag**: Use WebFetch to analyze an existing site
|
|
59
|
+
|
|
60
|
+
**If no specification is found, ask the user before proceeding.**
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Step 1: Load Site Specification
|
|
65
|
+
|
|
66
|
+
Parse and store the site context for use when generating each design.
|
|
67
|
+
This is the only file the primary agent reads directly (specs are typically small).
|
|
68
|
+
|
|
69
|
+
## Step 2: Reconnaissance (launch in parallel)
|
|
70
|
+
|
|
71
|
+
Launch two subagents **in parallel** to gather context without bloating
|
|
72
|
+
the primary agent.
|
|
73
|
+
|
|
74
|
+
### 2a: Verify Design Skills
|
|
75
|
+
|
|
76
|
+
Design skill availability is checked in the Pre-flight section above.
|
|
77
|
+
Use the results from pre-flight to populate SKILL_REPORT:
|
|
78
|
+
- For each design skill: name, installed (yes/no)
|
|
79
|
+
- If any skill was missing and the user declined to install, note it as unavailable
|
|
80
|
+
|
|
81
|
+
### 2b: Scan Existing Project
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Task(
|
|
85
|
+
subagent_type: "Explore",
|
|
86
|
+
model: "haiku",
|
|
87
|
+
description: "Scan existing design project",
|
|
88
|
+
prompt: "Check if src/designs/ directory exists. If it does:
|
|
89
|
+
1. List all DesignN.tsx files (glob for src/designs/Design*.tsx)
|
|
90
|
+
2. For each file, read ONLY the first 10 lines to extract the
|
|
91
|
+
metadata comment (style name, key traits)
|
|
92
|
+
3. Determine the highest design number
|
|
93
|
+
Return PROJECT_REPORT (max 20 lines):
|
|
94
|
+
- project_exists: true/false
|
|
95
|
+
- package_manager: detected from lockfile (bun.lockb/pnpm-lock/yarn.lock/package-lock)
|
|
96
|
+
- design_count: N
|
|
97
|
+
- highest_number: N
|
|
98
|
+
- designs: list of (number, style_name) pairs
|
|
99
|
+
If no src/designs/ directory, return project_exists: false."
|
|
100
|
+
)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Parse Recon Results
|
|
104
|
+
|
|
105
|
+
From SKILL_REPORT: Gate on missing skills before proceeding.
|
|
106
|
+
From PROJECT_REPORT:
|
|
107
|
+
- If `project_exists`: set `START_INDEX = highest_number + 1`, skip Step 3
|
|
108
|
+
- If not: set `START_INDEX = 1`, proceed to Step 3
|
|
109
|
+
|
|
110
|
+
## Step 3: Initialize Project
|
|
111
|
+
|
|
112
|
+
**Skip this step if an existing project was detected in Step 2b.**
|
|
113
|
+
|
|
114
|
+
Launch **Bash subagent** (haiku) to set up the project:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Task(
|
|
118
|
+
subagent_type: "Bash",
|
|
119
|
+
model: "haiku",
|
|
120
|
+
description: "Initialize distil project",
|
|
121
|
+
prompt: "Follow the project setup instructions:
|
|
122
|
+
1. Detect package manager (bun -> pnpm -> yarn -> npm)
|
|
123
|
+
2. Create Vite React-TS project
|
|
124
|
+
3. Install dependencies: tailwindcss, postcss, autoprefixer,
|
|
125
|
+
react-router-dom, lucide-react
|
|
126
|
+
4. Configure Tailwind (content paths, index.css directives)
|
|
127
|
+
5. Copy {skill_dir}/assets/DesignNav.tsx to src/components/DesignNav.tsx
|
|
128
|
+
Return SETUP_REPORT (max 10 lines): status, package_manager, errors."
|
|
129
|
+
)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Parse SETUP_REPORT. If setup fails, fall back through the package manager
|
|
133
|
+
chain (bun -> pnpm -> yarn -> npm).
|
|
134
|
+
|
|
135
|
+
## Step 4: Create Designs via Subagent
|
|
136
|
+
|
|
137
|
+
Launch a **general-purpose subagent** to create all new designs.
|
|
138
|
+
|
|
139
|
+
**CRITICAL**: The subagent reads skill files and design guides directly.
|
|
140
|
+
Do NOT read them in the primary agent — pass file paths only.
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Task(
|
|
144
|
+
subagent_type: "general-purpose",
|
|
145
|
+
description: "Create design variations",
|
|
146
|
+
prompt: "
|
|
147
|
+
You are creating {COUNT} new web design variations for a distil project.
|
|
148
|
+
|
|
149
|
+
## Site Specification
|
|
150
|
+
{SITE_SPEC from Step 1}
|
|
151
|
+
|
|
152
|
+
## Design Knowledge — Read These Files
|
|
153
|
+
Load design principles and the 50+ style catalog from these skill files:
|
|
154
|
+
- ~/.claude/skills/bencium-innovative-ux-designer/SKILL.md
|
|
155
|
+
- ~/.claude/skills/bencium-innovative-ux-designer/MOTION-SPEC.md
|
|
156
|
+
- ~/.claude/skills/web-animation-design/SKILL.md
|
|
157
|
+
- ~/.claude/skills/design-system/SKILL.md
|
|
158
|
+
- ~/.claude/skills/design-system/references/style-guide.md
|
|
159
|
+
|
|
160
|
+
Also read the project design guide:
|
|
161
|
+
- {skill_dir}/references/design-guide.md
|
|
162
|
+
|
|
163
|
+
## Existing Designs (avoid these styles)
|
|
164
|
+
{Compact list from PROJECT_REPORT: number + style_name pairs,
|
|
165
|
+
or 'None — fresh project'}
|
|
166
|
+
|
|
167
|
+
## Task
|
|
168
|
+
Create designs numbered {START_INDEX} through {START_INDEX + COUNT - 1}.
|
|
169
|
+
|
|
170
|
+
For each design, create `src/designs/Design{N}.tsx`:
|
|
171
|
+
- Pick a DISTINCT style from the 50+ style catalog in the design-system skill
|
|
172
|
+
- Do NOT reuse styles already used by existing designs
|
|
173
|
+
- Apply the site specification to all content and sections
|
|
174
|
+
- Follow anti-AI-slop rules strictly (no Inter, no default blue, no cookie-cutter layouts)
|
|
175
|
+
- Include purposeful animations with proper easing
|
|
176
|
+
- Each design must be self-contained in a single file
|
|
177
|
+
- Import and render DesignNav from '../components/DesignNav'
|
|
178
|
+
|
|
179
|
+
After creating all designs, update:
|
|
180
|
+
1. `src/App.tsx` — Add import and route for EVERY design (existing + new)
|
|
181
|
+
2. Each design file's DesignNav `designs` array — Include ALL designs (existing + new)
|
|
182
|
+
|
|
183
|
+
## Design File Requirements
|
|
184
|
+
Each design file must have:
|
|
185
|
+
- A metadata comment at the top: style name, key visual traits, color palette
|
|
186
|
+
- Import DesignNav from '../components/DesignNav'
|
|
187
|
+
- A `designs` array listing ALL designs (existing + new) with id and name
|
|
188
|
+
- ALL sections from the site specification with realistic content
|
|
189
|
+
- Custom color palette (not default Tailwind)
|
|
190
|
+
- Animations with proper easing (ease-out for entrances, ease-in-out for movement)
|
|
191
|
+
- Responsive layout (mobile-first)
|
|
192
|
+
- Lucide React icons for iconography
|
|
193
|
+
|
|
194
|
+
## App.tsx Requirements
|
|
195
|
+
The App.tsx must:
|
|
196
|
+
- Import ALL design components (existing + new)
|
|
197
|
+
- Have a route for each: <Route path='/{N}' element={<DesignN />} />
|
|
198
|
+
- Default route redirects to /1
|
|
199
|
+
|
|
200
|
+
Return DESIGN_REPORT (max 30 lines):
|
|
201
|
+
- List each design created: number, style name, key visual traits
|
|
202
|
+
- Total design count (existing + new)
|
|
203
|
+
- Files created and modified
|
|
204
|
+
- Any issues encountered
|
|
205
|
+
"
|
|
206
|
+
)
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Parse DESIGN_REPORT. If any design failed, report the error and offer retry.
|
|
210
|
+
|
|
211
|
+
## Step 5: Start Dev Server
|
|
212
|
+
|
|
213
|
+
Launch as a **background Bash** to avoid blocking the primary agent:
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
Task(
|
|
217
|
+
subagent_type: "Bash",
|
|
218
|
+
run_in_background: true,
|
|
219
|
+
description: "Start Vite dev server",
|
|
220
|
+
prompt: "{package_manager} run dev --port {PORT}"
|
|
221
|
+
)
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
If the dev server is already running, HMR should pick up the new files
|
|
225
|
+
automatically — skip this step.
|
|
226
|
+
|
|
227
|
+
## Step 6: Present Designs
|
|
228
|
+
|
|
229
|
+
Inform the user:
|
|
230
|
+
- Dev server is running at `http://localhost:{PORT}`
|
|
231
|
+
- Each design is available at `/1`, `/2`, `/3`, etc.
|
|
232
|
+
- Briefly describe each design's unique approach (from DESIGN_REPORT)
|
|
233
|
+
- Note which designs are new vs existing (if appending)
|
|
234
|
+
- Remind they can iterate with `--favorites` to refine preferred designs
|
|
235
|
+
|
|
236
|
+
## Context Protection Summary
|
|
237
|
+
|
|
238
|
+
| Step | Agent | Model | Why |
|
|
239
|
+
|---|---|---|---|
|
|
240
|
+
| 1: Load spec | Primary | — | Small file, needed for subagent prompt |
|
|
241
|
+
| 2a: Skill check | Explore | haiku | Avoids reading 2000+ lines of skill content |
|
|
242
|
+
| 2b: Project scan | Explore | haiku | Avoids reading existing design files |
|
|
243
|
+
| 3: Init project | Bash | haiku | Shell commands only |
|
|
244
|
+
| 4: Create designs | general-purpose | default | Heavy lifting: reads skills, writes files |
|
|
245
|
+
| 5: Dev server | Bash (background) | — | Non-blocking, no output in primary |
|
|
246
|
+
| 6: Present | Primary | — | User-facing, uses compact DESIGN_REPORT |
|
|
247
|
+
|
|
248
|
+
## Troubleshooting
|
|
249
|
+
|
|
250
|
+
- If package manager commands fail, try the next in the fallback chain
|
|
251
|
+
- If port is in use, suggest killing the process or using a different port
|
|
252
|
+
- If design imports fail, check file naming consistency
|
|
253
|
+
- If no site spec is found, always ask the user before proceeding
|
|
254
|
+
- If a design skill is missing, offer to install it before proceeding
|
|
255
|
+
- If the subagent fails, check error details and retry with adjusted parameters
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Design Quality Standards & Directions
|
|
2
|
+
|
|
3
|
+
## Quality Standards
|
|
4
|
+
|
|
5
|
+
Each design should:
|
|
6
|
+
- Use custom color palettes (not default Tailwind)
|
|
7
|
+
- Include purposeful animations with proper easing
|
|
8
|
+
- Have responsive layouts (mobile-first)
|
|
9
|
+
- Feature micro-interactions (hover states, focus states, active states)
|
|
10
|
+
- Use thoughtful typography hierarchy with characterful fonts
|
|
11
|
+
- Include iconography (use Lucide React icons)
|
|
12
|
+
- Feel like a premium, polished product
|
|
13
|
+
- Accurately reflect the site specification context
|
|
14
|
+
- Avoid generic "AI slop" patterns (no Inter, no default blue, no cookie-cutter layouts)
|
|
15
|
+
|
|
16
|
+
## Design Directions
|
|
17
|
+
|
|
18
|
+
### Expanded Style Catalog (50+ styles)
|
|
19
|
+
|
|
20
|
+
Draw from the full style catalog in:
|
|
21
|
+
`~/.claude/skills/design-system/SKILL.md`
|
|
22
|
+
|
|
23
|
+
Categories include:
|
|
24
|
+
|
|
25
|
+
1. **Minimalist & Modern** — minimalist, brutalist, scandinavian, japandi, swiss
|
|
26
|
+
2. **Historical & Classical** — art-deco, art-nouveau, baroque, victorian, renaissance
|
|
27
|
+
3. **Retro & Nostalgic** — retro-80s, retro-90s, vaporwave, y2k, mid-century
|
|
28
|
+
4. **Digital UI** — glassmorphism, neumorphism, material-design, fluent-design, skeuomorphic
|
|
29
|
+
5. **Futuristic & Sci-Fi** — cyberpunk, cybernetic, space-age, dystopian, solarpunk
|
|
30
|
+
6. **Nature-Inspired** — organic, botanical, coastal, desert, forest
|
|
31
|
+
7. **Bold & Expressive** — maximalist, pop-art, psychedelic, graffiti, punk
|
|
32
|
+
8. **Illustration & Artistic** — hand-drawn, watercolor, flat-illustration, isometric, line-art
|
|
33
|
+
9. **Cultural & Regional** — mediterranean, nordic, asian-zen, tribal, moroccan
|
|
34
|
+
10. **Special Purpose** — dark-mode, high-contrast, print-inspired, terminal, low-fi
|
|
35
|
+
|
|
36
|
+
### Style Blending
|
|
37
|
+
|
|
38
|
+
Designs can blend two styles using weighted ratios:
|
|
39
|
+
- **Dominant style (70-80%)**: Core colors, primary typography, main spacing
|
|
40
|
+
- **Accent style (20-30%)**: Secondary colors, accent fonts, decorative elements
|
|
41
|
+
|
|
42
|
+
Example: "art-deco with cyberpunk 70/30" = Art Deco base with neon accent highlights.
|
|
43
|
+
|
|
44
|
+
## Anti-Generic Rules
|
|
45
|
+
|
|
46
|
+
Read and apply principles from:
|
|
47
|
+
- `~/.claude/skills/bencium-innovative-ux-designer/SKILL.md`
|
|
48
|
+
- `~/.claude/skills/design-system/references/style-guide.md`
|
|
49
|
+
|
|
50
|
+
### NEVER use:
|
|
51
|
+
- **Fonts**: Inter, Roboto, Arial, Space Grotesk as primary fonts
|
|
52
|
+
- **Colors**: Generic SaaS blue (#3B82F6), purple gradients on white backgrounds
|
|
53
|
+
- **Patterns**: Cookie-cutter layouts, predictable component arrangements
|
|
54
|
+
- **Effects**: Apple design mimicry, liquid/blob backgrounds without purpose
|
|
55
|
+
- **Overall**: Anything that looks "AI-generated" or machine-made
|
|
56
|
+
|
|
57
|
+
### ALWAYS:
|
|
58
|
+
- Commit FULLY to the chosen aesthetic direction — no half measures
|
|
59
|
+
- Use unexpected, characterful typography choices (dig deep in Google Fonts)
|
|
60
|
+
- Create atmosphere: textures, grain, dramatic shadows, gradient meshes
|
|
61
|
+
- Use dominant colors with SHARP accents (not timid, evenly-distributed palettes)
|
|
62
|
+
- Pick unique color pairs that aren't typical
|
|
63
|
+
- Vary everything across designs — no two should share fonts, palettes, or layouts
|
|
64
|
+
|
|
65
|
+
## Animation Standards
|
|
66
|
+
|
|
67
|
+
Read and apply principles from:
|
|
68
|
+
- `~/.claude/skills/web-animation-design/SKILL.md`
|
|
69
|
+
- `~/.claude/skills/bencium-innovative-ux-designer/MOTION-SPEC.md`
|
|
70
|
+
|
|
71
|
+
### Easing Blueprint
|
|
72
|
+
- **ease-out**: Element entrances (dropdowns, modals, tooltips) — fast start, slow settle
|
|
73
|
+
- **ease-in-out**: On-screen movement and morphing — natural acceleration/deceleration
|
|
74
|
+
- **ease**: Hover states and color transitions — elegant, asymmetrical
|
|
75
|
+
- **linear**: Only for constant-speed animations (spinners, marquees)
|
|
76
|
+
- **Never ease-in for UI**: Makes interfaces feel sluggish
|
|
77
|
+
|
|
78
|
+
### Duration Guidelines
|
|
79
|
+
| Element Type | Duration |
|
|
80
|
+
|---|---|
|
|
81
|
+
| Micro-interactions (button hover) | 100-150ms |
|
|
82
|
+
| Standard UI (tooltips, dropdowns) | 150-250ms |
|
|
83
|
+
| Modals, drawers | 200-300ms |
|
|
84
|
+
| Page transitions | 300-400ms |
|
|
85
|
+
|
|
86
|
+
### Performance Rules
|
|
87
|
+
- Only animate `transform` and `opacity` (GPU-accelerated)
|
|
88
|
+
- Avoid animating `width`, `height`, `margin`, `padding`
|
|
89
|
+
- Add `will-change: transform` for elements with shaky animations
|
|
90
|
+
- Always respect `prefers-reduced-motion`
|
|
91
|
+
- Include button press feedback: `transform: scale(0.97)` on `:active`
|
|
92
|
+
|
|
93
|
+
## Typography Standards
|
|
94
|
+
|
|
95
|
+
- Use 2-3 typefaces maximum, but make them CHARACTERFUL
|
|
96
|
+
- **Headlines**: Emotional, personality-driven, attention-grabbing
|
|
97
|
+
- **Body/UI**: Functional, highly legible, clarity over expression
|
|
98
|
+
- Use a mathematical scale (1.25x major third or 1.333x perfect fourth)
|
|
99
|
+
- Pair fonts with contrast: Serif + Sans, Geometric + Humanist, Display + System
|
|
100
|
+
- Responsive typography: use `clamp()` for fluid scaling
|
|
101
|
+
|
|
102
|
+
## Color Standards
|
|
103
|
+
|
|
104
|
+
- **Neutral palette (4-5 colors)**: Backgrounds, surfaces, borders, text
|
|
105
|
+
- **Accent palette (1-3 colors)**: CTAs, status indicators, emphasis
|
|
106
|
+
- Choose warm or cool neutrals intentionally based on brand feel
|
|
107
|
+
- Saturated accents should contrast clearly with both light and dark backgrounds
|
|
108
|
+
- Every color must serve a purpose: hierarchy, function, status, or action
|
|
109
|
+
|
|
110
|
+
## Technical Notes
|
|
111
|
+
|
|
112
|
+
- All designs should be self-contained in their own file
|
|
113
|
+
- Use Tailwind for all styling (no external CSS frameworks)
|
|
114
|
+
- Each design should be fully functional (routing, state)
|
|
115
|
+
- Avoid placeholder content — use realistic content from the site spec
|
|
116
|
+
- Include all features and sections from the specification
|
|
117
|
+
- Ensure WCAG AA contrast minimums (4.5:1 normal text, 3:1 large text)
|
|
118
|
+
- Touch targets minimum 44x44px for interactive elements
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Distil Iteration Mode
|
|
2
|
+
|
|
3
|
+
When `--favorites` is provided, generate new designs inspired by existing
|
|
4
|
+
favorites. This allows iterative refinement over multiple sessions.
|
|
5
|
+
|
|
6
|
+
The primary agent acts as a thin orchestrator — all heavy file reading
|
|
7
|
+
and design creation is delegated to subagents.
|
|
8
|
+
|
|
9
|
+
## Workflow
|
|
10
|
+
|
|
11
|
+
### Step I1: Reconnaissance via Subagent
|
|
12
|
+
|
|
13
|
+
Launch a single **Explore subagent** to gather all needed context:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Task(
|
|
17
|
+
subagent_type: "Explore",
|
|
18
|
+
model: "haiku",
|
|
19
|
+
description: "Scan project and favorites",
|
|
20
|
+
prompt: "Gather context for design iteration mode.
|
|
21
|
+
|
|
22
|
+
1. Check src/designs/ exists. If not, report project_exists: false and stop.
|
|
23
|
+
2. List all DesignN.tsx files (glob src/designs/Design*.tsx)
|
|
24
|
+
3. For each design, read ONLY the first 10 lines to extract the
|
|
25
|
+
metadata comment (style name, key traits)
|
|
26
|
+
4. Determine the highest design number
|
|
27
|
+
5. For favorites {FAVORITES_LIST}, read the FULL content of each
|
|
28
|
+
favorite design file and extract:
|
|
29
|
+
- Color palette, design style/theme, typography choices
|
|
30
|
+
- Layout patterns, animation styles, component patterns
|
|
31
|
+
6. Check package manager from lockfile (bun.lockb/pnpm-lock/yarn.lock/package-lock)
|
|
32
|
+
7. Check skill availability:
|
|
33
|
+
- ~/.claude/skills/bencium-innovative-ux-designer/SKILL.md
|
|
34
|
+
- ~/.claude/skills/web-animation-design/SKILL.md
|
|
35
|
+
- ~/.claude/skills/design-system/SKILL.md
|
|
36
|
+
|
|
37
|
+
Return RECON_REPORT (max 40 lines):
|
|
38
|
+
- project_exists: true/false
|
|
39
|
+
- package_manager: detected
|
|
40
|
+
- design_count: N
|
|
41
|
+
- highest_number: N
|
|
42
|
+
- all_designs: list of (number, style_name) pairs
|
|
43
|
+
- favorite_summaries: for each favorite, a 3-5 line summary of its
|
|
44
|
+
visual characteristics (palette, style, typography, layout, animations)
|
|
45
|
+
- skills_installed: list of (name, yes/no)
|
|
46
|
+
"
|
|
47
|
+
)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
If `project_exists` is false, inform user they need an initial generation first.
|
|
51
|
+
If any skill is missing, inform user and offer to install.
|
|
52
|
+
|
|
53
|
+
### Step I2: Generate New Designs via Subagent
|
|
54
|
+
|
|
55
|
+
Set `START_INDEX = highest_number + 1`.
|
|
56
|
+
|
|
57
|
+
Launch a **general-purpose subagent** to create the new variations:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Task(
|
|
61
|
+
subagent_type: "general-purpose",
|
|
62
|
+
description: "Create design iterations",
|
|
63
|
+
prompt: "
|
|
64
|
+
You are creating {COUNT} new design variations inspired by existing favorites.
|
|
65
|
+
|
|
66
|
+
## Site Specification
|
|
67
|
+
{SITE_SPEC}
|
|
68
|
+
|
|
69
|
+
## Design Knowledge — Read These Files
|
|
70
|
+
Load design principles and the 50+ style catalog from these skill files:
|
|
71
|
+
- ~/.claude/skills/bencium-innovative-ux-designer/SKILL.md
|
|
72
|
+
- ~/.claude/skills/bencium-innovative-ux-designer/MOTION-SPEC.md
|
|
73
|
+
- ~/.claude/skills/web-animation-design/SKILL.md
|
|
74
|
+
- ~/.claude/skills/design-system/SKILL.md
|
|
75
|
+
- ~/.claude/skills/design-system/references/style-guide.md
|
|
76
|
+
|
|
77
|
+
Also read the project design guide:
|
|
78
|
+
- {skill_dir}/references/design-guide.md
|
|
79
|
+
|
|
80
|
+
## Favorite Designs (Inspiration Sources)
|
|
81
|
+
{favorite_summaries from RECON_REPORT}
|
|
82
|
+
|
|
83
|
+
Also read the full source of each favorite for detailed inspiration:
|
|
84
|
+
{List favorite file paths: src/designs/Design{N}.tsx}
|
|
85
|
+
|
|
86
|
+
## All Existing Designs (avoid duplicating styles)
|
|
87
|
+
{all_designs from RECON_REPORT}
|
|
88
|
+
|
|
89
|
+
## Task
|
|
90
|
+
Create designs numbered {START_INDEX} through {START_INDEX + COUNT - 1}.
|
|
91
|
+
Each new design should be a VARIATION inspired by the favorites.
|
|
92
|
+
|
|
93
|
+
For each design, create `src/designs/Design{N}.tsx`:
|
|
94
|
+
- Pick 1-2 favorites as primary inspiration
|
|
95
|
+
- Create a NEW variation using one of these strategies:
|
|
96
|
+
- Color shift: Keep structure, change palette
|
|
97
|
+
- Style blend: Combine elements from multiple favorites
|
|
98
|
+
- Intensity variation: More/less bold, more/less minimal
|
|
99
|
+
- Animation evolution: Add or modify motion design
|
|
100
|
+
- Layout remix: Keep aesthetic, reorganize layout
|
|
101
|
+
- Detail enhancement: Add micro-interactions and polish
|
|
102
|
+
- Theme variation: Same colors, different visual style
|
|
103
|
+
- Apply anti-AI-slop rules from the loaded skills
|
|
104
|
+
- Include purposeful animations with proper easing
|
|
105
|
+
- Each design must be self-contained in a single file
|
|
106
|
+
- Import and render DesignNav from '../components/DesignNav'
|
|
107
|
+
|
|
108
|
+
After creating all designs, update:
|
|
109
|
+
1. `src/App.tsx` — Add routes for ALL designs (existing + new)
|
|
110
|
+
2. Each design file's DesignNav `designs` array — Include ALL designs
|
|
111
|
+
|
|
112
|
+
## Design File Requirements
|
|
113
|
+
Each design file must have a metadata comment:
|
|
114
|
+
- Style name (hint at inspiration, e.g. 'Neo Dark', 'Glass Aurora')
|
|
115
|
+
- Which favorites inspired it
|
|
116
|
+
- Key visual traits and variation strategy used
|
|
117
|
+
|
|
118
|
+
## DesignNav Names
|
|
119
|
+
Use descriptive names hinting at inspiration:
|
|
120
|
+
- Inspired by 'Dark Premium' (#2): 'Neo Dark', 'Midnight Gold', 'Dark Luxe'
|
|
121
|
+
- Inspired by 'Glassmorphism' (#1): 'Glass Aurora', 'Frost Bloom', 'Crystal'
|
|
122
|
+
- Blending multiple: 'Cyber Glass', 'Warm Noir'
|
|
123
|
+
|
|
124
|
+
## App.tsx Requirements
|
|
125
|
+
Import ALL design components (existing + new).
|
|
126
|
+
Route each: <Route path='/{N}' element={<DesignN />} />
|
|
127
|
+
Default route redirects to /1.
|
|
128
|
+
|
|
129
|
+
Return DESIGN_REPORT (max 30 lines):
|
|
130
|
+
- Each design: number, name, inspiration source(s), variation strategy
|
|
131
|
+
- Total count (existing + new)
|
|
132
|
+
- Files created and modified
|
|
133
|
+
"
|
|
134
|
+
)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Step I3: Restart Dev Server
|
|
138
|
+
|
|
139
|
+
If running, HMR should pick up changes — skip this step.
|
|
140
|
+
Otherwise launch as background Bash:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Task(
|
|
144
|
+
subagent_type: "Bash",
|
|
145
|
+
run_in_background: true,
|
|
146
|
+
description: "Start Vite dev server",
|
|
147
|
+
prompt: "{package_manager} run dev --port {PORT}"
|
|
148
|
+
)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Step I4: Present New Designs
|
|
152
|
+
|
|
153
|
+
Report to user (from DESIGN_REPORT):
|
|
154
|
+
- How many new designs were created
|
|
155
|
+
- Which favorites inspired each
|
|
156
|
+
- New design numbers and names
|
|
157
|
+
- Remind they can iterate again with new favorites
|
|
158
|
+
|
|
159
|
+
## Context Protection Summary
|
|
160
|
+
|
|
161
|
+
| Step | Agent | Model | Why |
|
|
162
|
+
|---|---|---|---|
|
|
163
|
+
| I1: Recon | Explore | haiku | Reads all files, returns compact summary |
|
|
164
|
+
| I2: Create | general-purpose | default | Reads skills + favorites, writes designs |
|
|
165
|
+
| I3: Dev server | Bash (background) | — | Non-blocking |
|
|
166
|
+
| I4: Present | Primary | — | User-facing, uses compact DESIGN_REPORT |
|
|
167
|
+
|
|
168
|
+
Primary agent context: site spec + RECON_REPORT (~40 lines) + DESIGN_REPORT (~30 lines).
|
|
169
|
+
|
|
170
|
+
## Scalability (50+ designs)
|
|
171
|
+
|
|
172
|
+
- Consider pagination or grouping in DesignNav
|
|
173
|
+
- Move designList to a separate `src/data/designs.ts`
|
|
174
|
+
- Consider lazy loading design components
|
|
175
|
+
|
|
176
|
+
## Design Metadata
|
|
177
|
+
|
|
178
|
+
For large collections, add lineage comments:
|
|
179
|
+
```tsx
|
|
180
|
+
/**
|
|
181
|
+
* Design 8: Midnight Aurora
|
|
182
|
+
* Inspired by: #2 (Dark Premium), #5 (Organic Curves)
|
|
183
|
+
* Strategy: Style blend — dark theme with flowing organic shapes
|
|
184
|
+
* Created: Iteration 2
|
|
185
|
+
*/
|
|
186
|
+
```
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Distil Project Setup
|
|
2
|
+
|
|
3
|
+
Steps 2-4 of initial project creation.
|
|
4
|
+
|
|
5
|
+
## Package Manager Detection
|
|
6
|
+
|
|
7
|
+
Detect available package manager (fallback chain):
|
|
8
|
+
1. `bun` -> use bun commands
|
|
9
|
+
2. `pnpm` -> use pnpm commands
|
|
10
|
+
3. `yarn` -> use yarn commands
|
|
11
|
+
4. `npm` -> use npm commands (always available)
|
|
12
|
+
|
|
13
|
+
## Step 2: Initialize Project
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Using detected package manager (example: bun)
|
|
17
|
+
bun create vite . --template react-ts
|
|
18
|
+
bun install
|
|
19
|
+
bun add -d tailwindcss postcss autoprefixer
|
|
20
|
+
bunx tailwindcss init -p
|
|
21
|
+
bun add react-router-dom
|
|
22
|
+
bun add lucide-react
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Step 3: Configure Tailwind
|
|
26
|
+
|
|
27
|
+
Update `tailwind.config.js`:
|
|
28
|
+
```javascript
|
|
29
|
+
/** @type {import('tailwindcss').Config} */
|
|
30
|
+
export default {
|
|
31
|
+
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
|
|
32
|
+
theme: { extend: {} },
|
|
33
|
+
plugins: [],
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Update `src/index.css`:
|
|
38
|
+
```css
|
|
39
|
+
@tailwind base;
|
|
40
|
+
@tailwind components;
|
|
41
|
+
@tailwind utilities;
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Step 4: Set Up Routing
|
|
45
|
+
|
|
46
|
+
Copy `assets/DesignNav.tsx` to `src/components/DesignNav.tsx`.
|
|
47
|
+
|
|
48
|
+
Create `src/App.tsx` with routes for each design:
|
|
49
|
+
```tsx
|
|
50
|
+
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'
|
|
51
|
+
import Design1 from './designs/Design1'
|
|
52
|
+
// ... import each design
|
|
53
|
+
|
|
54
|
+
function App() {
|
|
55
|
+
return (
|
|
56
|
+
<BrowserRouter>
|
|
57
|
+
<Routes>
|
|
58
|
+
<Route path="/" element={<Navigate to="/1" replace />} />
|
|
59
|
+
<Route path="/1" element={<Design1 />} />
|
|
60
|
+
{/* ... route per design */}
|
|
61
|
+
</Routes>
|
|
62
|
+
</BrowserRouter>
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## DesignNav Usage
|
|
68
|
+
|
|
69
|
+
Each design file imports and renders the shared nav:
|
|
70
|
+
```tsx
|
|
71
|
+
import DesignNav from '../components/DesignNav'
|
|
72
|
+
|
|
73
|
+
const designs = [
|
|
74
|
+
{ id: 1, name: 'Glassmorphism' },
|
|
75
|
+
{ id: 2, name: 'Dark Premium' },
|
|
76
|
+
// ... all designs
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
export default function Design1() {
|
|
80
|
+
return (
|
|
81
|
+
<div>
|
|
82
|
+
{/* Design content */}
|
|
83
|
+
<DesignNav designs={designs} variant="glass" />
|
|
84
|
+
</div>
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Variant selection:
|
|
90
|
+
- `variant="light"` for light-themed designs
|
|
91
|
+
- `variant="dark"` for dark-themed designs
|
|
92
|
+
- `variant="glass"` for glassmorphism or translucent designs
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "banner-and-tagline",
|
|
4
|
+
"prompt": "Generate 3 design variations for my SaaS landing page",
|
|
5
|
+
"assertions": [
|
|
6
|
+
{ "type": "contains", "value": "██" },
|
|
7
|
+
{ "type": "regex", "value": "(Heating up|Fractioning the|Condensing pure|Separating signal|Extracting the|Refining through|variations of brilliance|crude concept to pure)" },
|
|
8
|
+
{ "type": "semantic", "value": "The response begins with an ASCII art banner displayed BEFORE any explanation or workflow steps" }
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "tech-stack",
|
|
13
|
+
"prompt": "Create 5 different designs for a portfolio website --port 5173",
|
|
14
|
+
"assertions": [
|
|
15
|
+
{ "type": "contains", "value": "██" },
|
|
16
|
+
{ "type": "regex", "value": "(Vite|React|Tailwind)", "flags": "i" },
|
|
17
|
+
{ "type": "semantic", "value": "Describes creating a project with Vite, React, TypeScript, and Tailwind CSS, producing multiple distinct design variations accessible at numbered routes like /1, /2, /3" }
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "spec-handling",
|
|
22
|
+
"prompt": "Distil 4 --spec ./site-brief.md --port 3000",
|
|
23
|
+
"assertions": [
|
|
24
|
+
{ "type": "contains", "value": "██" },
|
|
25
|
+
{ "type": "semantic", "value": "Describes reading a site specification from the provided file path and creating 4 unique design variations, with a dev server running on the specified port" }
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
]
|