Claude
Skills
Sign in
Back

godot-builder

Included with Lifetime
$97 forever

Expert-level toolkit for modular Godot 4.x CLI automation and headless build orchestration. Use this skill when you need to: (1) Build complex scene trees or UI layouts programmatically, (2) Automate expert 3D asset pipelines (glTF -> Collision), (3) Optimize procedural geometry headlessly (CSG -> Static Mesh), or (4) Engineer production-grade CI/CD pipelines with engine module stripping and delta patching.

Designscripts

What this skill does


# Godot Builder Skill

The `godot-builder` skill provides an expert-grade foundation for programmatic game development and headless automation using the Godot 4.6.1-stable CLI.

## Expert Automation Mindset

- **Headless Isolation via XDG**: When running multiple concurrent Godot instances, always override `XDG_DATA_HOME` and `XDG_CONFIG_HOME` to prevent cache corruption between instances.
- **Cache Invalidation (Force Import)**: Programmatically delete the `.godot/imported/` directory to force the engine to re-evaluate modified global import settings.
- **Explicit Ownership**: Scene nodes MUST have their `owner` property set to the scene root, or they will be discarded during serialization.
- **Latency-Sensitive Multi-threading**: GPU interactions (textures, image data) must stay on the main thread to avoid pipeline stalls and deadlocks.

## Hardened Anti-Patterns (NEVER List)

- **NEVER** save runtime-generated UIDs headlessly; `ResourceSaver.save()` does NOT serialize UIDs in headless mode. Invoke `godot -e --headless --import` as a post-process.
- **NEVER** use `Resource.duplicate(true)` in Godot 4.4+; use `duplicate_deep(Resource.DEEP_DUPLICATE_ALL)` to prevent procedural state-bleed.
- **NEVER** hardcode `.tscn` or `.tres` extensions; always load via `uid://` or without extensions to avoid failures in exported binary builds.
- **NEVER** execute GPU-bound calls on secondary threads. Use `RenderingServer.call_on_render_thread()`.
- **NEVER** enable the Shader Baker for Dedicated Server builds; the headless backend ignores it.
- **NEVER** call `ResourceUID.set_id()` without calling `has_id()` first; it causes a fatal CLI crash.
- **NEVER** skip `RenderingServer.canvas_item_reset_physics_interpolation()` when programmatically moving low-level CanvasItems on their first frame; failure causes visual desync between rendering and physics systems.

## Expert Automation Workflows

### Workflow #1: The Hardened 3D Asset Pipeline
**Purpose**: Automates the ingestion of raw 3D assets into production-ready scenes with accurate physics collisions.
- **Sequence**: `gltf_processor.py` -> `collision_generator.py` -> `save_scene.py`.
- **Expert Defense**: Sets explicit `owner` for every node. Forces a final headless import to fix the missing UID serialization.

### Workflow #2: Procedural Level Optimization & 4.4+ Scaling
**Purpose**: Generates optimized procedural level chunks without shared resource state corruption between instances.
- **Sequence**: `csg_optimizer.py` -> `duplicate_deep(ALL)` -> `navmesh_baker.py`.
- **Expert Defense**: Uses `duplicate_deep` to isolate materials/resources. Bakes CSG to static geometry before triggering NavMesh pathfinding.

### Workflow #3: Production CI/CD & Force-Import Validation
**Purpose**: Validates cross-platform builds and ensures global project settings (VRAM compression) are strictly applied.
- **Sequence**: `rm -rf .godot/imported` -> `test_runner.py` -> `profile_generator.py` -> `ci_exporter.py`.
- **Expert Defense**: Forces full re-import to validate asset compression. Isolates CI runs via XDG variables. Injects secure keystore paths from environment variables.

---

## Automation & CI/CD Pipelines (Godot 4.6)

Professional Godot building requires a "Zero-Touch" philosophy for assets and binary exports.

### 1. Programmatic Asset Re-import
- **NEVER** manually select 500 textures to change their compression.
- Use `ConfigFile` to mutate `.import` files and `EditorFileSystem.reimport_files()` to trigger a batch update on the main thread safely.

### 2. Orphan Asset Detection (Slop Scan)
- **NEVER** trust `res://` is clean. Over time, deleted scenes leave behind orphaned textures and sounds that bloat the final build.
- Use `ResourceLoader.get_dependencies()` to recursively trace exactly which assets are linked to your "Main Scene" and flag anything else as slop.

### 3. Headless CI/CD Context
- Use `--headless --script` for versioning tasks (mutating `export_presets.cfg`) before running the final `--export-release`.
- **Tip**: Always call `quit()` at the end of a headless script, or your CI runner will hang indefinitely.

---

## Full Modular Skill Index (25 Scripts)

### Project & Process Management
1. **launch_editor.py**: Opens the Godot visual editor for the project.
2. **run_project.py**: Launches the game project in debug or release mode.
3. **get_debug_output.py**: Captures and redirects engine logs to the terminal.
4. **stop_project.py**: Safely terminates a running Godot instance via its PID.
5. **get_godot_version.py**: Retrieves the specific engine version and build info.
6. **list_projects.py**: Recursively scans directories to identify Godot project roots.
7. **get_project_info.py**: Parses `project.godot` to retrieve metadata (display, features).
8. **ci_exporter.py**: Orchestrates multi-platform release exports headlessly.
9. **ci_export_prepper.gd**: Headless versioning script for `export_presets.cfg`.
10. **profile_generator.py**: Generates feature profiles for module-stripping optimization.

### Scene & Dynamic Building
11. **create_scene.py**: Programmatically creates new `.tscn` resource files.
12. **add_node.py**: Instantiates and appends nodes to an existing scene tree.
13. **load_sprite.py**: Dynamically assigns and configures textures for Sprite2D nodes.
14. **save_scene.py**: Safely packs and persists the current node tree to disk.
15. **gltf_processor.py**: Headlessly converts raw `.glb/.gltf` assets into Godot Scenes.
16. **csg_optimizer.py**: Bakes procedural CSG boolean operations into static meshes.
17. **tilemap_generator.py**: Procedurally builds TileMapLayer grids from JSON data.
18. **ui_assembler.py**: Constructs complex GUI layouts from standardized JSON structures.
19. **navmesh_baker.py**: Executes asynchronous headless NavMesh pathfinding baking.
20. **collision_generator.py**: Generates `ConcavePolygonShape3D` physics from mesh data.
21. **orphan_asset_scanner.gd**: Recursive dependency tracer for identifying unused resources.

### Automation & Utilities
22. **get_uid.py**: Retrieves the `uid://` identifier for a specific resource path.
23. **update_project_uids.py**: Re-scans and synchronizes all project resource UIDs.
24. **config_compiler.py**: Compiles JSON/CSV data into optimized `.cfg` config files.
25. **import_automator.py**: Programmatically configures import settings for directory batches.
26. **asset_reimport_utility.gd**: Expert batch re-importer for enforcing project-wide settings.
27. **test_runner.py**: Executes headless unit and integration tests (GUT/doctest).
28. **export_mesh_library.py**: Converts 3D scenes into `.meshlib` resources for GridMaps.

Related in Design