/fx-bundle
Produce a standalone static Texture2D effect or one explicitly timed animated SpriteFrames effect.
$ npx -y skills add RandallLiuXin/GodotMaker --skill fx-bundle --agent claude-codeHow 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
/fx-bundle
Context preview
The summary Claude sees to decide when to auto-load this skill.
Produce a standalone static Texture2D effect or one explicitly timed animated SpriteFrames effect.
SKILL.md
fx-bundle.SKILL.mdname: fx-bundle
description: Produce a standalone static Texture2D effect or one explicitly timed animated SpriteFrames effect.
FX Bundle
Use this Skill for one detached foreground effect: a projectile, impact, explosion, pickup, muzzle flash, slash arc, aura loop, or dust effect. It delivers either one static `Texture2D` or one animated `SpriteFrames`; it never delivers a `PackedScene`, particle node, trail, shader, sound, light, collision shape, lifecycle script, or a multi-node effect.
Read `.godotmaker/asset-runtime/asset-skill-contract.md` before accepting the request. For animation rhythm, also read `.godotmaker/asset-runtime/animation-planning.md`; it supplies planning ranges, not a reason to change an explicit request or reject a valid style.
Validate the shared request with `tools/asset_skill_contract_check.py`, then validate this family with `tools/asset_animated_bundle_contract_check.py --kind request`. At final handoff, call the latter with `--request <request.json> --result <result.json>`. The family checker binds `spec.mode` to the runtime type and source layout.
Boundary and STOP
The request has `asset_type: "fx-bundle"` and `spec.mode` equal to `static` or `animated`. References are optional. Pixel-art requests are unsupported in this version: stop clearly rather than quantizing, nearest-neighbour scaling, or labelling ordinary art as pixel art.
Stop only when a required input is unreadable, a declared provider or required reference attachment is objectively unavailable, the request is contradictory, or it asks for an unsupported deliverable such as a particle `PackedScene`. An image-processing, import, compiler, metadata, path, or validation failure is a production diagnostic: repair it and recheck it before deciding to stop.
This is a standalone Skill. Do not require `/gm-asset`, tags, stage state, `ASSETS.md`, generated manifests, or worker registration. A caller may register the returned ready entry separately.
Request contract
- `static` has no `required_actions` or `actions`. It returns one transparent
`Texture2D` at `assets/generated/fx-bundle/<asset_id>/<asset_id>.png` with a `single` source layout.
- `animated` has exactly one required action and exactly one action with the
same name. The action has `grid.columns`, `grid.rows`, non-empty ordered `frame_names`, positive `fps`, explicit boolean `loop`, and one positive relative duration per frame. The grid contains exactly one cell per frame. It returns one `SpriteFrames` resource at `assets/generated/fx-bundle/<asset_id>/<asset_id>.tres` with a `grid_sheet` source layout.
Never infer timing, frame order, grid, or loop state. Reject duplicates, missing frames, non-positive timing, mismatched durations, or mismatched grid cell count.
Provider, references, and provenance
1. Read the declared provider guide at `.godotmaker/asset-runtime/references/providers/<provider>.md`. The runtime installs this guide from the shared `gm-asset` provider contract. Execute that provider route only; do not silently substitute `native`, `codex`, `gemini`, or `openai`. 2. With no references, generate from the request's identity, gameplay role, direction, scale, frame count or static target, intended visual style, isolated foreground, solid `#FF00FF` source background, and no text or UI. 3. With references, validate every referenced path is readable, preserve its role, and attach the actual image to the chosen provider. A pathname in a text prompt is not an attachment. For Codex, resolve each `res://` reference to its actual local readable path and pass those exact paths through `referenced_image_paths`; for the scripted OpenAI/Gemini routes use `asset_source_generate.py` reference inputs. If the selected route cannot attach them, stop rather than dropping or replacing the reference. 4. For Codex, write a one-item generation plan with `require_provider_trace: true`, then record the actual generated image path, tool-call ID, coding model/reasoning, image-model identity (or `not_exposed_by_subscription_runtime`), reference roles, and resolved attachment paths. Claim that image with `python .godotmaker/asset-runtime/tools/codex_image_claim.py --plan <plan.json> --report <generated-paths.json> --project-root . --out-report <claim.json>`. Never directly copy a Codex image into the project. Missing claim evidence is a STOP. 5. Write `.godotmaker/asset-generation/traces/<asset_id>.json`. It contains `asset_id`; `provider.requested`, `provider.actual`, and, when applicable, `provider.referenced_image_paths` as the exact absolute local paths passed to the image-provider call; ordered `references` with the request `role`, `res://` `path`, `sha256`, and literal `attachment: "referenced_image_paths"`; `artifacts.raw_sources`, `provider_claim`, `process_reports`, `final_frames`, `source_layout`, and `godot_artifact`; and ordered `steps`. `source_layout` and `godot_artifact` are objects with exactly `type` and `path`: animated FX uses `{ "type": "grid_sheet", "path": "res://..._sheet.png" }` and `{ "type": "SpriteFrames", "path": "res://....tres" }`; static FX uses `{ "type": "single", "path": "res://....png" }` and `{ "type": "Texture2D", "path": "res://....png" }`. Every artifact path is a contained `res://` or project-relative path. Each step records `reason`, `command_or_code`, `inputs`, `outputs`, `modified_files`, `diagnostic`, and `repair`. Project tools are preferred, but a temporary image tool or diagnostic script is allowed when this trace is truthful; its name alone is never a failure. When a temporary script is created, list that script's exact path in the same step's `modified_files` as well as the generated assets it changes; do not omit the script merely because it is an implementation detail.
References influence scale, direction, palette, and visual style. Do not claim
Read more
name: fx-bundle description: Produce a standalone static Texture2D effect or one explicitly timed animated SpriteFrames effect.
FX Bundle
Use this Skill for one detached foreground effect: a projectile, impact, explosion, pickup, muzzle flash, slash arc, aura loop, or dust effect. It delivers either one static `Texture2D` or one animated `SpriteFrames`; it never delivers a `PackedScene`, particle node, trail, shader, sound, light, collision shape, lifecycle script, or a multi-node effect.
Read `.godotmaker/asset-runtime/asset-skill-contract.md` before accepting the request. For animation rhythm, also read `.godotmaker/asset-runtime/animation-planning.md`; it supplies planning ranges, not a reason to change an explicit request or reject a valid style.
Validate the shared request with `tools/asset_skill_contract_check.py`, then validate this family with `tools/asset_animated_bundle_contract_check.py --kind request`. At final handoff, call the latter with `--request <request.json> --result <result.json>`. The family checker binds `spec.mode` to the runtime type and source layout.
Boundary and STOP
The request has `asset_type: "fx-bundle"` and `spec.mode` equal to `static` or `animated`. References are optional. Pixel-art requests are unsupported in this version: stop clearly rather than quantizing, nearest-neighbour scaling, or labelling ordinary art as pixel art.
Stop only when a required input is unreadable, a declared provider or required reference attachment is objectively unavailable, the request is contradictory, or it asks for an unsupported deliverable such as a particle `PackedScene`. An image-processing, import, compiler, metadata, path, or validation failure is a production diagnostic: repair it and recheck it before deciding to stop.
This is a standalone Skill. Do not require `/gm-asset`, tags, stage state, `ASSETS.md`, generated manifests, or worker registration. A caller may register the returned ready entry separately.
Request contract
- `static` has no `required_actions` or `actions`. It returns one transparent
`Texture2D` at `assets/generated/fx-bundle/<asset_id>/<asset_id>.png` with a `single` source layout.
- `animated` has exactly one required action and exactly one action with the
same name. The action has `grid.columns`, `grid.rows`, non-empty ordered `frame_names`, positive `fps`, explicit boolean `loop`, and one positive relative duration per frame. The grid contains exactly one cell per frame. It returns one `SpriteFrames` resource at `assets/generated/fx-bundle/<asset_id>/<asset_id>.tres` with a `grid_sheet` source layout.
Never infer timing, frame order, grid, or loop state. Reject duplicates, missing frames, non-positive timing, mismatched durations, or mismatched grid cell count.
Provider, references, and provenance
1. Read the declared provider guide at `.godotmaker/asset-runtime/references/providers/<provider>.md`. The runtime installs this guide from the shared `gm-asset` provider contract. Execute that provider route only; do not silently substitute `native`, `codex`, `gemini`, or `openai`. 2. With no references, generate from the request's identity, gameplay role, direction, scale, frame count or static target, intended visual style, isolated foreground, solid `#FF00FF` source background, and no text or UI. 3. With references, validate every referenced path is readable, preserve its role, and attach the actual image to the chosen provider. A pathname in a text prompt is not an attachment. For Codex, resolve each `res://` reference to its actual local readable path and pass those exact paths through `referenced_image_paths`; for the scripted OpenAI/Gemini routes use `asset_source_generate.py` reference inputs. If the selected route cannot attach them, stop rather than dropping or replacing the reference. 4. For Codex, write a one-item generation plan with `require_provider_trace: true`, then record the actual generated image path, tool-call ID, coding model/reasoning, image-model identity (or `not_exposed_by_subscription_runtime`), reference roles, and resolved attachment paths. Claim that image with `python .godotmaker/asset-runtime/tools/codex_image_claim.py --plan <plan.json> --report <generated-paths.json> --project-root . --out-report <claim.json>`. Never directly copy a Codex image into the project. Missing claim evidence is a STOP. 5. Write `.godotmaker/asset-generation/traces/<asset_id>.json`. It contains `asset_id`; `provider.requested`, `provider.actual`, and, when applicable, `provider.referenced_image_paths` as the exact absolute local paths passed to the image-provider call; ordered `references` with the request `role`, `res://` `path`, `sha256`, and literal `attachment: "referenced_image_paths"`; `artifacts.raw_sources`, `provider_claim`, `process_reports`, `final_frames`, `source_layout`, and `godot_artifact`; and ordered `steps`. `source_layout` and `godot_artifact` are objects with exactly `type` and `path`: animated FX uses `{ "type": "grid_sheet", "path": "res://..._sheet.png" }` and `{ "type": "SpriteFrames", "path": "res://....tres" }`; static FX uses `{ "type": "single", "path": "res://....png" }` and `{ "type": "Texture2D", "path": "res://....png" }`. Every artifact path is a contained `res://` or project-relative path. Each step records `reason`, `command_or_code`, `inputs`, `outputs`, `modified_files`, `diagnostic`, and `repair`. Project tools are preferred, but a temporary image tool or diagnostic script is allowed when this trace is truthful; its name alone is never a failure. When a temporary script is created, list that script's exact path in the same step's `modified_files` as well as the generated assets it changes; do not omit the script merely because it is an implementation detail.
References influence scale, direction, palette, and visual style. Do not claim
Autonomous text-to-game pipeline for Godot, powered by Claude Code,Codex,Opencode
Repo: RandallLiuXin/GodotMaker
Other skills on godotmaker.
- /background-map
Generate and validate a fixed-viewport background, map base, or parallax plate as a ready-to-load Texture2D.
Open skill - /card-kit
Produce reusable card art sources and native Godot card UI resources.
Open skill - /character-bundle
Produce one illustrated character SpriteFrames resource from high-level body-action intent, optional character and style references, and a resolved animation plan.
Open skill - /compact-prop-pack
Produce a reusable compact-prop atlas from one provider source sheet, with independently loadable AtlasTexture resources for every declared prop.
Open skill - /platform-strip
Generate non-pixel-art, horizontally repeatable platform strips from real image sources as fixed Texture2D cells or AtlasTexture regions.
Open skill - /scene-prop-set
Generate non-pixel-art scene prop sets from one real source sheet and deliver fixed-slot AtlasTexture resources.
Open skill

