Skip to content
Zumkai

Instituto +Brasal redesign — stacks D, E and F (with a reference) · v3

Three redesign stacks with a design reference, redone once DESIGN.md and the motion guide existed: what each got right, what broke and the prompt at each step.

  • process
  • skills
  • part 2/2
Three web page wireframes painted in blue, purple and green watercolor
Contents
  1. 1. What changed and why
  2. 2. Assumptions and project materials
  3. 3. Conformity map — the guide's motion → the home page section
  4. 4. The experiment now
  5. 5. STACK D — "GSAP execution" (GSAP Skills + Impeccable)
  6. 6. STACK E — "Craft & Feel" (Emil Kowalski + Motion.dev Animations + Taste)
  7. 7. STACK F — "Principles & Choreography" (Design Motion Principles + Motion Design Skill)
  8. 8. Comparison protocol (D vs E vs F)
  9. 9. Practical notes
  10. 10. Next steps

1. What changed and why

Before (v2)Now (v3)Reason
Dembrandt extracted tokens from the reference (D)RemovedThe DESIGN.md defines the identity already; nothing remains to extract
UI UX Pro Max generated a design system (F) + Prompt F-0RemovedThe same
Taste image-to-code derived components from the screenshots (E)Demoted to an anti-slop layerThe structure now comes from the motion guide rather than from the images
React Bits supplied ready-made components (F)RemovedThe guide prescribes an implementation of your own per prompt; library components would break the conformity
The "one engine per stack" ruleRevoked → "one engine per domain"The guide prescribes GSAP (scroll/reveals/timelines) + Framer Motion (micro-UI: overlay, cookies, form, hover) + Lenis + Embla, with separate roles. That division is correct and holds for the 3 stacks
Each stack studied the videos to map the motion grammarThe guide is the source of the grammarThe 17 motions are cataloged already with an implementation prompt; the videos and screenshots become checking material
The experiment's variable: the method of reading the referenceThe variable: the layer of execution and QA skillsIdentical inputs (DESIGN.md + guide + content); what changes is the skill support of each stack

Analysis of the guide (a summary)

  • 17 motions with a visual and technical description and a ready-made prompt; a Prompt 0 for infrastructure (GSAP 3.13+ + @gsap/react + ScrollTrigger + SplitText + a synced Lenis + Framer Motion + Embla); a suggested implementation order; a list of GSAP + Next.js traps.
  • Production quality: the 3-step Lenis cleanup, SplitText's autoSplit/onSplit after the fonts, gsap.matchMedia, ScrollTrigger.refresh() after load, FOUC prevention through autoAlpha, a focus trap on the overlay, and the explicit care of the hero title animating a single time (Motion 4 replaces the Motion 3 tween).
  • Agnostic about content: every text and value is a placeholder. The parameterization with the Instituto's content comes from the map in section 3 of this document.

2. Assumptions and project materials

The structure expected in each stack folder before starting:

txt
stack-{d|e|f}-.../
├── DESIGN.md                      # the Instituto's visual identity (IT EXISTS ALREADY — copy it into each stack)
├── referencia/
│   ├── motions-guia.md            # the guide of 17 motions (copy the file supplied)
│   ├── images/                    # screenshots of the reference (visual checking)
│   └── videos/                    # navigation recordings (feel checking)
└── images/                        # the Instituto's assets (filled in at Step 0 of the prompt)

