agentleFS
dawn840705dawn840705/codex-code-studios/skills/asset-spec/SKILL.md

asset-spec

Skill17 starsChanged 2 months agoMITView on GitHub

Generate per-asset visual specifications and AI generation prompts from GDDs, level docs, or character profiles. Produces structured spec files and updates the master asset manifest. Run after art bible and GDD/level design are approved, before production begins.

We split this skill into the rules it gives an agent

38 rules. 19 are common, 3 are distinctive, and 16 are very specific to this project.

  • 19

    Common

    Most of the 9 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 16

    Very specific

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

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

    If no argument is provided, check whether design/assets/asset-manifest.md exists:

    line 6
  2. Very specific:

    If it exists: read it, find the first context (system/level/character) with any asset at status "Needed" but no spec file written yet, and …

    line 7
  3. Distinctive:

    If no manifest: fail with:

    line 10
  4. Common:

    Read all source material before asking the user anything.

    line 33
  5. Very specific:

    Art bible: Read design/art/art-bible.md — fail if missing:

    line 36
  6. Very specific:

    Technical preferences: Read .codex/studio/technical-preferences.md — extract performance budgets and naming conventions.

    line 40
  7. Very specific:

    system: Read design/gdd/[target-name].md.

    line 43
  8. Very specific:

    Ask the user directly: [A] Describe needs manually / [B] Stop — complete the GDD first

    line 45
  9. Very specific:

    level: Read design/levels/[target-name].md.

    line 46
  10. Very specific:

    character: Read design/narrative/characters/[target-name].md or search design/narrative/ for the character profile.

    line 47
  11. Very specific:

    Existing manifest: Read design/assets/asset-manifest.md if it exists — extract already-specced assets for this target to avoid duplicates.

    line 50
  12. Common:

    For systems: look for VFX events, sprite references, UI elements, audio triggers, particle effects, icon needs, and any "visual feedback" …

    line 66
  13. Common:

    For levels: look for unique environment props, atmospheric VFX, lighting setups, ambient audio, skybox/background, and any area-specific …

    line 68
  14. Common:

    For characters: look for sprite sheets (idle, walk, attack, death), portrait/avatar, VFX attached to abilities, UI representation (icon, …

    line 70
  15. Common:

    Do NOT proceed to Phase 3 without user confirmation of the asset list.

    line 85
  16. Common:

    Collect both responses before Phase 4: If any conflict exists between art-director and technical-artist (e.g., art-director specifies 4K …

    line 107
  17. Distinctive:

    After presenting all specs, ask the user directly:

    line 140
  18. Common:

    If [B]: ask which asset and what to change.

    line 144
  19. Common:

    If [C]: ask what direction to change.

    line 146
  20. Very specific:

    After approval, ask: "May I write the spec to design/assets/specs/[target-name]-assets.md?"

    line 152
  21. Common:

    Write the file with:

    line 154
  22. Common:

    If the manifest already exists, append the new context block and update the Progress Summary counts.

    line 188
  23. Very specific:

    Ask: "May I update design/assets/asset-manifest.md?"

    line 190
  24. Very specific:

    When production is requested, route through $studio-orchestrator and ../../docs/anchor-to-3d-workflow.md.

    line 198
  25. Distinctive:

    Ask the user directly:

    line 202
  26. Very specific:

    Start new assets from ASSET-[highest + 1].

    line 221
  27. Very specific:

    If no manifest exists yet, start from ASSET-001.

    line 223
  28. Common:

    Before speccing an asset, check if an equivalent already exists in another context's spec:

    line 229
  29. Common:

    If a match is found: reference the existing ASSET-ID rather than creating a duplicate.

    line 235
  30. Common:

    If any spawned agent returns BLOCKED or cannot complete:

    line 243
  31. Common:

    Always produce a partial spec — never discard work because one agent blocked

    line 248
  32. Common:

    Every phase follows: Identify → Confirm → Generate → Review → Approve → Write

    line 254
  33. Common:

    Never spec assets without first confirming the asset list with the user

    line 256
  34. Common:

    Always anchor specs to the art bible — a spec that contradicts the art bible is wrong

    line 257
  35. Common:

    Write the spec file only after explicit approval

    line 259
  36. Common:

    Update the manifest immediately after writing the spec

    line 260
  37. Very specific:

    Run $asset-spec [next-context] to continue speccing remaining systems, levels, or characters

    line 266
  38. Very specific:

    Run $asset-audit to validate delivered assets against the written specs and identify gaps or mismatches

    line 267

“Common” is measured: kept by at least 6 in 10 of the 9 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

If no argument is provided, check whether design/assets/asset-manifest.md exists:

  • If it exists: read it, find the first context (system/level/character) with any asset at status "Needed" but no spec file written yet, and ask the user directly:
    • Prompt: "The next unspecced context is [target]. Generate asset specs for it?"
    • Options: [A] Yes — spec [target] / [B] Pick a different target / [C] Stop here
  • If no manifest: fail with:

    "Usage: $asset-spec system:<name> — e.g., $asset-spec system:tower-defense Or: $asset-spec level:iron-gate-fortress / $asset-spec character:frost-warden Run after your art bible and GDDs are approved."


Phase 0: Parse Arguments

Extract:

  • Target type: system, level, or character
  • Target name: the name after the colon (normalize to kebab-case)
  • Review mode: --review [full|lean|solo] if present

Mode behavior:

  • full (default): spawn both art-director and technical-artist in parallel
  • lean: spawn art-director only — faster, skips technical constraint pass
  • solo: no agent spawning — main session writes specs from art bible rules alone. Use for simple asset categories or when speed matters more than depth.

Phase 1: Gather Context

Read all source material before asking the user anything.

Required reads:

  • Art bible: Read design/art/art-bible.md — fail if missing:

    "No art bible found. Run $art-bible first — asset specs are anchored to the art bible's visual rules and asset standards." Extract: Visual Identity Statement, Color System (semantic colors), Shape Language, Asset Standards (Section 8 — dimensions, formats, polycount budgets, texture resolution tiers).

  • Technical preferences: Read .codex/studio/technical-preferences.md — extract performance budgets and naming conventions.

Source doc reads (by target type):

  • system: Read design/gdd/[target-name].md. Extract the Visual/Audio Requirements section. If it doesn't exist or reads [To be designed]:

    "The Visual/Audio section of design/gdd/[target-name].md is empty. Either run $design-system [target-name] to complete the GDD, or describe the visual needs manually." Ask the user directly: [A] Describe needs manually / [B] Stop — complete the GDD first

  • level: Read design/levels/[target-name].md. Extract art requirements, asset list, VFX needs, and the art-director's production concept specs from Step 4.
  • character: Read design/narrative/characters/[target-name].md or search design/narrative/ for the character profile. Extract visual description, role, and any specified distinguishing features.

Optional reads:

  • Existing manifest: Read design/assets/asset-manifest.md if it exists — extract already-specced assets for this target to avoid duplicates.
  • Related specs: Glob design/assets/specs/*.md — scan for assets that could be shared (e.g., a common UI element specced for one system might apply here too).

Present context summary:

Asset Spec: [Target Type] — [Target Name]

  • Source doc: [path] — [N] asset types identified
  • Art bible: found — Asset Standards at Section 8
  • Existing specs for this target: [N already specced / none]
  • Shared assets found in other specs: [list or "none"]

Phase 2: Asset Identification

From the source doc, extract every asset type mentioned — explicit and implied.

For systems: look for VFX events, sprite references, UI elements, audio triggers, particle effects, icon needs, and any "visual feedback" language.

For levels: look for unique environment props, atmospheric VFX, lighting setups, ambient audio, skybox/background, and any area-specific materials.

For characters: look for sprite sheets (idle, walk, attack, death), portrait/avatar, VFX attached to abilities, UI representation (icon, health bar skin).

Group assets into categories:

  • Sprite / 2D Art — character sprites, UI icons, tile sheets
  • VFX / Particles — hit effects, ambient particles, screen effects
  • Environment — props, tiles, backgrounds, skyboxes
  • UI — HUD elements, menu art, fonts (if custom)
  • Audio — SFX, music tracks, ambient loops (note: audio specs are descriptions only — no generation prompts)
  • 3D Assets — meshes, materials (if applicable per engine)

Present the full identified list to the user. Ask the user directly:

  • Prompt: "I identified [N] assets across [N] categories for [target]. Review before speccing:"
  • Show the grouped list in conversation text first
  • Options: [A] Proceed — spec all of these / [B] Remove some assets / [C] Add assets I didn't catch / [D] Adjust categories

Do NOT proceed to Phase 3 without user confirmation of the asset list.


Phase 3: Spec Generation

Spawn specialist agents based on review mode. Issue all Codex subagent calls simultaneously — do not wait for one before starting the next.

Full mode — spawn in parallel:

art-director as a Codex subagent:

  • Provide: full asset list from Phase 2, art bible Visual Identity Statement, Color System, Shape Language, the source doc's visual requirements, and any reference games/art mentioned in the art bible Section 9
  • Ask: "For each asset in this list, produce: (1) a 2–3 sentence visual description anchored to the art bible's shape language and color system — be specific enough that two different artists would produce consistent results; (2) a generation prompt ready for use with AI image tools (Midjourney/Stable Diffusion style — include style keywords, composition, color palette anchors, negative prompts); (3) which art bible rules directly govern this asset (cite by section). For audio assets, describe the sonic character instead of a generation prompt."

technical-artist as a Codex subagent:

  • Provide: full asset list, art bible Asset Standards (Section 8), technical-preferences.md performance budgets, engine name and version
  • Ask: "For each asset in this list, specify: (1) exact dimensions or polycount (match the art bible Asset Standards tiers — do not invent new sizes); (2) file format and export settings; (3) naming convention (from technical-preferences.md); (4) any engine-specific constraints this asset type must respect; (5) LOD requirements if applicable. Flag any asset type where the art bible's preferred standard conflicts with the engine's constraints."

Lean mode — spawn art-director only (skip technical-artist).

Solo mode — skip both. Derive specs from art bible rules alone, noting that technical constraints were not validated.

Collect both responses before Phase 4. If any conflict exists between art-director and technical-artist (e.g., art-director specifies 4K textures but technical-artist flags the engine budget requires 512px), surface it explicitly — do NOT silently resolve.


Phase 4: Compile and Review

Combine the agent outputs into a draft spec per asset. Present all specs in conversation text using this format:

## ASSET-[NNN] — [Asset Name]

| Field | Value |
|-------|-------|
| Category | [Sprite / VFX / Environment / UI / Audio / 3D] |
| Dimensions | [e.g. 256×256px, 4-frame sprite sheet] |
| Format | [PNG / SVG / WAV / etc.] |
| Naming | [e.g. vfx_frost_hit_01.png] |
| Polycount | [if 3D — e.g. <800 tris] |
| Texture Res | [e.g. 512px — matches Art Bible §8 Tier 2] |

**Visual Description:**
[2–3 sentences. Specific enough for two artists to produce consistent results.]

**Art Bible Anchors:**
- §3 Shape Language: [relevant rule applied]
- §4 Color System: [color role — e.g. "uses Threat Blue per semantic color rules"]

**Generation Prompt:**
[Ready-to-use prompt. Include: style keywords, composition notes, color palette anchors, lighting direction, negative prompts.]

**Status:** Needed

After presenting all specs, ask the user directly:

  • Prompt: "Asset specs for [target] — [N] assets. Review complete?"
  • Options: [A] Approve all — write to file / [B] Revise a specific asset / [C] Regenerate with different direction

If [B]: ask which asset and what to change. Revise inline and re-present. Do NOT re-spawn agents for minor text revisions — only re-spawn if the visual direction itself needs to change.

If [C]: ask what direction to change. Re-spawn the relevant agent with the updated brief.


Phase 5: Write Spec File

After approval, ask: "May I write the spec to design/assets/specs/[target-name]-assets.md?"

Write the file with:

# Asset Specs — [Target Type]: [Target Name]

> **Source**: [path to source GDD/level/character doc]
> **Art Bible**: design/art/art-bible.md
> **Generated**: [date]
> **Status**: [N] assets specced / [N] approved / [N] in production / [N] done

[all asset specs in ASSET-NNN format]

Then update design/assets/asset-manifest.md. If it doesn't exist, create it:

# Asset Manifest

> Last updated: [date]

## Progress Summary

| Total | Needed | In Progress | Done | Approved |
|-------|--------|-------------|------|----------|
| [N] | [N] | [N] | [N] | [N] |

## Assets by Context

### [Target Type]: [Target Name]
| Asset ID | Name | Category | Status | Spec File |
|----------|------|----------|--------|-----------|
| ASSET-001 | [name] | [category] | Needed | design/assets/specs/[target]-assets.md |

If the manifest already exists, append the new context block and update the Progress Summary counts.

Ask: "May I update design/assets/asset-manifest.md?"


Phase 6: Close

For anchor-based 3D assets, include the anchor hash, identity/anatomy constraints, intended camera, project budgets and required clips in the production handoff. When production is requested, route through $studio-orchestrator and ../../docs/anchor-to-3d-workflow.md. Speccing an asset does not itself authorize generation, paid calls or retries.

Ask the user directly:

  • Prompt: "Asset specs complete for [target]. What's next?"
  • Options:
    • [A] Spec another system — $asset-spec system:[next-system]
    • [B] Spec a level — $asset-spec level:[level-name]
    • [C] Spec a character — $asset-spec character:[character-name]
    • [D] Run $asset-audit — validate delivered assets against specs
    • [E] Stop here

Asset ID Assignment

Asset IDs are assigned sequentially across the entire project — not per-context. Read the manifest before assigning IDs to find the current highest number:

Grep pattern="ASSET-" path="design/assets/asset-manifest.md"

Start new assets from ASSET-[highest + 1]. This ensures IDs are stable and unique across the whole project.

If no manifest exists yet, start from ASSET-001.


Shared Asset Protocol

Before speccing an asset, check if an equivalent already exists in another context's spec:

  • Common UI elements (health bars, score displays) are often shared across systems
  • Generic environment props may appear in multiple levels
  • Character VFX (hit sparks, death effects) may reuse a base spec with color variants

If a match is found: reference the existing ASSET-ID rather than creating a duplicate. Note the shared usage in the manifest's referenced-by column.

"ASSET-012 (Generic Hit Spark) already specced for Combat system. Reusing for Tower Defense — adding tower-defense to referenced-by."


Error Recovery Protocol

If any spawned agent returns BLOCKED or cannot complete:

  1. Surface immediately: "[AgentName]: BLOCKED — [reason]"
  2. In lean mode or if technical-artist blocks: proceed with art-director output only — note that technical constraints were not validated
  3. In solo mode or if art-director blocks: derive descriptions from art bible rules — flag as "Art director not consulted — verify against art bible before production"
  4. Always produce a partial spec — never discard work because one agent blocked

Collaborative Protocol

Every phase follows: Identify → Confirm → Generate → Review → Approve → Write

  • Never spec assets without first confirming the asset list with the user
  • Always anchor specs to the art bible — a spec that contradicts the art bible is wrong
  • Surface all agent disagreements — do not silently pick one
  • Write the spec file only after explicit approval
  • Update the manifest immediately after writing the spec

Recommended Next Steps

  • Run $asset-spec [next-context] to continue speccing remaining systems, levels, or characters
  • Run $asset-audit to validate delivered assets against the written specs and identify gaps or mismatches

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.