WP

with-pebbly/aseprite-ai-artist

Developer tools
43 stars 0 forks 품질 35 트렌드 35

Your coding agent paints pixel art in the Aseprite window you already have open. MCP server + skills for Claude Code, omp, Codex, Gemini CLI and Cursor — draws, looks at its work, animates and...

개요

Not a generated PNG. Not a file changed behind your back. The document on your screen, one pixel at a time — and every step is one Ctrl+Z. ☔ 500×400 · 72 frames · 20 layers — drawn by Claude Opus 5.5 through this server. "Draw me a 32×32 knight in the PICO-8 palette, then give him a 4-frame idle." You type that, and watch it happen in Aseprite: a palette, a silhouette, shading, layers, a breathing idle, a tagged cycle. The agent after every step, and at the end tells you what it compromised on. You stay in charge. Don't like the helmet? Ctrl+Z, or just say so. You need Aseprite 1.3+ and Node 22.6+ (macOS, Linux or Windows). Codex, Gemini, Cursor, VS Code, Windsurf Your config is backed up first; --dry-run shows the change.

README


✨ What it feels like

“Draw me a 32×32 knight in the PICO-8 palette, then give him a 4-frame idle.”

You type that, and watch it happen in Aseprite: a palette, a silhouette, shading, layers, a breathing idle, a tagged cycle. The agent looks at its own work after every step, and at the end tells you what it compromised on.

You stay in charge. Don’t like the helmet? Ctrl+Z, or just say so.

Works with Claude Code, omp, Codex CLI, Gemini CLI, Cursor, VS Code and Windsurf. Best results so far: Claude Opus 5.5.

🚀 Install

You need Aseprite 1.3+ and Node 22.6+ (macOS, Linux or Windows).

1. The Aseprite extension — then quit and reopen Aseprite:

npx @pebbly/aseprite-ai-artist install-extension

2. Your agent:

3. Check it — restart your agent, then:

npx @pebbly/aseprite-ai-artist doctor

All ticks means you’re ready. Updating? Run step 1 again. Odd setups (Steam, custom folders, Windows paths) are in docs/INSTALL.md.

🎨 How it draws

Ask /aseprite:studio for anything and it runs the whole job:

Stage What happens
1 Connect Checks Aseprite is attached and reads what’s open. If it isn’t, it stops — it never edits files behind your back.
2 Brief Only for open-ended requests: size, palette, view, light — one message, one answer.
3 Concept For anything new: writes the design down and gives you a prompt for an image model. Send back a concept sheet, or say “continue without”.
4 Draw Silhouette first, written as a text grid (below), then shading.
5 Animate Splits limbs onto layers, plans key poses and timing, draws each frame, tags the cycles.
6 Review Looks, validates, fixes — two rounds, and it tells you if a third wouldn’t help.
7 Export Spritesheet + atlas, GIF or PNGs for your engine.

After every step that changed pixels, it looks at the result before moving on.

🔤 The grid loop

New in 0.5.0. The agent doesn’t draw with circles and rectangles — it types the frame out, one character per pixel, and draws that text in one call. To fix something, it reads the canvas back in the same format and changes only the characters that are wrong.

It sees the whole shape while writing it, so silhouettes stay even, limbs keep their length between frames, and an edit never spills into its neighbours. Animation is the same trick: copy the last frame’s rows, move the arm, draw.

Early signal, not a measurement: with the same model and prompts, the mage benchmark went 3 → 4/10 and the road 1 → 3/10; the tree stayed at 2 (compare them).

🧰 Skills

studio picks these for you. Call one directly when you know the step you want — as /aseprite: in Claude Code and omp, or just ask elsewhere.

Skill For Try
🎬 studio anything — it plans and runs the rest /aseprite:studio a fox, 32×32, sleeping loop
📝 brief a vague idea /aseprite:brief a cosy tavern keeper
🖼️ concept a design or storyboard before drawing /aseprite:concept a fire mage, 4-frame walk
📄 new a fresh document set up right /aseprite:new 64×64, PICO-8
🎨 palette colour: a retro look, ramps, cleanup /aseprite:palette give this a Game Boy look
✏️ draw making the thing, text included /aseprite:draw a fox curled up asleep
🌗 shade flat art that needs light /aseprite:shade light from the upper left
🦴 rig splitting a character for animation /aseprite:rig split the knight
🏃 animate walk, idle, attack cycles /aseprite:animate 8-frame walk cycle
🧱 tileset terrain and autotiles /aseprite:tileset grass-to-dirt, 16px
🔍 review an honest critique /aseprite:review why does this look off?
🩹 fix changing art without wrecking it /aseprite:fix make him more menacing
📦 export files for your engine /aseprite:export spritesheet for Godot
🗂️ submit sharing it in the gallery /aseprite:submit

In Claude Code and omp, four specialists take stages off the main agent: palette-smith, rig-builder, animation-director and the read-only pixel-critic.

🏆 Which model?

Model Drew How it went
Claude Opus 5.5 the rainy bookshop up top Best so far — 72 frames, 20 layers, one session plus a few notes.
Codex CLI gpt-5.6-terra the mascot Strong, after five rounds of critique.
Others — Untested. Send us a sprite!

Scored, repeatable runs live on the benchmark.

Everything drawn with the plugin — with its prompts, models and .aseprite source — is at pixeli.pebbly.space. The benchmark puts every model and plugin version through the same three fixed prompts and scores them against written criteria.

Made something? Ask your agent for /aseprite:submit — it packages the files and opens the pull request.

🔧 Under the hood

your agent  ──MCP──▶  server  ──▶  bridge  ──▶  Aseprite extension
  • 18 tools, grouped by noun (draw, look, layer, frame, export…) instead of ninety — every tool costs context on every turn. Reference.
  • A rulebook in rules/ — palettes, shading, outlines, timing — served over MCP, so every client gets the same craft knowledge.
  • Safe by default. Every action is one undo step. With Aseprite detached, tools refuse instead of editing files on disk. Everything binds to 127.0.0.1. Details · security.

🛠️ Development

pnpm install && pnpm run build
pnpm test                 # TypeScript
pnpm run test:extension   # the Lua handlers, inside a real Aseprite
pnpm gallery:check        # gallery and benchmark data
pnpm web:dev              # the site, locally

Read AGENTS.md before changing anything — it lists the rules that aren’t negotiable and the Lua gotchas that already cost someone a day.

📜 Licence

MIT — see LICENSE. Aseprite is a trademark of Igara Studio S.A.; this project isn’t affiliated with them.

View this README on GitHub

설치

npx @pebbly/aseprite-ai-artist install-extension