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.
Files changed (44) hide show
  1. package/AGENTS.md +131 -0
  2. package/architecture.md +102 -0
  3. package/data/ui-ux-pro-max/app-interface.csv +31 -0
  4. package/data/ui-ux-pro-max/charts.csv +26 -0
  5. package/data/ui-ux-pro-max/colors.csv +162 -0
  6. package/data/ui-ux-pro-max/design.csv +1776 -0
  7. package/data/ui-ux-pro-max/draft.csv +1779 -0
  8. package/data/ui-ux-pro-max/google-fonts.csv +1924 -0
  9. package/data/ui-ux-pro-max/icons.csv +106 -0
  10. package/data/ui-ux-pro-max/landing.csv +35 -0
  11. package/data/ui-ux-pro-max/products.csv +162 -0
  12. package/data/ui-ux-pro-max/react-performance.csv +45 -0
  13. package/data/ui-ux-pro-max/stacks/angular.csv +51 -0
  14. package/data/ui-ux-pro-max/stacks/astro.csv +54 -0
  15. package/data/ui-ux-pro-max/stacks/flutter.csv +53 -0
  16. package/data/ui-ux-pro-max/stacks/html-tailwind.csv +56 -0
  17. package/data/ui-ux-pro-max/stacks/jetpack-compose.csv +53 -0
  18. package/data/ui-ux-pro-max/stacks/laravel.csv +51 -0
  19. package/data/ui-ux-pro-max/stacks/nextjs.csv +53 -0
  20. package/data/ui-ux-pro-max/stacks/nuxt-ui.csv +51 -0
  21. package/data/ui-ux-pro-max/stacks/nuxtjs.csv +59 -0
  22. package/data/ui-ux-pro-max/stacks/react-native.csv +52 -0
  23. package/data/ui-ux-pro-max/stacks/react.csv +54 -0
  24. package/data/ui-ux-pro-max/stacks/shadcn.csv +61 -0
  25. package/data/ui-ux-pro-max/stacks/svelte.csv +54 -0
  26. package/data/ui-ux-pro-max/stacks/swiftui.csv +51 -0
  27. package/data/ui-ux-pro-max/stacks/threejs.csv +54 -0
  28. package/data/ui-ux-pro-max/stacks/vue.csv +50 -0
  29. package/data/ui-ux-pro-max/styles.csv +85 -0
  30. package/data/ui-ux-pro-max/typography.csv +74 -0
  31. package/data/ui-ux-pro-max/ui-reasoning.csv +162 -0
  32. package/data/ui-ux-pro-max/ux-guidelines.csv +100 -0
  33. package/docs/config.yml.example +24 -0
  34. package/docs/extension-api.md +93 -0
  35. package/docs/mcp-setup.md +76 -0
  36. package/docs/mcp.json.example +37 -0
  37. package/docs/problems.md +97 -0
  38. package/extensions/designer.ts +186 -0
  39. package/package.json +41 -0
  40. package/skills/animate.md +219 -0
  41. package/skills/designer-master.md +179 -0
  42. package/skills/review-skill.md +50 -0
  43. package/skills/taste-skill.md +981 -0
  44. 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
+ ```