character-sprites
Skill2 starsChanged 22 days agoMITView on GitHub
Turn a humanoid character description into a 2D game prototype with transparent idle, walk, punch and jump animations, a sprite atlas, timing metadata and an interactive preview. Use when a coding agent needs animated character art for a side-view game.
- Reads credentials
In this repository10 other files it gives its agents.
- alt-text-writerSkill
- jingle-makerSkill
- narrated-poemSkill
- og-card-makerSkill
- photo-restylerSkill
- poster-generatorSkill
- pr-describerSkill
- ui-mockupSkill
- video-teaserSkill
- visual-judgeSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Prefer simple readable silhouettes without held weapons, wings, trailing cloth or disconnected accessories.
- Distinctive: line 20
Run from this skill directory, substituting the requested description:
- Distinctive: line 55
Use the manifest pivot at (128,236) within each frame.
≈ “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
Character sprites
Generate a canonical character and a matching sheet of separate body parts. Local code removes the background, places joints and bakes a cutout rig into 32 transparent frames. Reusing parts preserves identity across frames and makes opposite-leg motion deterministic. Inspect the resulting motion before integrating it.
Scope
One right-facing humanoid, eight frames each for idle, walk, punch and jump. Left-facing playback mirrors the art. Limbs are rigid cutouts without articulated elbows or knees: suitable for game prototyping, with visible foot tilt and possible sliding. This does not supply hand-drawn animation, additional camera directions, hitboxes or jump physics.
Prefer simple readable silhouettes without held weapons, wings, trailing cloth or disconnected accessories. Magenta and nearby pink/purple hues are reserved for background removal. If these colors are essential to the requested character, adapt the matte/extraction first; do not silently change their design.
Requires Node 22.23.4+, 24.22.1+, or 26.12.1+, nanoodle CLI >=0.4, ffmpeg/ffprobe and NANOGPT_API_KEY in the environment. Description and reference images go to NanoGPT; extraction, animation and preview run locally. Never print credentials or distribute raw CLI summaries containing account information.
Generate
Run from this skill directory, substituting the requested description:
npx nanoodle run workflows/character-rig.noodle-graph.json \
--input 'Character=A compact furnace knight with an ivory helmet, amber visor, navy armor, short red scarf, brass gauntlets and heavy boots. Outlined 2D platformer art. No weapon or wings.' \
--out ./character-raw --timeout 360000 --json > run.json
node scripts/rig.mjs run.json ./character-pack
python3 -m http.server 8080 --directory ./character-packOpen http://localhost:8080/preview.html. Any static server works. The workflow uses one text call and two image calls. The tested Muse reference and parts calls cost $0.01 each; future pricing and latency can differ. Report actual run costs and targeted retries separately. Do not start duplicate requests while an earlier request is still running.
Inputs
| Key | Purpose |
Character | Character description; defaults to the included furnace knight. |
Character designer | Optional system prompt for the character prompt writer. |
Outputs
The workflow saves Reference.<ext> and Rig parts.<ext>; their local paths are in
outputs.Reference and outputs["Rig parts"] in run.json. Use those reported paths,
then run the local rig to build the animation pack.
Deliver
frames/: 32 RGBA PNGs, 256×256;idle_00–idle_07,walk_00–walk_07,attack_00–attack_07,jump_00–jump_07.atlas.png: 2048×1024, eight columns and four animation rows.atlas.json: Phaser-style frame rectangles and normalized pivots. The customanimationsentries contain ordered frame names, millisecond durations andrepeat(-1 loop, 0 one-shot). Engine integration must read these explicitly.preview.html: playback, speed, pause, frame scrubbing, background inspection, mirrored facing, arrow-key movement and Space punch.parts/andrig-config.json: extracted artwork and editable proportions/joints.qa.json: mechanical checks and outstanding visual review.sources/: original reference, parts sheet and sanitized run metadata for offline reuse.
Use the manifest pivot at (128,236) within each frame. Do not center each pose by its visible bounding box. No runtime rig library is required: the output is baked PNG frames.
Inspect and optimize
Watch each action at normal and slow speed, including the loop seam. Check shoulder/hip overlap, opposite leg phases, feet meeting the ground, a readable punch, stable character identity and alpha edges on light/dark/checker backgrounds. Mechanical checks do not establish animation quality. Record visible limitations in the handoff.
Adjust proportions and joints locally before spending on regeneration:
node scripts/rig.mjs run.json ./character-adjusted ./character-pack/rig-config.jsonThe output directory must not already exist. Each build stages its files beside the destination and publishes the complete pack with a directory rename. A failed build leaves the destination absent and removes its temporary folder; rerun from the same saved sources into a fresh destination. Concurrent builds cannot overwrite a completed pack. An interrupted process may leave a hidden temporary folder (.<destination>-*); remove only that abandoned folder after confirming the process has stopped. Keep the last complete pack until the new one passes review.
Edit the saved configuration: heights sets each part's pixel height; pivots sets normalized [x,y] positions within each cropped part; joints sets [dx,dy] offsets from the hip for near/far shoulders and hips. The same part scale is reused across all frames. The script detects blank gutters around the sheet center, removes reserved magenta including enclosed gaps, and rejects empty or clipped output. It cannot identify incorrect anatomy automatically.
To reuse saved sources without API calls, change into character-pack/sources and invoke the absolute path to rig.mjs with run.json and a new output directory. Relative source paths resolve from the current working directory.
If a part is missing or malformed, regenerate only the parts edit from the saved reference. Keep the successful reference; record retry cost. Start with one run and one targeted improvement unless broader experimentation is authorized. The included furnace-knight experiment validates this method for one design; other proportions require review and may need configuration changes.
Jump integration
The eight jump poses cover anticipation, rise, apex, fall and landing; animations.jump.phases gives their indices. These are pose frames without a baked jump trajectory. Apply gravity to the character world position and select a pose from vertical velocity and ground contact. For a heavy game feel, the arena example uses strong downward acceleration, a short airborne window and a landing recovery. Keep the ground pivot consistent; do not derive world height from each pose silhouette. The animation lab previews the poses in place.
Worked example: Iron Verdict
Play the finished prototype · Download its game code and assets. First-party example built with this skill and a coding agent.
Goal: “Create a furnace knight, then build a harsh side-view arena fighter around its animations. Make jumps heavy and hits readable through hit-stop, knockback and impact effects. Include victory, defeat and restart.”
The graph generated the reference and separate parts; this skill baked the transparent frames and atlas. The coding agent then built movement, gravity, punch/heavy/slam combat, enemies, three rounds and impact effects in a browser game. It added the jump poses and tuned gameplay locally, reusing the original artwork without another API call.
Use this as an integration reference: load the atlas once, preserve its ground pivot, select jump poses from physics state, and tune impact in game code. Test victory, defeat and restart as well as animation playback. Generating the graph alone does not build a game. Rigid limbs and mirrored facing remain prototype limitations.
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.

