Agent skill

Game Asset Generator

by htdt in htdt/godogen

Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.

MITAuto-check passedGame Development

Install Game Asset Generator

skills CLI
$ npx skills add htdt/godogen --skill asset-gen -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install htdt/godogen asset-gen --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/htdt/godogen.git skills-src && mkdir -p .claude/skills && cp -r skills-src/asset-gen .claude/skills/asset-gen && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
asset-gen
GitHub stars
7.1k
Token cost
~2.8k tokens
SKILL.md length
1,272 words
Files
8
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.

  • Works in 6 steps: Reference (1K, neutral pose, solid BG) —… → Pose per action: image-to-image from the… → Video from the pose frame: asset_gen.py… → …
  • Generating concept art, textures, icons or backgrounds for a game
  • SKILL.md covers Models, Images, Animated sprites and 3D models, plus 4 more sections
  • Runs Python scripts from its folder; calls python3, magick and ffmpeg; needs XAI_API_KEY and TRIPO_API_KEY

What it does

The skill produces PNG images through Gemini or xAI Grok and GLB 3D models through the Tripo CLI. The description also lists rigged characters, retargeted animations, frame-by-frame animated sprites and background removal. A local Qwen-Image generator is a free option when it is installed, and it suits simple images such as textures, props, icons, UI and backgrounds.

These are paid APIs, so every call costs real money, and the instructions tabulate cost by model and size. The agent uses whichever key is set and defaults to Gemini when both are, and for quality-critical assets such as a character reference it may generate with both and keep the better result. Every PNG should be reviewed before conversion to a GLB, because a bad image wastes credits downstream.

Image options include image-to-image from a reference, sizes and aspect ratios, and grid_slice.py for cutting a kit of small sprites out of one generation. The bundled Python tools are asset_gen.py, find_loop_frame.py, grid_slice.py and rembg_matting.py, with extra notes in motion.md and rembg.md.

When your agent uses it

  • Generating concept art, textures, icons or backgrounds for a game
  • Turning a reference image into a GLB 3D model
  • Making sprites or animated sprites from a text description
  • Removing the background from a generated image

Example prompts

  • “Generate a mossy stone wall texture for the dungeon level at 1K.”
  • “Make a front-view reference image of a robot courier, then convert it to a GLB.”
  • “Cut this 2x2 prop sheet into four separate icons.”
  • “Remove the background from assets/hero.png.”

