Imported from PiyushMalik01/North (
.claude/skills/moodforge/SKILL.md). Install upstream withnpx skills add PiyushMalik01/North --skill moodforge. Copyright stays with the author.
moodforge · Reusable Visual Design Pipeline
A complete, stateful design pipeline for any product. Seven steps. Same shape every time. Per-project state file so future sessions resume without re-asking. Every motion decision governed by emil-design-eng and powered by GSAP. Every component maps to shadcn/ui primitives. Every visual artifact appears in the user's browser automatically.
→ This is a coordinator skill. It tells the agent which sub-skills to load at each step. Do not load all 36 skills at once - follow the Skill toolkit by step table.
Installation
npx moodforge
One question (global or project), then the full stack downloads automatically:
| Skill | What it is |
|---|---|
moodforge |
This skill - the 7-step design pipeline coordinator |
pbakaus/impeccable |
23 quality + craft skills (bolder, delight, audit, polish, arrange, typeset, colorize, harden, clarify, extract, optimize, critique, onboard, normalize, quieter, distill, overdrive, animate, adapt, shape, frontend-design, impeccable, teach-impeccable) |
emilkowalski/skill |
emil-design-eng - the canonical animation + UI craft playbook |
greensock/gsap-skills |
8 GSAP skills (gsap-core, gsap-timeline, gsap-scrolltrigger, gsap-plugins, gsap-performance, gsap-react, gsap-frameworks, gsap-utils) - production animation library for complex motion sequences, scroll-driven reveals, and timeline orchestration |
shadcn/ui |
shadcn - component architecture patterns, registry integration, and composable UI primitives that map to brand-kit tokens |
design-stack-coordinator |
Tells Claude how to orchestrate the stack |
| plugin checks | Auto-detects frontend-design, brainstorming, figma-use, figma-generate-library |
Other commands: npx moodforge add <owner/repo>, list, doctor. Zero npm dependencies.
When to load
Load on any of these signals:
- User says: "design", "mockup", "theme", "brand", "visual", "redesign", "make it look better", "I need it to look great", "build me a landing page", "design an app"
- User shares inspiration (Pinterest, Dribbble, screenshots, Downloads folder)
- User references a previous design round in the same project (read state.md, resume)
- Starting a visual project from scratch
- Refreshing an existing product's visual layer
The acting role
Act as a senior UI/UX designer who deeply understands the actual product. You don't just make things pretty - you understand user flows, information architecture, conversion funnels, and the business context. Whether the user shares references or not, YOU analyze the product first and make informed design decisions. Own the direction. Pick the bold option and defend it. After Step 1, commit to a single direction and iterate.
The 10 hard rules
- Never ship "normal and okay". Verbatim rejection signal. Always pair a creation skill with
bolder,overdrive, ordelight. - Understand the product first. Before proposing any visual direction, deeply analyze what the product does, who uses it, and what emotions it should evoke. You are a senior UI/UX designer, not a theme picker.
- Keep locked elements locked. Once user locks a mascot/color/font - non-negotiable. Check
state.mdbefore proposing alternatives. - Never re-propose a rejected direction. Verbatim rejections bind future sessions.
- Real data, not placeholders. Real merchants, real amounts, real timestamps. No "Lorem Ipsum". Say "Swiggy Instamart", not "Food".
- Save permanent artifacts. Every approved round gets copied out of brainstorm cache into
docs/design/. - Log every round in state.md. Skills loaded, concept, file path, user reaction, decisions locked.
- Always preview on localhost. Always auto-open the browser. Never ask permission. Execution detail in The visual companion below.
- All motion follows
emil-design-eng, powered by GSAP.emil-design-engdefines the rules; GSAP provides the tooling. CSS transitions for simple states; GSAP for complex choreography. No exceptions. - Read state.md first, every session. Resume from
Current phase. Never re-propose anything inRejected Directions. Never contradictLocked Decisions.
MOTION PHILOSOPHY
→ REQUIRED SUB-SKILL: Use emil-design-eng for any step that touches motion. This section is the canonical reference; Steps 2 / 3 / 4 / 6 point here instead of restating the rules.
The four-question framework
Every animation answers these in order:
1 - Should this animate at all?
| Frequency the user sees it | Decision |
|---|---|
| 100+ times/day (keyboard shortcuts, command palette) | No animation. Ever. |
| Tens of times/day (hover, list nav) | Reduce to ≤120ms or remove |
| Occasional (modal, drawer, toast) | Standard animation |
| Rare / first-time (onboarding, success celebration) | Add delight |
Keyboard-initiated actions never animate.
2 - Why does this animate? Must have one of: spatial consistency · state indication · feedback · preventing jarring change. "It looks cool" is not on the list.
3 - What easing?
| Movement | Easing |
|---|---|
| Element entering / exiting | cubic-bezier(0.23, 1, 0.32, 1) (strong ease-out) |
| Element moving on screen | cubic-bezier(0.77, 0, 0.175, 1) (strong ease-in-out) |
| Drawer / sheet (iOS feel) | cubic-bezier(0.32, 0.72, 0, 1) |
| Hover / color change | ease |
| Constant motion (marquee, progress) | linear |
Never use ease-in for UI - it delays initial movement, the exact moment the user is watching most closely.
4 - How fast?
| Element | Duration |
|---|---|
| Button press feedback | 100-160ms |
| Tooltips, small popovers | 125-200ms |
| Dropdowns, selects | 150-250ms |
| Modals, drawers | 200-500ms |
UI animations stay under 300ms.
The 10 hard motion rules
- Never animate from
scale(0). Start fromscale(0.95)+opacity: 0. - Buttons scale to
0.97on:active. Always. - Popovers scale from their trigger, not from center. Use
transform-origin: var(--radix-popover-content-transform-origin). Modals are exempt - they stay centered. - Exit animations are ~75% of enter duration. Faster out than in.
- CSS transitions, not keyframes, for any rapidly-triggered element. Transitions retarget mid-flight; keyframes restart from zero.
- Animate
transformandopacityonly. GPU-accelerated.width/height/padding/marginjank. - Respect
prefers-reduced-motion. Keep opacity, drop translation/scale. - Touch hover states must be gated behind
@media (hover: hover) and (pointer: fine). - No bounce, no elastic easing curves. Dated and distracting.
- Use
filter: blur(2px)to mask imperfect crossfades. Keep blur under 20px (Safari is expensive).
The Sonner principle
Animation should feel like it belongs to the brand. A serious dashboard gets crisp, fast easing. A playful brand can be slower with ease. Match the motion to the mood.
THE 7 STEPS
Every step has the same fields: Goal · Skills to load · References to read · What to produce · Acceptance · Log. Read top to bottom. Don't skip fields. Don't load skills outside the field.
Step 1 · Discovery & Design Direction
Goal: Deeply understand the product, gather or propose design references, then show 3-5 genuinely distinct design directions with full color schemes, typography, and patterns. User picks one.
This step has two phases that always both happen:
Phase 1A - Product Understanding (always runs): Whether the user shares references or not, YOU must first analyze the product as a senior UI/UX designer:
- What does the product do? Who uses it? What problem does it solve?
- What emotions should the interface evoke? (trust, speed, calm, excitement, professionalism)
- What are the key user flows? What screens are critical?
- What's the competitive landscape? What do similar products look like?
- What constraints exist? (platform, audience age, accessibility needs, brand guidelines)
Ask the user for references - but don't wait passively. Offer concrete options:
I'm analyzing your product. Before I propose directions - any references?
- URLs (Pinterest, Dribbble, Behance - paste them)
- Screenshots (drop filenames from
~/Downloads)- Apps you love ("make it feel like Linear meets Arc")
- A color/font/mood ("warm cream, editorial serif")
- A vibe word ("brutalist", "Swiss", "kinetic")
Or say "propose blind" - I'll design based on my product analysis.
Phase 1B - Design Directions (always runs after 1A): Based on your product analysis + any user references, show 3-5 directions.
Skills to load (in order):
- REQUIRED SUB-SKILL:
superpowers:brainstorming- starts the visual companion server on localhost - REQUIRED SUB-SKILL:
frontend-design- production HTML/CSS, anti-slop rules bolder- dramatic scale, extreme contrast, confident colordelight- personality, joy, unexpected touchesshape- UX planning, information architecturecritique- evaluate each direction against the product analysis- (optional)
overdrive- if the user wants "wow" / shaders / 60fps motion
References to read: → Consult references/01-theme-round-checklist.md, references/07-theme-round-layout.md, references/10-typography-pairing-recipes.md.
What to produce:
- ONE HTML file at
.superpowers/brainstorm/<session>/content/round1-directions.html - 3-5 phone or web mockups side-by-side, each in a genuinely different design language
- Per direction: evocative two-word name, one-sentence pitch, full color scheme (6-10 swatches with hex + role), typography system (display + body + mono + accent fonts at real sizes), layout pattern (how the product's key screen would look), one mini-screen preview
- A brief product analysis card at the top explaining your understanding of the product
Constraints:
- Directions must be actually different - different base color, different display font, different mood
- At least one safe (stakeholder-approvable), at least one ambitious (unforgettable)
- Every direction must make sense FOR THIS PRODUCT - not generic themes, but design systems that serve the product's purpose
- Match references the user has shown (if any)
Ask the user: "Open the browser, pick A/B/C/D/E. Reply with a letter, or tell me to combine pieces ('A's color + B's typography'), or say 'hate all, try [reference]'."
Acceptance:
- Product analysis completed (you understand the product deeply)
- 3-5 directions rendered at full visual fidelity (not wireframes)
- Each direction includes full color scheme, typography system, and layout pattern
- Browser auto-opened
- User has reacted: picked / rejected / wants-combination
Log to state.md: Product analysis summary, directions shown, which chosen, which rejected (verbatim words → Rejected Directions).
Step 2 · Screen Preview
Goal: Build 1-2 key screens in the chosen direction to validate the design before committing to a full system. Show the user what their product actually looks like.
This is the validation gate. The user sees their actual product in the chosen design language - not a showcase, not a brand book, but real screens with real layouts. If this doesn't look right, iterate here before investing in a full brand kit.
Skills to load:
- REQUIRED SUB-SKILL:
frontend-design typeset- font choice, sizing, scale, pairingcolorize- palette refinement, semantic rolesarrange- layout rhythm, grid breaksanimate- entrance choreography, hover states- REQUIRED SUB-SKILL:
emil-design-eng- every motion decision (see Motion Philosophy) delight- personalitygsap-scrolltrigger- scroll-driven section revealsgsap-timeline- sequenced entrance choreographyshadcn- component patterns for the preview screens
References to read: → Consult references/02-showcase-checklist.md, references/08-screen-grid-layout.md.
What to produce:
- ONE HTML file at
content/round2-<theme-name>-preview.html - 1-2 key screens of the actual product at full fidelity. Pick the most representative screens - usually the home/dashboard AND one detail/action screen.
- Real data in the screens (not Lorem ipsum)
- Full interactive states: hover, active, focus on all buttons and interactive elements
- The screens should feel like you could ship them tomorrow
Iteration loop: User says "looks good" → proceed. User says tweaks → push -v2, -v3. User says "wrong direction" → go back to Step 1 with the rejection logged.
Ask the user: "Here are your [home + transaction detail] screens in the [theme name] direction. Does this look good to you? If yes, I'll build the full brand kit and component system. If not, tell me what to change."
Acceptance:
- 1-2 real product screens rendered at full fidelity
- Screens use real data, not placeholders
- Interactive states work (hover, active, focus)
- User confirms the direction looks right
Log to state.md: Screens shown, user reaction, decisions locked or tweaks requested.
Step 3 · Brand Kit (when user asks or approves screen preview)
Goal: Turn the validated direction into a production-grade, multi-file brand kit with code-ready assets.
When to run: After user approves the screen preview and says "yes, build the brand kit" or "looks good, proceed". This is NOT automatic - wait for the user to ask or confirm.
Skills to load:
- REQUIRED SUB-SKILL:
frontend-design extract- pull reusable components/tokens into a design systemaudit- accessibility contrast matrix, WCAG AA verificationharden- edge cases, text overflow, i18nclarify- voice & tone rules, word-swap table, microcopy- REQUIRED SUB-SKILL:
emil-design-eng- mandatory for the 06 Motion section shadcn- component architecture for the 07 Components section. Map brand tokens to shadcn primitives (Button, Input, Dialog, Sheet, Toast) so engineers get drop-in composable components.gsap-core- GSAP token definitions for the 06 Motion section. Document GSAP equivalents alongside CSS tokens.
References to read: → Consult references/03-brand-kit-checklist.md for the multi-file directory structure and references/06-brand-kit-section-spine.md for the 11-section spine.
What to produce - multi-file directory at docs/design/brand-kit/:
docs/design/brand-kit/
├── index.html # Visual brand book - 11 sections (cover + manifesto + 01-09)
├── tokens.ts # TypeScript tokens (colors, type, spacing, radius, shadow, motion)
├── tokens.css # CSS custom properties
├── tokens.json # DTCG format for Style Dictionary / Figma plugins
├── README.md # Engineer-facing summary
└── assets/ # Logo SVGs, mascot states, icons
The 11 sections live in references/06-brand-kit-section-spine.md. The 06 Motion section shows the four-question framework with this brand's specific decisions, the three named easing tokens, the duration scale, and live demos (button press, tooltip, drawer, modal). Every demo respects prefers-reduced-motion. The 07 Components section maps every component to its shadcn/ui primitive with variant overrides and token bindings.
Constraints:
- WCAG contrast ratios computed for every text-on-background pair. Below 4.5:1 for body → ❌ + fix.
- Save permanently to
docs/design/brand-kit/.
Acceptance:
- All 11 sections rendered
-
tokens.ts/tokens.css/tokens.jsonall generated and consistent - No WCAG AA failures unfixed
- 06 Motion has live demos that respect
prefers-reduced-motion - 07 Components maps to shadcn/ui primitives
- User approves
Log to state.md: Brand kit version, files produced, a11y issues resolved.
Step 4 · Animation Review
Goal: Show the user the animation system for their product. Get approval on the type and feel of animations before building all screens.
When to run: After the brand kit is created. Before building all screens, the user needs to see and approve the motion language. Show GSAP-powered interactive demos so the user can feel every animation.
Skills to load:
- REQUIRED SUB-SKILL:
emil-design-eng- the motion rules animate- entrance choreography, hover patterns- REQUIRED SUB-SKILL:
frontend-design- production implementation gsap-core- GSAP foundation for complex animation demosgsap-timeline- timeline orchestration for sequenced demosgsap-scrolltrigger- scroll-driven animation triggersgsap-plugins- special effects (MorphSVG for easing visualization, Draggable for interactive demos)- (optional)
gsap-performance- if many live demos, ensure 60fps - (optional)
overdrive- for extraordinary motion
What to produce:
- ONE HTML file at
content/round4-animations.html - A motion gallery showing every animation type the product will use:
- Button states (press, hover, focus, disabled) - with GSAP timeline demos
- Entry animations (how elements appear on screen) - GSAP stagger reveals
- Scroll-driven animations (parallax, pin, reveal) - GSAP ScrollTrigger demos
- Component animations (modal open/close, drawer slide, toast stack, tooltip) - GSAP-powered
- Page transitions (how screens transition between each other)
- Easing curve plotter (interactive SVG showing the brand's easing curves)
- "Broken on purpose" gallery (wrong vs right animations side-by-side)
- Controls: Reduced motion toggle + Slow-mo (1x/2x/4x)
Ask the user: "Here's the animation system for your product. Click everything. Are these the type of animations you want? Should they be faster, slower, more subtle, more dramatic?"
Acceptance:
- All animation types demoed with GSAP
- Interactive easing curve plotter
- Reduced motion + slow-mo controls work
- Every demo uses brand-kit tokens
- User approves the animation style
Log to state.md: Animation style approved, any tweaks requested.
Step 5 · All Screens (one by one)
Goal: Design every screen of the product. Show each screen to the user individually for approval. Real data. No placeholders.
Skills to load:
- REQUIRED SUB-SKILL:
frontend-design arrange- consistent layout rhythmclarify- microcopy that sounds humanharden- empty states, loading, errors, edge casesonboard- first-run experiences- REQUIRED SUB-SKILL:
emil-design-eng- every interactive element follows Motion Philosophy shadcn- composable component patterns (Dialog, Sheet, Toast, Tabs)gsap-scrolltrigger- scroll-driven animationsgsap-timeline- sequenced entrance animationsadapt- responsive behavior across breakpoints
References to read: → Consult references/04-screens-checklist.md, references/08-screen-grid-layout.md.
Delivery: one screen at a time. Don't dump all screens at once. Build each screen, show the user, get approval, then move to the next. This keeps the user engaged and catches issues early.
Per screen:
- Build the screen at
content/round5-<screen-name>.html - Use real data - real merchants, real amounts, real timestamps, real names
- Include all states: default, loading (skeleton), empty, error, populated
- All interactive elements follow the approved animation system
- Show the user: "Here's the [screen name]. Does this look good?"
- User approves → move to next screen. User requests changes → iterate.
Screen order: Start with the most important screens first:
- Home / dashboard (the screen users see most)
- Primary action flow (the core thing users do)
- Detail screens (drill-downs, profiles, reports)
- Secondary screens (settings, notifications, onboarding)
- Edge cases (empty states, errors, loading, offline)
Save each approved screen permanently to docs/design/mockups/.
Acceptance (per screen):
- Screen rendered at full fidelity with real data
- All states designed (default, loading, empty, error)
- Every button has
:active scale(0.97) - Animations use GSAP + brand motion tokens
- User approves the screen
Log to state.md: Each screen as it's approved, with tweaks noted.
Step 6 · Production Output
Goal: Package everything into a final, production-ready deliverable. The user walks away with everything they need to build the product.
Skills to load:
- REQUIRED SUB-SKILL:
superpowers:writing-plans- actionable implementation plan critique- final UX review- REQUIRED SUB-SKILL:
emil-design-eng- Motion appendix verbatim superpowers:test-driven-development- implementation disciplinegsap-core+gsap-react+gsap-performance- GSAP appendixshadcn- Component appendixpolish- final quality passaudit- final accessibility check
What to produce:
1. Implementation spec at docs/superpowers/specs/YYYY-MM-DD-<theme>-implementation.md:
- Goal, Scope, Prerequisites (fonts, packages, assets)
- Phase 1: Foundations (tokens, shared components, navigation)
- Phase 2: Screens (in order of importance)
- Phase 3: Polish (animations, edge cases, a11y)
- Motion appendix - verbatim easing tokens, duration scale, 10 hard motion rules
- GSAP appendix - setup, timeline patterns, React cleanup, performance rules
- Component appendix - brand-kit to shadcn/ui mapping, variant overrides,
npx shadcn@latest addcommands - Acceptance criteria per phase
- Risks / rollback
2. Final asset bundle - verify all files are in place:
docs/design/
├── brand-kit/ # tokens.css, tokens.ts, tokens.json, index.html, README.md, assets/
├── mockups/ # Every approved screen HTML
└── specs/ # Implementation spec
3. (Optional) Figma Push - if mcp__figma* tools are detected and user wants it. Load figma:figma-use FIRST, then push brand kit + screens. See references/05-figma-push-guide.md.
Log to state.md: Spec file path, final screen count, handoff status.
STATE TRACKING
Every project has a state file at .claude/skills/moodforge/projects/<project-slug>.md.
→ Use templates/state-template.md as the scaffold. The file always has these sections in order:
| Section | Purpose |
|---|---|
| Frontmatter (last updated, current phase, status) | Quick session resume |
Current Direction |
Locked theme name + one-line summary, or "undecided" |
Locked Decisions |
Numbered non-negotiables (Hard Rule #3) |
Rejected Directions |
Verbatim user rejections (Hard Rule #4) |
Preserved |
Liked-but-not-picked directions, saved for later |
Open Questions |
What the current round needs to answer |
Rounds Log |
One entry per round: step, skills loaded, concept, file path, user reaction, outcome, decisions locked |
Permanent artifacts |
Files saved to docs/design/ |
Reading state: First action of every session. Resume from Current phase.
Writing state: After every round, append to Rounds Log and update other sections.
THE VISUAL COMPANION
Hard Rule #8 execution detail. The browser opens itself. Never ask permission.
Priority order:
-
If
superpowers:brainstormingis already running - check.superpowers/brainstorm/*/state/server-info. Write HTML into the existingcontent/directory; it serves newest-by-mtime. Send aBashopen http://localhost:<port>to focus the window. -
If brainstorming is installed but not running - invoke
superpowers:brainstormingto start it. It opens the browser automatically. -
If brainstorming is not available (CLI demo, standalone preview) - run
nohup node templates/preview-server.js path/to/preview.html > /tmp/preview.log 2>&1 &. Capture the URL from the log. Tell the user only "opened at " - never ask them to click anything. -
Always log the active preview URL to state.md under
## Preview serverso the next round can reuse it.
On subsequent rounds: Check .superpowers/brainstorm/*/state/server-info - if the server died (30-min idle timeout), restart it.
File naming in content/: round1-directions.html · round2-<theme>-preview.html (with -v2, -v3 for iterations) · round3-brand-kit.html (brainstorm copy; canonical at docs/design/brand-kit/) · round4-animations.html · round5-<screen-name>.html (one per screen). Never reuse filenames - server serves newest by mtime.
SKILL TOOLKIT BY STEP
Source of truth for "which skills do I load right now?" Don't load all 36 at once.
| Step | Mandatory | Mandatory adds | Optional |
|---|---|---|---|
| 1 Discovery | superpowers:brainstorming, frontend-design |
bolder, delight, shape, critique |
overdrive |
| 2 Preview | frontend-design, emil-design-eng |
typeset, colorize, arrange, animate, gsap-scrolltrigger, gsap-timeline, shadcn |
delight, quieter, distill |
| 3 Brand Kit | frontend-design, emil-design-eng |
extract, audit, harden, clarify, shadcn, gsap-core |
normalize, polish |
| 4 Animations | emil-design-eng, animate, frontend-design |
gsap-core, gsap-timeline, gsap-scrolltrigger, gsap-plugins |
overdrive, gsap-performance |
| 5 All Screens | frontend-design, emil-design-eng |
arrange, clarify, harden, onboard, shadcn, gsap-scrolltrigger, gsap-timeline |
delight, adapt |
| 6 Production | superpowers:writing-plans, critique, emil-design-eng |
superpowers:test-driven-development, gsap-core, gsap-react, gsap-performance, shadcn, polish, audit |
superpowers:executing-plans, superpowers:verification-before-completion |
| Figma (opt) | figma:figma-use (load FIRST), figma:figma-generate-library |
figma:figma-generate-design |
figma:figma-create-design-system-rules |
REFERENCE LIBRARY BY STEP
Read references for the current step only. Don't preload all 10.
| Step | References |
|---|---|
| 1 Discovery | 01-theme-round-checklist.md · 07-theme-round-layout.md · 10-typography-pairing-recipes.md |
| 2 Preview | 02-showcase-checklist.md · 08-screen-grid-layout.md |
| 3 Brand Kit | 03-brand-kit-checklist.md · 06-brand-kit-section-spine.md |
| 4 Animations | 02-showcase-checklist.md (motion sections) |
| 5 All Screens | 04-screens-checklist.md · 08-screen-grid-layout.md · 09-indian-fintech-data-canon.md |
| 6 Production | None - spec is custom per project |
| Figma | 05-figma-push-guide.md (read this - don't push from memory) |
Templates (in templates/):
| File | Use |
|---|---|
state-template.md |
Scaffold for projects/<slug>.md |
brand-kit-README-template.md |
Engineer-facing README for Step 3 |
tokens-template.css |
Starter CSS custom properties for Step 3 |
tokens-template.ts |
Starter TypeScript token types for Step 3 |
preview-server.js |
Zero-dep fallback for The visual companion step 3 |
COMMON MISTAKES
| Mistake | Symptom | Fix |
|---|---|---|
| Loading all 36 skills at session start | Context bloat, slow responses, generic output | Load only what Skill toolkit by step lists for the current step |
| Forgetting to read state.md first | Re-proposing rejected directions, contradicting locked decisions | First action of every session = read projects/<slug>.md |
| Skipping product analysis in Step 1 | Generic themes that don't fit the product | Always analyze the product deeply before proposing directions (Hard Rule #2) |
| Dumping all screens at once in Step 5 | Overwhelming, user can't give focused feedback | Show one screen at a time, get approval, then move to next |
| Building brand kit before user asks | Wasted effort if direction isn't validated | Step 3 only runs when user confirms after screen preview |
| Lorem ipsum in Step 5 | "Looks fine" but feels generic | Real merchants, real amounts, real timestamps |
Missing :active scale(0.97) on buttons |
Buttons feel dead | Hard motion rule #2 - load emil-design-eng and audit |
| Using CSS for complex animations | Limited choreography, no scroll binding | Use GSAP for staggered reveals, scroll-driven, timelines; CSS for simple states |
| Skipping Animation Review (Step 4) | Motion feels random or inconsistent | Always show the animation system before building all screens |
| Skipping the GSAP/Component appendix in specs | Engineer reinvents the animation/component layer | Always include all three appendices in Step 6 |
| Asking permission to open the browser | User has to click a link | Hard Rule #8 - silently auto-open via templates/preview-server.js if needed |
DEFINITION OF DONE
A pipeline run is complete when ALL are true:
- Product analyzed and design direction chosen (Step 1)
- Screen preview validated by user (Step 2)
- Brand kit shipped to
docs/design/brand-kit/with all files (index.html,tokens.ts,tokens.css,tokens.json,README.md,assets/) - Animation system approved by user (Step 4)
- All screens designed, shown individually, and approved at
docs/design/mockups/ - Implementation spec at
docs/superpowers/specs/YYYY-MM-DD-<theme>-implementation.mdwith Motion appendix + GSAP appendix + Component appendix - (optional) Figma file created, URL in
state.md -
state.mdstatus isapprovedorshipped - All rejected directions logged
Then hand off to superpowers:executing-plans and stop touching the mockups. Implementation is a different loop.
A worked example lives at projects/finova.md - reference it when you need to see what a real Rounds Log entry, a verbatim rejection, or the wireframe → production data rewrite looks like.