/compact-prop-pack
Produce a reusable compact-prop atlas from one provider source sheet, with independently loadable AtlasTexture resources for every declared prop.
$ npx -y skills add RandallLiuXin/GodotMaker --skill compact-prop-pack --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
/compact-prop-pack
Context preview
The summary Claude sees to decide when to auto-load this skill.
Produce a reusable compact-prop atlas from one provider source sheet, with independently loadable AtlasTexture resources for every declared prop.
SKILL.md
compact-prop-pack.SKILL.mdname: compact-prop-pack
description: Produce a reusable compact-prop atlas from one provider source sheet, with independently loadable AtlasTexture resources for every declared prop.
Compact Prop Pack
Produce a standalone atlas-backed pack of small reusable props: pickups, crates, stones, bushes, pots, debris, small signs, lamps, and environmental dressing. Use one provider source sheet for the whole requested pack; do not make one provider image request per prop. Do not use this Skill for platforms, terrain, buildings, doors, gates, large trees, or other wide, tall, collision-bearing assets. It produces assets only, never scene placement or gameplay objects.
This Skill can be invoked directly or by an orchestrator. It never reads or writes `ASSETS.md`, tags, stage state, or generated manifests.
Contract
Accept the shared Asset Skill request schema and shared result schema and checker from `.godotmaker/asset-runtime/asset-skill-contract.md` with `asset_type: "compact-prop-pack"`. The `spec` is the exact fixed-slot declaration consumed by `tools/asset_atlas_assemble.py --declaration`:
{
"version": 1,
"atlas": { "width": 192, "height": 64 },
"slots": [
{ "name": "coin", "rect": [0, 0, 32, 32], "source": "assets/generated/compact-prop-pack/market/normalized/coin.png" },
{ "name": "crate", "rect": [48, 0, 48, 48], "source": "assets/generated/compact-prop-pack/market/normalized/crate.png", "pivot": [0.5, 1.0] }
]
}Slot names are logical prop ids. Rectangles are explicit, positive, non-overlapping `[x, y, width, height]` values. `source` is the final, normalized project-relative PNG for that slot; it must have exactly the rectangle's width and height. The assembler does not resize, perform packing, trim, or infer semantics. It only copies these finalized files into declared slots.
Use these stable paths:
res://assets/generated/compact-prop-pack/<bundle_id>/<bundle_id>.png
res://assets/generated/compact-prop-pack/<bundle_id>/<bundle_id>.json
res://assets/generated/compact-prop-pack/<bundle_id>/<logical_prop_id>.tres
Return one `runtime` `AtlasTexture` output per declared slot, one `region_atlas` source for the physical PNG, and no registration fields. The request's fixed slots are the complete logical output declaration; the manager records every validated prop directly in its own `ASSETS.md` row.
Pixel-art production is not supported by this family. Do not use pixel-art prompts, nearest-neighbor resampling, or a pixelated filter to disguise ordinary illustration.
Provider and Reference Preconditions
Honor the request's provider exactly. Never silently switch among `native`, `codex`, `gemini`, or `openai`.
- With no `references`, generate the one source sheet from the brief and
declared item list.
- With references, validate every path is readable before generation, preserve
its `canonical`, `style`, or `screen` role in the trace, and pass each real image as provider image input. Passing a path only in text is not attachment.
- For `codex`, call the image provider with the actual reference files through
`referenced_image_paths`; omit that parameter only when there are no references. For `gemini` and `openai`, use the reference-input path of `tools/asset_source_generate.py`. If the pinned provider cannot accept a required reference image, STOP before output rather than changing provider.
- For `native`, use its declared native generation path. If that path cannot
receive the required reference attachment, STOP before output.
Archive the raw provider sheet at `.godotmaker/asset-generation/sources/<bundle_id>_source.png` and write its source report at `.godotmaker/asset-generation/reports/<bundle_id>_source.json`. The report records `raw_source`, `reference_inputs`, and `provider_trace`. Each reference record has `role`, `path`, `sha256`, and `attached: true`; `provider_trace` records the actual coding provider/model/reasoning, `image_provider`, visible `image_model_identity` (or `not_exposed_by_subscription_runtime` when that is the runtime's truthful limit), provider tool-call id, and its real image-attachment field (for Codex, `referenced_image_paths`). Use these exact keys: `coding_provider`, `coding_model`, `reasoning`, `image_provider`, `image_model_identity`, `tool_call_id`, and `referenced_image_paths`. The call id must be the id emitted by the actual image-generation tool, not an invented label; each attached path must be the same real image passed to that call. With no references, retain an empty `reference_inputs` array. Include the actual prompt, payload claim, readable-file checks, and attachment provenance. Never fabricate any of those records.
Production Loop
1. Before any provider call, validate the request, declared slots, source paths, and reference inputs. Each logical prop name must satisfy the shared cross-platform safe-identifier rule (one non-reserved path segment; no separator, device name, control character, or trailing dot). STOP only for a missing or unreadable required input, an unsupported or contradictory request, a provider/reference attachment that is objectively unavailable, or an unrecoverable environment or permission error. 2. Make one real provider image request for a separated source sheet containing the whole ordered prop list. Specify shared style, lighting, perspective, plentiful gaps between objects, a solid `#FF00FF` background, and no text, labels, UI, floor plane, borders, or grid. Archive the raw provider PNG. 3. Process that sheet with `asset_sheet_process.py --snap-mode autoslice`, `--background magenta`, `--padding 2`, and `--min-component-area 100`; never pass `--grid` to autoslice. The shared cleanup removes strict-key holes, then iteratively mattes a spill edge only when it matches a neighbouring foreground/background composite; it does not delete purple or blue-purple pixels merely for touching transparency. W
Read more
name: compact-prop-pack description: Produce a reusable compact-prop atlas from one provider source sheet, with independently loadable AtlasTexture resources for every declared prop.
Compact Prop Pack
Produce a standalone atlas-backed pack of small reusable props: pickups, crates, stones, bushes, pots, debris, small signs, lamps, and environmental dressing. Use one provider source sheet for the whole requested pack; do not make one provider image request per prop. Do not use this Skill for platforms, terrain, buildings, doors, gates, large trees, or other wide, tall, collision-bearing assets. It produces assets only, never scene placement or gameplay objects.
This Skill can be invoked directly or by an orchestrator. It never reads or writes `ASSETS.md`, tags, stage state, or generated manifests.
Contract
Accept the shared Asset Skill request schema and shared result schema and checker from `.godotmaker/asset-runtime/asset-skill-contract.md` with `asset_type: "compact-prop-pack"`. The `spec` is the exact fixed-slot declaration consumed by `tools/asset_atlas_assemble.py --declaration`:
{
"version": 1,
"atlas": { "width": 192, "height": 64 },
"slots": [
{ "name": "coin", "rect": [0, 0, 32, 32], "source": "assets/generated/compact-prop-pack/market/normalized/coin.png" },
{ "name": "crate", "rect": [48, 0, 48, 48], "source": "assets/generated/compact-prop-pack/market/normalized/crate.png", "pivot": [0.5, 1.0] }
]
}Slot names are logical prop ids. Rectangles are explicit, positive, non-overlapping `[x, y, width, height]` values. `source` is the final, normalized project-relative PNG for that slot; it must have exactly the rectangle's width and height. The assembler does not resize, perform packing, trim, or infer semantics. It only copies these finalized files into declared slots.
Use these stable paths:
res://assets/generated/compact-prop-pack/<bundle_id>/<bundle_id>.png res://assets/generated/compact-prop-pack/<bundle_id>/<bundle_id>.json res://assets/generated/compact-prop-pack/<bundle_id>/<logical_prop_id>.tres
Return one `runtime` `AtlasTexture` output per declared slot, one `region_atlas` source for the physical PNG, and no registration fields. The request's fixed slots are the complete logical output declaration; the manager records every validated prop directly in its own `ASSETS.md` row.
Pixel-art production is not supported by this family. Do not use pixel-art prompts, nearest-neighbor resampling, or a pixelated filter to disguise ordinary illustration.
Provider and Reference Preconditions
Honor the request's provider exactly. Never silently switch among `native`, `codex`, `gemini`, or `openai`.
- With no `references`, generate the one source sheet from the brief and
declared item list.
- With references, validate every path is readable before generation, preserve
its `canonical`, `style`, or `screen` role in the trace, and pass each real image as provider image input. Passing a path only in text is not attachment.
- For `codex`, call the image provider with the actual reference files through
`referenced_image_paths`; omit that parameter only when there are no references. For `gemini` and `openai`, use the reference-input path of `tools/asset_source_generate.py`. If the pinned provider cannot accept a required reference image, STOP before output rather than changing provider.
- For `native`, use its declared native generation path. If that path cannot
receive the required reference attachment, STOP before output.
Archive the raw provider sheet at `.godotmaker/asset-generation/sources/<bundle_id>_source.png` and write its source report at `.godotmaker/asset-generation/reports/<bundle_id>_source.json`. The report records `raw_source`, `reference_inputs`, and `provider_trace`. Each reference record has `role`, `path`, `sha256`, and `attached: true`; `provider_trace` records the actual coding provider/model/reasoning, `image_provider`, visible `image_model_identity` (or `not_exposed_by_subscription_runtime` when that is the runtime's truthful limit), provider tool-call id, and its real image-attachment field (for Codex, `referenced_image_paths`). Use these exact keys: `coding_provider`, `coding_model`, `reasoning`, `image_provider`, `image_model_identity`, `tool_call_id`, and `referenced_image_paths`. The call id must be the id emitted by the actual image-generation tool, not an invented label; each attached path must be the same real image passed to that call. With no references, retain an empty `reference_inputs` array. Include the actual prompt, payload claim, readable-file checks, and attachment provenance. Never fabricate any of those records.
Production Loop
1. Before any provider call, validate the request, declared slots, source paths, and reference inputs. Each logical prop name must satisfy the shared cross-platform safe-identifier rule (one non-reserved path segment; no separator, device name, control character, or trailing dot). STOP only for a missing or unreadable required input, an unsupported or contradictory request, a provider/reference attachment that is objectively unavailable, or an unrecoverable environment or permission error. 2. Make one real provider image request for a separated source sheet containing the whole ordered prop list. Specify shared style, lighting, perspective, plentiful gaps between objects, a solid `#FF00FF` background, and no text, labels, UI, floor plane, borders, or grid. Archive the raw provider PNG. 3. Process that sheet with `asset_sheet_process.py --snap-mode autoslice`, `--background magenta`, `--padding 2`, and `--min-component-area 100`; never pass `--grid` to autoslice. The shared cleanup removes strict-key holes, then iteratively mattes a spill edge only when it matches a neighbouring foreground/background composite; it does not delete purple or blue-purple pixels merely for touching transparency. W
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 - /fx-bundle
Produce a standalone static Texture2D effect or one explicitly timed animated SpriteFrames effect.
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

