# godot-composition-apps

Architecture rules for Godot apps and tool windows: an orchestrator plus components, signals up, calls down.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 330 installs · ★ 893
- Author: thedivergentai
- License: LGPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/thedivergentai/Game-Dev-Agentic-Skills/tree/HEAD/skills/godot-composition-apps/SKILL.md
- Updated: 2026-10-16
- HTML: https://affpapa.org/en/nevibecode/skills/godot-composition-apps

## What it does

This skill covers Control-heavy interfaces in Godot: EditorPlugin docks, tool windows, forms, settings panels. The root node acts as an orchestrator. It holds no business math — it listens to component signals and calls component methods. Communication runs one way: components signal upward, the orchestrator calls downward. Sibling components never talk to each other directly.

A set of starter scripts ships with it. `comp_rock_test_boilerplate.gd` runs the rock test: attach the candidate script to a literal rock and see whether it still works. `comp_orchestrator_base.gd` gives you the signal-up wiring skeleton, `comp_logic_visual_syncer.gd` keeps logic away from `AnimationPlayer` and `Theme`, and `comp_persistence_component.gd` handles saveable state through the `Saveable` group. Dependency injection, resource-backed config and a step sequencer for wizards and export pipelines round it out.

Gameplay entities are out of scope on purpose. Player, Enemy, Weapon and Hitbox belong to the separate `godot-composition` skill, so watch for an agent applying orchestrator rules to a character where they do not fit. Wire components through `@export` or `%UniqueNames` rather than `get_node("Path/To/Child")` and `get_parent()` — brittle node paths break the moment you move a node in the scene tree.

## Requirements
- Works with: Godot

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-composition-apps -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/godot-composition-apps/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/godot-composition-apps/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-composition-apps -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/godot-composition-apps/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-composition-apps -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/godot-composition-apps/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install thedivergentai/Game-Dev-Agentic-Skills godot-composition-apps
```

2. **Manually: put the files in place**
- File: `.github/skills/godot-composition-apps/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-composition-apps -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/thedivergentai/Game-Dev-Agentic-Skills --path skills/godot-composition-apps
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/godot-composition-apps/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-composition-apps -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/thedivergentai/Game-Dev-Agentic-Skills/tree/HEAD/skills/godot-composition-apps/SKILL.md

## When to use it
- split form logic and its visuals into separate components
- build an EditorPlugin dock with no business logic in the root script
- run the rock test on a component before wiring it in
- persist tool window state through the `Saveable` group
- inject component dependencies with `@export` instead of node paths

## Example prompts
- Split my settings screen into an orchestrator and components using godot-composition-apps
- Run the rock test from godot-composition-apps on my `AuthComponent`
- Make the dock panel state saveable with `comp_persistence_component.gd`

## Similar
- [godot-ui-control](https://affpapa.org/en/nevibecode/skills/godot-ui-control.md) — skill · 6700 installs
- [godot-nodes-scenes](https://affpapa.org/en/nevibecode/skills/godot-nodes-scenes.md) — skill · 6400 installs
- [godot](https://affpapa.org/en/nevibecode/rules/godot.md) — rule · ★ 3579
- [godot-mcp-enhanced](https://affpapa.org/en/nevibecode/mcp/godot-mcp-enhanced.md) — MCP server · ★ 103
- [godot-gdscript-patterns](https://affpapa.org/en/nevibecode/skills/godot-gdscript-patterns.md) — skill · 17396 installs
- [godot-ui](https://affpapa.org/en/nevibecode/skills/godot-ui.md) — skill · 2700 installs

From the same set: [thedivergentai/game-dev-agentic-skills](https://affpapa.org/en/nevibecode/by/thedivergentai/game-dev-agentic-skills.md) — 61 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
