Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Plan, generate, source, normalize, and validate cohesive visual game assets. Use for art direction, style bibles, sprites, tilesets, backgrounds, UI art, icons, textures, concept art, or 3D asset briefs.
.claude/skills/gamedev-skills-create-game-assets/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-19 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 45% | 0% |
Turn a game's visual intent into a consistent, engine-ready asset set. Treat image generation as one production tool inside a controlled pipeline, never as proof that an asset is shippable.
import settings, camera framing, target resolution, and naming conventions. Preserve a coherent existing direction unless the user asks for a redesign.
dimensions, world scale, transparency, palette, filtering, animation frames, texture budget, and target platforms. Use assets/art-direction-brief.md as a copyable brief.
palette roles, materials, lighting, detail density, edge treatment, and motion character. Use concrete visual properties; do not substitute a living artist's name for an art direction.
assets/asset-manifest.json, then list every required asset,state, variant, size, pivot, collision role, source, license, and approval status. Separate production assets from disposable greybox placeholders.
board before producing a full set. Judge it at actual game scale and against a gameplay background. If the user delegated the choice, pick the strongest viable direction and record the decision instead of blocking.
Keep palette, view, proportions, lighting, outline, and texture density invariant. Generate small coherent batches; avoid unrelated one-off prompts that drift.
ordinary image/DCC tools. Never trust generated grids, transparency, seams, pivots, topology, or dimensions without inspection. Use the bundled scripts for raster QA and contact sheets.
color space, compression, sprite slicing, texture types, materials, and collision deliberately. Read the relevant engine skill before editing engine files.
Check silhouette, scale, animation stability, seams, legibility, palette, collision fit, memory, and compression artifacts. Iterate on the source asset, not only on runtime compensations.
restrictions beside the manifest. Preserve embedded provenance metadata when the pipeline can.
| Need | Default path | |------|--------------| | Existing asset needs a controlled change | Edit the original/reference; state what must remain unchanged | | New 2D visual family | Approve seed → generate/source family → normalize → preview → import | | True pixel art | Use generated work as a draft; enforce grid, palette, clusters, and frames with pixel tools | | Tileable surface or tileset | Produce a small family; repair seams; test repeated 3×3 before approval | | UI art or icons | Keep text and interaction code-native; prefer SVG/vector for simple geometric symbols | | 3D model or material | Use concepts as reference; author/clean in a DCC; validate topology, UVs, scale, pivots, and LODs | | No generation/edit tool is available | Build the brief and manifest; source licensed assets or keep explicit greybox placeholders | | Audio asset | Route sound implementation and mixing to audio-design; still track source/license in the manifest |
When a capable image generation or editing tool is installed, use it for live visual creation. If the workspace exposes an imagegen skill, read and follow it for the actual generation/edit call; this skill owns the game-art brief, constraints, normalization, and acceptance gates.
Build prompts from these blocks:
textROLE/PURPOSE: production asset for [gameplay role] SUBJECT: [specific object/character and action] VIEW: [orthographic/top-down/side/three-quarter], [camera and facing] ART DIRECTION: [shape language], [palette roles], [materials], [edge treatment] GAME-SCALE READ: [silhouette and focal details that must survive at WxH] TECHNICAL OUTPUT: [dimensions/aspect], [transparent or scene background], [frame/slot count] LOCKS: preserve [identity, proportions, palette, costume, lighting, line weight] EXCLUDE: text, labels, mockup frames, scenery, duplicate objects, cropped edges, signatures
For edits, say both what changes and what stays fixed. Ask for transparent output through the tool's native transparency option when available, then verify the alpha channel—prompt wording alone does not guarantee transparency.
Inspect constraints and emit a machine-readable report:
bashpython scripts/asset_report.py assets/player-idle.png \ --expect-size 64x64 --require-alpha --max-colors 48 --json
Build a nearest-neighbor contact sheet over a checkerboard:
bashpython scripts/build_preview_sheet.py output/player/*.png \ --out output/player-preview.png --columns 4 --cell-size 192
Run script paths relative to this skill directory, or resolve the installed skill path first. Both scripts require Python 3.10+ and Pillow. Install the only dependency with python -m pip install -r scripts/requirements.txt when it is not already available.
scale, and detail density.
and over real backgrounds.
space/filtering, no clipped content, no accidental labels or baked mockup chrome.
and anticipation read in an in-engine preview.
layers have intentional depth and no baked collision cues.
LODs, and runtime format are checked rather than inferred from a render.
Do not call an asset production-ready from a prompt result alone. Approval requires the relevant technical checks plus an in-engine or native-scale visual inspection.
references/art-direction.md.
references/raster-pipeline.md.
references/three-d-pipeline.md.
references/provenance.md.
game-ui-ux for layout, navigation, readability, and accessible interaction.game-feel, shader-programming, and audio-design for presentation after the source art fits.godot-tilemap, unity-tilemap-2d,pixijs-rendering, and threejs-gltf-loading.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-19 | fail→pass | 15,946 | 18,465 | +16% | 1 | 1 | 0% | 2,482 | 3,897 | +57% | 0 | 0 | — |
case-01 | fail→pass | 44,304 | 52,001 | +17% | 1 | 1 | 0% | 8,159 | 10,279 | +26% | 0 | 0 | — |
case-02 | fail→pass | 38,073 | 26,041 | -32% | 1 | 1 | 0% | 6,204 | 5,645 | -9% | 0 | 0 | — |
case-03 | fail→pass | 33,043 | 21,504 | -35% | 1 | 1 | 0% | 5,058 | 5,132 | +1% | 0 | 0 | — |
case-04 | fail→pass | 22,303 | 18,933 | -15% | 1 | 1 | 0% | 2,852 | 4,133 | +45% | 0 | 0 | — |
case-05 | fail→pass | 21,845 | 22,810 | +4% | 1 | 1 | 0% | 2,824 | 4,820 | +71% | 0 | 0 | — |
case-06 | pass→pass | 13,331 | 8,703 | -35% | 1 | 1 | 0% | 1,791 | 3,194 | +78% | 0 | 0 | — |
case-07 | pass→pass | 12,088 | 11,007 | -9% | 1 | 1 | 0% | 1,944 | 3,161 | +63% | 0 | 0 | — |
case-08 | fail→fail | 18,694 | 16,585 | -11% | 1 | 1 | 0% | 2,179 | 3,692 | +69% | 0 | 0 | — |
case-09 | pass→pass | 12,549 | 10,773 | -14% | 1 | 1 | 0% | 2,032 | 3,640 | +79% | 0 | 0 | — |
case-10 | fail→pass | 19,372 | 18,134 | -6% | 1 | 1 | 0% | 2,077 | 3,918 | +89% | 0 | 0 | — |
case-11 | pass→pass | 20,471 | 22,097 | +8% | 1 | 1 | 0% | 2,631 | 4,687 | +78% | 0 | 0 | — |
case-12 | pass→pass | 16,928 | 11,531 | -32% | 1 | 1 | 0% | 1,981 | 2,653 | +34% | 0 | 0 | — |
case-18 | pass→pass | 12,789 | 10,274 | -20% | 1 | 1 | 0% | 2,022 | 3,326 | +64% | 0 | 0 | — |
case-13 | fail→pass | 14,117 | 16,331 | +16% | 1 | 1 | 0% | 2,287 | 3,682 | +61% | 0 | 0 | — |
case-14 | fail→pass | 8,350 | 7,683 | -8% | 1 | 1 | 0% | 1,591 | 2,274 | +43% | 0 | 0 | — |
case-15 | pass→pass | 22,824 | 20,267 | -11% | 1 | 1 | 0% | 2,713 | 4,262 | +57% | 0 | 0 | — |
case-16 | pass→pass | 18,096 | 4,725 | -74% | 1 | 1 | 0% | 2,200 | 2,595 | +18% | 0 | 0 | — |
case-17 | fail→fail | 20,645 | 19,834 | -4% | 1 | 1 | 0% | 2,433 | 4,148 | +70% | 0 | 0 | — |
case-20 | pass→pass | 18,766 | 28,943 | +54% | 1 | 1 | 0% | 3,253 | 5,082 | +56% | 0 | 0 | — |
case-21 | pass→pass | 19,141 | 28,949 | +51% | 1 | 1 | 0% | 3,674 | 6,493 | +77% | 0 | 0 | — |
case-22 | fail→fail | 26,251 | 30,448 | +16% | 1 | 1 | 0% | 4,048 | 7,529 | +86% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.