Agent skill

Godot Project Setup

by jame581 in jame581/GodotPrompter

A skill your agent uses when creating a new Godot 4.x project — scaffolds recommended directory structure, project settings, autoloads, and .gitignore

MITAuto-check passedGame Development

Install Godot Project Setup

skills CLI
$ npx skills add jame581/GodotPrompter --skill godot-project-setup -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jame581/GodotPrompter godot-project-setup --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jame581/GodotPrompter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/godot-project-setup .claude/skills/godot-project-setup && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
godot-project-setup
GitHub stars
799
Token cost
~3.2k tokens
SKILL.md length
660 words
Files
1
Skills in repo
58
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when creating a new Godot 4.x project — scaffolds recommended directory structure, project settings, autoloads, and .gitignore

  • Creating a new Godot 4.x project — scaffolds recommended directory structure
  • SKILL.md covers Recommended Directory…, Alternative: Co-Located…, .gitignore and .gitattributes, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Project settings

What it does

Godot Project Setup is an agent skill from jame581/GodotPrompter. Use when creating a new Godot 4.x project — scaffolds recommended directory structure, project settings, autoloads, and .gitignore

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Game Development, covering Game development and Project scaffolding. It works with Godot. The repository describes itself as: Agentic skills framework for Godot 4.x. Domain-specific skills for AI coding agents (Claude Code, Copilot, Antigravity, Cursor). The licence is MIT.

When your agent uses it

  • Creating a new Godot 4.x project — scaffolds recommended directory structure
  • Project settings

Example prompts

  • “/godot-project-setup”

What it can do on your machine

Read from SKILL.md and the folder at commit 1e7d79d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp, gdscript, gitignore, gitattributes and xml).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Godot Project Setup loads about 3.2k tokens when it runs. Until then it costs about 38 tokens; SKILL.md has 660 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~38
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jame581/GodotPrompter at commit 1e7d79d, republished under its MIT licence (© jame581). 660 words, ~3,214 tokens.

