agentleFS
with-pebblywith-pebbly/aseprite-ai-artist/skills/concept/SKILL.md

concept

Skill473 starsChanged 44 days agoMITView on GitHub

Before drawing a new character, prop, scene or animation, write an art spec, turn it into a ready-to-paste prompt for an image-generation model, and offer the user a choice — generate a concept sheet or storyboard with it and send it back, or continue without one. When reference art arrives (from that prompt or from the user), read it into a PixelSpec and import it panel by panel, so the pixel work reproduces a decided design instead of improvising one. Use after the brief for anything drawn from scratch, and whenever the user supplies reference art; skip for edits to existing art.

4 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions4 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 4

    1. withpiper/pipekit★ 6same name
    2. asholk/silk-claude-skills★ 0same name
    3. qmertesdorf/GameForge★ 0same name
    4. yichong108/agent-skills★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository14 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 5 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Ask for both when the request is an animated character: the sheet fixes the design, the storyboard fixes the motion.

    line 101
  2. Distinctive:

    Put the prompt in a single fenced code block, so it copies in one action.

    line 107
  3. Distinctive:

    If your harness has an image-generation tool, add it as a third option ("you generate it"), never as a silent default.

    line 121
  4. Distinctive:

    Look at the image first, then write down what you read — before any pixel is placed.

    line 127
  5. Distinctive:

    No reference (the user chose to continue)?

    line 151
  6. Very specific:

    After aseprite:new has made the document:

    line 156
  7. Distinctive:

    Treat the reference as more authoritative than the brief: If the image model changed the palette, the view or added a cape nobody asked …

    line 189

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Design it first — concept sheet and storyboard

Drawing from nothing asks one model to invent a character, a pose, a camera, a palette and the placement of every pixel, all at once. It is the step where generated pixel art falls apart. Split the job:

  • An image model owns the design — the look of the character, the key poses, the storyboard. That is what those models are good at.
  • You own the pixel interpretation — reading that design into a canvas, a palette and a set of shapes, then drawing it with the rules.

The reference is a guide for proportion, pose and colour masses. It is never the pixels: a concept downscaled onto the canvas is anti-aliased mush, and no amount of cleanup turns it into pixel art (see What this must not do).

Two modes

The user gave youModeStart at
Only words ("a fire mage with a walk cycle")Creative — spec → prompt → offerstep 1
An image — concept art, a sketch, a screenshot, a sheetReference — read it, import itstep 5
An edit to art that already existsneither — use aseprite:fix—

Procedure

1. Start from the brief

aseprite:brief has already fixed canvas size, palette, view, light, outline and destination. Do not ask any of it again. The prompt needs colours, not a palette's name: for a preset, read its hex values from the knowledge://palettes resource (no document has to exist yet); for an open sprite, palette op="get".

2. Write the art spec

Short, concrete, in working notes. Everything the image model and, later, you will be held to:

  • Subject and scenario — who or what, one line of personality, and for an animation what happens from the first frame to the last.
  • Target — canvas W×H, how many pixels tall the subject stands, view and facing, light direction, outline style.
  • Silhouette — heads tall, the two or three shapes that must read at 1× (a pointed hat, a long coat, an oversized sword).
  • Palette — the exact hex list with roles: outline, skin ramp, cloth ramp, metal ramp, accent. Its size is the ceiling.
  • Animation — cycle, frame count, one line per key pose, timing in ms, loop or one-shot. Plan it with rules://05-animation (or the animation-director agent) — the storyboard panels are these keys.
  • Must not — text, background scenery, props that are not in the brief, camera changes between panels.

3. Build the prompt

In English whatever language the conversation is in — image models follow English prompts best. It has to produce something you can slice with reference op="import" grid=…, so the layout contract is not optional: equal panels, one row, same scale and ground line in every panel, flat background, no text.

For a character or prop — a concept sheet:

