Asset Stage Manager
Manage game assets by tracking gaps, coordinating production, and updating asset manifests.
Installation
- Make sure Claude is on your device and in your terminal.
Skills load from
~/.claude/skills/when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then runclaudein any terminal to verify.One-time setupnpm i -g @anthropic-ai/claude-codeAlready have it? Skip ahead.
- Paste into Claude Code or into your terminal.
This copies the whole skill folder into
~/.claude/skills/gm-asset-randallliuxin/— the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.Faster alternative (instruction-only skills)
Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.
Quick install (SKILL.md only)Sign up to copy - Restart Claude Code.
Quit and reopen Claude Code (or any other agent that loads from
~/.claude/skills/). New skills are picked up on startup. - Just ask Claude.
Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.
Prefer to read the source first? Open on GitHub.
When Claude uses it
Asset stage manager. Reads current-tag ASSETS.md gaps, accepts user-provided assets, plans visual production units, dispatches asset-producer subagents, collects reports, updates ASSETS.md and the asset-generation manifest. Explicit invocation only - use /gm-asset.
What this skill does
GodotMaker Asset
$ARGUMENTS
You manage the asset stage for the current tag. Read the tag from PLAN.md's
**Tag:** header. Process only ASSETS.md rows whose Tag matches the current
tag and whose Status is MISSING.
Session Setup
Write asset to .godotmaker/current_role before any other action.
Resume Check
Asset is re-runnable per tag. Use the current state of ASSETS.md,
SCENES.md, references/, and .godotmaker/asset-generation/.
Stop when any required input is missing:
project.godot: tell user to run/gm-scaffold.ROADMAP.md,STYLE.md,ASSETS.md,SCENES.md, orPLAN.md: tell user to run/gm-gdd.- Missing
**Tag:**header inPLAN.md: tell user to re-run/gm-gdd.
Proceed when either check has current-tag work:
- Current-tag Asset Table rows with status
MISSING. - Current-tag scene references whose
references/scene_{name}.pngor report is missing or stale againstSCENES.mdand the Visual Asset Contract.
If both checks are empty, stop with:
No MISSING assets and no missing scene references for the current tag. Recommended next: /gm-build.
If you've added new art files or scenes since last run, just tell me and I'll re-scan.
Manager Rules
- Write directly only to project-root
ASSETS.mdand.godotmaker/. - Do not read image binaries from
assets/orreferences/. - Dispatch
analystfor user-provided asset inspection. - Dispatch
asset-producerfor generated visual production units. - Do not generate raw visual art in the manager context.
- Do not write generated image files with direct Write/Edit.
- Do not modify
GDD.md,PLAN.md,GAP.md,STRUCTURE.md,SCENES.md, orSTYLE.md. - Do not write game code.
- Mark audio rows
deferredunless the user provided matching files. - Do not modify prior-tag rows.
Provider Selection
Read .godotmaker/config.yaml and use asset_image_model.
asset_image_model | Provider doc |
|---|---|
native | references/providers/native.md |
codex | references/providers/codex.md |
gemini:<model> or gemini | references/providers/gemini.md |
If the configured provider is unavailable, stop and ask the user to choose
another asset_image_model.
Include the selected provider doc in every asset-producer brief.
Asset Producer Model
Read asset_producer_model from .godotmaker/config.yaml and include it as
model: in every asset-producer Agent call.
Production Unit Entry Points
Use references/asset-planner.md for production-unit selection.
| Production unit | First entry document |
|---|---|
screen-reference | references/production-units/screen-reference.md |
character-bundle | references/production-units/character-bundle.md |
fx-bundle | references/production-units/fx-bundle.md |
ui-kit | references/production-units/ui-kit.md |
card-kit | references/production-units/card-kit.md |
compact-prop-pack | references/production-units/compact-prop-pack.md |
background-map | references/production-units/background-map.md |
platform-strip | references/production-units/platform-strip.md |
scene-prop-set | references/production-units/scene-prop-set.md |
Process
Step 1 - Inventory Current-Tag Work
- Read
ASSETS.md. - Read
PLAN.md,STYLE.md,SCENES.md, andSTRUCTURE.md. - Build a current-tag missing list.
- Split the list into audio, user-provided candidates, scene references, and generated visual production units.
- Keep prior-tag rows unchanged.
Step 2 - Detect User-Provided Files
Read references/analyst-dispatch.md.
Run:
python tools/asset_user_preflight.py --project-root .
When image candidates exist:
- Dispatch
analystwith only the candidate paths. - Use the analyst report and
assets/manifest.json. - Update high-confidence
direct_runtimecurrent-tag rows toprovided. - Keep
source_for_processingrows in the generated visual production plan. - Leave uncertain files unchanged.
For audio candidates:
- Match exact paths first.
- Use clear filename or asset-id matches only.
- Update matching current-tag rows to
provided.
Step 3 - Build Production Plan
Read:
references/asset-planner.mdreferences/asset-runtime-pipeline.md
Write plan artifacts under .godotmaker/asset-generation/work/.
Use references/asset-planner.md for grouping, dependencies, batch rules, and
plan artifact fields.
Apply the Visual Anchor Gate from references/asset-planner.md before
dispatching generated visual work.
Step 4 - Dispatch Asset Producers
Dispatch asset-producer for every generated visual production unit.
Agent call shape:
Agent({
subagent_type: "asset-producer",
description: "Asset Producer: {unit_id}",
model: "{asset_producer_model from .godotmaker/config.yaml, default: sonnet}",
prompt: "{brief below}"
})
Read references/asset-curation.md when the selected production unit produces
source sheets, candidates, extracted frames, or selected final assets.
Brief shape:
## Asset Production Unit: {unit_id}
### Objective
{one concrete generated visual production unit}
### First Entry Document
- {references/production-units/<unit>.md}
### Provider
- {references/providers/<provider>.md}
- Configured provider: {provider from plan.provider}
### Shared Docs
- {references/asset-runtime-pipeline.md}
- {references/asset-curation.md when needed}
### Inputs
- ASSETS.md rows: {row ids or names}
- Style seed: STYLE.md
- Scene docs: SCENES.md sections or references
- Canonical references: {paths}
### Outputs
- Source paths: {paths under .godotmaker/asset-generation/sources/}
- Final paths: {paths under assets/ or references/}
- Prompt paths: {paths}
- Report path: {path}
- Manifest entry files: {paths}
### Scope
- Write only the listed outputs.
- Use only the first entry document and docs it references.
- Return the required Asset Producer Report.
Do not dispatch one subagent per ASSETS.md row when the work is one bundle. Dispatch one subagent per production unit.
Step 5 - Collect Reports
Read references/asset-runtime-pipeline.md.
For each asset-producer report:
- Confirm status is
DONE,PARTIAL, orFAILED. - Confirm listed source, final, prompt, report, and manifest-entry files exist when claimed.
- Confirm every ready manifest entry contains
runtime_artifact. - Upsert manifest entries:
python tools/asset_generation_manifest_update.py --entry-file <entry.json>
- Run full manifest validation:
python tools/asset_generation_manifest_check.py --check-files
- Update the matching ASSETS.md rows only after manifest validation passes:
python tools/asset_assets_md_update.py --entry-file <entry.json>
- Redispatch failed or incomplete production units once when the failure is actionable from the report.
Step 6 - Update ASSETS.md
For current-tag rows only:
- Confirm final generated runtime assets are
generated. - Mark provided files
provided. - Mark unprovided audio
deferred. - Keep rows with incomplete curation or missing final paths as
MISSING. - Confirm
Generation Paramsinclude the manifest entry pointer only. - Update the Visual Asset Contract for gameplay-visible generated assets.
Do not mark source sheets, references, or curation candidates as final runtime assets unless the production-unit report selected them as final outputs.
Plan Discipline
ASSETS.md status transitions are forward-only:
MISSING -> provided | generated | N/A | deferred
If the user wants to regenerate an accepted prior asset, add a current-tag row or leave a fix task for a later role.
Completion
After ASSETS.md has no current-tag MISSING rows except deferred audio:
- From the project root run:
python tools/append_stage_event.py asset
- Check whether the project working tree is dirty:
git status --porcelain
- If the command prints any rows, commit the asset-stage outputs:
git add -A
git commit -m "chore(asset): <Tag>"
- Inform the user:
Asset complete. Recommended next: /gm-build
Related skills
Documentation Co-Authoring
anthropics
Guide structured workflows for writing docs, proposals, and technical specs collaboratively.
MCP Server Builder
anthropics
Build protocol servers that connect language models to external APIs and services.
Ask Questions If Underspecified
trailofbits
Ask clarifying questions before starting work on ambiguous requests.
Claude Plugin Marketplace Builder
daymade
Convert a Claude skills repository into an installable marketplace with auto-updates.