Download SKILL.mdSave it as .claude/skills/godot-project-setup/SKILL.md (or your agent's skills folder).
name
godot-project-setup
description
Use when creating a new Godot 4.x project — scaffolds recommended directory structure, project settings, autoloads, and .gitignore

Godot Project Setup

This skill scaffolds a new Godot 4.3+ project with recommended directory structure, project settings, autoloads, and version control configuration.

Related skills: scene-organization for structuring scene trees, event-bus for the EventBus autoload pattern, save-load for the SaveManager autoload pattern.

The split layout separates assets, scenes, and scripts into distinct top-level directories. This scales well for medium-to-large projects and makes it easy to find resources by type.

res://
├── assets/
│   ├── audio/
│   │   ├── music/
│   │   └── sfx/
│   ├── fonts/
│   ├── shaders/
│   ├── sprites/
│   │   ├── characters/
│   │   ├── environment/
│   │   └── ui/
│   └── textures/
├── scenes/
│   ├── autoloads/
│   ├── characters/
│   ├── environment/
│   ├── levels/
│   ├── screens/
│   └── ui/
├── scripts/
│   ├── autoloads/
│   ├── characters/
│   ├── components/
│   ├── resources/
│   └── ui/
├── resources/
│   ├── items/
│   ├── levels/
│   └── themes/
└── addons/

Why split layout?

  • Assets managed by artists can be updated without touching script directories.
  • Glob patterns in export presets are simpler (assets/** stays separate from scripts/**).
  • Easier to configure .gitattributes binary rules per directory.
  • Scales to teams where artists and programmers work in different areas.

Alternative: Co-Located Structure

For solo projects or small teams, keep scenes and scripts together by feature. Easier to move a feature wholesale; harder to apply binary gitattributes rules.

res://
├── assets/
│   ├── audio/
│   ├── fonts/
│   └── textures/
├── entities/
│   ├── player/
│   │   ├── player.tscn
│   │   ├── player.gd          # or Player.cs
│   │   └── player_state.gd
│   └── enemy/
│       ├── enemy.tscn
│       └── enemy.gd
├── levels/
│   ├── level_01/
│   │   ├── level_01.tscn
│   │   └── level_01.gd
│   └── main_menu/
│       ├── main_menu.tscn
│       └── main_menu.gd
├── systems/
│   ├── inventory/
│   └── dialogue/
├── autoloads/
├── resources/
└── addons/

.gitignore

gitignore
# Godot editor data — never commit
.godot/

# Export artifacts
*.apk
*.aab
*.ipa
*.exe
*.x86_64
*.x86_32
*.arm32
*.arm64
*.pck
*.zip
export/

# C# / Mono build output
.mono/
.import/
bin/
obj/
*.csproj.user
*.sln.user
*.user

# IDE and OS files
.vs/
.vscode/settings.json
.idea/
*.swp
.DS_Store
Thumbs.db

# GodotPrompter (if used in-project)
.godot-prompter-cache/

.gitattributes

Normalize line endings for text files and mark binary assets so Git does not attempt text diffs on them.

gitattributes
# Default: normalize line endings to LF on commit
* text=auto eol=lf

# Godot-specific text files
*.gd text eol=lf
*.gdshader text eol=lf
*.gdshaderinc text eol=lf
*.tscn text eol=lf
*.tres text eol=lf
*.godot text eol=lf
*.cfg text eol=lf
*.import text eol=lf

# C# source
*.cs text eol=lf
*.csproj text eol=lf
*.sln text eol=lf

# Binary assets — no diff, no merge, no EOL conversion
*.png binary
*.jpg binary
*.jpeg binary
*.webp binary
*.svg binary
*.psd binary
*.aseprite binary
*.wav binary
*.ogg binary
*.mp3 binary
*.ttf binary
*.otf binary
*.woff binary
*.woff2 binary
*.glb binary
*.gltf binary
*.blend binary
*.fbx binary
*.mp4 binary
*.ogv binary

Project Settings

Configure these in Project > Project Settings or directly in project.godot.

Display
SettingRecommended valueNotes
display/window/size/viewport_width1920Base resolution — art reference size
display/window/size/viewport_height1080
display/window/stretch/modecanvas_itemsScales 2D content; use viewport for pixel-perfect
display/window/stretch/aspectkeepAdds letterbox/pillarbox; expand fills screen
display/window/size/resizabletrueAllow window resize on desktop

For pixel-art projects use stretch/mode = viewport and texture_filter = nearest on the root CanvasItem or globally via rendering/textures/canvas_textures/default_texture_filter.

Godot 4.7+: Projects newly created in Godot 4.7 already default display/window/stretch/mode to canvas_items and display/window/stretch/aspect to expand (previously disabled / keep), so only aspect needs changing if you want keep's letterboxing. Projects created on older versions keep their existing values — set both explicitly when upgrading.

Input Map

Define actions in Project > Project Settings > Input Map rather than hard-coding key constants. This lets players rebind controls at runtime.

GDScript — reading input actions:

gdscript
# Good: action-based (rebindable)
func _process(delta: float) -> void:
    var direction := Input.get_axis("move_left", "move_right")
    if Input.is_action_just_pressed("jump"):
        _jump()

# Avoid: hard-coded key checks
func _input(event: InputEvent) -> void:
    if event is InputEventKey and event.keycode == KEY_SPACE:
        _jump()

C# — reading input actions:

csharp
// Good: action-based (rebindable)
public override void _Process(double delta)
{
    float direction = Input.GetAxis("move_left", "move_right");
    if (Input.IsActionJustPressed("jump"))
        Jump();
}

// Avoid: hard-coded key checks
public override void _Input(InputEvent @event)
{
    if (@event is InputEventKey key && key.Keycode == Key.Space)
        Jump();
}

Saving and restoring custom bindings at runtime (GDScript):

gdscript
func save_bindings() -> void:
    var config := ConfigFile.new()
    for action in InputMap.get_actions():
        if action.begins_with("ui_"):
            continue  # skip built-in UI actions
        var events := InputMap.action_get_events(action)
        config.set_value("bindings", action, events)
    config.save("user://bindings.cfg")

func load_bindings() -> void:
    var config := ConfigFile.new()
    if config.load("user://bindings.cfg") != OK:
        return
    for action in config.get_section_keys("bindings"):
        InputMap.action_erase_events(action)
        for event in config.get_value("bindings", action):
            InputMap.action_add_event(action, event)

Saving and restoring custom bindings at runtime (C#):

csharp
public void SaveBindings()
{
    var config = new ConfigFile();
    foreach (StringName action in InputMap.GetActions())
    {
        if (((string)action).StartsWith("ui_"))
            continue; // skip built-in UI actions
        var events = InputMap.ActionGetEvents(action);
        config.SetValue("bindings", action, events);
    }
    config.Save("user://bindings.cfg");
}

public void LoadBindings()
{
    var config = new ConfigFile();
    if (config.Load("user://bindings.cfg") != Error.Ok)
        return;
    foreach (string action in config.GetSectionKeys("bindings"))
    {
        InputMap.ActionEraseEvents(action);
        var events = (Godot.Collections.Array)config.GetValue("bindings", action);
        foreach (InputEvent @event in events)
            InputMap.ActionAddEvent(action, @event);
    }
}

Autoloads

Register autoloads in Project > Project Settings > Globals > Autoload. Autoloads are singleton nodes available globally via their registered name.

Common Autoloads
NamePathPurpose
GameManagerautoloads/game_manager.gdGame state, scene transitions, pause
EventBusautoloads/event_bus.gdDecoupled signal relay
AudioManagerautoloads/audio_manager.gdMusic, SFX, volume control
SaveManagerautoloads/save_manager.gdSave/load game data

Keep autoloads small. Move logic into standalone classes and call them from the autoload.

Minimal GameManager — GDScript
gdscript
# autoloads/game_manager.gd
extends Node

signal scene_changed(scene_path: String)
signal game_paused(is_paused: bool)

var current_level: String = ""
var is_paused: bool = false


func change_scene(path: String) -> void:
    current_level = path
    scene_changed.emit(path)
    get_tree().change_scene_to_file(path)


func set_paused(paused: bool) -> void:
    is_paused = paused
    get_tree().paused = paused
    game_paused.emit(paused)


func quit_game() -> void:
    get_tree().quit()
Minimal GameManager — C#
csharp
// autoloads/GameManager.cs
using Godot;

public partial class GameManager : Node
{
    [Signal]
    public delegate void SceneChangedEventHandler(string scenePath);

    [Signal]
    public delegate void GamePausedEventHandler(bool isPaused);

    public string CurrentLevel { get; private set; } = "";
    public bool IsPaused { get; private set; }

    public void ChangeScene(string path)
    {
        CurrentLevel = path;
        EmitSignal(SignalName.SceneChanged, path);
        GetTree().ChangeSceneToFile(path);
    }

    public void SetPaused(bool paused)
    {
        IsPaused = paused;
        GetTree().Paused = paused;
        EmitSignal(SignalName.GamePaused, paused);
    }

    public void QuitGame() => GetTree().Quit();
}
Minimal EventBus — GDScript
gdscript
# autoloads/event_bus.gd
extends Node

# Declare all cross-system signals here.
# Systems emit to EventBus; listeners connect to EventBus.

signal player_died
signal item_collected(item_id: String, quantity: int)
signal score_changed(new_score: int)
signal level_completed(level_id: String)

Nodes connect with:

gdscript
EventBus.player_died.connect(_on_player_died)
EventBus.player_died.emit()
Show full SKILL.md (264 more words)Show less

C# Project Setup

.csproj

When you enable C# support Godot generates a .csproj. Keep it minimal and set the target framework to net8.0:

xml
<Project Sdk="Godot.NET.Sdk/4.3.0">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <TargetFramework Condition=" '$(GodotTargetPlatform)' == 'android' ">net8.0</TargetFramework>
    <TargetFramework Condition=" '$(GodotTargetPlatform)' == 'ios' ">net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <RootNamespace>MyGame</RootNamespace>
  </PropertyGroup>
</Project>

Replace MyGame with your project name. The namespace must match across all C# scripts to avoid registration errors.

partial class Requirement

Every C# class that extends a Godot type must be declared partial. Godot's source generator adds the registration code in a companion partial file.

csharp
// Correct
public partial class Player : CharacterBody2D { }

// Wrong — will not register with Godot
public class Player : CharacterBody2D { }
Namespace Convention

Use a single root namespace for the project. Sub-namespaces are optional but keep them shallow:

csharp
namespace MyGame.Characters;   // OK
namespace MyGame.UI;           // OK
namespace MyGame.Systems.Inventory.Data.Containers;  // Too deep — flatten
Signal Declaration in C#

Signals must use the [Signal] attribute with a delegate ending in EventHandler:

csharp
[Signal]
public delegate void HealthChangedEventHandler(int newHealth, int maxHealth);

// Emit
EmitSignal(SignalName.HealthChanged, health, maxHealth);

// Connect
someNode.HealthChanged += OnHealthChanged;

// Disconnect
someNode.HealthChanged -= OnHealthChanged;

Project Setup Checklist

Use this checklist after scaffolding a new project to verify everything is in place.

  • Directory structure created (assets/, scenes/, scripts/ or co-located layout)
  • .gitignore created and includes .godot/, .mono/, bin/, obj/
  • .gitattributes created with LF normalization and binary asset rules
  • project.godot — viewport resolution set (1920x1080 or project target)
  • project.godot — stretch mode configured (canvas_items or viewport)
  • Input Map actions defined for all player inputs (no hard-coded key constants)
  • Autoloads registered: GameManager, EventBus, AudioManager, SaveManager
  • Autoload scripts created under autoloads/ (or scripts/autoloads/)
  • Autoloads are process mode Always if they must run while paused
  • For C# projects: .csproj targets net8.0, RootNamespace set, Nullable enabled
  • For C# projects: all node scripts use partial class
  • Initial commit on main branch before adding game content
  • The project's agent instructions file (CLAUDE.md, or AGENTS.md / GEMINI.md if that is what the repo maintains) contains a ## GodotPrompter section with the skill invocation rule (see godot-prompter:godot-brainstorming for content)
  • CI pipeline (optional but recommended): runs godot --headless --check-only on GDScript files

© jame581, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/godot-project-setup of jame581/GodotPrompter.

Open the folder on GitHubat commit 1e7d79d

Compare with similar skills

Godot Project Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Godot Project Setup compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Godot Project Setup this skilljame581/GodotPrompter799—~3.2kAutomated safety check: PassMIT
Godot Project Templatesthedivergentai/GD-Agentic-Skills816—~3.3kAutomated safety check: PassLGPL-3.0
Gm ScaffoldRandallLiuXin/GodotMaker550—~1.9kAutomated safety check: PassCustom licence
Godot Gdscript Patterns925236118/AlphaAgent10310 repos~5kAutomated safety check: PassMIT
2D Map and Scene Generator0x0funky/agent-sprite-forge4.4k—~2.9kAutomated safety check: PassMIT
Godot UI Integrationzimo-xiao-zheng/godot-ui-integration277—~1.5kAutomated safety check: PassMIT

Similar skills

  • Godot Project Templates

    thedivergentai/GD-Agentic-Skills

    Navigation skill for genre project scaffolds: pick platformer/RPG/FPS (or other genre) then load matching template scripts and route gameplay fill to godot-genre- skills.

    816 GitHub stars~3.3k tokensUpdated 1 mo ago
    Game DevelopmentAuto-check passed
  • Gm Scaffold

    RandallLiuXin/GodotMaker

    Scaffold a new Godot project: project.godot + addons + base directories + e2e/conftest.py + initial git commit.

    550 GitHub stars~1.9k tokensUpdated 22 days ago
    Game DevelopmentAuto-check passed
  • Godot Gdscript Patterns

    925236118/AlphaAgent

    Master Godot 4 GDScript patterns including signals, scenes, state machines, and optimization.

    103 GitHub starsUsed in 10 repos~5k tokens
    Game DevelopmentAuto-check passed
  • 2D Map and Scene Generator

    0x0funky/agent-sprite-forge

    Plans and builds 2D game maps and scenes, from tilemaps and parallax backgrounds to HD-2D plates, with collision checks, a playable HTML preview and Tiled, Godot or LDtk export.

    4.4k GitHub stars~2.9k tokensUpdated 3 days ago
    Game DevelopmentAuto-check passed
  • Godot UI Integration

    zimo-xiao-zheng/godot-ui-integration

    Build or revise Godot UI from an approved design, separated art, or a visual reference when scene structure, gameplay binding, and runtime visual verification all matter.

    277 GitHub stars~1.5k tokensUpdated 1 mo ago
    Game DevelopmentAuto-check passed
  • Godot Wechat Minigame Adapter

    godothub/godot-minigame

    Apply the bundled self-contained Godot WeChat Mini Game adapter kit to an official Godot checkout.

    187 GitHub stars~1.5k tokensUpdated 24 days ago
    Game DevelopmentAuto-check passed

More from jame581/GodotPrompter

All 58 skills in this repo
  • Godot 2D Essentials

    jame581/GodotPrompter

    Covers Godot 4.3+ 2D systems with GDScript and C# examples: canvas layers, draw order, TileMaps, parallax, lights and shadows, particles and custom drawing.

    799 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Godot 3D Essentials

    jame581/GodotPrompter

    Covers Godot 4.3+ 3D systems such as materials, lighting, shadows, environment, global illumination, fog, LOD, occlusion culling and decals, with GDScript first and C# second.

    799 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Godot Ability System

    jame581/GodotPrompter

    Builds a data-driven ability system in Godot 4 from Resources and a component node, with cooldowns, buffs, stat modifiers, gameplay tags and HUD binding.

    799 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Godot Addon Development

    jame581/GodotPrompter

    Covers Godot 4.3+ editor plugins: plugin folders, @tool scripts, the EditorPlugin lifecycle, custom inspectors, dock panels and gizmos, in GDScript and C#.

    799 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Godot AI Navigation

    jame581/GodotPrompter

    Covers pathfinding and enemy movement in Godot 4.3 and later: navigation regions, NavigationAgent nodes, steering, behavior trees and patrol routes.

    799 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Godot Animation System

    jame581/GodotPrompter

    Covers animation in Godot 4.3 and later: AnimationPlayer basics, AnimationTree blend trees and state machines, sprite animation, skeleton IK and code-driven motion.

    799 GitHub stars~3.8k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Godot Project Setup

What does Godot Project Setup do?

A skill your agent uses when creating a new Godot 4.x project — scaffolds recommended directory structure, project settings, autoloads, and .gitignore. Godot Project Setup is an agent skill from jame581/GodotPrompter.

When should I use Godot Project Setup?

Godot Project Setup fits situations like: creating a new Godot 4.x project — scaffolds recommended directory structure; project settings.

How do I install Godot Project Setup in Claude Code?

Run `npx skills add jame581/GodotPrompter --skill godot-project-setup -a claude-code`. Or copy the skill folder (skills/godot-project-setup in jame581/GodotPrompter) into .claude/skills/godot-project-setup in your project. Claude Code loads it when a task matches its description.

How do I install Godot Project Setup in Codex?

Run `npx skills add jame581/GodotPrompter --skill godot-project-setup -a codex`. Or copy the skill folder (skills/godot-project-setup in jame581/GodotPrompter) into .agents/skills/godot-project-setup in your project. Codex loads it when a task matches its description.

Can I use Godot Project Setup in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jame581/GodotPrompter --skill godot-project-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/godot-project-setup, .gemini/skills/godot-project-setup, .github/skills/godot-project-setup and .opencode/skills/godot-project-setup in your project.

What does Godot Project Setup need to run?

SKILL.md names no scripts, command-line tools or credentials: Godot Project Setup is instructions for the agent only.

Does Godot Project Setup access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Godot Project Setup safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Godot Project Setup use?

Godot Project Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Godot Project Setup use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Godot Project Setup?

Skills that share tags, products or a category with Godot Project Setup: Godot Project Templates (thedivergentai/GD-Agentic-Skills, 816 stars), Gm Scaffold (RandallLiuXin/GodotMaker, 550 stars), Godot Gdscript Patterns (925236118/AlphaAgent, 103 stars) and 2D Map and Scene Generator (0x0funky/agent-sprite-forge, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Godot Project Setup?

jame581 (a GitHub user) maintains it in jame581/GodotPrompter, which has 799 GitHub stars. The repository holds 58 skills in this directory. The repository was last updated on October 8, 2026.

Source: jame581/GodotPrompter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.