Yuv Pilot
hoodini/ai-agents-skills
Top-of-pyramid orchestrator for Yuval Avidani's YUV.AI brand work.
Creates animated looping GIFs from CSS animations (default) or AI image-to-video.
$ npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Varnan-Tech/opendirectory graphic-gif --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/graphic-gif .claude/skills/graphic-gif && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "graphic-gif" agent skill from https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-gif into .claude/skills/graphic-gif/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "graphic-gif", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-gifType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Varnan-Tech/opendirectory graphic-gif --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/graphic-gif .agents/skills/graphic-gif && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "graphic-gif" agent skill from https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-gif into .agents/skills/graphic-gif/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "graphic-gif", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Varnan-Tech/opendirectory graphic-gif --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/graphic-gif .cursor/skills/graphic-gif && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "graphic-gif" agent skill from https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-gif into .cursor/skills/graphic-gif/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "graphic-gif", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Varnan-Tech/opendirectory.git --path skills/graphic-gif--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Varnan-Tech/opendirectory graphic-gif --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/graphic-gif .gemini/skills/graphic-gif && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "graphic-gif" agent skill from https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-gif into .gemini/skills/graphic-gif/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "graphic-gif", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Varnan-Tech/opendirectory graphic-gifInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/graphic-gif .github/skills/graphic-gif && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "graphic-gif" agent skill from https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-gif into .github/skills/graphic-gif/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "graphic-gif", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Varnan-Tech/opendirectory graphic-gif --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/graphic-gif .opencode/skills/graphic-gif && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "graphic-gif" agent skill from https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-gif into .opencode/skills/graphic-gif/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "graphic-gif", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
graphic-gifCreates animated looping GIFs from CSS animations (default) or AI image-to-video.
Graphic Gif is an agent skill from Varnan-Tech/opendirectory. Creates animated looping GIFs from CSS animations (default) or AI image-to-video. 800×800px default, 6 animation types, 4 style presets. Trigger when user says "create an animated gif", "make a looping gif", "animated banner", "CSS animation gif", "social media animation", "make this loop", "animated graphic", or "motion graphic".
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `README.md`, `evals/evals.json` and `references/animation-library.md`). Compatibility notes: ["claude-code","gemini-cli","github-copilot"]
It sits in Media & Creative, covering Web animation and motion, Social media graphics and Image generation. The repository describes itself as: AI Agent Skills built for Founders who hate Marketing. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 62e437a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (JavaScript and Shell), which the agent can run.
Shell commands in SKILL.md call:
ffmpegbashnodeFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.klingai.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
KLING_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
["claude-code","gemini-cli","github-copilot"]
From compatibility in the SKILL.md frontmatter.
Graphic Gif loads about 3k tokens when it runs, and up to ~7.8k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 1,184 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Varnan-Tech/opendirectory at commit 62e437a, republished under its MIT licence (© Varnan-Tech). 1,184 words, ~3,041 tokens.
.claude/skills/graphic-gif/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Generates an animated looping GIF from CSS animations or an AI image-to-video API. Output: animation.gif.
Unlike every other graphic- skill that outputs a static PNG or PDF, this skill outputs an animated .gif. Uses CSS @keyframes animations captured frame-by-frame via Playwright and the Web Animations API (Option A, default), or an AI image-to-video pipeline via Kling (Option B).
ai-generated unless explicitly requested.clamp() values computed at 800px (1vw = 8px).<style>. Font CDN <link> only external dependency.setTimeout loops, NOT animation-delay tricks.Math.floor(duration_seconds * fps) frames. The frame at t=duration_ms MUST NOT be captured — it duplicates t=0 and causes a visible stutter at the loop point.clean-slate, terminal, electric-burst, brutalist.@keyframes percentages — frame seeking handles timing.Required: prompt (content description AND motion brief)
Optional with defaults:
| Parameter | Default | Options |
|---|---|---|
| animation_type | css-animated | css-animated / ai-generated |
| duration | 3.0 | seconds |
| fps | 12 | frames per second |
| loop | true | true / false |
| style | clean-slate | clean-slate / terminal / electric-burst / brutalist |
| dimensions | 800x800 | WxH in pixels |
| optimization | balanced | quality / balanced / filesize |
If prompt is missing or lacks motion description, ask exactly:
"What should the GIF show? Describe the content AND the motion (e.g., 'Stats count up: 73% of buyers read 3+ pieces of content before purchase. Typewriter effect, one character at a time. Style: terminal. 3 seconds, 12fps.')
Key settings (all optional, defaults shown):
- animation_type: css-animated (default) or ai-generated
- duration: 3.0 seconds
- fps: 12
- loop: true
- style: clean-slate (options: clean-slate / terminal / electric-burst / brutalist)
- dimensions: 800x800
- optimization: balanced (options: quality / balanced / filesize)"
If all required info is present → skip directly to Step 2.
For css-animated:
fade-in, slide-in, typewriter, counter, pulse, loop-scrollreferences/animation-library.md — find the chosen type's full HTML/CSS specreferences/style-presets.md — load the chosen style's CSS token blockMath.floor(duration_seconds * fps) — write this number down| Decision | Derive from |
|---|---|
| Tone | Emotional register for audience (mechanical / warm / electric / professional) |
| Signature element | ONE visual device used consistently (cursor blink, ghost number, scan-line overlay, accent border) |
| Motion style | Ease curve philosophy for this type (spring / linear / step / ease-in-out) |
| Unforgettable detail | The ONE thing a viewer will remember about this GIF |
For ai-generated:
POST https://api.klingai.com/v1/videos/image2video with image_url and prompt describing the motion# Two-pass palette for best color quality
ffmpeg -i input.mp4 -vf "fps=12,scale=800:800:flags=lanczos,palettegen=stats_mode=diff" palette.png
ffmpeg -i input.mp4 -i palette.png -vf "fps=12,scale=800:800:flags=lanczos,paletteuse=dither=bayer:bayer_scale=5" output.gifRead references/animation-library.md and references/style-presets.md before generating.
Canvas base — required on every GIF:
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
body {
width: 800px;
height: 800px;
overflow: hidden;
background: var(--bg);
font-family: var(--font-body);
}
.canvas {
width: 800px;
height: 800px;
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}Animation rules:
animation-fill-mode: forwards (or both) on ALL animated elementstypewriter → steps(N, end) where N = exact character countcounter → linearfade-in → cubic-bezier(0.22, 1, 0.36, 1) (ease-out)slide-in → cubic-bezier(0.34, 1.56, 0.64, 1) (spring overshoot)pulse → ease-in-out with animation-iteration-count: infiniteloop-scroll → linear with animation-iteration-count: infiniteanimation-iteration-count: 1 — looping happens at GIF levelanimation-delay — stagger is baked into @keyframes percentagesTypewriter N calculation: Count every character including spaces, punctuation, numbers:
steps(14, end)steps(13, end)Counter CSS @property (required for counter type):
@property --num {
syntax: '<integer>';
inherits: false;
initial-value: 0;
}
.counter {
animation: countUp var(--duration) linear forwards;
counter-reset: num var(--num);
}
.counter::after { content: counter(num); }
@keyframes countUp {
from { --num: 0; }
to { --num: var(--target); }
}Loop-scroll: content MUST be duplicated:
<!-- 4 original items + 4 duplicate items -->
<div class="ticker-track" style="--item-count: 4;">
[item1][item2][item3][item4][item1][item2][item3][item4]
</div>translateX(0 → -50%) with linear infinite.
Design quality rules (from commit in Step 2):
#fff for dark styles — use the preset's exact --bg value::after with repeating-linear-gradient at opacity: 0.034px solid #000 or 4px solid var(--accent) on key elementCanvas:
body and .canvas exactly 800×800px (or specified dimensions)overflow: hidden on both body and .canvasAnimations:
animation-delay anywhere — stagger is in @keyframes percentagest=0 (Web Animations API will seek from there)animation-fill-mode: forwards or both on all animated elementsanimation-iteration-count: 1animation-iteration-count: infiniteType-specific checks:
steps(N, end) = exact character count of text string@property --num declared with syntax: '<integer>' and initial-value: 0counter-reset: num var(--num) and ::after { content: counter(num) }Design:
references/style-presets.md — no free-floating hex colors<link> present for chosen style's fontDetermine slug from prompt (kebab-case, ≤30 chars). Create output directory:
mkdir -p [slug]Save HTML:
[slug]/animation.htmlOpen in browser for quick visual check:
open [slug]/animation.htmlRun export script (replace [skill-root] with the actual path to this skill):
bash [skill-root]/scripts/export-gif.sh \
[slug]/animation.html \
[slug]/animation.gif \
--duration [duration] \
--fps [fps] \
[--no-loop if loop=false] \
--optimization [optimization] \
--width [W] \
--height [H]The script:
gifenc, sharp (or jimp), and playwright in a temp directorycapture-and-encode.mjs — pauses animations, seeks each frame, screenshots, assembles GIFgifsicle optimization pass if availableIf export script not found at [skill-root]/scripts/export-gif.sh, check that the skill was installed with its scripts/ folder intact.
Show after successful export:
## GIF: [1-line description]
Date: [YYYY-MM-DD] | Style: [style] | Animation: [type] | [duration]s @ [fps]fps
Dimensions: [WxH] | Frames: [N] | Loop: [true/false]
Files
Source: [slug]/animation.html
Output: [slug]/animation.gif
Size: [X] KB
Checklist
- [ ] Preview loops cleanly at start/end point (no stutter)
- [ ] Text legible at intended display size
- [ ] File size appropriate: email <500KB / social <3MBOnly use when animation_type: ai-generated is explicitly specified.
Requirements:
KLING_API_KEY (66 free credits/day, no credit card for free tier)ffmpeg installed locally for video→GIF conversionWorkflow:
# Quick screenshot via Playwright
node -e "
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: W, height: H } });
await page.goto('file://[slug]/animation.html');
await page.screenshot({ path: '[slug]/base-frame.png' });
await browser.close();
})();
"When Kling is unavailable: Fall back to css-animated with a note to the user: "AI generation requires a Kling API key (KLING_API_KEY). Falling back to css-animated. Set the key to enable AI generation."
"Describe motion, not just content. 'Stats count up one by one' beats 'show stats'."
"Keep it simple for file size. 1–3 animated elements and a solid background."
"Think in loops. The animation should flow invisibly from end back to start."
"Specify the animation type explicitly.
typewriterandcounterare the most effective for social."✅ Good: "Create an animated GIF, css-animated, typewriter effect. Text: '73% of B2B buyers read 3+ pieces of content before contacting sales.' Each character types out one at a time. Style: terminal. 3 seconds, 12fps, loop=true."
❌ Bad: "make an animated gif of marketing tips"
© Varnan-Tech, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in skills/graphic-gif of Varnan-Tech/opendirectory.
Open the folder on GitHubat commit 62e437a
Graphic Gif next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Graphic Gif this skillVarnan-Tech/opendirectory | 674 | — | ~3k | Automated safety check: Pass | MIT | |
| Yuv Pilothoodini/ai-agents-skills | 282 | — | ~4.7k | Automated safety check: Pass | None | |
| HyperFrames Animationheygen-com/hyperframes | 60k | 3 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Slack GIF Creatoranthropics/skills | 180k | 29 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Web Asset Generatoralonw0/web-asset-generator | 514 | 1 repos | ~6.6k | Automated safety check: Pass | MIT | |
| SN Motion HTMLOpenSenseNova/SenseNova-Skills | 5.7k | — | ~2.2k | Automated safety check: Notes | MIT |
hoodini/ai-agents-skills
Top-of-pyramid orchestrator for Yuval Avidani's YUV.AI brand work.
heygen-com/hyperframes
Collects motion rules, scene blueprints, transitions and runtime adapters for HyperFrames video compositions, with GSAP as the default animation runtime.
anthropics/skills
Provides Slack size and frame limits, Python animation helpers and validators for building animated GIFs sized for emoji and messages.
alonw0/web-asset-generator
Generate web assets including favicons, app icons (PWA), and social media meta images (Open Graph) for Facebook, Twitter, WhatsApp, and LinkedIn.
OpenSenseNova/SenseNova-Skills
Builds HTML stories where one continuous camera journey advances with page progress, using researched structure, AI stills, Seedance video clips and browser QA.
AgriciDaniel/claude-seo
Generates Open Graph previews, blog hero images, product photos and infographics for SEO use through Gemini image tools and the banana extension.
Varnan-Tech/opendirectory
Creates professionally designed B2B SaaS e-books in HTML + CSS, exported as print-ready PDF.
Varnan-Tech/opendirectory
Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture.
Varnan-Tech/opendirectory
Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6.
Varnan-Tech/opendirectory
Given a product description, category keywords, or competitor names (any combination), searches Reddit, Hacker News, GitHub Issues, G2, and Google Trends for the real pains your market experiences…
Varnan-Tech/opendirectory
Aggregates RSS feeds from the past week, synthesizes the top stories using Gemini, and publishes a newsletter digest to Ghost CMS.
Varnan-Tech/opendirectory
A skill your agent uses when fetching, searching, or analyzing transcripts from Lenny's Podcast, Dwarkesh Podcast, Cheeky Pint, 20VC, or A16z Podcast.
Categories
Creates animated looping GIFs from CSS animations (default) or AI image-to-video. Graphic Gif is an agent skill from Varnan-Tech/opendirectory. Creates animated looping GIFs from CSS animations (default) or AI image-to-video.
Graphic Gif fits situations like: user says create an animated gif; make a looping gif; animated banner; CSS animation gif.
Run `npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a claude-code`. Or copy the skill folder (skills/graphic-gif in Varnan-Tech/opendirectory) into .claude/skills/graphic-gif in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a codex`. Or copy the skill folder (skills/graphic-gif in Varnan-Tech/opendirectory) into .agents/skills/graphic-gif in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Varnan-Tech/opendirectory --skill graphic-gif -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/graphic-gif, .gemini/skills/graphic-gif, .github/skills/graphic-gif and .opencode/skills/graphic-gif in your project.
Going by SKILL.md and its folder, Graphic Gif needs JavaScript and a shell for the scripts in its folder, the command-line tools its instructions call (ffmpeg, bash and node) and credentials named KLING_API_KEY. Our summary lists: Node.js; A Bash shell; A credential in KLING_API_KEY. Compatibility (from SKILL.md): ["claude-code","gemini-cli","github-copilot"].
SKILL.md names 1 domain. In commands or code: api.klingai.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Graphic Gif is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Graphic Gif: Yuv Pilot (hoodini/ai-agents-skills, 282 stars), HyperFrames Animation (heygen-com/hyperframes, 60k stars), Slack GIF Creator (anthropics/skills, 180k stars) and Web Asset Generator (alonw0/web-asset-generator, 514 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Varnan-Tech (a GitHub organization) maintains it in Varnan-Tech/opendirectory, which has 674 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on August 16, 2026.
Source: Varnan-Tech/opendirectory on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.