The hierarchy of sources of truth (it holds for the 3 stacks):

  1. DESIGN.md → the identity: colors, fonts, spacing, elements. Non-negotiable.
  2. referencia/motions-guia.md → the motion implementation: technique, parameters, prompts. Non-negotiable.
  3. The current site (https://www.brasal.com.br/instituto/) → the content: texts, menu, sections. Non-negotiable.
  4. referencia/images + videos → checking feel and rhythm. Advisory.

A conflict between sources means asking before deciding. An example: if a motion parameter from the guide clashes with a motion token from the DESIGN.md, the dev decides rather than the agent.

A pending asset (applicable to the 3 stacks)

Motion 5 (a looping background video in the hero) demands an institutional video file (/hero.webm + /hero.mp4, with no audio, ~2–4 MB). The YouTube embed of section 3 of the home page serves in no way as a background (it is an iframe rather than a <video>). Until the client delivers the file: the prompts plan an image fallback with a slow zoom (Ken Burns) already, with the component ready to receive the video later.

3. Conformity map — the guide's motion → the home page section

This map is shared by the 3 stacks (it keeps the comparison fair) and it sits inside the prompts already.

Home page section (content of the current site)The guide's motion(s)Note
Global header1 (fullscreen overlay menu) + 16 (CTA hover)The menu with the current 16 items and dropdowns handled inside the overlay
Cookie banner2Conditional: implement it ready to go; the LGPD texts approved by the dev before activation
1. Hero — Edital 2026 Vamos Juntos3 + 4 + 5A single timeline (4 replaces the tween of 3); a background video with a Ken Burns fallback
2. "Prazer, nós somos o Instituto +Brasal"10 + 12A reveal of the text blocks + multi-layer parallax on the institutional photos
3. Video (YouTube)pattern 7/10 + a facadeA reveal of the frame; the vaxxETydDKQ embed with a facade (thumbnail + play), lazy
4. Eixos de Atuação (3 cards)7Cascading cards + hover zoom
5. Impact numbers9Counters: +181.100 itens · 434.100 pessoas · +480 projetos
6. Transparência (5 reports)6 (preferred) or 11A horizontal timeline 2021→2025 with Embla; the stack records the choice
7. The UN SDGs (4 SDGs)8A pinned section with step swapping: each SDG is a step
8. Instituições Apoiadas (~27 logos)7 (a cascading grid)A stagger on the grid entrance
9. Parceiros que Somam14An infinite marquee pausable on hover
10. Map (before the footer)pattern 10A reveal of the google.com/maps?q=...&output=embed iframe, lazy
11. Footer16 (+ 14 decorative, optional; 15 if a form exists)The complete current content
Global17 adapted · 13 optional17: with no i18n (the site is pt-BR only), keep the route fade alone for the future internal pages. 13 (a frame sequence): an optional showpiece; if you use it (an emblem or seal in the impact section, for example), record the decision so it appears in the comparison

Generic heading and paragraph reveals in the other sections: reuse the pattern of Motions 7/10 (y + autoAlpha, a once ScrollTrigger), as the guide itself advises.

4. The experiment now

Identical inputs across the 3 stacks (DESIGN.md + guide + content + the map above). The variable is the skill layer that supports execution and quality control:

StackSkill layerThe hypothesis tested
D — GSAP executionThe official GSAP Skills + ImpeccableTechnical depth in the guide's dominant engine produces the most precise scroll motions
E — Craft & FeelEmil Kowalski + Motion.dev Animations + TasteA feel audit (easing, duration, physics) produces the most refined result
F — Principles & ChoreographyDesign Motion Principles + Motion Design Skill (LottieFiles)Planning and auditing by principles produce the most coherent whole

A common base for the 3: npx skills add vercel-labs/agent-skills (Next.js quality + design guidelines).

5. STACK D — "GSAP execution" (GSAP Skills + Impeccable)

The guide is GSAP-first (motions 3, 4, 7, 8, 9, 10, 12, 13 and the infrastructure of Prompt 0). GreenSock's official skills raise the ceiling right where the guide demands most: ScrollTrigger, SplitText, timelines, a pin with Lenis, performance. Impeccable enters as the design critic at the refinement.

5.1 Installation

bash
npx skills add vercel-labs/agent-skills
npx skills add greensock/gsap-skills
npx impeccable install

Run /impeccable init in no case: the DESIGN.md exists already. Impeccable enters at the refinement alone (critique/polish/detect).

5.2 Sequence

OrderAction
1Check the structure from section 2 (DESIGN.md at the root, the guide in ./referencia/motions-guia.md)
2claude in the stack folder
3Paste the Master Prompt — Stack D (5.3)
4Refinement (5.4)

5.3 Master Prompt — Stack D (ready to use)

txt
# REDESIGN WITH A REFERENCE — INSTITUTO +BRASAL (HOME) — STACK D: GSAP EXECUTION

## Sources of truth (in this order; a conflict between them means asking me first)
1. DESIGN.md (root): the Instituto's visual identity (colors, fonts, spacing, elements). Follow it to the letter, and invent no tokens.
2. ./referencia/motions-guia.md: the catalog of 17 motions from the reference with implementation prompts. It is this project's motion specification.
3. https://www.brasal.com.br/instituto/: the content (verbatim texts, menu, sections). Immutable.
4. ./referencia/images/ and ./referencia/videos/: visual checking of the reference's feel and rhythm.

## Context
A redesign of the home page in Next.js 15 (App Router) + TypeScript + Tailwind. The HOME PAGE ONLY in this phase.
Content 100% identical to the current site. Identity 100% from the DESIGN.md. Motion 100% per the guide.

## Engine (per the guide — one engine per domain)
- GSAP 3.13+ + @gsap/react + ScrollTrigger + SplitText: the backbone (reveals, timelines, split, pin/scrub).
- Framer Motion (the motion package): micro-UI ONLY (the overlay menu, the cookie banner, form states, CTA hover).
- Lenis: global smooth scroll, synced per Prompt 0 of the guide.
- Embla Carousel: the horizontal timeline and carousels.
Read the guide's "classic traps" section BEFORE writing any component and follow all of them: useGSAP with scope, the 3-step Lenis cleanup, gsap.matchMedia, ScrollTrigger.refresh() after load, autoSplit after the fonts, autoAlpha against FOUC, the hero title animated a single time.

## Step 0 — Infrastructure
Run PROMPT 0 of the guide (./referencia/motions-guia.md) exactly as specified: the SmoothScrollProvider with Lenis + the ScrollTrigger sync + the complete cleanup, lib/gsap.ts with the plugins registered, the usePrefersReducedMotion hook, the layout.tsx updated.

## Step 1 — Inventory and assets
1. Go to https://www.brasal.com.br/instituto/ and extract the REAL content of the home page (verbatim texts, section order, menu items with URLs).
2. Download into ./images/: the logo (https://www.brasal.com.br/instituto/wp-content/uploads/2025/05/cropped-cropped-Logo-Instituto-Brasal_Colorida.png), the institutional images and those of the 3 eixos, the SDGs (4-ods.jpg), the covers of the 5 reports, and ALL the institution and partner logos (brand-*.png, Logo-*.jpg). Generate the favicon from the logo.
3. Motion 5 (the hero background video): the institutional file has yet to be delivered. Implement the component ready for /hero.webm + /hero.mp4 per the guide, with an ACTIVE FALLBACK of an image with a slow zoom (Ken Burns, scale 1.0→1.06 in a smooth loop) using an institutional photo. Swapping to the video should demand adding the files to /public and nothing more.

## Step 2 — Build per section (the content of the current site + the motion from the guide)
Implement the home page in this section order, applying the indicated motion with the matching PROMPT from the guide, parameterized with the real content:

1. Header: logo + the current complete menu (Início · O Instituto [Quem Somos, História, Estrutura Organizacional] · Mantenedores [Brasal Refrigerantes, Incorporações, Veículos, Combustíveis, Energia, Corretora, SIA Park Hotel] · Transparência · Eixos de Atuação · Voluntariado Empresarial · Notícias · Contato) → MOTION 1 (a fullscreen overlay with stagger; the dropdowns become groups inside the overlay) + MOTION 16 on the CTAs.
2. The cookie banner → MOTION 2, a component ready to go but DEACTIVATED by a flag; present me the LGPD text for approval before activating it.
3. The Edital 2026 — Programa Vamos Juntos hero (the current text + the CTA "Confira o Edital 2026 / Clique aqui") → MOTIONS 3+4+5 in a single timeline (4 replaces the tween of 3; the title animates ONCE) + the background per Step 1.3.
4. "PRAZER, NÓS SOMOS O INSTITUTO +BRASAL" (the current paragraph + the CTAs "Mais sobre o Instituto" and "Conheça o Programa") → MOTION 10 on the text blocks + MOTION 12 (multi-layer parallax) on the institutional photos.
5. Video: https://www.youtube.com/embed/vaxxETydDKQ?si=2hoc1F6Fcgi7c5Np → a lazy facade (thumbnail + play, the iframe on the click alone) with the standard 7/10 reveal on the frame.
6. EIXOS DE ATUAÇÃO (3 cards, the current texts, "Saiba+") → MOTION 7 (a cascade + hover zoom).
7. Impact numbers ("Desde a sua criação, geramos uma rede de impacto de"): Doamos +181.100 itens · Beneficiamos 434.100 pessoas · Instituições apoiadas + de 480 projetos · Regiões administrativas no DF, GO e MG → MOTION 9 (the counters). ATTENTION: the current home page carries two divergent counter blocks (65.100/269.100 vs 181.100/434.100); use the desktop values and report the divergence to me at the end.
8. TRANSPARÊNCIA (5 reports with links to the current PDFs) → MOTION 6 (a horizontal timeline 2021→2025 with Embla). If you judge MOTION 11 a better fit for the content, justify it and record the choice.
9. THE UN SDGs (the current text + 4 SDGs with descriptions) → MOTION 8 (a pinned section; each SDG is a step). Test the pin with Lenis carefully, per the guide.
10. INSTITUIÇÕES APOIADAS (~27 logos) → MOTION 7 in a grid with stagger.
11. PARCEIROS QUE SOMAM → MOTION 14 (an infinite marquee pausable on hover).
12. The MAP before the footer: a Google Maps iframe (q="SIA Trecho 1 Lote 630 a 780, Bloco 5, Edifício Praça Capital, Sala 318, Brasília - DF, 71200-011", output=embed, lazy) → the standard 10 reveal.
13. Footer (the current content: Institucional Brasal, (61)3462-8077, the address, institutomaisbrasal@brasal.com.br, Seg–Sex 08:00–18:00, socials, menu, copyright) → MOTION 16 on the links; MOTION 14 decorative only if the DESIGN.md allows it.
14. Global: MOTION 17 ADAPTED (with no i18n, the site is pt-BR only; implement the route transition fade alone, prepared for the future internal pages). MOTION 13 (a frame sequence) is OPTIONAL: if you identify a high-value application (an emblem in the impact section, for example), propose it to me before implementing; otherwise record "not applied" and the reason.

## Cross-cutting rules
- prefers-reduced-motion on EVERY motion (through the Prompt 0 hook), with a dignified static version.
- Animate transform/opacity alone (autoAlpha); no layout thrashing; 60fps on mobile (gsap.matchMedia to simplify animations on small screens).
- No invented content; a doubt about a text means asking me.
- Identity: any color, font or radius outside the DESIGN.md is a bug.

## Delivery and validation
- `npm run dev` with the home page complete and responsive (mobile-first).
- ./images/ organized; the DESIGN.md untouched (if you think it needs to evolve, propose the change rather than applying it).
- A CONFORMITY TABLE at the end: the guide's motion → the section where you applied it → status (implemented / adapted / not applied + reason).
- A list of every ScrollTrigger created (section → effect → cleanup ok).
- A report of the counter divergence.

5.4 Refinement — Stack D

txt
1. /impeccable critique
   (apply EVERY correction before moving on)

2. "Check the home page against the videos in ./referencia/videos/: for each motion
   implemented, is the feel equivalent to the reference's (rhythm, easing,
   timeline overlap)? List the differences by severity and fix them."

3. /impeccable polish

4. "GSAP performance pass: cleanup of every ScrollTrigger and of Lenis
   (3 steps), gsap.matchMedia for mobile and reduced-motion,
   ScrollTrigger.refresh() after images and fonts load, will-change where
   needed alone, a test of the Motion 8 pin with Lenis. 60fps on mobile."

In the terminal: npx impeccable detect

6. STACK E — "Craft & Feel" (Emil Kowalski + Motion.dev Animations + Taste)

The guide delivers the specification; this stack bets the difference lies in the finish: physics and timing audited (Emil), production patterns in the Framer Motion micro-interactions (motions 1, 2, 15, 16), and Taste as the anti-slop and anti-clone sweep. Taste defines neither the identity (the DESIGN.md rules) nor the structure (the guide rules).

6.1 Installation

bash
npx skills add vercel-labs/agent-skills
npx skills@latest add emilkowalski/skills
npx skills add 199-biotechnologies/motion-dev-animations-skill
npx skills add Leonxlnx/taste-skill

A note: no npx motion-ai in this version. The motion package (Framer Motion) gets installed by Prompt 0 of the guide; the motion.dev animations skill covers the patterns. Every skill activates on its own, with no slash commands.

6.2 Sequence

claude in the folder → paste the Master Prompt — Stack E → refinement (6.4).

6.3 Master Prompt — Stack E (ready to use)

The prompt is identical to the Master Prompt — Stack D (5.3), swapping the title and adding the block below right after the "## Engine" section:

txt
# (title) REDESIGN WITH A REFERENCE — INSTITUTO +BRASAL (HOME) — STACK E: CRAFT & FEEL

## The specific directive of this stack (insert it after the "Engine" block)
- Taste Skill dials: DESIGN_VARIANCE per the DESIGN.md (invent no identity), MOTION high, DENSITY per the DESIGN.md.
- On the Framer Motion parts (motions 1, 2, 15, 16), apply the production patterns of the motion.dev animations skill: springs with coherent physics, AnimatePresence with a correct exit, variants with stagger, reduced-motion.
- On EACH GSAP motion implemented, do a feel pass before calling it done: easing and duration judged by the criteria of the animation review skill (no default ease with no justification; timeline overlaps with purpose).
- Anti-clone: the feel follows the reference, the identity follows the DESIGN.md. If any component comes out visually identical to the reference site (beyond the motion grammar), differentiate it while keeping the same school.

Everything else (sources of truth, Step 0, Step 1, Step 2 with the 14 entries, cross-cutting rules, delivery with the conformity table) stays identical to 5.3.

6.4 Refinement — Stack E

txt
1. "Review EVERY animation with the review skill: easing, duration, spring
   physics (motions 1/2/15/16), the overlaps of the GSAP timelines, scroll
   choreography. Compare it against the videos in ./referencia/videos/. List by
   severity and fix."

2. "Apply the Taste Skill anti-slop checklist to the whole home page. What
   looks generic, fix WITHIN the limits of the DESIGN.md (invent no
   new tokens)."

3. "Anti-clone check: list the elements visually identical to the reference
   site (beyond the motion grammar) and differentiate each one while keeping the
   same school of design."

4. "A final pass on micro-interactions: hover on buttons, cards, overlay menu
   items and footer links, all of it with spring physics, no linear CSS
   transition."

7. STACK F — "Principles & Choreography" (Design Motion Principles + Motion Design Skill)

The bet: with the specification and the identity fixed, the differentiator is the coherence of the whole. Create mode plans the choreography section by section BEFORE the code (using the map from section 3); the 12 LottieFiles principles guide the local decisions; Audit mode with 3 lenses closes the cycle with a report.

7.1 Installation

bash
npx skills add vercel-labs/agent-skills
npx skills add kylezantos/design-motion-principles
npx skills add LottieFiles/motion-design-skill

No UI UX Pro Max (the DESIGN.md exists already) and no React Bits (conformity with the guide). Skills that activate on their own.

7.2 Sequence

OrderAction
1claude in the folder
2Paste the Prompt F-1 — Choreography plan (7.3) and review the plan it generates
3Paste the Master Prompt — Stack F (7.4)
4Refinement (7.5)

7.3 Prompt F-1 — Choreography plan (paste it first)

txt
Before writing any code, use the motion principles skill in
Create mode to generate the CHOREOGRAPHY PLAN of the home page, in MOTION-PLAN.md:

Inputs (read all of them):
- DESIGN.md (root): the identity and tokens. Non-negotiable.
- ./referencia/motions-guia.md: the 17 motions of the reference with technique and
  parameters. Non-negotiable.
- ./referencia/videos/: the reference's feel and rhythm.
- The motion → section map defined for this project:
  Header→1+16 · Cookies→2 (conditional) · Hero→3+4+5 · "Prazer, nós somos"→10+12 ·
  YouTube video→reveal 7/10 + a facade · Eixos→7 · Numbers→9 · Transparência→6 (or 11,
  with a justification) · SDGs→8 (4 steps) · Instituições→7 grid · Parceiros→14 ·
  Map→10 · Footer→16 (+14 optional) · Global→17 with no i18n; 13 optional.

The plan has to hold, per section: the narrative intent of the movement (what the
user should feel or understand), the guide's motion applied with the parameters
(duration, easing, stagger, trigger points), how the section connects to the
previous and the following one (transitions with no hard cut), and the behavior under
reduced-motion. Apply the 12 principles of the motion design skill when
justifying each decision. Finish with the global timeline of the scroll
(a map of pins, scrubs and reveals along the page).
Write no code yet.

Review the MOTION-PLAN.md, adjust it if needed, and move on then and no sooner.

7.4 Master Prompt — Stack F

Identical to the Master Prompt — Stack D (5.3), with the title swapped and this block inserted after the "## Engine" section:

txt
# (title) REDESIGN WITH A REFERENCE — INSTITUTO +BRASAL (HOME) — STACK F: PRINCIPLES & CHOREOGRAPHY

## The specific directive of this stack (insert it after the "Engine" block)
- The MOTION-PLAN.md (root) is the approved choreography script: implement
  each section per the plan. A necessary divergence during the build means
  updating the MOTION-PLAN.md with the justification rather than improvising in silence.
- Each local movement decision has to be defensible by one of the 12
  principles of the motion design skill; movement with no narrative purpose
  gets in in no case.
- The transitions between sections are a first-class requirement: the page
  should read as a single piece rather than as 11 isolated animated blocks.

Everything else stays the same as 5.3, with one addition to "Delivery and validation":

txt
- The MOTION-PLAN.md updated to reflect what you actually implemented.

7.5 Refinement — Stack F

txt
1. "Run the audit of the motion principles skill (Audit mode) on the home page,
   with the 3 lenses. Generate the report and fix the high and medium severity
   problems."

2. "Coherence check: walk the home page from the top to the footer and evaluate the
   SEAMS between sections (the hero→institutional transition, the way the SDG
   pin enters and leaves with Lenis, the rhythm between the counters and transparency). The
   page should look like a single choreography. Fix whatever clashes."

3. "Traceability: for each item in the MOTION-PLAN.md, point out where it sits
   implemented. An item with no implementation means implementing it or removing it from the plan
   with a justification. Update the conformity table."

8. Comparison protocol (D vs E vs F)

  1. Isolation: each stack in a clean session, with its own skills alone; an identical DESIGN.md and guide in the 3 folders.
  2. Identical inputs: the same content, the same DESIGN.md, the same guide, the same motion→section map. The skill layer is the sole variable.
  3. Comparison artifacts per stack: the conformity table (motion → section → status) · the list of ScrollTriggers with cleanup · the refinement report of the stack itself · the recorded decision about motions 6/11, 13 and the decorative 14.
  4. A neutral judge: impeccable critique (installed in D) run on the 3 outputs for a common score; a side-by-side check against ./referencia/videos/.
  5. Criteria: content fidelity · conformity with the guide (17 motions) · adherence to the DESIGN.md · feel quality (easing, physics, 60fps mobile) · choreography coherence · accessibility (reduced-motion, the overlay focus trap, keyboard) · performance (LCP with the video/facade, CLS) · code quality (cleanup, the guide's traps avoided).

9. Practical notes

  • The hero background video (Motion 5): ask the client for the institutional file (webm + mp4, no audio, ~2–4 MB, 1080p). The Ken Burns fallback leaves the home page presentable without it already.
  • The cookie banner (Motion 2): the component delivered ready and deactivated; activate it after approval of the LGPD text and no sooner.
  • Motion 8 (the SDG pin) + Lenis: it is the most delicate point in the guide; test it on desktop and mobile before calling it done (the guide warns about it).
  • Motion 13 (a frame sequence): an optional showpiece; it demands producing assets (a frame sequence). If no stack applies it, record that; if one does, define the frame count before producing the assets, as the guide advises.
  • A YouTube embed ≠ a background video: the vaxxETydDKQ embed is section 3 of the home page (a facade + the iframe on the click); reuse it as a background in no case.
  • The map: google.com/maps?q=...&output=embed works with no API key; load it lazy.
  • Divergent counters on the current site (65.100/269.100 vs 181.100/434.100): use the desktop values and report them to the client.

10. Next steps

  1. Copy DESIGN.md and motions-guia.md into the 3 folders per section 2; fill in ./referencia/images and ./referencia/videos.
  2. Run D, E and F (D and F carry an extra step: D = no init, straight to the master; F = Prompt F-1 before the master).
  3. Collect the artifacts from section 8 and run the comparison.
  4. The winning home page approved → the internal pages with the chosen stack, reusing the Prompt 0 infrastructure and the motion map.