Redesign an existing website to make it better. Built on top of impeccable.
71
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
A catalog of choreography templates that prototype --cinematic
can apply to a proposed redesign. Each register is a brand-faithful
motion personality, not an aesthetic preset — the choice of register
is driven by the captured brand surface and the target PRODUCT.md
Brand Personality, the same way Mode A's palette + typography are
brand-faithful.
The five registers below cover the vast majority of redesign briefs. They are worked exemplars, not a closed set: a bespoke register may be derived per § Extension rule, and one that proves out graduates into the catalog per § Adding a register. The existing five are stable: prototypes from older runs render correctly against the current register definitions.
direct picks a register and writes it into
DESIGN.json.extensions.motion.register. prototype --cinematic
reads that value, applies the register's choreography templates to
the rendered file, and runs the motion validation gate.
prototype --cinematic=<register> lets the user override at command
time. The override is recorded in the proposed file's
_provenance.motion.registerSource = "user-override" and surfaces in
the run summary so reviewers can spot when direction's heuristic
was bypassed.
arrivalBrand fit. Civic, institutional, brand-led. Marketing surfaces
that introduce a place / a brand / an entity. Default when the
captured PRODUCT.md leans brand register with formal voice and
when no other register clearly fits.
Signature moves.
--parallax-progress
drives a linear-gradient opacity).enterUp keyframe on load with 90ms stagger across
eyebrow → title → body.[data-countup]) tween 0 → target on IO
trigger.clip-path: inset(N% 0 0 0)
driven by scroll progress.Data-attributes consumed. [data-anim], [data-countup],
[data-parallax].
Token defaults.
{
"easings": { "entrance": "cubic-bezier(0.25, 0.46, 0.45, 0.94)", "transition": "cubic-bezier(0.42, 0, 0, 1)" },
"durations": { "enter": 700, "stagger": 90 },
"parallax": { "translate": 35, "fade": 0.55, "rangeStart": 0, "range": 80 }
}Refuses. Editorial-airy section padding (> 96px desktop). Decorative motion on the captured configurator / search surface.
kinetic-displayBrand fit. Signage-led, wayfinding-first, display-typography brands. Use when the captured surface carries a defining typographic signature (an airport monogram, a stadium identity, a transport wordmark) AND the captured copy uses display caps as structural language (terminal codes, gate numbers, section labels).
Signature moves.
clip-path: inset(0 0 100% 0) staggered 120ms.clip-path: inset(0 X% 0 0)
on word-span children, scroll-driven.@keyframes marqueeScroll).filter: blur(8px → 0) on scroll.Data-attributes consumed. [data-anim], [data-split],
[data-flip], [data-countup], .marquee__track.
Token defaults.
{
"easings": { "entrance": "cubic-bezier(0.25, 0.46, 0.45, 0.94)", "expo": "cubic-bezier(0.16, 1, 0.3, 1)" },
"durations": { "enter": 800, "stagger": 110, "letterStagger": 50 },
"marquee": { "speed": 30 }
}Refuses. Soft long-fade entrances (clashes with the signage register's hard reveal vocabulary). Decorative serifs in the marquee band. Editorial body copy as the canvas for the register — this is display register first; body register is incidental.
live-systemsBrand fit. Operational, dashboard-led, data-transparent. Brands whose value proposition includes live state — airports, exchanges, delivery, transit, weather, status pages. Use when the captured page exposes real-time signals (wait times, availability, departures, prices) as first-class content.
Signature moves.
translateY + rotateX(8deg) settling
to identity.box-shadow: 0 0 0 8px rgba(...) 1.6s
ease-in-out infinite — on every realtime data row.Data-attributes consumed. [data-tile-anim], [data-countup],
[data-fill], .live-sweep, .live-strip__label::before.
Token defaults.
{
"easings": { "entrance": "cubic-bezier(0.25, 0.46, 0.45, 0.94)", "expo": "cubic-bezier(0.16, 1, 0.3, 1)" },
"durations": { "enter": 600, "stagger": 100, "fill": 1100 },
"pulse": { "duration": 1600, "spread": 8 },
"sweep": { "interval": 5400, "duration": 1700 }
}Refuses. Long parallax pulls (operational pages should not disorient the user). Marquees longer than one row (every infinite scroll uses cache + cognitive load). Animated headings — operational hierarchy stays still; the data is the choreography.
editorialBrand fit. Publication, long-form, slow-paced. Magazines, essay sites, photography portfolios, document-shaped redesigns. Use when the captured PRODUCT.md leans toward reading-paced consumption and the captured photography / typography pulls a long-form register.
Signature moves.
opacity 0 → 1 over 600ms with no
translate (no kinetic verb).transform: scale(1.02)
900ms) and link underline draw-in.Data-attributes consumed. [data-anim], [data-parallax].
Token defaults.
{
"easings": { "entrance": "cubic-bezier(0.16, 1, 0.3, 1)", "transition": "cubic-bezier(0.42, 0, 0, 1)" },
"durations": { "enter": 900, "stagger": 140 },
"parallax": { "translate": 10, "fade": 0.20, "rangeStart": 0, "range": 90 }
}Refuses. Bouncy easings (overshoot, anticipation-and-snap). Count-ups (editorial doesn't count its readers). Tickers and marquees. Anything that compromises text legibility for the first 500ms of reading.
kinetic-gridBrand fit. Product, SaaS, modular catalogues. Brands whose identity is a grid of cards / tiles / features and whose voice is transactional. Use when the captured page leans toward a modular catalogue with repeated cards as primary IA.
Signature moves.
cubic-bezier(0.42, 0, 0, 1).slideInH scale-X transition.linear-gradient translateX
−100% → 100% over 700ms).arrival but tighter (slide 28px,
stagger 70ms).Data-attributes consumed. [data-anim], [data-tile-anim].
Token defaults.
{
"easings": { "entrance": "cubic-bezier(0.42, 0, 0, 1)", "transition": "cubic-bezier(0.42, 0, 0, 1)" },
"durations": { "enter": 500, "stagger": 70 },
"lift": { "translate": -4, "duration": 380 }
}Refuses. Page-level parallax (modular grids should not move under the user). Letter-by-letter reveals. Tickers. Anything that distracts from the grid as the protagonist.
direct)direct writes one register into DESIGN.json.extensions.motion.register.
The selection follows the captured PRODUCT.md Brand Personality:
| Personality traits (any match) | Register |
|---|---|
civic-formal + (institutional OR place-led) | arrival |
signage-led OR wayfinding-first OR display-typography-signature | kinetic-display |
operationally-transparent OR data-led OR dashboard-register | live-systems |
editorial OR slow-paced OR publication-register | editorial |
product OR SaaS OR transactional OR modular-catalogue | kinetic-grid |
| (ambiguous / multiple equally fit) | arrival |
Tie-breaking rule: when two registers match, prefer the one whose
refuses clause does NOT conflict with a captured trait. (Example:
a brand that's both civic-formal and signage-led could take
arrival or kinetic-display — if the captured surface has a
defining monogram, take kinetic-display; otherwise arrival.)
A page renders against one register. Mixing — say, kinetic-display
hero + live-systems ops + editorial rail — produces motion
incoherence and a "motion C-cliff" failure (see
motion-validation.md § Register-mismatch detector).
The only exception: an isolated data-section may opt out of the
page's register by declaring data-motion-register="<other>". The
opt-out is rare, must be justified in the page-shape brief, and
must not exceed one section per page.
A bespoke register derived from the site's own captured motion — for when the captured surface has a real motion identity none of the five registers honors — is admissible for a run when it carries the same evidence shape as the catalog entries:
motion-attributes.md / motion-runtime.md (new attributes go
in those files first).prefers-reduced-motion
neutralization and a no-JS static-end state, validated by the
same motion-validation.md § Pass 6 gates as catalog registers.Record the extension in _provenance.motion with
registerSource: "extension", the derivation rationale, and the
citations. An extension register that proves out graduates to the
catalog via § Adding a register.
A new register requires:
motion-attributes.md / motion-runtime.md. New attributes go
in those files first.The bar for adding a register is intentionally high. Most new brands fit one of the five above; reach for a new register only when none of them honor the captured surface.
direct writes extensions.motion.register based on the
selection heuristic; the user may override at command time.prototype --cinematic reads it, applies the register's
signature moves to the rendered file, and consumes the token
defaults into the :root block.live-systems allowing a [data-anim] to start
hidden is by-design; editorial allowing it is a bug (editorial
refuses kinetic entrances)._provenance.motion.register can audit a published redesign
against the register catalog to detect drift..tessl-plugin
skills
audit
reference
deploy
diff
direct
extract
migrate
prepare-migration
prototype
replica
reskin
rollout
stardust
uplift
reference