CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

generate2dsprite

Make game-ready 2D characters, creatures, props, icons and FX as master stills, sprite sheets or animation clips. Plan size, motion and finish; generate the art (image generation is the default, through generate2dmedia route_media.py - the API when a key is configured, else the local Codex or Grok CLI); approve one master still per character; then key, slice, register, scale, palette, QA and export frames for a game engine (Aseprite JSON, Godot SpriteFrames or Sprite3D). HD finish by default, pixel finish on request. Character animation is one image-to-video clip per action from the master (video2dsprite); sheets are for FX, icons and props. Use for sprites, masters, sheets, frame-by-frame animation and packaging frames from any source. Not for maps, tiles or backgrounds (generate2dmap), video clips (video2dsprite), code-drawn art (codeart2d, only on request) or calling an image or video API by itself (generate2dmedia).

Quality

95%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

92%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A dense, highly operational skill file: exact commands with flags, a fixed pipeline order, gated QC publication, explicit error-to-fix mappings, and a well-wired one-level reference bundle. Its only real cost is redundancy — the route priority and the sheets-vs-character-animation scope rule are each repeated two to three times across sections.

Suggestions

State the art-route priority (API key, then host tool / signed-in CLI, then codeart2d on no-route) once in the 'Art source' section and reduce the Master still step-2 restatement to a pointer, keeping only the exit-3 handling.

The rule that sheets are for FX, icons and props (not character animation) appears in 'Art source', 'Master still', and 'Pipeline'; keep it in the pipeline-defining location and reference it from the others.

The 'Master still' intro paragraph repeats the video2dsprite handoff and sheets scope nearly verbatim from 'Art source'; trim it to the pointers it already contains ([video-handoff.md], [master-still.md]).

DimensionReasoningScore

Conciseness

The body is extremely lean and assumes Claude's competence (no concept explanations — 'A grid is not smoothness: pose spacing, timing, the loop seam and ground contact matter more'), but a few rules are stated multiple times: 'sheets are for FX, icons and props' appears in the Art source section, the Master still intro, and the Pipeline section, and the route ordering (API key first, then local, codeart2d fallback) is enumerated in Art source and restated in Master still steps 2 and the exit-3 handling. This matches anchor 4 ('efficient; minor instances that could be trimmed') rather than 5, since not quite every token earns its place.

4 / 5

Actionability

Fully executable commands throughout: 'python "<skill-dir>/scripts/master_still.py" generate --spec <json> --takes 3 --output-dir <new>' plus a complete spec flag list (--name, --subject, --facing left|right|front|back, --finish hd|pixel, --key default #FF00FF), a needs→command pipeline table with concrete flags ('scale_frames.py --frames <pngs> --root-lock torso-x --row-baseline --emit-clips'), defined exit codes (1 errors, 2 usage, 3 no-route) with prescribed responses, and '--help lists every flag' for the remainder. Copy-paste ready and covering the common cases — anchor 5, not 4, since no key detail is missing that a flag or reference doesn't supply.

5 / 5

Workflow Clarity

The Master still section is a numbered 6-step sequence (Spec → Generate → Choose → Fix by edit → Approve → Motion steps) and the Pipeline section fixes an exact order ('sheet_qc.py spill on the raw sheet, then generate2dsprite.py process, then sheet_qc.py frames, then scale_frames.py...'). Validation is explicit and gated ('--strict-qc / --strict publish nothing on failure', 'Report every WARN or FAIL check verbatim'), with error-recovery feedback loops ('Fix a near-miss by edit, never by re-roll', 'a key_ring_spill warning: add --despill-radius 1 or --key-quality soft', 'Exit 3 means no route: say so; codeart2d is the fallback') and an Acceptance checklist. This is anchor 5; batch operations here do have validation, so no cap applies.

5 / 5

Progressive Disclosure

The ~106-line body is a genuine overview: each decision point links its one-level-deep reference inline ('Wording: [prompt-rules.md]; commands, framing and master.json: [master-still.md]'), the pipeline table rows link their detail files ([processing.md], [modes.md], [frames-and-clips.md], [palette-and-pixels.md], [engine-export.md]), and a final References section indexes all of them with scope notes. All 12 referenced .md files, the referenced scripts, and references/schemas/sprite.schema.json exist in the bundle, and scripts defer their full API to --help. Clear overview, well-signaled one-level-deep references, easy navigation — anchor 5 rather than 4 because nothing that belongs in a reference file is inlined wholesale.

5 / 5

Total

19

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An exemplary description: it states a complete concrete action pipeline, names natural trigger terms including the tool ecosystem (Aseprite, Godot), gives an explicit 'Use for' clause, and closes with named-skill negative boundaries that eliminate conflict risk. Third-person/declarative voice throughout, dense but with no fluff.

DimensionReasoningScore

Specificity

The description enumerates a full pipeline of concrete actions — 'Plan size, motion and finish; generate the art...; approve one master still per character; then key, slice, register, scale, palette, QA and export frames for a game engine (Aseprite JSON, Godot SpriteFrames or Sprite3D)' — plus both finish modes ('HD finish by default, pixel finish on request') and the character-animation model ('one image-to-video clip per action from the master'). This is multiple specific concrete actions with comprehensive coverage, matching anchor 5 rather than 4, whose example lists only three to four actions with admitted gaps.

5 / 5

Completeness

It answers 'what' concretely (make game-ready 2D art as master stills, sheets or clips, through the plan→generate→approve→key→slice→scale→palette→QA→export pipeline) and 'when' with an explicit trigger clause — 'Use for sprites, masters, sheets, frame-by-frame animation and packaging frames from any source' — plus a 'Not for...' boundary clause. Both what and when are explicit with concrete trigger phrases, which is exactly the anchor-5 pattern and above anchor 4 ('when could be more explicit or specific').

5 / 5

Trigger Term Quality

Natural user phrasing is comprehensively covered: 'sprites', 'masters', 'sheets', 'frame-by-frame animation', 'packaging frames', '2D characters, creatures, props, icons and FX', 'sprite sheets', plus tool-ecosystem terms users actually say ('Aseprite', 'Godot SpriteFrames or Sprite3D', 'pixel finish'). The explicit 'Use for...' sentence names the trigger phrases directly. Coverage including synonyms and tool-specific format names matches anchor 5; it is above anchor 4 ('a few natural terms missing') because no common way a user would request sprite work is absent.

5 / 5

Distinctiveness Conflict Risk

The niche is clear and the conflict surface is explicitly managed: 'Not for maps, tiles or backgrounds (generate2dmap), video clips (video2dsprite), code-drawn art (codeart2d, only on request) or calling an image or video API by itself (generate2dmedia)' disambiguates every adjacent sibling skill by name, and character animation is routed explicitly ('one image-to-video clip per action from the master (video2dsprite)'). Clear niche with distinct triggers and minimal conflict risk — anchor 5, not 4, since even the closely related skills are named as boundaries rather than left as overlap risk.

5 / 5

Total

20

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 6 suspicious

Warning

referenced_paths_exist

Referenced path issues: 1 deeper-than-1-level

Warning

Total

14

/

16

Passed

Repository

0x0funky/agent-sprite-forge

Path

skills/generate2dsprite/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.