skills/gemini-animation/SKILL.md
Create production-grade animated product demos and launch videos using Gemini 3.1 Pro. Uses a structured scene-based prompting process — Claude interviews you on intent, builds a detailed animation plan with timing/state/effects per scene, then Gemini generates the animated HTML/CSS/JS.
npx skillsauth add rdfitted/claude-code-setup gemini-animationInstall 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.
This skill produces high-quality CSS/JS animations (product launches, feature demos, UI walkthroughs) by separating planning from building. Vague prompts like "animate this" produce chaotic results because animation requires spatial thinking that models aren't trained for. The fix: Claude interviews you, builds a structured scene-based prompt with explicit timing and UI state, then Gemini 3.1 Pro focuses purely on implementation.
Before writing any prompt, Claude MUST interview the user using AskUserQuestion to gather these details. Ask them in 1-2 focused rounds, not all at once.
Round 1 — Big Picture:
Round 2 — Scene Details (after Round 1):
If the user provides a pasted HTML/UI component, note it — it will be included as the base element in the animation.
From the interview answers, construct a structured scene plan. Present it to the user for approval before building.
Format:
## Animation Plan: [Title]
Duration: [total]s | Scenes: [N] | Style: [vibe]
### Scene 1: [Name] (0.0s – 3.0s)
**State**: [What's visible on screen — elements, layout, colors]
**Action**: [What happens — what moves, appears, transforms]
**Effects**: [Specific animation keywords — fade-in, scale-up, slide-from-left, blur-reveal, spring-bounce, 3D-perspective-tilt, staggered-delay, typewriter, cursor-click-ripple]
**Easing**: [ease-out, cubic-bezier, spring]
**Technical**: [CSS keyframes needed, transforms, clip-path, etc.]
### Scene 2: [Name] (3.0s – 7.0s)
...
### Scene N: [Name] — Outro
...
## Summary
- Total duration: Xs
- Key effects: [list]
- Looping: [yes/no]
Critical rules for the plan:
Present the plan and ask: "Does this look right? Want to adjust any scenes before I build it?"
Once the user approves the plan, send it to Gemini via the Gemini CLI (gemini command).
CRITICAL: Use the Bash tool to execute the Gemini CLI in headless mode. Write the prompt to a temp file first to avoid shell escaping issues.
# 1. Write the prompt to a temp file
cat > /tmp/gemini-animation-prompt.txt << 'PROMPT_EOF'
You are an elite animation engineer. Build a production-quality CSS/JS animation from this scene plan.
## SCENE PLAN
{SCENE_PLAN}
## BASE UI (if provided)
{BASE_UI_HTML_OR_EMPTY}
## ANIMATION IMPLEMENTATION RULES
**Timing & Coordination:**
- Use CSS custom properties for all timing values (--scene1-start, --scene1-duration, etc.)
- Use animation-delay to sequence scenes precisely to the timestamps in the plan
- Use animation-fill-mode: both so elements hold state between scenes
- Stagger delays must match the plan exactly
**Motion Quality:**
- Use cubic-bezier easing for natural motion — not linear, not ease
- Spring-like bounces: cubic-bezier(0.34, 1.56, 0.64, 1) for overshoot
- Smooth deceleration: cubic-bezier(0.16, 1, 0.3, 1) for slide-ins
- Gentle ease-out: cubic-bezier(0.33, 1, 0.68, 1) for fades
- Add transform: translateZ(0) for GPU acceleration on animated elements
**Visual Effects Vocabulary:**
- fade-in: opacity 0→1
- scale-up: transform scale(0.8)→scale(1) with opacity
- slide-from-left/right/top/bottom: translate + opacity
- blur-reveal: filter blur(10px)→blur(0) with opacity
- 3D-perspective-tilt: perspective(1000px) rotateY/rotateX
- spring-bounce: scale with overshoot easing
- staggered-delay: each child += Nms delay
- typewriter: overflow + width animation or steps()
- cursor-click-ripple: pseudo-element scale + fade at click point
- morph: clip-path animation between shapes
- parallax-scroll: translateY at different rates per layer
- glow-pulse: box-shadow animation with color
- counter-roll: number counting animation with @property
**Cursor Simulation (if plan includes cursor):**
- Render as a div with pointer SVG or emoji
- Animate position with smooth cubic-bezier
- Add click effect: small scale bounce + ripple circle at click point
- Cursor movement should feel human — slight curve, not linear path
**Code Structure:**
- Single self-contained HTML file
- All CSS in a <style> block (no external dependencies except Google Fonts)
- Use @keyframes for every animation — no JS animation libraries
- JS only if needed for: triggering animation restart, dynamic counters, or complex sequencing
- Responsive: use vw/vh, clamp(), and relative units
- Dark background default unless plan specifies otherwise
**Quality Standards:**
- 60fps — no layout thrashing, only animate transform and opacity where possible
- Smooth scene transitions — no jarring jumps
- Every element in the plan must be animated as described
- If the plan says 20s total, the animation must be exactly 20s
- Add a subtle background (gradient, grain, or pattern) — never plain white
OUTPUT: Complete HTML file only. No explanation, no markdown fences. Start with <!DOCTYPE html>.
PROMPT_EOF
# 2. Pipe the prompt to Gemini CLI in headless mode
cat /tmp/gemini-animation-prompt.txt | gemini -m gemini-3.1-pro -p "" -y --output-format text
Notes on the Gemini CLI approach:
-m gemini-3.1-pro selects the model-p "" enables headless (non-interactive) mode; the prompt comes from stdin-y auto-approves any tool use (YOLO mode)--output-format text gives clean text outputIf the user wants refinement, Claude can directly edit the HTML to:
| Parameter | Value | Rationale |
|-----------|-------|-----------|
| CLI | gemini (v0.29+) | Installed via npm globally |
| Model | gemini-3.1-pro-preview via -m flag | Best for structured animation code |
| Mode | Headless (-p "" with stdin) | Non-interactive, scriptable |
| Approval | -y (YOLO mode) | Auto-approve tool use |
| Output | --output-format text | Clean text, no formatting |
| Type | Description | Typical Duration | |------|-------------|-----------------| | Product Launch | Showcase UI with cinematic reveals | 15-30s | | Feature Demo | Walk through a user journey with cursor | 20-45s | | UI Walkthrough | Highlight UI elements sequentially | 10-20s | | Hero Animation | Landing page eye-catcher, looped | 5-10s | | Explainer | Animated diagram or concept | 15-30s | | Before/After | Compare states with transition | 5-10s |
User: "Make a product launch video for our new dark mode feature"
Workflow:
The video's key insight: the #1 reason AI-generated animations are bad is vague prompts. Animation is a spatial/temporal coordination problem. Models can't infer timing, sequencing, and state management from "make it look cool." By interviewing first and building a structured scene plan, we:
This consistently produces 2-3x better results than single-shot prompting.
gemini-threejs-shader-hover — For interactive hover effects (not full animations), use this skill instead. It applies Three.js WebGL shader effects (distortion, wave, chromatic aberration, RGB split) to images/elements using Gemini for GLSL generation. Invoke via /shader-hover command.development
Restore from the Kopia backup repo in one of two opinionated modes. **wikis** (frequent, default) syncs per-project `.ai-docs/` directories from backup to local project trees — used to move compound-knowledge wikis between machines via the backup drive as sneakernet. **full** (rare) restores all sources to original paths for greenfield machine rebuild. Use when the user says "restore wikis", "sync wikis from backup", "pull the wikis", "I plugged in the backup drive on this machine", "rebuild this machine", "greenfield restore", or "restore everything". For ad-hoc single-file restores, use `backup-ops restore` instead.
documentation
# /bp-iterate Iterate the Fitted Business Plan(s). Manages the **internal canonical** and the **external partner/investor variant**, snapshot-on-version-bump lineage, redaction enforcement between variants, and cross-document coupling. ## When this runs - User says `/bp-iterate`, "iterate the BP," "bump the BP," "update the business plan," "version up the BP," "create / update / refresh the external variant" - A material trigger fires per the BP's own Iteration Log (first 2 new closes / fundi
tools
Run Kopia-based backups of key Windows files and config to an external drive. Use when the user says "back up", "run a backup", "snapshot", "the backup drive is plugged in", or wants to set up / configure backups for the first time. Handles initial repo setup, drive detection by volume label, source enumeration, and snapshot creation with structured exclusions.
testing
Secondary backup operations against the Kopia repo — verify integrity, run maintenance/prune, mirror to a second destination, restore files/folders, or run a quick top-up snapshot of hot directories. Use when the user says "verify backups", "check backup integrity", "prune old snapshots", "restore from backup", "mirror backups to cloud", "quick backup", "top up the backup", or asks about backup health. For the primary backup run, use the `backup` skill instead.