skills/svelte-ui-animator/SKILL.md
Analyze and implement purposeful UI animations for Svelte/SvelteKit + Tailwind projects. Specialized in Svelte transitions, actions, and animation patterns. Use when user asks to add animations, enhance UI motion, animate pages/components, or improve visual feedback. Triggers on "add animations", "animate UI", "motion design", "hover effects", "scroll animations", "page transitions", "micro-interactions".
npx skillsauth add ajianaz/skills-collection svelte-ui-animatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Implement purposeful, performant animations using Svelte's built-in transitions and actions. Focus on key moments: hero intros, hover feedback, content reveals, and navigation transitions with Svelte's reactive nature.
"You don't need animations everywhere" - Prioritize:
| Priority | Area | Purpose | |----------|------|---------| | 1 | Hero Intro | First impression, brand personality | | 2 | Hover Interactions | Feedback, discoverability | | 3 | Content Reveal | Guide attention, reduce cognitive load | | 4 | Background Effects | Atmosphere, depth | | 5 | Navigation Transitions | Spatial awareness, continuity |
Execute phases sequentially. Complete each before proceeding.
src/routes/ and components in src/lib/components/tailwind.config.js and app.html for existing animations/keyframesOutput: Animation audit table. See references/component-checklist.md.
Output: Implementation plan with component → animation mapping.
scrollReveal, mousePosition, staggerAnimate if neededreferences/animation-patterns.mdPerformance rules:
<!-- ✅ DO: Use transforms and opacity only -->
<div style="transform: translateY(20px); opacity: 0.5; filter: blur(4px);" />
<!-- ❌ DON'T: Animate layout properties -->
<div style="margin-top: 20px; height: 100px; width: 200px;" />
prefers-reduced-motion works| Trigger | Implementation |
|---------|----------------|
| Page load | CSS animation with animation-delay for stagger |
| Scroll into view | Svelte actions with IntersectionObserver or on:viewportenter |
| Hover | Tailwind hover: utilities or Svelte mouseenter/mouseleave |
| Click/Tap | State-driven with Svelte reactive statements ($:) |
Staggered children with Svelte transitions:
<script>
import { flip, fly } from 'svelte/transition';
</script>
{#each items as item, i (item.id)}
<div
in:fly={{ y: 20, delay: i * 50 }}
out:fly={{ y: -20 }}
>
{item.content}
</div>
{/each}
Advanced scroll reveal action:
<!-- actions/scrollReveal.js -->
export function scrollReveal(node, options = {}) {
const {
threshold = 0.1,
animation = 'fade-slide-up',
delay = 0
} = options;
const observer = new IntersectionObserver(
([entry]) => {
if (entry.isIntersecting) {
setTimeout(() => {
node.classList.add('animate-' + animation);
}, delay);
}
},
{ threshold }
);
observer.observe(node);
return {
destroy() => observer.disconnect()
};
}
Usage with reactive state:
<script>
import { scrollReveal } from '$lib/actions/scrollReveal.js';
import { onMount } from 'svelte';
let isVisible = false;
let element;
onMount(() => {
const observer = new IntersectionObserver(
([entry]) => isVisible = entry.isIntersecting
);
observer.observe(element);
return () => observer.disconnect();
});
</script>
<div
bind:this={element}
use:scrollReveal={{ animation: 'fade-in', delay: 100 }}
class:visible={isVisible}
>
Content here
</div>
references/animation-patterns.mdreferences/component-checklist.mdreferences/tailwind-presets.mdfade, fly, slide, scale, blur, crossfadeAlways include in global CSS:
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
}
}
tools
Replace with description of the skill and when Claude should use it.
testing
Generate structured task lists from specs or requirements. IMPORTANT: After completing ANY spec via ExitSpecMode, ALWAYS ask the user: "Would you like me to generate a task list for this spec?" Use when user confirms or explicitly requests task generation from a plan/spec/PRD.
tools
Optimize SvelteKit applications by leveraging SvelteKit's full-stack architecture for instant server-side rendering and progressive enhancement. Specialized in load functions, form actions, and SvelteKit's data loading patterns. Use when: - User reports slow initial page load with loading spinners - Page uses onMount + fetch for data fetching - Store patterns cause waterfall fetching - Need to improve SEO (content not in initial HTML) - Converting client-side data fetching to server-side load functions - Implementing progressive enhancement patterns Triggers: "slow loading", "optimize fetching", "SSR data", "SvelteKit optimization", "remove loading spinner", "server-side fetch", "convert to load function", "progressive enhancement", "data fetch lambat", "loading lama"
development
Implement or extend user-facing workflows in SvelteKit applications with full-stack capabilities. Specialized in SvelteKit's load functions, form actions, and progressive enhancement. Use when the feature is primarily a UI/UX change backed by existing APIs, affects only the web frontend, and requires following SvelteKit conventions.