agentleFS
MRCalderon3DMRCalderon3D/everything-game-dev-code/skills/art-audio-content/ai-asset-generation/SKILL.md

ai-asset-generation

Skill105 starsChanged 8 months agoMITView on GitHub

Generate real game assets (images, skyboxes, 3D models, SFX, music, voice, video) from text prompts through the provider registry, with provenance and acceptance gates.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

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

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

    Confirm before spending: Every run prints an estimated cost.

    line 42
  2. Very specific:

    Quality vs price tier: Ask the user once, before a batch, which tier to use — budget, balanced, or premium — and pass --quality (default …

    line 47
  3. Very specific:

    import through the active engine layer only (Unity/Unreal/Godot/web import rules stay in their engine packs), then run the matching review …

    line 88
  4. Distinctive:

    every generated file has a provenance sidecar.

    line 102

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

AI Asset Generation

Purpose

Generate production-candidate game assets from text prompts through the generative provider registry (manifests/asset-providers.json) so projects can move from procedural placeholders to real content without leaving the scaffold — while keeping generation engine-neutral, reproducible, provenance-tracked, and subject to the same acceptance gates as authored content.

Optional Capability — Gate Before Use

AI generation is an optional layer, not a dependency. It is available only when the active provider's API key is set in the environment (FAL_KEY for the default fal.ai provider). The scaffold's asset workflow does not require it:

  • Key present → this skill is available; the project may upgrade placeholders to generated content.
  • Key absent → this skill is inert. Fall back to the default scaffold tooling exactly as before the capability existed — placeholder-asset-pipeline and the engine placeholder commands (/unity-placeholders, /godot-placeholders, /web-placeholders) for sprites, 3D primitives, and procedural audio. A project built entirely on placeholders is a fully valid, shippable-to-prototype outcome; generation is an enhancement, never a gate.

Detecting the gate is cheap: the generator (scripts/generate-assets.js) reads the key from the environment and reports clearly when it is missing, pointing back to the placeholder path. Never fabricate or hand-place assets to "stand in" for the API.

Resolution Order and Cost

  • Prefer free before paid. For image/skybox (the registry's nativeFirstCapabilities), if the running harness has a native image generator (e.g. Codex $imagegen), use it instead of the paid API — keep the same names, paths, and acceptance gates. Fall to the API only when no native generator exists and a key is set; fall to placeholders otherwise. model3d/sfx/music/speech/ video have no native path — API or placeholders only.
  • Confirm before spending. Every run prints an estimated cost; the generator refuses runs at or above confirmOverUsd without --yes. For a single asset the user explicitly asked for, dry-run, show the estimate, and proceed if cheap. For autonomous or batch flows, get a clear yes on the total before running. Iterate on the cheap default model; reserve the expensive alternative and video for finals.
  • Quality vs price tier. Ask the user once, before a batch, which tier to use — budget, balanced, or premium — and pass --quality (default balanced). The registry's byQuality map picks the model per capability (e.g. image: flux-schnell / nano-banana-2 / nano-banana-pro; video: Wan / Seedance / Veo). Budget can keep a whole video run under the cost gate; premium crosses it and needs --yes. Tier sets the spend; the gate prevents surprises.

Use When

  • placeholder assets exist and the project is ready to upgrade them to real content
  • a game needs images, textures, skyboxes, 3D models, sound effects, music, voice lines, or intro/cinematic video that no artist is available to produce
  • concept art needs to be lifted into 3D (image-to-3D) or into motion (image-to-video)
  • the team wants reproducible asset generation runs (prompt + seed + model recorded) instead of one-off results pasted from a chat tool

Inputs

  • the provider registry (manifests/asset-providers.json) and a valid API key in the provider's apiKeyEnv environment variable (never committed)
  • art bible or visual direction document, and the audio direction where relevant
  • asset inventory: which entities need which asset type, at which target size or length
  • the placeholder manifest of the project, so generated files can adopt the same names and paths (drop-in replacement contract)
  • a staging directory outside the engine's import folders

Process

  1. classify each requested asset by capability: image, skybox, model3d, sfx, music, speech, or video
  2. define the acceptance contract before generating (for raster assets this is the generated-raster-asset-pipeline contract: background policy, display size, collision envelope; for audio: length, loopability, loudness target; for 3D: poly budget, scale, pivot; for video: duration, aspect ratio, codec)
  3. resolve the model from the registry — do not hardcode model ids in project code; pass --model only to deviate intentionally
  4. dry-run first to review the resolved payload: node scripts/generate-assets.js --type <capability> --prompt "..." --out <staging> --dry-run
  5. generate with a fixed --seed where the model supports it, iterating on the cheap/fast default model and switching to the higher-fidelity alternative for finals
  6. review candidates against the acceptance contract before any engine import
  7. move accepted files into the project under the placeholder names and paths, keep the .provenance.json sidecar next to each accepted asset, and record raster assets in the project's generated-assets.json manifest
  8. import through the active engine layer only (Unity/Unreal/Godot/web import rules stay in their engine packs), then run the matching review command (/art-2d-pass, /art-3d-pass, /audio-pass)

Outputs

  • generated asset files in neutral formats (PNG, GLB, MP3/WAV, MP4) staged and then integrated under the project's existing names and paths
  • a .provenance.json sidecar per generation run: provider, model, prompt, seed, request id, timestamp, source URLs, license note
  • updated generated-assets.json entries for accepted raster assets
  • a short generation log in the project docs: what was generated, with which model, what was rejected and why

Quality Bar

  • every generated file has a provenance sidecar; an asset without provenance is treated as unlicensed third-party content
  • generation is reproducible: prompt, seed, and model id recorded, so a lost file can be regenerated or deliberately re-rolled
  • generated assets pass the same acceptance gates as authored content — no "the AI made it" exemption from naming, budget, or review rules
  • engine isolation holds: the generation step never writes into engine-specific import folders directly
  • cost is managed deliberately: iterate cheap, finalize expensive, and dry-run video (the costliest capability) before batch runs

Common Failure Modes

  • hardcoding a model id in project code or docs and having it rot when the provider catalog rotates — the registry is the only source of truth
  • accepting a "transparent" sprite with a baked checkerboard background (run the raster acceptance contract; validate:generated-assets catches PNGs)
  • treating a generated skybox as valid without checking the equirectangular 2:1 projection and horizon continuity
  • importing a generated GLB at the wrong scale because the poly/scale/pivot contract was never defined before generation
  • generating voice lines outside the localization pipeline and discovering the text was never source-controlled
  • burning budget on video generation iterations that an image-to-video workflow with an accepted still would have art-directed for a fraction of the cost

Related Agents

  • technical-artist
  • 2d-artist
  • audio-designer

Related Commands

  • generate-assets
  • art-2d-pass
  • art-3d-pass
  • audio-pass

Related Skills

  • generated-raster-asset-pipeline
  • placeholder-asset-pipeline
  • 3d-asset-pipeline
  • cinematic-pipeline
  • audio-implementation

Notes

  • The registry's default provider is fal.ai because a single pay-per-use key covers every capability; the design is provider-agnostic and a second provider is a manifest entry away.
  • Rigging and animation of generated 3D models are out of scope for the current registry — generated meshes are static; route rigging through the rigging-skinning-pipeline skill and a dedicated tool or provider.
  • An optional fal-media MCP server (see mcp-configs/mcp-servers.json) exposes the same catalog interactively for exploration; reproducible production runs should go through scripts/generate-assets.js so provenance is written.

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.