# 3dicon

Turn a prompt or a still image into a looping animated icon with real transparency, ...

- Repository: https://github.com/samyost1/3dicon (567 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-09-23
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add samyost1/3dicon --skill 3dicon -g -a claude-code -y`
Codex: `npx skills add samyost1/3dicon --skill 3dicon -g -a codex -y`
Cursor: `npx skills add samyost1/3dicon --skill 3dicon -g -a cursor -y`
Gemini CLI: `npx skills add samyost1/3dicon --skill 3dicon -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add samyost1/3dicon`

## Description

Turn a prompt or a still image into a looping animated icon with real transparency, GPT Image / Nano Banana for the art, Seedance via OpenRouter for the motion, exact-unpremultiply matting for the alpha, animated WebP out. Use when asked to animate an app icon, make a 3D icon loop, produce a transparent animated asset, or add motion to flat icon art.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 3dicon

Generate a still, animate it into a seamless loop, key the background out
properly, and encode it as an animated WebP with true soft alpha, the format
`expo-image`, Chrome and Safari all render natively, with no Lottie conversion
and no new native dependency.

## Before anything

1. `pip install -r requirements.txt` (or `uv pip install -r requirements.txt`).
2. `cp .env.example .env` and fill in the keys for the backend you want.
3. `ffmpeg` must be on PATH.

Check the keys are present *before* running, `animate` costs money, and a run
that dies halfway has already spent it.

## Always stop after the still

One still, then ask. Never generate several takes to choose from, and never
run through to the animation without the user seeing the art first.

1. Generate exactly ONE still.
2. **Show it to the user** and ask plainly whether they are happy with the
   static design before anything else happens.
3. Only on a yes, animate it.

Why this is a hard rule, not a nicety: the still is 13 cents and the full run is
48 cents and four minutes, and every later stage inherits the still's object,
colour and weight. Animating art the user has not approved means paying twice.
`run` therefore stops after the still on purpose.

If they are not happy, adjust the prompt and generate one replacement, not a
grid of options. Variants exist behind `--variants` but are off by default and
should stay that way unless the user asks to compare.

## How to report back

Keep the chat almost empty. The user is looking at an image, not reading a
report, everything they need is either in the picture or in one line under it.

**After the still**, say only this, then stop and wait:

> **Still ready.**
> *(show the image)*
> Happy with it, or change something?

Do not explain the prompt, list what you did, or describe the image back to
them. They can see it.

The rest: https://github.com/samyost1/3dicon/blob/HEAD/skills/3dicon/SKILL.md
