Start with the Static Vector Art
Start from the approved static SVG and inspect viewBox, paths, groups, masks, colors, and target render sizes. Keep the original immutable and create a sandbox that can show old and new versions side by side.
Rebuild a missing logo microinteraction from an owned SVG and reference animation by measuring timing and geometry, implementing accessible SVG motion, and comparing the result frame by frame across product contexts before replacing the old asset.
Download the skill for this workflow. Version 1.0.0.


with Claire Vo
Facing a code freeze and a missing animation source file, Joel gives Cursor the new static SVG and the existing GIF, asks it to recreate the clipping mask and bar motion, measures the original duration, and iterates by a few pixels until the new animated SVG matches the required logo behavior.
A compact animated SVG component that preserves the approved logo geometry and timing, responds correctly on load and hover, honors reduced motion, and can replace the old asset without layout, accessibility, or performance regressions.
AI-first code editor
Follow the sequence once, then adapt the prompts, checks, and handoffs to your own setup.
5 steps
Start from the approved static SVG and inspect viewBox, paths, groups, masks, colors, and target render sizes. Keep the original immutable and create a sandbox that can show old and new versions side by side.
Give Cursor the SVG and reference GIF or recording. Describe the moving elements, trigger, direction, loop, end state, and masking relationship before it writes animation code.
Using this owned SVG and reference animation, recreate only the [moving elements]. Preserve all approved paths, viewBox, colors, and dimensions. Implement [load or hover] trigger, [loop behavior], clipping or mask relationship, and a stable end state. Add prefers reduced motion support and do not add scripts or external assets unless required.
Measure the source duration and key moments with an animation inspector. Store duration, delays, phase offsets, distances, and easing as named variables, then compare captured frames at the same timestamps.
The animation timing needs to be more precise. I analyzed the original, and its full duration is [1200] milliseconds. Please adjust the animation to match this.
Iterate with exact observations such as element, timestamp, axis, and pixel difference. Change one parameter at a time and rerun the visual comparison rather than accumulating broad prompt edits.
Integrate the component in the real product path and test page load, hover, keyboard focus if relevant, touch, reduced motion, supported browsers, target sizes, CSP, build, and performance. Preserve a quick rollback to the prior asset.
Turn an idea into a PRD, user stories, and a plan.
How to recover when the loop fails and where human judgment helps.

Connect data from your hobbies (like golf scores or chess games) to an AI agent to get automated analysis, visual dashboards, and actionable coaching insights. Turn raw data into a story that helps you improve.

Turn your unstructured Instagram 'Saved' collection into a fun, personalized shopping catalog. This workflow uses an AI agent to organize your saves and present them in a nostalgic, engaging format like the SkyMall magazine.

Resurrect your old digital content, like a forgotten blog from Blogger or Tumblr, by using an AI agent to find, consolidate, and transform it into a daily personal podcast. Reconnect with your past self in a new, listenable format.
Join 250,000+ product managers who use ChatPRD to write better docs, align teams faster, and build products users love.