Use when working with 2D-specific systems — TileMaps, parallax scrolling, 2D lights and shadows, canvas layers, particles 2D, custom drawing, and 2D meshes in Godot 4.3+
日本語の概要は準備中です。原文の説明を表示しています。
Use when designing a new Godot feature or system — guides scene tree planning, node type selection, and architectural decisions
インストールする前に、エージェントに与えられる指示の中身を確認できます。
A structured design process for Godot 4.3+ features and systems — from blank slate to a clear scene tree, signal map, and data flow before you write a single line of implementation code.
Related skills: godot-grill for settling open design decisions first, scene-organization for scene tree composition patterns, component-system for component-based architecture, event-bus for signal-based communication design.
Do NOT jump straight to designing. Follow these steps:
If the request has open design decisions (scope, dimension, authority, data home, …), invoke godot-prompter:godot-grill and let it run to its end. Skip it when a record in the project's decisions or ADR directory already covers this feature, or the user has stated the decisions. Either way, check what already exists (code, scenes, assets). Carry the record into Step 2 — approaches must respect its settled rows.
With the decisions settled, propose architectural options with trade-offs. For example:
Present the design section by section (scene tree, signal map, data flow). Ask "does this look right?" after each section before continuing.
After the design is approved:
Offer the agent instructions section — Ask whether to add the GodotPrompter integration section to the file this project already uses for agent instructions (see Agent Instructions Injection below). It is what tells subagents and future sessions to use GodotPrompter skills. Skip silently if a ## GodotPrompter section already exists in any of them, or if the user has declined before. Never add it without agreement.
Create implementation plan — If a planning skill is available (e.g., superpowers:writing-plans), use it; if not, break the design into ordered tasks yourself. Either way the project decides where the plan is saved: the user's instructions or the project's agent instructions file; then the planning skill's convention; then an existing plans directory. If none applies, ask the user, suggesting docs/plans/, or use docs/plans/ when you cannot ask.
Annotate each task with skills — Every task in the plan that involves a Godot system MUST list which godot-prompter:* skill(s) to invoke during implementation. Example:
godot-prompter:player-controller, godot-prompter:input-handlingThis ensures that even when another plugin executes the plan, the implementing agent knows which GodotPrompter skills to load.
Start here whenever you are:
If you already know exactly what nodes you need and how they connect, skip this skill and build. Use it when uncertainty is slowing you down.
Sketch the scene tree on paper (or in a comment block) before opening the Godot editor. The goal is to answer three questions for every node:
.tscn files (reuse candidates).Step 1 — Name and root type
A Chest is a world object the player walks up to and opens. It is not a physics body; it does not move. Root: StaticBody2D or Node2D.
Step 2 — Responsibility groups
Step 3 — Assign node types
Chest (StaticBody2D)
├── Sprite2D # closed/open frame, or swap texture on open
├── AnimationPlayer # open animation
├── CollisionShape2D # physical body shape (blocks player)
├── InteractionArea (Area2D) # detect when player is close enough
│ └── CollisionShape2D # slightly larger than body shape
├── PromptLabel (Label3D or Label) # "Press F to open"
└── LootTable (Node) # holds @export var items: Array[ItemData]
Step 4 — Signal map
| Signal | Emitted by | Connected to | Purpose |
|---|---|---|---|
body_entered(body) | InteractionArea | Chest._on_area_body_entered | Show prompt when player enters range |
body_exited(body) | InteractionArea | Chest._on_area_body_exited | Hide prompt when player leaves |
opened(loot: Array[ItemData]) | Chest | InventorySystem or EventBus | Deliver loot to whoever owns the inventory |
animation_finished(name) | AnimationPlayer | Chest._on_animation_finished | Lock chest after open animation completes |
Step 5 — Reuse candidates
LootTable is likely reused by barrels, enemies, and shop crates — extract it as a separate .tscn component.
For the resulting GDScript and C# Chest sketches, plus the four-part design entry (Scene Tree, Node Responsibilities, Signal Map, Data Flow) used to document this design, see references/example-chest.md.
Two lookups belong here but are pure recall — load them only when the answer is not already obvious:
CharacterBody vs RigidBody vs StaticBody vs Area, UI vs world-space labels, particles, cameras, spawn markers.Two Godot 4.3+ specifics are easy to get wrong and worth stating up front: tile-based levels use TileMapLayer (one layer per node — TileMap is deprecated), and blend-tree locomotion needs an AnimationTree paired with an AnimationPlayer, not an AnimationPlayer alone.
Full need-to-node table, the 2D/3D decision criteria, and 2.5D hybrid techniques: references/node-selection.md
Work through this checklist before creating your first node.
.tscn scene with a clean @export interface| If you need... | Consider... | Why |
|---|---|---|
| Global state accessible anywhere | Autoload (singleton) | Registered in Project Settings; available as a named global |
| Data shared between multiple scenes | Resource (.tres / .res) | Saved as an asset; @export-able; survives scene reloads |
| Reusable behavior across entity types | Component scene | Instantiate as a child; each entity opts in by including the scene |
| Complex entity behavior with many states | State machine | Explicit enter/exit per state; prevents if-chain sprawl |
| Events between systems that don't share a parent | EventBus Autoload | Decouples sender and receiver; any node can connect |
| Data that must persist across sessions | Save system with JSON or binary | Serialize Resource or Dictionary; load on _ready |
| Configurable game data (stats, items, levels) | Resource with @export fields | Edit values in the Inspector; no code change required |
| Spawning scenes at runtime | PackedScene + instantiate() | Store @export var scene: PackedScene; call scene.instantiate() |
| Running code on a delay or interval | Timer node | Cleaner than _process frame counters; supports one-shot and loop |
| Gradual transitions (fade, lerp, tween) | Tween | create_tween() is built-in; no extra node required in Godot 4 |
Capture your design in a comment block at the top of the root script, or in a DESIGN.md file next to the scene. A complete design entry has four parts: a scene tree ASCII diagram, a node responsibilities table, a signal map (signal → source → consumer → payload), and a data flow trace showing how a triggering event propagates through the tree.
See references/example-chest.md for a fully worked four-part entry built around the Chest interactable.
.tscn filesWhen preparing for implementation (Step 4), add the following section to the file this project uses for agent instructions. Check for an existing ## GodotPrompter heading in all of CLAUDE.md, CLAUDE.local.md, .claude/CLAUDE.md, AGENTS.md, GEMINI.md, .github/copilot-instructions.md, and the .claude/rules/ and .cursor/rules/ directories — if it is present anywhere, skip.
A previous refusal counts as an answer. The SessionStart hook records one as "section_offer": "declined" in this project's ~/.godot-prompter/state/<hash>.json (godot-prompter:godot-mentor documents the file and how the hash is computed) — if that key is set, do not ask again. Record a refusal there yourself, merged into any existing keys, when the user declines here.
Write it to the file the project already maintains, not to a second one:
CLAUDE.md exists → add it there.AGENTS.md or GEMINI.md exists → add it there, so the repo stays agent-agnostic. Claude Code reads CLAUDE.md only, so if the user wants it loaded there too, a one-line CLAUDE.md containing @AGENTS.md does that — offer it, do not assume it.CLAUDE.md with a project overview header and this section.GodotPrompter
This is a Godot project with GodotPrompter skills available. Before implementing any game system, you MUST check for a matching
godot-prompter:*skill and invoke it. This applies to all agents, subagents, and sessions working in this repository.Key skills:
player-controller,state-machine,event-bus,scene-organization,component-system,resource-pattern,godot-ui,hud-system,ai-navigation,camera-system,audio-system,save-load,inventory-system,godot-testing.For the full skill list, invoke
godot-prompter:using-godot-prompter.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when working with 2D-specific systems — TileMaps, parallax scrolling, 2D lights and shadows, canvas layers, particles 2D, custom drawing, and 2D meshes in Godot 4.3+
日本語の概要は準備中です。原文の説明を表示しています。
Use when working with 3D-specific systems — materials, lighting, shadows, environment, global illumination, fog, LOD, occlusion culling, and decals in Godot 4.3+
日本語の概要は準備中です。原文の説明を表示しています。
Use when building character abilities — Resource-based abilities with cost/cooldown/cast, buffs/debuffs, stat modifiers, gameplay tags, and HUD binding
日本語の概要は準備中です。原文の説明を表示しています。
Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels
日本語の概要は準備中です。原文の説明を表示しています。
Use when implementing AI movement — NavigationAgent2D/3D, steering behaviors, behavior trees, and patrol patterns
日本語の概要は準備中です。原文の説明を表示しています。
Use when implementing animations — AnimationPlayer, AnimationTree, blend trees, state machines, sprite animation, and code-driven animation
日本語の概要は準備中です。原文の説明を表示しています。