
godot-project-foundations
Expert blueprint for Godot 4 project organization (feature-based folders, naming conventions, version control). Enforces snakecase files, PascalCase nodes, %SceneUniqueNames, and .gitignore best practices. Use when starting new projects or refactoring structure. Keywords project organization, naming conventions, snakecase, PascalCase, feature-based, .gitignore, .gdignore.
- Installs
- 512
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/thedivergentai/game-dev-agentic-skills --skill godot-project-foundations- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads godot-project-foundations automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Project Foundations
Feature-based organization, consistent naming, and version control hygiene define professional Godot projects.
Available Scripts
Core Scaffolding (Stateful / Persistent)
- project_bootstrapper.gd: Auto-generates feature folders and .gitignore.
- runtime_configurator.gd: Applies high-performance profiles and saves
override.cfg. - managed_autoload.gd: Advanced Singleton pattern with
RefCounteddelegation. - global_event_bus.gd: MANDATORY for decoupled global signals — do not re-inline EventBus samples in chat.
- node_pooling_system.gd: Thread-safe Object Pool for high-frequency scene instantiation.
- async_resource_loader.gd: MANDATORY for threaded scene transitions — do not re-inline SceneManager samples.
Runtime Utilities (Stateless / Lightweight)
- base_data_resource.gd: Reactive Resource foundation using
emit_changed(). - advanced_telemetry_logger.gd: Custom OS-level
Loggerfor crash reporting. - threaded_task_worker.gd: Robust
WorkerThreadPoolimplementation. - action_buffer_input.gd: Foundational
_unhandled_inputbuffer. - build_metadata_provider.gd: Native extraction of version and build metadata.
- feature_scaffolder.gd / scene_naming_validator.gd: Feature folder + naming gates.
Do NOT Load
dependency_auditor.gdunless troubleshooting loading errors.
NEVER Do (Expert Anti-Patterns)
Global Architecture
- NEVER group by file type —
/scripts,/spritesfolders. Nightmare maintainability. Use feature-based:/player,/ui. - NEVER mix snake_case and PascalCase in files — Standard: snake_case for files, PascalCase for nodes.
- NEVER use hardcoded get_node() paths — Brittle on reparenting. Use
%SceneUniqueNamesfor stable references. - NEVER use monolithic Autoloads — Avoid managers that hold visual node references; keep singletons focused on pure data or RefCounted delegation.
Resource Management
- NEVER forget .gitignore — Committing
.godot/folder = 100MB+ bloat + conflicts. - NEVER skip .gdignore for raw assets — Design source files (
.psd,.blend) in root will be imported unless ignored. - NEVER modify globally shared Resources directly — Strictly call
duplicate(true)for unique instances with independent state.
Performance & Threading
- NEVER block the main thread with
load()— Strictly useResourceLoader.load_threaded_request()for async scene transitions. - NEVER modify the SceneTree from a background thread — Strictly use
call_deferred()for thread-to-main-thread synchronization. - NEVER skip Mutex locking during pooled access — Strictly ensure thread-safety when using a shared
WorkerThreadPoolor Object Pool. - NEVER use
_process()for precise input — Tied to visual framerate. Strictly use_unhandled_input()to capture exact, frame-independent events.
Ownership decision tree
| Need | Prefer | Avoid |
|---|---|---|
| Everything for one feature (player, HUD panel) | Feature folder scene module | Type folders (/scripts, /sprites) |
| Cross-scene service with lifecycle (save, audio bus) | Autoload via managed_autoload.gd | Stuffing UI nodes into singletons |
| Many publishers/subscribers, no ownership | EventBus → MANDATORY global_event_bus.gd | Autoload that imports half the game |
| One scene's private wiring | Scene-local node + %UniqueName | Global bus for parent→child calls |
1. Naming Conventions
- Files & Folders:
snake_case(C# exception: PascalCase class-match). - Node Names:
PascalCase. - Exports:
snake_case; Inspector Title-Cases them. - Private: leading
_on members and virtuals (_ready,_process). - Signals: past-tense
snake_case(health_changed). - Unique Names:
%SceneUniqueNamesover brittleget_node()paths.
2. Feature-Based Organization
Group by feature (/entities/player, /ui/main_menu), not by file type. Keep /common, /levels, /addons.
3. Version Control
Godot-aware .gitignore (ignore .godot/) + .gdignore on raw design sources.
Workflow: Scaffolding a New Project
- Ensure
project.godotexists → runproject_bootstrapper.gd/ createentities/,ui/,levels/,common/. - Setup Git
.gitignore+ document feature-based layout inREADME.md. - Register lean Autoloads only after the ownership decision tree says so.
Typed GDScript strictness (foundations-only)
Full typed-GDScript migration lives in godot-gdscript-mastery.
For new foundations projects: Project Settings → Debug → GDScript → Untyped Declaration = Warn or Error.
Expert Foundation Architectures
Scene transitions
MANDATORY load async_resource_loader.gd — threaded ResourceLoader with progress. Do not paste SceneManager samples here.
Global Event Bus
MANDATORY load global_event_bus.gd for typed global signals. Do not paste EventBus samples here.
Project Metadata
Use build_metadata_provider.gd / base_data_resource.gd for version/build flags instead of ad-hoc JSON.
Deep dive (load on demand)
Full naming table, typed-GDScript migration, EventBus/SceneManager/metadata samples — references/foundations-deep.md.
Reference
Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.
Official Documentation
- Project organization — Feature-based folders,
.gdignore, and VCS hygiene that keep imports and repos maintainable. - Scene organization — Ownership boundaries and why
%SceneUniqueNamesbeat brittleget_node()paths. - GDScript style guide — Canonical snake_case files / PascalCase nodes / past-tense signals used by this skill’s validators.
- GDScript warning system — Enforce typed declarations (
Untyped Declaration→ Warn/Error) when migrating foundations to GDScript 2.0. - Singletons (Autoload) — How to register lean global services that survive scene changes.
- Autoloads versus regular nodes — When a Managed Autoload / EventBus is justified vs scene-local ownership.
- Background loading —
ResourceLoader.load_threaded_*patterns for non-blocking scene transitions. - Resources — Shared vs duplicated Resource instances and why global mutation breaks feature modules.
- Nodes and scene instances — Instantiation, pooling, and scene-as-module boundaries for feature folders.
- Using SceneTree — Tree lifetime, deferred calls, and thread→main synchronization rules.
- File paths in Godot projects —
res:///user://conventions for scaffolded folders and savedoverride.cfg/ metadata. - ProjectSettings — Runtime profiles, version strings, and settings keys used by configurators and build metadata.
Related Skills
Prerequisites
- godot-gdscript-mastery — Typed GDScript, style, and warning-system fluency before enforcing naming and scaffold conventions.
Complements
- godot-version-migration — When opening or scaffolding a project on an older engine version, hop to the library target before enforcing current foundations.
- godot-autoload-architecture — Boot order and ownership rules for Managed Autoload / EventBus singletons registered from a clean project root.
- godot-composition — Feature folders become composable scene modules; parents wire children instead of growing monolithic managers.
- godot-resource-data-patterns — Extends
BaseDataResource-style reactive Resources into full data-driven catalogs without shared mutation. - godot-signal-architecture — Typed EventBus signals and connect lifetime once Autoloads and scene ownership are in place.
- godot-scene-management — Threaded loaders and scene swaps build on this skill’s async ResourceLoader boilerplate.
- godot-input-handling — Deepens
_unhandled_inputbuffering into full action maps and device routing.
Downstream / consumers
- godot-export-builds — Export presets and feature tags assume a clean folder layout,
.gitignore, and build metadata hooks. - godot-testing-patterns — Feature-based scenes and deterministic Autoloads make unit/integration harnesses easier to mount.
- godot-debugging-profiling — Custom Logger telemetry and dependency audits feed editor-time diagnostics once structure is stable.
- godot-performance-optimization — Node pools, WorkerThreadPool, and runtime profiles escalate here when foundations hit CPU/memory ceilings.
Master
- godot-master — Library router and mirrored module entry; open when discovering which Domain Skill owns a cross-cutting architecture concern.
FAQ
What does the godot-project-foundations skill do?
Expert blueprint for Godot 4 project organization (feature-based folders, naming conventions, version control). Enforces snakecase files, PascalCase nodes, %SceneUniqueNames, and .gitignore best practices. Use when starting new projects or refactoring structure. Keywords project organization, naming conventions, snakecase, PascalCase, feature-based, .gitignore, .gdignore.
How do I install godot-project-foundations?
Run npx skills add https://github.com/thedivergentai/game-dev-agentic-skills --skill godot-project-foundations in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/godot-project-foundations/ (personal) or .claude/skills/godot-project-foundations/ (project).
Which AI agents can use godot-project-foundations?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is godot-project-foundations safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains godot-project-foundations?
It is published by thedivergentai in thedivergentai/game-dev-agentic-skills. It has 512 recorded installs.
More from thedivergentai/game-dev-agentic-skills
godot-master
thedivergentai/game-dev-agentic-skills
Consolidated expert library for professional Godot 4.7+ game and application development. Orchestrates 92 Domain Skills through architectural workflows, anti-pattern catalogs, performance budgets, and Server API patterns. Use when: (1) starting a new Godot project, (2) designing game or app architecture, (3) building entity/component systems, (4) debugging performance or physics issues, (5) choosing between 2D/3D approaches, (6) implementing multiplayer, (7) optimizing draw calls or script time, (8) porting between platforms, (9) migrating from 4.6 to 4.7. Primary entry point for ALL Godot development tasks. Keywords: Godot 4.7, AreaLight3D, HDR, Asset Store, godot-master.
godot-shaders-basics
thedivergentai/game-dev-agentic-skills
Expert Godot shader patterns for batch-safe hitflash, alpha-scissor foliage/dissolve, screenspace postFX, depth reconstruction, triplanar, and instance uniforms — not first-shader tutorials. Trigger on draw-call batching breaks, discard vs depth-prepass, foliage shadows, post-process quads, or world-position FX. Keywords: instance uniform, ALPHASCISSOR, hintscreentexture, hintdepthtexture, global uniform, sampler2DArray, canvasitem, spatial, post-processing.
godot-2d-animation
thedivergentai/game-dev-agentic-skills
Expert patterns for 2D animation in Godot using AnimatedSprite2D and skeletal cutout rigs. Use when implementing sprite frame animations, procedural animation (squash/stretch), cutout bone hierarchies, or frame-perfect timing systems. Trigger keywords: AnimatedSprite2D, SpriteFrames, animationfinished, animationlooped, framechanged, frameprogress, setframeandprogress, cutout animation, skeletal 2D, Bone2D, procedural animation, animation state machine, advance(0).
godot-ui-theming
thedivergentai/game-dev-agentic-skills
Expert blueprint for UI themes using Theme resources, StyleBoxes, custom fonts, and theme overrides for consistent visual styling. Covers StyleBoxFlat/Texture, theme inheritance, dynamic theme switching, and font variations. Use when implementing consistent UI styling OR supporting multiple themes. Keywords Theme, StyleBox, StyleBoxFlat, addthemeoverride, font, theme inheritance, dark mode.
godot-gdscript-mastery
thedivergentai/game-dev-agentic-skills
Expert GDScript landmine guidance: static typing opcodes, signal-up/call-down, %UniqueName/@onready lifecycle, Callable bind/unbind, await sequences, typed collections, and safe Dictionary iteration. Use for code review, refactoring hot paths, or project standards. Trigger keywords: statictyping, signalarchitecture, uniquenodes, @onready, classname, signalupcalldown, Callable.bind, typedcollections, awaitsequence.
godot-particles
thedivergentai/game-dev-agentic-skills
Expert blueprint for GPU particle systems (explosions, magic effects, weather, trails) using GPUParticles2D/3D, ParticleProcessMaterial, gradients, sub-emitters, and custom shaders. Use when creating VFX, environmental effects, or visual feedback. Keywords GPUParticles2D, ParticleProcessMaterial, emissionshape, colorramp, subemitter, oneshot.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.