Skip to content
Automation
Skill

/gm-asset

Asset stage manager. Reads current-tag ASSETS.md gaps, accepts user-provided assets, plans visual production units, dispatches asset-producer subagents, collects validated Asset Skill results, updates ASSETS.md directly, and emits minimal worker runtime snapshots from that one

From plugin
godotmaker
51141 skills7 agents14 hooks
Install
$ npx -y skills add RandallLiuXin/GodotMaker --skill gm-asset --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/gm-asset

Context preview

The summary Claude sees to decide when to auto-load this skill.

Asset stage manager. Reads current-tag ASSETS.md gaps, accepts user-provided assets, plans visual production units, dispatches asset-producer subagents, collects validated Asset Skill results, updates ASSETS.md directly, and emits minimal worker runtime snapshots from that one

SKILL.md

gm-asset.SKILL.md
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 validated Asset Skill results, updates ASSETS.md directly, and emits
  minimal worker runtime snapshots from that one authority.
  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:

1. `project.godot`: tell user to run `/gm-scaffold`. 2. `ROADMAP.md`, `STYLE.md`, `ASSETS.md`, `SCENES.md`, or `PLAN.md`: tell user to run `/gm-gdd`. 3. Missing `**Tag:**` header in `PLAN.md`: tell user to re-run `/gm-gdd`.

Proceed when either check has current-tag work:

1. Any current-tag `ASSETS.md` row, including an Audio table row, with status `MISSING`. Under Manager Rule 9, mark unavailable audio rows `deferred` before considering the no-work path; only explicitly deferred audio is exempt from this check. 2. Current-tag scene references whose `references/scene_{name}.png` or report is missing or stale against `SCENES.md` and the Visual Asset Contract.

If neither check has work — no current-tag row is `MISSING`, unavailable audio is explicitly `deferred`, and all current-tag scene references are current — record the completed asset stage before stopping:

python tools/append_stage_event.py asset

Then 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

1. Write directly only to project-root `ASSETS.md` and `.godotmaker/`. 2. Do not read image binaries from `assets/` or `references/`. 3. Dispatch `analyst` for user-provided asset inspection. 4. Dispatch `asset-producer` for generated visual production units. 5. Do not generate raw visual art in the manager context. 6. Do not write generated image files with direct Write/Edit. 7. Do not modify `GDD.md`, `PLAN.md`, `GAP.md`, `STRUCTURE.md`, `SCENES.md`, or `STYLE.md`. 8. Do not write game code. 9. Mark audio rows `deferred` unless the user provided matching files. 10. 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` | First-class `screen-reference` Asset Skill | | `character-bundle` | First-class `character-bundle` Asset Skill | | `fx-bundle` | First-class `fx-bundle` Asset Skill | | `ui-kit` | First-class `ui-kit` Asset Skill | | `card-kit` | First-class `card-kit` Asset Skill | | `compact-prop-pack` | First-class `compact-prop-pack` Asset Skill | | `background-map` | First-class `background-map` Asset Skill | | `platform-strip` | First-class `platform-strip` Asset Skill | | `scene-prop-set` | First-class `scene-prop-set` Asset Skill | | `tileset` | First-class `tileset` Asset Skill |

Process

Step 1 - Inventory Current-Tag Work

1. Read `ASSETS.md`. 2. Read `PLAN.md`, `STYLE.md`, `SCENES.md`, and `STRUCTURE.md`. 3. Build a current-tag missing list. 4. Split the list into audio, user-provided candidates, scene references, and generated visual production units. 5. 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:

1. Dispatch `analyst` with only the candidate paths. 2. Use the analyst report and `assets/manifest.json`. 3. Update high-confidence `direct_runtime` current-tag rows to `provided`, and fill `Runtime Type` and the `res://` `Runtime Path` of the accepted file in the same edit. A `provided` row with incomplete runtime columns cannot be resolved into a worker snapshot. 4. Keep `source_for_processing` rows in the generated visual production plan. 5. Leave uncertain files unchanged.

For audio candidates:

1. Match exact paths first. 2. Use clear filename or asset-id matches only. 3. Update matching current-tag rows to `provided`.

Step 3 - Build Production Plan

Read:

1. `references/asset-planner.md` 2. `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
Read more
Ships withgodotmaker

Autonomous text-to-game pipeline for Godot, powered by Claude Code,Codex,Opencode

Get the whole plugin