Skip to content
Automation
Skill

/fx-bundle

Produce a standalone static Texture2D effect or one explicitly timed animated SpriteFrames effect.

From plugin
godotmaker
55941 skills7 agents15 hooks

Claude Code

$ npx -y skills add RandallLiuXin/GodotMaker --skill fx-bundle --agent claude-code

SKILL.md

fx-bundle.SKILL.md
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. When invoked by `/gm-asset`, read the immutable manager-owned request from `.godotmaker/asset-generation/<asset_id>-request.json` and write the result to `.godotmaker/asset-generation/<asset_id>-result.json`.

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 validated result 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`, `openai`, `grok`, or `wan`. 2. Carry every visual rule stated in `brief` into the prompt as written; it is the visual specification for this effect. With no references, generate from those rules plus the request's identity, gameplay role, direction, scale, frame count or static target, 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 tr

Read more
@randallliuxin
Ships withgodotmaker

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

55941 skills7 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
559
Star history of RandallLiuXin/GodotMaker on GitHub, a chart by star-history.com

Other skills on godotmaker.

platform-strip

platform-strip

Generate non-pixel-art, horizontally repeatable platform strips from real image sources as fixed Texture2D cells or AtlasTexture…

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n2w209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about fx-bundle.

Which coding agents can use fx-bundle?
fx-bundle installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.