From genres
Exports Godot 4.x projects for distribution: installs export templates, configures presets, runs headless CLI exports for CI, and handles web/dedicated-server builds.
How this skill is triggered — by the user, by Claude, or both
Slash command
/genres:godot-exportThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn a project into runnable platform builds via export presets and the command line, and
Turn a project into runnable platform builds via export presets and the command line, and handle the web/dedicated-server gotchas. Targets Godot 4.3+.
When not to use: storefront publishing flows → steam-publish/itch-publish; the
networking code of a server → godot-multiplayer (this skill covers building it headless).
.tpz offline. Versions must
match the editor exactly.export_presets.cfg.--export-release "<preset name>" <output path>.res://
read-only; write to user://.# Preset name must match exactly what's in Project > Export (quote it).
# Run from the project directory (where project.godot lives).
godot --headless --export-release "Windows Desktop" build/windows/game.exe
godot --headless --export-release "Linux/X11" build/linux/game.x86_64
godot --headless --export-release "Web" build/web/index.html
# Debug build (includes debug symbols / remote debug):
godot --headless --export-debug "Windows Desktop" build/windows/game_debug.exe
# Export only the data pack (no executable):
godot --headless --export-pack "Linux/X11" build/game.pck
# No window/GPU — for a server build or automated runs.
godot --headless --path . res://server_main.tscn
# Quit after N main-loop iterations (frames, NOT seconds) — handy for a headless smoke test:
godot --headless --path . --quit-after 600
func _ready() -> void:
if OS.has_feature("dedicated_server") or DisplayServer.get_name() == "headless":
_start_server_only() # skip rendering/UI on a headless server
if OS.has_feature("web"):
_apply_web_tweaks()
# Custom feature tags (added per preset) are also queryable:
# if OS.has_feature("demo"): limit_content()
# res:// is READ-ONLY in exported games. Always write to user://.
func save_path() -> String:
return "user://savegame.tres" # resolves to the OS app-data dir
func _ready() -> void:
print(OS.get_user_data_dir()) # where user:// actually lives
--export-release "Windows" fails if the preset is
named "Windows Desktop". Names are case- and space-sensitive; quote them.Cross-Origin-Opener-Policy: same-origin and
Cross-Origin-Embedder-Policy: require-corp (cross-origin isolation for
SharedArrayBuffer). Must be served over HTTP(S), not opened as a file://. itch.io has
a "SharedArrayBuffer support" toggle for this.res:// at runtime fails in exports (read-only, packed). Use user://..json, .txt)
are not auto-included — add them via the preset's Resources > Filters to export
non-resource files (e.g. *.json).INTERNET permission for networked games.--export-debug enables remote debugging and debug checks; ship
--export-release.export_presets.cfg structure, all useful CLI flags, custom feature tags,
PCK/expansion patching, encryption, and per-platform setup (Android keystore, macOS
signing, web headers), read references/presets-and-cli.md.godot-multiplayer — the dedicated-server code you export headless.steam-publish / itch-publish — getting the build to players.prototype-fast / game-jam — quick web/desktop builds for sharing.npx claudepluginhub gamedev-skills/awesome-gamedev-agent-skills --plugin workflowsHandles Godot game exporting and distribution: export presets, platform settings, and CI/CD with GitHub Actions. Activated when users discuss exporting or building for release.
Standardizes Godot export, CI, and release packaging with reproducible presets and platform-aware validation. Useful when export presets are fragile or platform packaging issues recur.
Validates icons, store banners, screenshots, build config, and runs a pre-flight checklist before producing a release build for Steam, itch.io, web, iOS, or Android.