omp-designer 2.0.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.
- package/AGENTS.md +131 -0
- package/architecture.md +102 -0
- package/data/ui-ux-pro-max/app-interface.csv +31 -0
- package/data/ui-ux-pro-max/charts.csv +26 -0
- package/data/ui-ux-pro-max/colors.csv +162 -0
- package/data/ui-ux-pro-max/design.csv +1776 -0
- package/data/ui-ux-pro-max/draft.csv +1779 -0
- package/data/ui-ux-pro-max/google-fonts.csv +1924 -0
- package/data/ui-ux-pro-max/icons.csv +106 -0
- package/data/ui-ux-pro-max/landing.csv +35 -0
- package/data/ui-ux-pro-max/products.csv +162 -0
- package/data/ui-ux-pro-max/react-performance.csv +45 -0
- package/data/ui-ux-pro-max/stacks/angular.csv +51 -0
- package/data/ui-ux-pro-max/stacks/astro.csv +54 -0
- package/data/ui-ux-pro-max/stacks/flutter.csv +53 -0
- package/data/ui-ux-pro-max/stacks/html-tailwind.csv +56 -0
- package/data/ui-ux-pro-max/stacks/jetpack-compose.csv +53 -0
- package/data/ui-ux-pro-max/stacks/laravel.csv +51 -0
- package/data/ui-ux-pro-max/stacks/nextjs.csv +53 -0
- package/data/ui-ux-pro-max/stacks/nuxt-ui.csv +51 -0
- package/data/ui-ux-pro-max/stacks/nuxtjs.csv +59 -0
- package/data/ui-ux-pro-max/stacks/react-native.csv +52 -0
- package/data/ui-ux-pro-max/stacks/react.csv +54 -0
- package/data/ui-ux-pro-max/stacks/shadcn.csv +61 -0
- package/data/ui-ux-pro-max/stacks/svelte.csv +54 -0
- package/data/ui-ux-pro-max/stacks/swiftui.csv +51 -0
- package/data/ui-ux-pro-max/stacks/threejs.csv +54 -0
- package/data/ui-ux-pro-max/stacks/vue.csv +50 -0
- package/data/ui-ux-pro-max/styles.csv +85 -0
- package/data/ui-ux-pro-max/typography.csv +74 -0
- package/data/ui-ux-pro-max/ui-reasoning.csv +162 -0
- package/data/ui-ux-pro-max/ux-guidelines.csv +100 -0
- package/docs/config.yml.example +24 -0
- package/docs/extension-api.md +93 -0
- package/docs/mcp-setup.md +76 -0
- package/docs/mcp.json.example +37 -0
- package/docs/problems.md +97 -0
- package/extensions/designer.ts +186 -0
- package/package.json +41 -0
- package/skills/animate.md +219 -0
- package/skills/designer-master.md +179 -0
- package/skills/review-skill.md +50 -0
- package/skills/taste-skill.md +981 -0
- package/skills/ui-ux-pro-max.md +50 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: animate
|
|
3
|
+
description: Animation patterns and best practices for Next.js/React applications. Use this skill when implementing animations, transitions, hover effects, page transitions, modals, or any motion in React components. Based on Emil Kowalski's "Animations on the Web" course.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Next.js Animations
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This skill provides comprehensive guidance for implementing smooth, performant, and accessible animations in Next.js and React applications. It covers CSS animations, Framer Motion, easing principles, and accessibility considerations.
|
|
11
|
+
|
|
12
|
+
## Quick Reference
|
|
13
|
+
|
|
14
|
+
### Easing Cheat Sheet
|
|
15
|
+
|
|
16
|
+
| Animation Type | Easing | Duration |
|
|
17
|
+
|----------------|--------|----------|
|
|
18
|
+
| Element entering | `ease-out` | 200-300ms |
|
|
19
|
+
| Element moving on screen | `ease-in-out` | 200-300ms |
|
|
20
|
+
| Element exiting | `ease-in` | 150-200ms |
|
|
21
|
+
| Hover effects | `ease` | 150ms |
|
|
22
|
+
| Opacity only | `linear` | varies |
|
|
23
|
+
|
|
24
|
+
### CSS Custom Properties (Recommended)
|
|
25
|
+
|
|
26
|
+
```css
|
|
27
|
+
:root {
|
|
28
|
+
--ease-out-quint: cubic-bezier(.23, 1, .32, 1);
|
|
29
|
+
--ease-in-out-cubic: cubic-bezier(.645, .045, .355, 1);
|
|
30
|
+
--ease-out-cubic: cubic-bezier(.33, 1, .68, 1);
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Common Animation Patterns
|
|
35
|
+
|
|
36
|
+
### 1. Hover Lift Effect
|
|
37
|
+
|
|
38
|
+
```css
|
|
39
|
+
.card {
|
|
40
|
+
transition: transform 200ms var(--ease-out-quint),
|
|
41
|
+
box-shadow 200ms var(--ease-out-quint);
|
|
42
|
+
}
|
|
43
|
+
.card:hover {
|
|
44
|
+
transform: translateY(-4px);
|
|
45
|
+
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15);
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2. Button Press
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
.button {
|
|
53
|
+
transition: transform 100ms ease-out;
|
|
54
|
+
}
|
|
55
|
+
.button:active {
|
|
56
|
+
transform: scale(0.97);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. Fade In on Mount (Framer Motion)
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
<motion.div
|
|
64
|
+
initial={{ opacity: 0, y: 20 }}
|
|
65
|
+
animate={{ opacity: 1, y: 0 }}
|
|
66
|
+
transition={{ duration: 0.3, ease: [.23, 1, .32, 1] }}
|
|
67
|
+
>
|
|
68
|
+
Content
|
|
69
|
+
</motion.div>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 4. Modal with Exit Animation
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
<AnimatePresence>
|
|
76
|
+
{isOpen && (
|
|
77
|
+
<motion.div
|
|
78
|
+
initial={{ opacity: 0, scale: 0.95 }}
|
|
79
|
+
animate={{ opacity: 1, scale: 1 }}
|
|
80
|
+
exit={{ opacity: 0, scale: 0.95 }}
|
|
81
|
+
transition={{ duration: 0.2, ease: "easeOut" }}
|
|
82
|
+
>
|
|
83
|
+
{children}
|
|
84
|
+
</motion.div>
|
|
85
|
+
)}
|
|
86
|
+
</AnimatePresence>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 5. Tab Indicator (Shared Layout)
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
{tabs.map(tab => (
|
|
93
|
+
<button key={tab} onClick={() => setActive(tab)} className="relative px-4 py-2">
|
|
94
|
+
{tab}
|
|
95
|
+
{active === tab && (
|
|
96
|
+
<motion.div
|
|
97
|
+
layoutId="tab-indicator"
|
|
98
|
+
className="absolute inset-0 bg-blue-500 rounded -z-10"
|
|
99
|
+
transition={{ type: "spring", stiffness: 400, damping: 30 }}
|
|
100
|
+
/>
|
|
101
|
+
)}
|
|
102
|
+
</button>
|
|
103
|
+
))}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 6. Staggered List Animation
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
const container = {
|
|
110
|
+
hidden: { opacity: 0 },
|
|
111
|
+
visible: {
|
|
112
|
+
opacity: 1,
|
|
113
|
+
transition: { staggerChildren: 0.1 }
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const item = {
|
|
118
|
+
hidden: { opacity: 0, y: 20 },
|
|
119
|
+
visible: { opacity: 1, y: 0 }
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
<motion.ul variants={container} initial="hidden" animate="visible">
|
|
123
|
+
{items.map(i => <motion.li key={i} variants={item}>{i}</motion.li>)}
|
|
124
|
+
</motion.ul>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Golden Rules
|
|
128
|
+
|
|
129
|
+
1. **Exits faster than enters**: Exit animations should be ~75% of enter duration
|
|
130
|
+
2. **Only animate transform and opacity**: These are GPU-accelerated
|
|
131
|
+
3. **200-300ms is the sweet spot**: Most animations should be in this range
|
|
132
|
+
4. **Always respect prefers-reduced-motion**: See accessibility section in references
|
|
133
|
+
5. **Use springs for interruptible animations**: Better UX when users interrupt
|
|
134
|
+
|
|
135
|
+
## Examples
|
|
136
|
+
|
|
137
|
+
Complete working examples from the course are in the `examples/` directory:
|
|
138
|
+
|
|
139
|
+
| Example | Description | Key Techniques |
|
|
140
|
+
|---------|-------------|----------------|
|
|
141
|
+
| `card-hover.tsx` | Slide-up description on hover | CSS transitions, transform, opacity |
|
|
142
|
+
| `toast-stacking.tsx` | Animated toast notifications | CSS custom properties, data-* triggers |
|
|
143
|
+
| `text-reveal.tsx` | Staggered letter animation | @keyframes, animation-delay, calc() |
|
|
144
|
+
| `shared-layout.tsx` | Element position/size morph | Framer Motion layoutId |
|
|
145
|
+
| `animate-height.tsx` | Smooth height changes | useMeasure, animate height |
|
|
146
|
+
| `multi-step-flow.tsx` | Directional step wizard | AnimatePresence, custom variants |
|
|
147
|
+
| `feedback-popover.tsx` | Button-to-popover expansion | Nested layoutId, form states |
|
|
148
|
+
| `app-store-card.tsx` | iOS-style card expansion | Multiple layoutId elements |
|
|
149
|
+
|
|
150
|
+
To use an example, read it with: `Read examples/<name>.tsx`
|
|
151
|
+
|
|
152
|
+
## References
|
|
153
|
+
|
|
154
|
+
For detailed documentation, read the reference files:
|
|
155
|
+
|
|
156
|
+
- `references/easing-and-timing.md` - Easing functions, timing guidelines, spring configuration
|
|
157
|
+
- `references/css-animations.md` - Transforms, transitions, keyframes, clip-path
|
|
158
|
+
- `references/framer-motion.md` - Motion components, AnimatePresence, variants, layout animations, hooks
|
|
159
|
+
- `references/performance-accessibility.md` - 60fps optimization, prefers-reduced-motion, accessibility
|
|
160
|
+
|
|
161
|
+
## When to Use What
|
|
162
|
+
|
|
163
|
+
| Scenario | Recommended Approach |
|
|
164
|
+
|----------|---------------------|
|
|
165
|
+
| Simple hover effects | CSS transitions |
|
|
166
|
+
| Enter/exit animations | Motion v12 + AnimatePresence |
|
|
167
|
+
| Layout changes | Motion `layout` prop |
|
|
168
|
+
| Shared element transitions | Motion `layoutId` |
|
|
169
|
+
| Scroll-linked animations | Motion `scroll()` (native ScrollTimeline) |
|
|
170
|
+
| Complex orchestrated animations | Motion variants |
|
|
171
|
+
| Drag interactions | Motion drag gestures |
|
|
172
|
+
| Scroll-pin / horizontal-pan | GSAP ScrollTrigger (for advanced scrub/pin) |
|
|
173
|
+
| Performance-critical | CSS-only with transforms |
|
|
174
|
+
## Dependencies
|
|
175
|
+
|
|
176
|
+
For Motion v12 (preferred):
|
|
177
|
+
```bash
|
|
178
|
+
npm install motion
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
For legacy Framer Motion projects:
|
|
182
|
+
```bash
|
|
183
|
+
pnpm add framer-motion react-use-measure usehooks-ts
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Motion v12 — Production-Grade Library (Preferred)
|
|
187
|
+
|
|
188
|
+
**motion.dev** (v12, prev. Framer Motion) is the recommended animation library.
|
|
189
|
+
All patterns above work with `motion/react` — same API (`motion.div`, `AnimatePresence`, `layoutId`, `useScroll`).
|
|
190
|
+
|
|
191
|
+
### 400+ Copy-Paste Examples
|
|
192
|
+
|
|
193
|
+
Browse https://examples.motion.dev/react before writing custom animation code.
|
|
194
|
+
|
|
195
|
+
| Pattern | Example URL |
|
|
196
|
+
|---------|-------------|
|
|
197
|
+
| Scroll velocity 3D planes | `examples.motion.dev/react/scroll-velocity-linked-offset` |
|
|
198
|
+
| Typewriter text | `examples.motion.dev/react/typewriter` |
|
|
199
|
+
| iOS-style folder expand | `examples.motion.dev/react/ios-app-folder` |
|
|
200
|
+
| iOS pointer animation | `examples.motion.dev/react/ios-pointer` |
|
|
201
|
+
| Skeleton shimmer | `examples.motion.dev/react/skeleton-shimmer` |
|
|
202
|
+
| Floating action button | `examples.motion.dev/react/floating-action-button` |
|
|
203
|
+
|
|
204
|
+
### API Differences from Framer Motion
|
|
205
|
+
|
|
206
|
+
| Feature | Framer Motion (old) | Motion v12 (new) |
|
|
207
|
+
|---------|--------------------|--------------------|
|
|
208
|
+
| Package | `framer-motion` | `motion` |
|
|
209
|
+
| React import | `import { motion } from "framer-motion"` | `import { motion } from "motion/react"` |
|
|
210
|
+
| Bundle size | ~31 KB gzipped | ~5 KB gzipped (tree-shaken) |
|
|
211
|
+
| Scroll-driven | `useScroll` | `scroll()` (native ScrollTimeline) |
|
|
212
|
+
| Independent transforms | wrappers needed | native `x`, `y`, `rotate`, `scale` on same element |
|
|
213
|
+
|
|
214
|
+
### Dependencies
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
npm install motion
|
|
218
|
+
# No peer deps. Replaces framer-motion entirely.
|
|
219
|
+
```
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: designer-master
|
|
3
|
+
description: "Orchestrator for UI/UX designer workflow. Coordinates Taste Skill, animate skill, UI UX Pro Max CSVs, 21st.dev MCP, ui-layouts MCP, designmd MCP, and chrome-devtools to produce production-ready designs."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
[DESIGNER MODE: ACTIVE]
|
|
7
|
+
|
|
8
|
+
You are in Designer Mode — UI/UX design only. No business logic. No backend code.
|
|
9
|
+
**This system works for ANY website type: landing pages, portfolios, dashboards, e-commerce, blogs, SaaS, editorial, event pages, etc. NOT limited to AI or tech projects.**
|
|
10
|
+
|
|
11
|
+
## CRITICAL CONTEXT RULES (read first)
|
|
12
|
+
|
|
13
|
+
### How omp context works
|
|
14
|
+
- `before_agent_start` fires on EVERY user message → PROMPT_INJECT re-injected every turn
|
|
15
|
+
- `resources_discover` fires every turn → ALL 5 skills re-injected
|
|
16
|
+
- **Designer mode context PERSISTS across turns** as long as you stay in designer mode
|
|
17
|
+
- Subagents are **NEW AI instances** — they get ZERO inherited context. No skills. No PROMPT_INJECT. Nothing.
|
|
18
|
+
- `local://` plan files persist across turns — use them for handoff
|
|
19
|
+
- `resolve` tool keeps everything in ONE turn — no context loss
|
|
20
|
+
|
|
21
|
+
### Golden rules
|
|
22
|
+
1. **NEVER switch modes.** No `/plan`. No plan-mode. No read-only mode. Stay in DESIGNER MODE start to finish.
|
|
23
|
+
2. **Auto-detect new projects.** User says "create a website" → follow the 8-step workflow. User says "fix this button" → skip to Implement.
|
|
24
|
+
3. **Subagents get explicit tokens.** Pass every design value (colors, fonts, spacing, animation) in their `context`/`assignment`. They can NOT read your skills.
|
|
25
|
+
4. **Plan files in `local://`.** Write plan to `local://<project-name>-plan.md`. Read it back via `local://` URI.
|
|
26
|
+
5. **Plan approval via `resolve`.** Always use the `resolve` tool with `extra.title`. This keeps everything in the same turn — no context loss.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Workflow — READ SKILLS → MAKE PLAN → IMPLEMENT → REVIEW
|
|
31
|
+
|
|
32
|
+
This is the AUTHORITATIVE workflow. Follow these 8 steps in order. Do NOT skip any.
|
|
33
|
+
You MUST open and READ each referenced SKILL.md before acting on its content.
|
|
34
|
+
|
|
35
|
+
### Step 1: Assess
|
|
36
|
+
Ask 0-1 clarifying questions: project type, vibe, tech stack, audience — ONLY if genuinely ambiguous.
|
|
37
|
+
Use the `ask` tool with structured multiple-choice options.
|
|
38
|
+
If you can infer from context, declare a design read and proceed.
|
|
39
|
+
Write the design read as: "Reading this as: <page kind> for <audience>, with a <vibe> language, leaning toward <design system or aesthetic family>."
|
|
40
|
+
|
|
41
|
+
### Step 2: Read Skills (LAZY — sections only, not full files)
|
|
42
|
+
|
|
43
|
+
**Read these sections NOW (required before Plan):**
|
|
44
|
+
- READ designer-master/SKILL.md full (this file, 169 lines) — the workflow itself
|
|
45
|
+
- READ taste-skill/SKILL.md Section 0 (design read): :1-40 + Section 1 (dials): :42-78
|
|
46
|
+
- READ animate/SKILL.md: Easing Cheat Sheet + Golden Rules + Motion v12 (:1-34, :128-160, :181-214)
|
|
47
|
+
|
|
48
|
+
**CSV data — GREP first, never read full files:**
|
|
49
|
+
CSV root: <CSV_DATA_ROOT> (path injected by the designer extension — check the injected system prompt for the exact path)
|
|
50
|
+
- Palette: `grep -i "keyword" <csvroot>/design.csv` or `colors.csv` → read only matching rows
|
|
51
|
+
- Fonts: `grep -i "keyword" <csvroot>/typography.csv` → read only matching rows
|
|
52
|
+
- NEVER `read design.csv` without line range — 1775 lines of waste.
|
|
53
|
+
|
|
54
|
+
**Read these sections ON-DEMAND during implementation:**
|
|
55
|
+
- taste-skill Section 4 (color, layout, typography rules): :185-350 → read when choosing palette/fonts
|
|
56
|
+
- taste-skill Section 5 (animation skeletons GSAP): :352-470 → read when building scroll animations
|
|
57
|
+
- taste-skill Section 9 (AI Tells): :595-800 → read during review
|
|
58
|
+
- taste-skill Section 14 (pre-flight): :910-980 → read during review
|
|
59
|
+
- ui-ux-pro-max SKILL.md: skip entirely. CSVs have the data; the SKILL.md is 659 lines of reference.
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
**IMPORTANT:** Do NOT read the full taste-skill (1207 lines) upfront. Read sections on-demand.
|
|
63
|
+
The 3-dial table + design read = ~40 lines total to start. Everything else is pulled when needed.
|
|
64
|
+
### Step 3: Search Design MCPs + Reference Sources
|
|
65
|
+
|
|
66
|
+
First, discover tools:
|
|
67
|
+
→ search_tool_bm25("ui-layouts 21st-dev") // designmd is optional (needs API key)
|
|
68
|
+
→ search_tool_bm25("chrome-devtools") // for Step 7 review
|
|
69
|
+
|
|
70
|
+
**designmd MCP — OPTIONAL (requires API key from https://designmd.ai/api-keys):**
|
|
71
|
+
If available: search_design_systems, download_design_system for layout/component references.
|
|
72
|
+
If NOT available (no key, MCP fails silently): skip. Fallback: `read` brand DESIGN.md from
|
|
73
|
+
https://github.com/voltagent/awesome-design-md/tree/main/design-md (73+ real brand analyses).
|
|
74
|
+
Colors/fonts from designmd are NEVER authoritative — ui-ux-pro-max CSVs always win.
|
|
75
|
+
|
|
76
|
+
**@ui-layouts/mcp — Real React/TSX Source Code (use SHORT queries!):**
|
|
77
|
+
- search_components with SHORT 1-2 word queries: "hero", "bento", "pricing", "faq", "features", "glass", "scroll"
|
|
78
|
+
- NEVER use long queries like "hero section feature bento grid cards" → returns 0 results
|
|
79
|
+
- If short query fails, try even shorter or browse the component list
|
|
80
|
+
- get_component_source_code — REAL .tsx, prefer over writing from scratch
|
|
81
|
+
→ 60+ components + 100+ blocks (hero-section, feature, about, pricing, FAQ, CTA…)
|
|
82
|
+
|
|
83
|
+
**21st-dev-magic — Component Patterns + Logos:**
|
|
84
|
+
- 21st_magic_component_inspiration — SHORT queries: "hero animation", "bento grid", "scroll reveal"
|
|
85
|
+
- logo_search — SVG logos (NOT 21st_magic_logo_search)
|
|
86
|
+
- 21st_magic_component_refiner — polish components after they exist
|
|
87
|
+
- NEVER 21st_magic_component_builder (always times out)
|
|
88
|
+
|
|
89
|
+
**chrome-devtools — Review only (Step 7).** Not for implementation.
|
|
90
|
+
|
|
91
|
+
**motion.dev — Animation Examples:**
|
|
92
|
+
- Read specific example URLs, not the index: https://examples.motion.dev/react/<pattern-name>
|
|
93
|
+
- Useful patterns: scroll-velocity-linked-offset, typewriter, ios-app-folder, floating-action-button, skeleton-shimmer
|
|
94
|
+
- Note exact URLs in the plan for subagents to reference
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
**Fallback if MCP servers fail or are unavailable:**
|
|
98
|
+
- designmd MCP down/403? Skip it. Use `read` on https://github.com/voltagent/awesome-design-md for brand DESIGN.md references.
|
|
99
|
+
- ui-layouts MCP unavailable? Fall back to 21st-dev-magic + hand-crafted components.
|
|
100
|
+
- 21st-dev MCP unavailable? Skip pattern search, use ui-layouts or design from scratch.
|
|
101
|
+
- chrome-devtools unavailable? Skip headless browsing, verify via build + manual review.
|
|
102
|
+
- Never block on a single MCP. One missing server is not a blocker.
|
|
103
|
+
|
|
104
|
+
### Step 4: Create Design Plan FROM Skills
|
|
105
|
+
Before any code, write a plan to `local://<project-name>-plan.md`:
|
|
106
|
+
- Set DESIGN_VARIANCE / MOTION_INTENSITY / VISUAL_DENSITY dials FROM taste-skill
|
|
107
|
+
- Choose color palette FROM ui-ux-pro-max CSV data (`src/ui-ux-pro-max/data/design.csv` or `draft.csv`)
|
|
108
|
+
- Choose font pairing FROM ui-ux-pro-max `typography.csv`
|
|
109
|
+
- Set animation patterns (easing, durations, spring physics) FROM animate skill
|
|
110
|
+
- Write EXACT tokens: hex colors, font names, spacing values, animation params
|
|
111
|
+
- IGNORE any colors/fonts in user briefs or existing plans. Only ui-ux-pro-max data is authoritative.
|
|
112
|
+
- Choose color palette FROM ui-ux-pro-max CSV data (from ~/.omp/agent/managed-skills/ui-ux-pro-max-skill/src/ui-ux-pro-max/data/design.csv or draft.csv or colors.csv)
|
|
113
|
+
|
|
114
|
+
### Step 5: Present Plan to User
|
|
115
|
+
Show exact palette + tokens + dial values. Get approval via `resolve` tool.
|
|
116
|
+
Keep `resolve` in the same turn — do NOT yield or wait for a new conversation.
|
|
117
|
+
|
|
118
|
+
### Step 6: Implement
|
|
119
|
+
Build all components following the approved plan.
|
|
120
|
+
|
|
121
|
+
**Visual assets — AI decides what's needed (follow taste-skill Section 4.8):**
|
|
122
|
+
- `generate_image` for key visuals (hero photography, product shots, texture backgrounds).
|
|
123
|
+
Ideal for unique, themed assets. Not for everything — 1-3 images across the whole page.
|
|
124
|
+
- `logo_search` for SVG logos / brand marks (21st.dev).
|
|
125
|
+
- `21st_magic_component_refiner` to polish components after they're built.
|
|
126
|
+
- External images (picsum.photos / Unsplash) only when generation isn't needed or practical.
|
|
127
|
+
- **Verify external URLs before embedding**: `curl -sI <url> | grep "HTTP/2 200\|HTTP/1.1 200"`. Dead images = broken design. Replace 404s.
|
|
128
|
+
- Custom SVGs from `@tabler/icons-react` or similar for icons.
|
|
129
|
+
- **Animation code: check motion.dev examples first** (https://examples.motion.dev/react).
|
|
130
|
+
400+ copy-paste patterns. Reference exact example URLs in subagent contexts.
|
|
131
|
+
Prefer motion/react v12 (prev. Framer Motion) — smaller API, hardware-accelerated.
|
|
132
|
+
|
|
133
|
+
**When using subagents (recommended for parallel work):**
|
|
134
|
+
- Subagents have NO skills and NO PROMPT_INJECT. They only know what you pass them.
|
|
135
|
+
- Subagents cannot `npm install`. If they need a package, INSTALL IT YOURSELF first before spawning them.
|
|
136
|
+
### Step 7: Review
|
|
137
|
+
|
|
138
|
+
**1 — Build test:**
|
|
139
|
+
- Run `npm run build` directly (TypeScript is checked as part of build — no separate `tsc`)
|
|
140
|
+
- ❌ Build fails → fix, rebuild, repeat (not counted as a review cycle)
|
|
141
|
+
|
|
142
|
+
**2 — Dev server + Browser:**
|
|
143
|
+
- Start dev server. Wait for `http://localhost:3000`.
|
|
144
|
+
- Use `chrome-devtools` MCP (headless): navigate, screenshot (1280px + 375px), console, a11y snapshot
|
|
145
|
+
- ❌ Console error → fix. ⚠️ warnings → report.
|
|
146
|
+
- ❌ Missing `<h1>` or empty `main` → fix.
|
|
147
|
+
|
|
148
|
+
**3 — Quality gates (batch in ONE call):**
|
|
149
|
+
- `grep -rn '—\|#667eea\|#764ba2\|#1a1a2e\|#16213e\|#f0f0ff' src/` → ❌ any hit → fix
|
|
150
|
+
- `npx -y impeccable detect src/` — skip if unavailable
|
|
151
|
+
- Copy Audit: em-dashes, AI filler words, fake precision numbers
|
|
152
|
+
|
|
153
|
+
**4 — Pre-Flight Checklist:**
|
|
154
|
+
- Run taste-skill Section 14 (50+ item matrix). NOT optional.
|
|
155
|
+
- Batch the checks — one bash call with multiple greps + counts, not 30 individual searches.
|
|
156
|
+
|
|
157
|
+
**5 — Auto-fix loop:**
|
|
158
|
+
- Max 3 review cycles. After 3, report remaining issues.
|
|
159
|
+
- Build/dev-server failure: fix root error, restart from cycle 1 — doesn't count as a cycle.
|
|
160
|
+
|
|
161
|
+
**Report format:**
|
|
162
|
+
```
|
|
163
|
+
=== REVIEW {N}/3 ===
|
|
164
|
+
BUILD: ✅ | ❌ ...
|
|
165
|
+
CONSOLE: ✅ | ⚠️ N warn | ❌ N err
|
|
166
|
+
A11Y: ✅ | ⚠️ ... | ❌ ...
|
|
167
|
+
COLORS: ✅ | ❌ slop hexes found
|
|
168
|
+
PRE-FLIGHT: ✅ | ❌ N items failed
|
|
169
|
+
ISSUES FIXED: N | REMAINING: N
|
|
170
|
+
```
|
|
171
|
+
### Step 8: Present Results
|
|
172
|
+
Zeige Screenshots, Report, Fixes. Was wurde geändert + vorher/nachher.
|
|
173
|
+
|
|
174
|
+
## Rules
|
|
175
|
+
- **Search first, then generate.** Never create a component without checking 21st.dev first.
|
|
176
|
+
- **One design direction per project.** Don't mix vibes.
|
|
177
|
+
- **Spacing is sacred.** Stick to the 4px grid.
|
|
178
|
+
- **Return:** what you changed + before/after description.
|
|
179
|
+
- **Audit your own output:** Before declaring done, re-read every visible string on the page. Flag AI-sounding copy, broken grammar, fake-precise numbers.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-review
|
|
3
|
+
description: "Post-implementation quality check: build, console, a11y. Functional only — does not judge visual quality. Max 3 fix cycles."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Design Review
|
|
7
|
+
|
|
8
|
+
Execute after implementation. Run these checks, fix critical issues, loop max 3x.
|
|
9
|
+
|
|
10
|
+
## 1 — Build test
|
|
11
|
+
- Read `package.json` scripts. Run the build command (`npm run build`, `yarn build`, etc.).
|
|
12
|
+
- ❌ Build fails → fix, rebuild, repeat (not counted as a review cycle)
|
|
13
|
+
|
|
14
|
+
## 2 — Dev server + Chrome
|
|
15
|
+
- Start dev server (`npm run dev` / etc.). Wait for `http://localhost:3000`.
|
|
16
|
+
- Use `chrome-devtools` MCP (headless, no window):
|
|
17
|
+
- `mcp__navigate_page` → open the URL
|
|
18
|
+
- `mcp__take_screenshot` → desktop viewport
|
|
19
|
+
- `mcp__list_console_messages` → check for errors
|
|
20
|
+
- `mcp__take_snapshot` → check headings, landmarks, aria
|
|
21
|
+
|
|
22
|
+
## 3 — Quality gates
|
|
23
|
+
- Console: ❌ any error → fix. ⚠️ warnings → report.
|
|
24
|
+
- A11y: ❌ missing `<h1>` or empty `main` → fix.
|
|
25
|
+
- A11y: ⚠️ missing landmarks, aria-labels → report.
|
|
26
|
+
- Colors + em-dashes: run in ONE batch call:
|
|
27
|
+
`grep -rn '—\|#667eea\|#764ba2\|#1a1a2e\|#16213e\|#f0f0ff' src/` → ❌ any hit → fix.
|
|
28
|
+
|
|
29
|
+
## 3.5 — Anti-Slop Detector (optional but recommended)
|
|
30
|
+
- Run: `npx -y impeccable detect src/` — 44 deterministic rules, no LLM
|
|
31
|
+
- Catches: gradient-text, side-stripe-border, ai-color-palette, em-dashes, fake numbers
|
|
32
|
+
- ❌ any rule fails → fix before proceeding
|
|
33
|
+
- If `impeccable` is not available: skip with note. Fall back to:
|
|
34
|
+
- `grep -rn '—' src/` → em-dashes → replace
|
|
35
|
+
- `grep -rn 'gradient\|glow\|#667eea\|#764ba2\|#1a1a2e' src/` → slop
|
|
36
|
+
|
|
37
|
+
## 4 — Auto-fix
|
|
38
|
+
- Critical issues (build fail, console error, missing h1): fix immediately, then restart review.
|
|
39
|
+
- Max 3 review cycles. After 3, report remaining issues.
|
|
40
|
+
|
|
41
|
+
## 5 — Report format
|
|
42
|
+
```
|
|
43
|
+
=== REVIEW {N}/3 ===
|
|
44
|
+
BUILD: ✅ | ❌ ...
|
|
45
|
+
CONSOLE: ✅ | ⚠️ N warn | ❌ N err
|
|
46
|
+
A11Y: ✅ | ⚠️ ... | ❌ ...
|
|
47
|
+
COLORS: ✅ | ❌ slop hexes found
|
|
48
|
+
ISSUES FIXED: N
|
|
49
|
+
REMAINING: N
|
|
50
|
+
```
|