| name | gm-asset |
| description | 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.
|
| disable-model-invocation | true |
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, or PLAN.md: tell user
to run /gm-gdd.
- Missing
**Tag:** header in PLAN.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}.png or report
is missing or stale against SCENES.md and 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.md and .godotmaker/.
- Do not read image binaries from
assets/ or references/.
- Dispatch
analyst for user-provided asset inspection.
- Dispatch
asset-producer for 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, or
STYLE.md.
- Do not write game code.
- Mark audio rows
deferred unless 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 |
openai:<model> or openai | references/providers/openai.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, and STRUCTURE.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
analyst with only the candidate paths.
- Use the analyst report and
assets/manifest.json.
- Update high-confidence
direct_runtime current-tag rows to provided.
- Keep
source_for_processing rows 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.md
references/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, or FAILED.
- 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 Params include 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