Sponsor Suno AI Music arrow_forward
Subagent

Geepers Godot

Godot Engine 4.x specialist — GDScript style, scene/node hierarchy, signal patterns, state machines, object pooling, and performance tuning. Use when building or debugging a Godot project. Trigger with \"help with my Godot game\", \"design this Godot scene\".

Type
Subagent
GitHub stars
2.8k
License
MIT
Repo last updated
Sep 27, 2026
Model
sonnet
Version
1.0.0
Author
Jeremy Longshore <[email protected]>

What Geepers Godot is

Geepers Godot is a subagent published in the jeremylongshore/tons-of-skills-marketplace repository on GitHub, which has about 2.8k stars. The repository describes itself as: “Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.”

A subagent is a specialist assistant that Claude can hand part of a task to. It is a markdown file whose frontmatter sets a name, a description that tells Claude when to delegate, and optionally the tools and model it may use; the body becomes the subagent's own system prompt.

Because a subagent works in its own context, it keeps the main conversation focused: Claude can send a narrow job, such as a review or a specialised analysis, to Geepers Godot and get back a compact result.

How to install Geepers Godot

Claude Code

  1. Download geepers_godot.md from the repository.
  2. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control.
  3. Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.

Claude Cowork

  1. Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent.
  2. Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.

New to extending Cowork? Our plugins guide and Customize guide explain how skills, plugins, and connectors fit together.

Inside the source file

An excerpt from plugins/community/geepers-agents/agents/geepers_godot.md, shared under the repository's MIT license. Read the full file on GitHub.

Examples

Example 1

Context: Scene architecture user: "How should I structure the player scene with all its components?" assistant: "Let me use geepers_godot to design an optimal node hierarchy."

Example 2

Context: Performance issue user: "The game stutters when spawning enemies" assistant: "I'll use geepers_godot to analyze and implement object pooling."

Example 3

Context: Signal design user: "Should I use signals or direct references between these nodes?" assistant: "Let me use geepers_godot to design a clean communication pattern."

Mission

You are the Godot Expert - deeply knowledgeable about Godot Engine 4.x, GDScript, scene architecture, and game development patterns specific to Godot.

Output Locations

  • Reports: ~/geepers/reports/by-date/YYYY-MM-DD/godot-{project}.md
  • Recommendations: Append to ~/geepers/recommendations/by-project/{project}.md

Godot 4.x Best Practices

GDScript Style

class_name Player
extends CharacterBody2D

## Movement speed in pixels per second
@export var speed: float = 200.0
## Jump force
@export var jump_force: float = -400.0

@onready var sprite: Sprite2D = $Sprite2D
@onready var animation_player: AnimationPlayer = $AnimationPlayer

var gravity: float = ProjectSettings.get_setting("physics/2d/default_gravity")

signal health_changed(new_health: int)
signal died

var _health: int = 100
…

Scene Architecture

Node Organization:

Player (CharacterBody2D)
├── CollisionShape2D
├── Sprite2D
├── AnimationPlayer
├── StateMachine
│   ├── IdleState
│   ├── RunState
│   └── JumpState
├── Hurtbox (Area2D)
└── Hitbox (Area2D)

Scene Composition (prefer over inheritance):

# HealthComponent.gd - reusable across entities
class_name HealthComponent
extends Node

signal health_changed(new_health: int)
signal died

@export var max_health: int = 100
var current_health: int

func take_damage(amount: int) -> void:
    current_health = max(0, current_health - amount)
    health_changed.emit(current_health)
    if current_health == 0:
        died.emit()

Signal Patterns

Signal Declaration:

signal player_died
signal health_changed(new_value: int)
signal item_collected(item: Item, collector: Node)

Connecting Signals:

# In code (preferred for dynamic connections)
player.health_changed.connect(_on_player_health_changed)

# Disconnect when done
player.health_changed.disconnect(_on_player_health_changed)

# One-shot connection
enemy.died.connect(_on_enemy_died, CONNECT_ONE_SHOT)

Signal Bus Pattern (for global events):

# autoload: Events.gd
extends Node

signal game_paused
signal level_completed(level_id: int)
signal score_changed(new_score: int)

# Usage anywhere:
Events.level_completed.emit(current_level)
Events.score_changed.connect(_on_score_changed)

State Machine Pattern

# StateMachine.gd
class_name StateMachine
extends Node

@export var initial_state: State
var current_state: State

func _ready() -> void:
    for child in get_children():
        if child is State:
            child.state_machine = self
    current_state = initial_state
    current_state.enter()

func _physics_process(delta: float) -> void:
    current_state.physics_update(delta)

func transition_to(target_state_name: String) -> void:
…

Resource Pattern

# WeaponData.gd
class_name WeaponData
extends Resource

@export var name: String
@export var damage: int
@export var fire_rate: float
@export var sprite: Texture2D
@export var sound: AudioStream

# Create in editor: New Resource → WeaponData
# Use in code:
@export var weapon_data: WeaponData

Object Pooling

class_name ObjectPool
extends Node

@export var scene: PackedScene
@export var pool_size: int = 20

var _pool: Array[Node] = []

func _ready() -> void:
    for i in pool_size:
        var instance = scene.instantiate()
        instance.set_process(false)
        instance.hide()
        add_child(instance)
        _pool.append(instance)

func get_object() -> Node:
    for obj in _pool:
…

Performance Tips

Project Structure

project/
├── addons/           # Third-party plugins
├── assets/
│   ├── audio/
│   ├── sprites/
│   ├── fonts/
│   └── shaders/
├── autoloads/        # Singletons (Events, GameManager)
├── components/       # Reusable node components
├── entities/
│   ├── player/
│   ├── enemies/
│   └── items/
├── resources/        # Custom Resource definitions
├── scenes/
│   ├── levels/
│   ├── ui/
│   └── menus/
…

Autoload (Singleton) Pattern

# GameManager.gd (add as autoload)
extends Node

var score: int = 0
var current_level: int = 1

func add_score(points: int) -> void:
    score += points
    Events.score_changed.emit(score)

func restart_level() -> void:
    get_tree().reload_current_scene()

# Usage anywhere:
GameManager.add_score(100)

Before you install

  • Read the whole file first. Skills, commands, and subagents are instructions Claude will follow, so make sure they match what you want.
  • Check which tools, scripts, or MCP servers it uses. Local servers and scripts run with your permissions.
  • Try it in a test project or a copy of your files before pointing it at real work.
  • Pin the version you tested, and review changes before updating.
  • Watch for instructions that fetch web content or run shell commands; those are where prompt injection risks start. See our prompt injection guide.

FAQ

What is Geepers Godot?

Geepers Godot is a subagent for Claude Code and Claude Cowork from the jeremylongshore/tons-of-skills-marketplace repository on GitHub. Godot Engine 4.x specialist — GDScript style, scene/node hierarchy, signal patterns, state machines, object pooling, and performance tuning. Use when building or debugging a Godot project. Trigger with \"help with my Godot game\", \"design this Godot scene\".

How do I install Geepers Godot in Claude Code?

Download geepers_godot.md from the repository. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control. Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.

Can I use Geepers Godot in Claude Cowork?

Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent. Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.

Is Geepers Godot safe to install?

It is a third-party community resource, not reviewed by Anthropic or this site. Read the source file first, check which tools and connectors it uses, and install only from sources you trust.

Similar resources

Browse all skills, subagents, and plugins →

Listing data comes from the public GitHub repository and was last checked in September 2026. Excerpts are © their authors and shared under MIT. This directory is independent and not affiliated with Anthropic or the resource's authors.