Pixel art character concept sheet of {subject}: {one-line personality}.
{view} view, {facing}, light from the {light}. Low-resolution pixel art look:
the character is about {height}px tall on a {W}×{H} sprite, hard pixel edges,
no anti-aliasing, no gradients, {outline style} outline.
Palette — use only these colours: {hex list with roles}.
Layout: {n} panels in a single horizontal row, equal width, evenly spaced,
the same character at the same scale in every panel, feet on the same ground
line: {panel 1: front | panel 2: side | panel 3: back | …}.
Flat plain {#ffffff or #808080} background, no scenery, no text, no labels,
no borders, no watermark.

For an animation — a storyboard, one panel per frame:

Pixel art animation storyboard of {subject} performing a {cycle}.
{view} view, facing {facing}, camera locked, light from the {light}.
Low-resolution pixel art look: the character is about {height}px tall on a
{W}×{H} sprite, hard pixel edges, no anti-aliasing, {outline style} outline.
Palette — use only these colours: {hex list with roles}.
Layout: exactly {N} panels in a single horizontal row, equal width, evenly
spaced, identical character size and ground line in every panel — each panel
is one frame, left to right:
1. {key pose 1}
2. {key pose 2}
…
{N}. {key pose N}
Flat plain {background} background, no motion lines, no text, no numbers,
no borders, no watermark.

Ask for both when the request is an animated character: the sheet fixes the design, the storyboard fixes the motion. Fill every {…} — a prompt with a placeholder left in it produces a generic character.

4. Offer the choice — once, in one message

Put the prompt in a single fenced code block, so it copies in one action. If the brief is still awaiting confirmation, this is the same message — decisions, prompt, choice — not a second round trip. Then offer exactly these options, through the harness's question tool when it has one (Claude Code's AskUserQuestion, omp's ask), otherwise as a numbered list:

  1. "I'll generate references" — the user pastes the prompt into any image model (ChatGPT, Gemini, Midjourney, …) and sends the result back. Ask for the image as a file path — saved to disk, or dragged into the chat where the harness turns that into a path — because reference import reads files, not pixels you have only seen in the conversation.
  2. "Continue without references" — go straight to drawing from the spec. The spec still binds: it is the design now.

If your harness has an image-generation tool, add it as a third option ("you generate it"), never as a silent default. When the user chooses option 1, stop and wait for the image; do not start drawing in the meantime.

5. Read the reference into a PixelSpec

Look at the image first, then write down what you read — before any pixel is placed. This is where the design becomes decisions you can check against:

{
  "canvas": [32, 32],
  "view": "front-3/4",
  "source": { "path": "…/storyboard.png", "panels": 4, "panelSize": [256, 256] },
  "silhouette": { "head": [11, 3, 20, 11], "torso": [10, 12, 22, 22], "staff": [23, 2, 25, 30] },
  "landmarks": { "eyesY": 8, "waistY": 18, "feetY": 30 },
  "palette": { "outline": "#1d2b53", "robe": ["#7e2553", "#ff004d"], "skin": ["#ab5236", "#ffccaa"] },
  "frames": ["contact, staff forward", "down, 1px lower", "pass, 1px higher", "up"],
  "deviations": ["belt buckle and runes dropped — 1px at this size is noise"]
}
  • Coordinates are target pixels, not source pixels: scale what you see down to the canvas and write the result. Bounding boxes are [x0, y0, x1, y1].
  • Palette: sample the panel — reference op="sample_palette" path=… region=… — then map each colour mass onto the sprite palette. Do not adopt the sampled colours; an image model's "four colours" are forty.
  • Deviations are the design decisions the pixel version makes on purpose: what does not survive at this size and is simplified or dropped. Listing them here is what lets the review loop tell a deliberate change from a miss.
  • No reference (the user chose to continue)? Write the same PixelSpec from the art spec alone. It is still the thing the drawing is checked against.

6. Import it

After aseprite:new has made the document:

  • A concept sheet — import the panel for the view you are drawing: reference op="import" path=… region={x, y, width, height} (source pixels).
  • A storyboard — create the frames first (frame op="add" count=N-1), then one call puts panel i on frame i of a single reference layer: reference op="import" path=… grid={columns: N, rows: 1}. Panels that are not evenly spaced: one region import per panel, each with its frame.
  • look op="compare" on frame 1: the left half is what you imported. Wrong panel, or the character cut off? Fix the region now, not after drawing.

7. Hand over to drawing

aseprite:draw (or aseprite:animate for a storyboard) does the work, over the reference. The loop that makes a reference pay off:

  1. look op="compare" — reference left, art right, same scale.
  2. Name the three to five largest mismatches — silhouette, proportion, pose, placement of colour masses. Not "improve it": a list.
  3. Fix only those, in one draw call.
  4. Compare again. Stop when every remaining mismatch is a listed deviation.

Two rounds is normal. Remove the reference layer before export (reference op="remove") — aseprite:export checks for it.

What this must not do

  • Pixelize the concept. Importing the reference and calling it the art, copying its pixels through read_pixels into draw, or recolouring it into the palette all produce the same AI mush. Draw the sprite; use the reference.
  • Ask twice. The spec, the prompt and the choice are one message.
  • Hide the prompt in prose, translate it, or leave {placeholders} in it.
  • Draw while waiting for a reference the user said they would send.
  • Treat the reference as more authoritative than the brief. If the image model changed the palette, the view or added a cape nobody asked for, the brief wins — note it as a deviation.

Related

aseprite:brief before this, aseprite:draw and aseprite:animate after it. rules://03-silhouette-and-form for reading proportions, rules://01-palette-and-color for mapping colours onto a palette, rules://05-animation for key poses. rules://36-character-design for shape language and silhouette, rules://37-views-and-directions for the camera, rules://91-composition-and-scenes for anything with a background, and the subject rows of skill://studio.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.