logo-animation
Skill236 starsChanged 5 months agoMITView on GitHub
This skill should be used when the user asks to "animate our logo", "make a logo intro/stinger", "build a brand reveal", "create an app splash animation", "loop a loader logo", "draw on our SVG mark", "morph an icon into the wordmark", or "sync the logo to a sound-logo". Covers web (SVG/Lottie), video, and app-splash delivery.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- motalim-ai/motion-starter-kittheir own version, first seen Nov 1, 2026
- willlee1995/skillsword for word, first seen Oct 13, 2026
Other versions2 projects use a version of this.
Word for word · 1
- willlee1995/skills★ 1100% same
Edited · 0
None found.
Wrote their own version · 1
- motalim-ai/motion-starter-kit★ 45same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- after-effectsSkill
- animation-principlesSkill
- beat-sync-editingSkill
- color-motionSkill
- motion-art-directionSkill
- motion-backgroundSkill
- remotion-videoSkill
- shot-compositionSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 132
Check fidelity (matches the mark, one clear technique) and artifacts — brand geometry undistorted, clearspace clear of motion debris, no …
- Very specific: line 133
Iterate: if any check fails (e.g. a half-drawn stroke at ?t=<dur> or distorted geometry mid-reveal), fix the …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Logo Animation
Bring a brand mark to life with one clear idea, on-brand geometry, and a crisp settle. Animate for web (SVG/Lottie), video intros/outros, or app splash screens, and always ship a static end-frame fallback.
When to use
- Build an intro stinger, sign-off, app splash, or loader idle loop.
- Reveal a brand mark on a landing hero or sizzle reel.
- Draw on an SVG mark, wipe/build it in piece by piece, or morph an icon into a wordmark.
- Sync the final settle of the mark to a sound-logo beat.
Core principle
Pick ONE technique per logo — draw OR build OR morph — not all at once. Reveals run 0.8–2.5s. Never distort brand geometry; scale and fade are safe, skew and squash usually are not. Respect clearspace (keep the mark's minimum margin clear of motion debris). Always provide a prefers-reduced-motion path that shows the final mark with no motion.
Technique map
| Technique | Best for | Mechanism |
| Stroke draw-on | Line marks, monograms, signatures | stroke-dashoffset 1→0 |
| Mask wipe / reveal | Filled shapes, gradients | animate a <clipPath> / <mask> rect |
| Build-on (stagger) | Multi-piece marks, grids | per-group opacity+transform, staggered |
| Morph | Icon ↔ wordmark, shape→logo | GSAP MorphSVG or matched path interpolation |
| Idle loop | Loaders, ambient splash | seamless cyclic transform (rotate/pulse) |
| Wordmark | Logotypes | per-letter mask/translate stagger |
Quick start: SVG stroke draw-on
The fastest on-brand web reveal. Each path draws itself, then fills settle in.
<svg viewBox="0 0 200 80" id="logo">
<path class="ink" d="M10 60 L40 20 L70 60" fill="none"
stroke="#111" stroke-width="6" stroke-linecap="round"
pathLength="1" stroke-dasharray="1" stroke-dashoffset="1"/>
</svg>
<style>
@keyframes draw { to { stroke-dashoffset: 0; } }
#logo .ink { animation: draw 1.1s cubic-bezier(.65,0,.35,1) forwards; }
@media (prefers-reduced-motion: reduce) {
#logo .ink { animation: none; stroke-dashoffset: 0; }
}
</style>pathLength="1" normalizes every path to length 1, so one stroke-dasharray/offset value works regardless of geometry. Stagger multiple strokes with animation-delay.
Quick start: build-on with stagger (GSAP)
import gsap from "gsap";
// each <g class="piece"> is one mark component
gsap.from(".piece", {
opacity: 0, scale: 0.85, transformOrigin: "50% 50%",
duration: 0.5, ease: "back.out(1.6)", stagger: 0.08,
onComplete: () => gsap.to("#mark", { scale: 1, duration: 0.2, ease: "power2.out" })
});Group order matters: reveal the base/container first, then accents, then the wordmark last so the eye lands on the name.
Sound-logo sync
When audio exists, the brand's final settle frame must land exactly on the sonic accent (the "ding"/whoosh peak). Decide the audio first, find the peak timecode, then time the reveal so the mark snaps to full opacity/scale on that frame. A 1.0s reveal landing a 1.2s mnemonic feels premium; a settle that floats free of the sound feels cheap. Add a tiny overshoot-and-settle (scale 1.04→1.00 over ~0.15s) on the beat for impact.
Delivery targets
- Web, interactive / hero: inline SVG + CSS or GSAP. Smallest payload, crisp at any size, scriptable.
- Product / app, designer-made: Lottie (
.jsonexported from After Effects via Bodymovin). Uselottie-webor@lottiefiles/dotlottie-web; setloop,autoplay, and a poster fallback frame. - Video intro/outro: Remotion (React) or After Effects render to ProRes/H.264. Pre-render at 2x for crispness.
// Lottie delivery with reduced-motion guard
import { DotLottie } from "@lottiefiles/dotlottie-web";
const reduce = matchMedia("(prefers-reduced-motion: reduce)").matches;
const dl = new DotLottie({
canvas: document.querySelector("#logo-canvas"),
src: "/logo.lottie", autoplay: !reduce, loop: false,
});
if (reduce) dl.addEventListener("load", () => dl.setFrame(dl.totalFrames - 1));Output checklist
- Animated mark in the target format (SVG/Lottie/video).
- Static final-frame fallback (SVG or PNG) for reduced-motion and posters.
- One clear technique, reveal ≤2.5s, brand geometry intact, clearspace respected.
- Sound-logo settle aligned to the audio peak (if audio present).
Deliver & verify (standalone HTML)
Packaged helper (
scripts/):scripts/seek-shot.sh anim.html 0 1.5 3freezes the?t=Nharness and screenshots each moment;scripts/contact-sheet.sh sheet.png frame-*.pngtiles them for one-glance review. Seescripts/README.md.
Logo animation spans web/SVG/Lottie, video, and app splash. For web/SVG/Lottie delivery use this standalone-HTML loop; for a video logo sting, render via the remotion-video verify loop instead.
For web/SVG/Lottie, ship one .html file that opens directly in a browser — inline SVG markup plus the reveal (CSS or one CDN GSAP <script>), self-contained. One file is the right tier.
Output contract:
- One
.htmlfile: the inline SVG (or Lottie canvas) + the reveal in inline<style>/<script>. - One animation driver — the CSS
@keyframesdraw/build, or a single GSAP timeline; not both. - Include the freeze harness below, matched to the technique, so any moment can be screenshotted deterministically.
Freeze harness — pin a frame for screenshots. Match the mechanism to the technique:
<script>
const t = new URLSearchParams(location.search).get("t");
if (t !== null) {
const T = parseFloat(t);
// CSS stroke-draw / build-on:
document.querySelectorAll("#logo *").forEach(el => {
el.style.animationDelay = (-T) + "s";
el.style.animationPlayState = "paused";
});
// GSAP timeline instead? → tl.pause(); tl.seek(T);
// SMIL <animate>? → const s = document.querySelector("svg"); s.pauseAnimations(); s.setCurrentTime(T);
// Lottie? → dl.setFrame(Math.round(T * fps));
}
window.__ready = true; // ready signal for headless wait
</script>Verify loop — render → freeze → screenshot → check:
- Open the file frozen at start / mid / end of the reveal (≤2.5s):
…/logo.html?t=0,?t=<dur/2>,?t=<dur>. - Screenshot each frozen frame.
- Check fidelity (matches the mark, one clear technique) and artifacts — brand geometry undistorted, clearspace clear of motion debris, no half-drawn strokes left at the end frame, the static final frame is the true logo.
- Iterate: if any check fails (e.g. a half-drawn stroke at
?t=<dur>or distorted geometry mid-reveal), fix the stroke-dashoffset/duration/easing, re-render the same?t=N, and re-screenshot to confirm the fix — loop until every frame is clean.
npx playwright screenshot --wait-for-timeout=500 "file://$PWD/logo.html?t=1.1" frame-mid.pngBefore you finish:
- Opens standalone in a browser — no console errors, no missing CDN.
- One technique/driver;
?t=Nfreezes the exact frame correctly. - Screenshotted at start / mid / end — geometry intact, clearspace respected, final frame is the clean mark.
prefers-reduced-motionhonored (final static mark shown, no motion) + static end-frame fallback shipped.- Reveal ≤2.5s; if audio present, the settle lands on the sound-logo peak.
Reference files
references/logo-patterns.md— runnable code for every technique: stroke draw-on, mask wipe build-on, GSAP MorphSVG morph, seamless idle loop, Lottie delivery, plus timing tables (0.8–2.5s), brand clearspace rules, and reduced-motion fallbacks.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