Requirements

  • Python 3 with the packages in tools/requirements.txt
  • A Gemini or xAI Grok API key
  • The tripo CLI for 3D models

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Reference (1K, neutral pose, solid BG) — anchors everything; review carefully.
  2. Pose per action: image-to-image from the reference, prompt only the action.
  3. Video from the pose frame: asset_gen.py video --image pose.png --duration 2 -o walk.mp4 (Grok, needs XAI_API_KEY; --duration 1–15s…
  4. Extract: ffmpeg -i walk.mp4 -vsync 0 frames/%04d.png.
  5. Loop-trim looping cycles (walk/idle): tools/find_loop_frame.py frames/ returns the loop frame; delete frames past it. Skip for one-shots…
  6. Batch matte: tools/rembg_matting.py --batch frames/ -o clean/.

What it can do on your machine

Read from SKILL.md and the folder at commit 0b725bc. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • magick
    • ffmpeg
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • XAI_API_KEY
    • TRIPO_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Game Asset Generator loads about 2.8k tokens when it runs. Until then it costs about 73 tokens; SKILL.md has 1,272 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~73
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from htdt/godogen at commit 0b725bc, republished under its MIT licence (© htdt). 1,272 words, ~2,805 tokens.

Download SKILL.mdSave it as .claude/skills/asset-gen/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
asset-gen
description
Generate visual assets from text prompts: PNG images (Gemini / xAI Grok, or local Qwen-Image when installed), GLB 3D models (Tripo CLI), rigged characters, retargeted animations, and frame-by-frame animated sprites, plus background removal. Use whenever a game needs generated art.
display_name
Asset Generator
short_description
Generate game images, GLB 3D models, rigged characters, and animated sprites
default_prompt
Use ${ASSET_SKILL_COMMAND} to generate images, 3D models, or animated sprites for this game.
allow_implicit_invocation
true

Asset Generator

Generate PNG images (Gemini or xAI Grok) and GLB 3D models (Tripo) from text prompts. These are paid APIs — every call costs real money. The free exception is qwen-image, a local GPU generator some machines have. Image tools live at ${ASSET_GEN_SKILL_DIR}/tools/; 3D goes through the tripo CLI. Run from the project root and keep runtime-loaded outputs under ${RUNTIME_ASSET_DIR}/.

Models

ModelFlagCostNotes
Gemini 3.1 Flash Image--model gemini5¢ (512) · 7¢ (1K) · 10¢ (2K) · 15¢ (4K)~10 s per image
Grok Imagine Image 2.0--model grok6¢ (1K) · 8¢ (2K), +1¢ per reference image1–2 min per image
Qwen-Imageqwen-image CLI (local, if installed)free, minutes per imageSimple images — textures, props, icons, UI, backgrounds, in-image text; native transparency

Gemini and Grok are equally strong: both follow detailed prompts closely, and both slip on small details — a miscounted item, a mirrored left/right. Use whichever key is set; with both, asset_gen.py defaults to Gemini for speed. When an asset is quality-critical (a character reference that anchors 3D or animation, a hero image) and both keys are set, generate it with both and keep the better one.

Images

bash
python3 ${ASSET_GEN_SKILL_DIR}/tools/asset_gen.py image \
  --prompt "the full prompt" -o ${RUNTIME_ASSET_DIR}/img/car.png

--model (default gemini when its key is set, else grok) · --size (default 1K; Gemini also 512/4K) · --aspect-ratio (default 1:1; also 16:9, 9:16, 4:3, 3:4, 3:2, 2:3).

Image-to-image: pass --image ref.png and the model sees the reference — prompt only for what changes (angle, pose, recolor), don't re-describe appearance. Use this for style families (one hero asset → the rest), variants, and multi-view sets.

Small sprites: minimum generation is 1K, so a 1024px image downscaled to 64px looks muddy. Design display sizes ≥128px, or generate a kit (multiple objects in one 1K image) and slice it with tools/grid_slice.py ... --grid 2x2 --names "a,b,c,d", or prompt for bold flat forms that survive downscaling.

Review every PNG before any GLB conversion — a bad image wastes 30+ credits downstream.

Background removal

Read ${ASSET_GEN_SKILL_DIR}/rembg.md. Key rule: never prompt for a "transparent background" (the generator bakes a checkerboard) — prompt a solid color, then matte it out. The one exception is qwen-image rgba, which outputs real alpha.

Local generation (qwen-image)

If command -v qwen-image finds it, this machine runs Qwen-Image-2.1 on its own GPU. It costs nothing, so simple images go there first; keep the paid models for characters, references, and exact layouts.

bash
qwen-image generate "the full prompt" -o ${RUNTIME_ASSET_DIR}/img/crate.png                 # --size WxH or --resolution N (default 1024)
qwen-image rgba "a wooden shield, game icon" -o ${RUNTIME_ASSET_DIR}/img/shield.png         # transparent PNG, no matting
qwen-image edit -i crate.png "mossy and cracked" -o ${RUNTIME_ASSET_DIR}/img/crate_old.png  # image-to-image; repeat -i for more refs
  • One call at a time: each loads the whole model onto the GPU, so parallel calls run out of memory. Batch as one sequential loop.
  • Minutes per 1024² image at the default 40 steps (~2.5 min on a 12 GB card) — longer than common shell-tool timeouts, so set a long timeout or run it in the background. Time the first call (seconds in --json) and plan batches from it; --resolution 512 --steps 10 is ~8× faster for checking how a prompt reads.
  • Judge rgba alpha from a composite on a contrasting color (magick out.png -background magenta -flatten out_qa.png), not the raw PNG.
  • Out of memory → lower --resolution (edits use the most). On failure, qwen-image info reports GPU and model status.

Animated sprites

Recipe: reference → pose → video → extract frames → loop-trim → rembg.

  1. Reference (1K, neutral pose, solid BG) — anchors everything; review carefully.
  2. Pose per action: image-to-image from the reference, prompt only the action.
  3. Video from the pose frame: asset_gen.py video --image pose.png --duration 2 -o walk.mp4 (Grok, needs XAI_API_KEY; --duration 1–15s; --resolution 720p at 14¢/s, or 480p at 8¢/s — enough for small sprites).
  4. Extract: ffmpeg -i walk.mp4 -vsync 0 frames/%04d.png.
  5. Loop-trim looping cycles (walk/idle): tools/find_loop_frame.py frames/ returns the loop frame; delete frames past it. Skip for one-shots (attack/death).
  6. Batch matte: tools/rembg_matting.py --batch frames/ -o clean/.

Reuse one reference for all of a character's actions. Chaining (feed action A's last frame as action B's start) keeps positional continuity — keep chains ≤2 deep, they drift.

Show full SKILL.md (643 more words)Show less

3D models

The tripo CLI (npm install -g tripo-cli, key in TRIPO_API_KEY) owns the whole 3D path: submit, poll, download, credit pre-check, refunds on failure. Its own agent docs are the reference — tripo docs --llm, then tripo docs --topic commands/process / examples/animation / common-errors — this section only covers what is specific to game use here.

bash
tripo make ref.png --name car -p face_limit=30000 -p auto_size=true --json --yes -o ${RUNTIME_ASSET_DIR}/glb
tripo make ref.png --name hero --then rig-check,rig:model=v1.0-20240301 --json --yes -o ${RUNTIME_ASSET_DIR}/glb
tripo anim retarget @hero --animation preset:biped:walk preset:biped:idle --json --yes -o ${RUNTIME_ASSET_DIR}/glb
  • make is blocking (default timeout 30 min) and prints one JSON line: read model_file, preview.png and credits_consumed from it. Never add your own shorter timeout, never resubmit because a task_id appeared in stderr. If the process does die, tripo task watch <id> --download finishes the same task for free.
  • Output lands in <-o dir>/<name>-<id8>/ (model.glb, preview.png, task.json). Move or reference the GLB from there; task.json keeps the seeds and task id, so there is nothing else to save.
  • --name X makes the task addressable as @X for later steps (retarget, convert, decimate). Retarget reuses the rig task — never re-rig for another clip; up to 5 animations per call, billed per animation.
  • Model defaults to v3.1. For face_limit ≤ 20000 the CLI silently switches to P1 (low-poly topology, no geometry_quality) — that is the right choice for mobile-style budgets, but know it happens. --for game-pc converts to FBX by default; skip it for GLB engines.
  • -p geometry_quality=detailed -p texture_quality=detailed is the HD tier (≈ double credits).
  • Rig: keep rig:model=v1.0-20240301 for bipeds — that is the rig motion.md's pipeline is certified against, and it uses the preset:biped:* clips below. The CLI's default rig (v2.5) covers quadrupeds, avians, etc. with preset:<name> clips (idle walk run dive climb jump slash shoot hurt fall turn); unverified with motion.md. rig-check in the chain aborts before rigging if the mesh isn't riggable. --animate-in-place when game code drives locomotion.
  • Don't assume the preset name survives into the GLB; inspect the imported clip names before wiring playback.

Source image for make: 3/4 elevated angle, solid white/gray background, matte finish, opaque glass, single centered subject — and do not rembg it (Tripo needs the solid bg). For characters, generate the reference in a T-pose.

v1.0 biped retarget presets (pass as preset:biped:<name>):

afraid agree angry_01/02/03 basketball_shot bow box_01/02/03 cast_a_spell cheer chop
clap climb complain_01/02 cross_body_crunch crossover_dribble cry dance_01..06
defeat_02/03 depressed dig dive dribble fall fire flee_01/02 flip fold_arms
football_catch/save/pass freaky frightened front_kick_01/02 frustrated_01/02 golf
greet_01..04 heart_pose hit_to_body_01/02 hit_to_head/side/stomach hug hurt idle
jump jump_down jump_rope_01/02 laugh_01/02 lift_heavy look_around make_a_call_01/02
pitch_baseball play_mobile_game play_video_game press-up run run_upstairs scared_01/02
scratch shoot shovel sing_01..04 sit slash sob standing_relax surf swagger swim turn
victory_celebration volleyball wait walk warm_up wave_goodbye_01/02

Presets are generic stock clips. Important: when gameplay needs a custom humanoid move set (state machines, root-motion locomotion, moves not in this list), read ${ASSET_GEN_SKILL_DIR}/motion.md.

Costs

Paid generations cost real money, so confirm with the user before generating; qwen-image runs are free. Quick reference: 1K image 6–7¢ · 2K background 8–10¢ · a quality-critical image generated on both models ~13¢ · sprite video 14¢/s at 720p. Tripo bills in credits (≈1¢): ~30 per model, ~25 to rig, ~10 per retargeted clip — tripo balance before a batch, and report the credits_consumed the CLI returns rather than an estimate.

Output and logging

Each asset_gen.py command prints JSON to stdout: {"ok": true, "path": "...", "cost_cents": 7}; tripo and qwen-image print theirs with --json. Progress goes to stderr — redirect it to a temp file and read only on failure to keep context clean:

bash
_log=$(mktemp)
result=$(python3 ${ASSET_GEN_SKILL_DIR}/tools/asset_gen.py image --prompt "..." -o p.png 2>"$_log") || tail -20 "$_log"

Generate independent API images in parallel (multiple Bash calls in one message).

Visual pitfalls

Generators and vision checks have weak spatial sense — verify from screenshots when it matters.

  • Direction/orientation is unreliable ("facing left" vs "right" often comes out identical). Generate one direction and flip horizontally at runtime rather than paying for the mirror.
  • Mixed sizes: image frames are ~1024px, video frames smaller (960px square at 720p). Downscale everything to the smallest source before matting (magick in.png -resize 960x960 out.png).
  • Playback fps: source videos are ~24fps — drive sprite playback off elapsed time at ~1/24s, and only restart a loop when the animation state actually changes.

Asset manifest (in README.md)

Track every generated asset in README.md with an in-game Size column — without it, coders consistently scale assets wrong:

  • 3D models: meters, e.g. 4m long, 1.8m tall, 0.3m
  • Textures: tile size, e.g. 2m tile
  • Backgrounds: pixel size + behavior, e.g. 1920x1080, fullscreen
  • Sprites: display pixels, e.g. 128x128 px
NameDescriptionSizePathCost
carsedan with spoiler4m long${RUNTIME_ASSET_DIR}/glb/car.glb7¢ + 30 cr

© htdt, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 7 other files in asset-gen of htdt/godogen.

  • SKILL.md
  • motion.md
  • rembg.md
  • tools/asset_gen.py
  • tools/find_loop_frame.py
  • tools/grid_slice.py
  • tools/rembg_matting.py
  • tools/requirements.txt

Open the folder on GitHubat commit 0b725bc

Compare with similar skills

Game Asset Generator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Game Asset Generator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Game Asset Generator this skillhtdt/godogen7.1k—~2.8kAutomated safety check: PassMIT
2D Sprite Generator0x0funky/agent-sprite-forge4.4k—~3.6kAutomated safety check: PassMIT
Text To 3D AssetLaurentiuGabriel/unreal-game-assets-creation-skill148—~2.1kAutomated safety check: PassNone
Threejs 3D Generatorcorosolto/client257—~3.4kAutomated safety check: PassAGPL-3.0
Fal Assetsrehan-remade/universal-modder5.8k—~2kAutomated safety check: NotesMIT
Game Assetsglifxyz/glif-mcp-server212—~831Automated safety check: PassMIT

Similar skills

  • 2D Sprite Generator

    0x0funky/agent-sprite-forge

    Produces game-ready 2D characters, creatures, props, icons and effects as master stills, sheets or clips, and exports frames for common game engines.

    4.4k GitHub stars~3.6k tokensUpdated 3 days ago
    Game DevelopmentAuto-check passed
  • Text To 3D Asset

    LaurentiuGabriel/unreal-game-assets-creation-skill

    Generate a game-ready 3D asset by running the local AI pipeline sequentially: Fooocus (SDXL text-to-image) - Hunyuan3D-2 (image-to-textured-GLB) - optional Blender FBX convert + Unreal import.

    148 GitHub stars~2.1k tokensUpdated 2 mo ago
    Game DevelopmentAuto-check passed
  • Threejs 3D Generator

    corosolto/client

    Generate, texture, rig, animate, stylize, convert, and download 3D assets for Three.js games using the Tripo API.

    257 GitHub stars~3.4k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Fal Assets

    rehan-remade/universal-modder

    Generate game assets with fal (fal.ai) through the fal MCP server, the um fal CLI (REST) or fal api.

    5.8k GitHub stars~2k tokensUpdated today
    Game DevelopmentAuto-check: notes
  • Game Assets

    glifxyz/glif-mcp-server

    Make art and media for a game you are building with Glif: character reference sheets, consistent characters, pixel-art sprite sheets with animation cycles, seamless and PBR textures, 3D models, item…

    212 GitHub stars~831 tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • AI Image Creator

    centminmod/my-claude-code-setup

    Generate, edit-from-reference, or analyze images with AI via OpenRouter (Gemini, GPT Image, Seedream, Qwen, MAI, Grok, FLUX.2, Recraft, Muse, Riverflow; Cloudflare AI Gateway BYOK).

    2.7k GitHub stars~8.1k tokensUpdated 2 days ago
    Media & CreativeAuto-check: notes

Questions about Game Asset Generator

What does Game Asset Generator do?

Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal. The skill produces PNG images through Gemini or xAI Grok and GLB 3D models through the Tripo CLI. The description also lists rigged characters, retargeted animations, frame-by-frame animated sprites and background removal.

When should I use Game Asset Generator?

Game Asset Generator fits situations like: generating concept art, textures, icons or backgrounds for a game; turning a reference image into a GLB 3D model; making sprites or animated sprites from a text description; removing the background from a generated image.

How do I install Game Asset Generator in Claude Code?

Run `npx skills add htdt/godogen --skill asset-gen -a claude-code`. Or copy the skill folder (asset-gen in htdt/godogen) into .claude/skills/asset-gen in your project. Claude Code loads it when a task matches its description.

How do I install Game Asset Generator in Codex?

Run `npx skills add htdt/godogen --skill asset-gen -a codex`. Or copy the skill folder (asset-gen in htdt/godogen) into .agents/skills/asset-gen in your project. Codex loads it when a task matches its description.

Can I use Game Asset Generator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add htdt/godogen --skill asset-gen -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/asset-gen, .gemini/skills/asset-gen, .github/skills/asset-gen and .opencode/skills/asset-gen in your project.

What does Game Asset Generator need to run?

Going by SKILL.md and its folder, Game Asset Generator needs Python for the scripts in its folder, the command-line tools its instructions call (python3, magick, ffmpeg and npm) and credentials named XAI_API_KEY and TRIPO_API_KEY. Our summary lists: Python 3 with the packages in tools/requirements.txt; A Gemini or xAI Grok API key; The tripo CLI for 3D models.

Does Game Asset Generator access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Game Asset Generator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Game Asset Generator use?

Game Asset Generator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Game Asset Generator use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Game Asset Generator?

Skills that share tags, products or a category with Game Asset Generator: 2D Sprite Generator (0x0funky/agent-sprite-forge, 4.4k stars), Text To 3D Asset (LaurentiuGabriel/unreal-game-assets-creation-skill, 148 stars), Threejs 3D Generator (corosolto/client, 257 stars) and Fal Assets (rehan-remade/universal-modder, 5.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Game Asset Generator?

htdt (a GitHub user) maintains it in htdt/godogen, which has 7,068 GitHub stars. The repository was last updated on October 1, 2026.

Source: htdt/godogen on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.