/godot-brainstorming
Use when designing a new Godot feature or system — guides scene tree planning, node type selection, and architectural decisions
$ npx -y skills add jame581/GodotPrompter --skill godot-brainstorming --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
/godot-brainstorming
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when designing a new Godot feature or system — guides scene tree planning, node type selection, and architectural decisions
SKILL.md
godot-brainstorming.SKILL.mdname: godot-brainstorming
description: Use when designing a new Godot feature or system — guides scene tree planning, node type selection, and architectural decisions
Godot Brainstorming
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:** **scene-organization** for scene tree composition patterns, **component-system** for component-based architecture, **event-bus** for signal-based communication design.
---
Process: How to Brainstorm
Do NOT jump straight to designing. Follow these steps:
Step 1: Understand the request
Ask **one clarifying question at a time** to understand what the user wants to build. Focus on:
- What kind of game/system is this? (genre, perspective, scope)
- What are the core mechanics? (movement, combat, progression)
- What already exists? (existing code, scenes, assets)
- What are the constraints? (platform, performance, team size)
Step 2: Propose 2-3 approaches
Once you understand the request, propose architectural options with trade-offs. For example:
- "Enum FSM vs Node FSM for your state machine — here's when each fits"
- "EventBus vs direct signals for your systems — here's the trade-off"
Lead with your recommendation and explain why.
Step 3: Design with approval
Present the design section by section (scene tree, signal map, data flow). Ask "does this look right?" after each section before continuing.
Step 4: Prepare for implementation
After the design is approved:
1. **Inject CLAUDE.md** — Add the GodotPrompter integration section to the project's CLAUDE.md (see CLAUDE.md Injection section below). This ensures all subagents and future sessions know to use GodotPrompter skills. Skip if the `## GodotPrompter` section already exists.
2. **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 and save to `docs/godot-prompter/plans/` in the user's project.
3. **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:
- [ ] **Task 3: Player movement** — Create CharacterBody3D with walk, sprint, jump.
Skills: `godot-prompter:player-controller`, `godot-prompter:input-handling`
This ensures that even when another plugin executes the plan, the implementing agent knows which GodotPrompter skills to load.
---
1. When to Use
Start here whenever you are:
- **Adding a new feature** — a chest, a dialogue system, a crafting bench, a skill tree
- **Creating a new scene** — you need to decide what nodes it contains and how they communicate
- **Choosing between approaches** — inheritance vs. composition, Autoload vs. Resource, 2D vs. 3D
- **Feeling stuck on structure** — the code works but the scene tree feels wrong
- **Onboarding someone** — you need to explain the design of an existing system
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.
---
2. Scene Tree Planning
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:
1. **What does this node own?** (data, child nodes, visual representation) 2. **What does this node do?** (its single responsibility) 3. **How does it talk to neighbors?** (signals up, method calls down, EventBus sideways)
Planning Steps
1. Name the root node and its type — this defines the scene's contract with the world. 2. List immediate children by responsibility group, not by Godot node type. 3. Assign a Godot node type to each entry. 4. Identify every signal the scene emits and every signal it consumes. 5. Mark which nodes should be separate `.tscn` files (reuse candidates).
Example: Planning a "Chest" Interactable
**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**
- Visual representation (sprite, animation)
- Collision / interaction trigger (detect player proximity)
- Loot data (what items are inside)
- UI feedback (prompt label, open animation trigger)
- State (is it open or closed?)
**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](references/example-chest.md).
---
3. Node Type Selection Guide
| Need | N
Read more
name: godot-brainstorming description: Use when designing a new Godot feature or system — guides scene tree planning, node type selection, and architectural decisions
Godot Brainstorming
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:** **scene-organization** for scene tree composition patterns, **component-system** for component-based architecture, **event-bus** for signal-based communication design.
---
Process: How to Brainstorm
Do NOT jump straight to designing. Follow these steps:
Step 1: Understand the request
Ask **one clarifying question at a time** to understand what the user wants to build. Focus on:
- What kind of game/system is this? (genre, perspective, scope)
- What are the core mechanics? (movement, combat, progression)
- What already exists? (existing code, scenes, assets)
- What are the constraints? (platform, performance, team size)
Step 2: Propose 2-3 approaches
Once you understand the request, propose architectural options with trade-offs. For example:
- "Enum FSM vs Node FSM for your state machine — here's when each fits"
- "EventBus vs direct signals for your systems — here's the trade-off"
Lead with your recommendation and explain why.
Step 3: Design with approval
Present the design section by section (scene tree, signal map, data flow). Ask "does this look right?" after each section before continuing.
Step 4: Prepare for implementation
After the design is approved:
1. **Inject CLAUDE.md** — Add the GodotPrompter integration section to the project's CLAUDE.md (see CLAUDE.md Injection section below). This ensures all subagents and future sessions know to use GodotPrompter skills. Skip if the `## GodotPrompter` section already exists.
2. **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 and save to `docs/godot-prompter/plans/` in the user's project.
3. **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:
- [ ] **Task 3: Player movement** — Create CharacterBody3D with walk, sprint, jump.
Skills: `godot-prompter:player-controller`, `godot-prompter:input-handling`
This ensures that even when another plugin executes the plan, the implementing agent knows which GodotPrompter skills to load.
---
1. When to Use
Start here whenever you are:
- **Adding a new feature** — a chest, a dialogue system, a crafting bench, a skill tree
- **Creating a new scene** — you need to decide what nodes it contains and how they communicate
- **Choosing between approaches** — inheritance vs. composition, Autoload vs. Resource, 2D vs. 3D
- **Feeling stuck on structure** — the code works but the scene tree feels wrong
- **Onboarding someone** — you need to explain the design of an existing system
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.
---
2. Scene Tree Planning
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:
1. **What does this node own?** (data, child nodes, visual representation) 2. **What does this node do?** (its single responsibility) 3. **How does it talk to neighbors?** (signals up, method calls down, EventBus sideways)
Planning Steps
1. Name the root node and its type — this defines the scene's contract with the world. 2. List immediate children by responsibility group, not by Godot node type. 3. Assign a Godot node type to each entry. 4. Identify every signal the scene emits and every signal it consumes. 5. Mark which nodes should be separate `.tscn` files (reuse candidates).
Example: Planning a "Chest" Interactable
**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**
- Visual representation (sprite, animation)
- Collision / interaction trigger (detect player proximity)
- Loot data (what items are inside)
- UI feedback (prompt label, open animation trigger)
- State (is it open or closed?)
**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](references/example-chest.md).
---
3. Node Type Selection Guide
| Need | N
Agentic skills framework for Godot 4.x game development. Gives AI coding agents domain-specific expertise for GDScript and C# projects.
Other skills on godot-prompter.
- /authoring-godot-prompter-skills
Use when writing or editing a SKILL.md or an agent definition in this repo — required frontmatter, section ordering, and the GDScript-then-C# example convention.
Open skill - /releasing-godot-prompter
Use when cutting a GodotPrompter release or bumping its version — the version-bump sequence, tag-triggered workflow, and the marketplace manifests that must follow.
Open skill - /2d-essentials
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+
Open skill - /3d-essentials
Use when working with 3D-specific systems — materials, lighting, shadows, environment, global illumination, fog, LOD, occlusion culling, and decals in Godot 4.3+
Open skill - /ability-system
Use when building character abilities — Resource-based abilities with cost/cooldown/cast, buffs/debuffs, stat modifiers, gameplay tags, and HUD binding
Open skill - /addon-development
Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels
Open skill

