Help us improve
Share bugs, ideas, or general feedback.
From summer
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.
npx claudepluginhub summerengine/summer-engine-agent --plugin summerHow this skill is triggered — by the user, by Claude, or both
Slash command
/summer:export-and-ship**/*.gd**/*.tscnproject.godotexport_presets.cfg**/*.png**/*.svg**/*.icns**/*.icoThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Shipping is a checklist, not a creative act. This skill walks the platform-specific asset and config requirements, runs a pre-flight check against the project, and produces a release build only after every blocker is green. Better to fail at this step than fail submission.
Configures Godot export presets for distributing games across platforms, handling GDScript/C# builds, and setting up CI/CD with GitHub Actions.
Platform submission processes, certification requirements, and distribution across Steam, Epic, console, and mobile platforms.
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.
Share bugs, ideas, or general feedback.
Shipping is a checklist, not a creative act. This skill walks the platform-specific asset and config requirements, runs a pre-flight check against the project, and produces a release build only after every blocker is green. Better to fail at this step than fail submission.
Core principle: every platform has a list. Read the list, satisfy the list, ship.
Open with the question. Multi-select.
Where to? Pick all that apply: Steam / itch.io / web (HTML5) / iOS App Store / Google Play / macOS DMG / Windows installer / other.
Each destination has a different list. Multiple destinations = multiple lists. Don't shortcut — the iOS list does not satisfy the Steam list.
Always do this first, regardless of destination.
Preferred (Summer MCP):
summer_get_diagnostics # any errors? if yes, abort.
summer_get_console # any "import failed" warnings?
summer_get_scene_tree # is the main scene set?
Fallback (no MCP): ask the user to confirm via the Godot editor: Project → Project Settings → Application → Run → Main Scene is set; no errors in Output panel.
| Check | How | Blocker because |
|---|---|---|
| Main scene is set | project.godot has application/run/main_scene | Game launches to nothing without it |
| No script errors | summer_get_script_errors clean | Won't compile in export |
No print() debug spam in hot loops | Grep "print(" -- "**/*.gd" | Spammy console for users |
| No hardcoded debug paths | Grep "user://debug" or "/Users/" or "C:\\\\" | Breaks on user machines |
.gitignore excludes .godot/, .import/, *.tmp | Read .gitignore | Build artifacts in repo |
| LICENSE file present | Read LICENSE at repo root | Steam + itch require licensing clarity |
attribution.md for community assets | Read attribution.md or equivalent | CC-BY assets need credit; missing = takedown risk |
| Version number set | application/config/version in project.godot | Required by Steam, useful everywhere |
| Game name set | application/config/name | Window title, build artifact name |
If any check fails, list them in one message and ask:
Pre-flight failed on N items: . Fix these before exporting? I can take them one by one.
Walk the list for each chosen destination. Each is non-negotiable.
| Asset | Resolution | Format | Path / use |
|---|---|---|---|
| Game icon | 256×256 | PNG, transparent | Used in Steam library, taskbar |
| Library capsule | 600×900 | PNG | "Box art" in library grid |
| Library hero | 3840×1240 | PNG | Wide banner at top of game's library page |
| Library logo | 1280×720, transparent BG | PNG | Title overlay on hero |
| Header capsule | 460×215 | PNG | Store search results, friend activity |
| Main capsule | 616×353 | PNG | Front-page features |
| Small capsule | 231×87 | PNG | Sidebar |
| Page background | 1438×810 | JPG | Behind store page content |
| Screenshots | ≥ 1280×720, 16:9 | PNG/JPG | At least 5 |
| Trailer | 1080p, MP4, ≤ 2 min | MP4 | Required for Coming Soon → Released |
| Steam page text | English required + any localized | Markdown / plaintext | Short description (300 chars), full description, controls |
Build config for Steam:
Embed PCK = true for single-EXE distribution.https://godotsteam.com) is the standard. Add the GDExtension before exporting.Lower bar than Steam. itch is forgiving.
| Asset | Resolution | Required? |
|---|---|---|
| Cover image | 630×500 | Yes |
| Screenshots | Any 16:9 | At least 3 |
| Game title + tagline | text | Yes |
| Description | Markdown | Yes |
| Build files | ZIP per platform OR butler upload | Yes |
Build config:
butler push (itch's CLI) for atomic versioning and patches.Browser export. Constraints:
cross-origin-isolated headers (most hosts don't set them).Build config:
.html + .wasm + .pck + .js.Known traps:
user:// (maps to IndexedDB on web). Test that saves persist across reload.| Asset | Resolution / Format |
|---|---|
| App icon | 1024×1024 PNG (Apple generates the rest) |
| Launch screen | Storyboard (Godot generates) |
| Screenshots | 6.5" iPhone: 1242×2688 / 2688×1242 (≥ 3); 12.9" iPad if iPad-eligible |
| App Store description | text per locale, ≤ 4000 chars |
| Keywords | ≤ 100 chars, comma-separated |
| Support URL | required |
| Privacy policy URL | required (any data collection) |
Build config:
com.<your-org>.<game-name>. Must match Apple Developer portal.| Asset | Resolution / Format |
|---|---|
| App icon | 512×512 PNG (32-bit, transparent) |
| Feature graphic | 1024×500 PNG |
| Phone screenshots | 16:9 or 9:16, ≥ 1080p, ≥ 2 |
| Tablet screenshots | optional but boosts visibility |
| App description | text per locale, ≤ 4000 chars |
| Short description | ≤ 80 chars |
Build config:
create-dmg CLI or hdiutil.Before producing builds, verify export_presets.cfg for each target:
Read export_presets.cfg
For each preset:
| Field | Production value | Why |
|---|---|---|
binary_format/embed_pck | true | Single EXE per platform |
debug | false | Debug builds leak source paths and run slower |
texture_format/etc2_astc | true for mobile | Smaller texture compression |
application/short_version | matches application/config/version | Steam reads it |
script/encryption_key | set if you don't want PCK extracted | Optional but recommended for paid games |
application/icon | path to your .ico / .icns / .png | Otherwise generic Godot icon ships |
Pre-flight: clean. Targets confirmed: Steam (Win + Mac + Linux) + itch (same builds) + web. Required assets: I see all icons + 5 screenshots in
marketing/. Missing: trailer (Steam blocks Coming Soon → Released without one). May I produce the builds now and flag the trailer as a follow-up?
Godot's CLI export is the standard scripted path:
godot --headless --export-release "Windows Desktop" build/win/MyGame.exe
godot --headless --export-release "Linux" build/linux/MyGame.x86_64
godot --headless --export-release "macOS" build/mac/MyGame.app
godot --headless --export-release "Web" build/web/index.html
godot --headless --export-release "Android" build/android/MyGame.aab
godot --headless --export-release "iOS" build/ios/MyGame.xcodeproj
For Summer Engine: replace godot with summer (or the local binary path). Same flags.
If the user is on a CI system (GitHub Actions etc), this is the right place to point them at a cross-compile workflow — Godot can export Windows + Linux from a Linux runner.
For each build:
Per platform, point the user at the correct upload path:
steamcmd + Steam Pipe (builder_app_xxx.vdf). Set up depots first in Steamworks.butler push <path> <user>/<game>:<channel> (e.g. butler push build/win <user>/mygame:windows).Skill does NOT execute these uploads itself. It produces the builds and points at the right command.
Use this as a one-shot grep before any export:
| Check | Pass condition |
|---|---|
| Main scene set | project.godot has application/run/main_scene = "res://..." |
| No script errors | summer_get_script_errors empty |
No debug print() spam | Grep returns < 20 hits across project (or each is intentional) |
| No hardcoded user paths | Grep for /Users/, C:\\, /home/ returns 0 hits |
| Version number set | application/config/version = "1.0.0" (or higher) |
| Game name set | application/config/name = "<actual name>" |
| Icon assets present | Per-platform icon files exist at the paths referenced in export_presets.cfg |
| LICENSE file | Exists at repo root |
| Attribution file | Exists if any community assets used |
Export preset debug = false | For all release presets |
Export preset embed_pck = true | For all desktop release presets |
.gitignore excludes build artifacts | build/, .godot/, .import/, *.tmp listed |
| Screenshots ≥ minimum count for platform | 3 for itch, 5 for Steam, 2 for Play |
No leftover dev assets in res:// | No _test_, _old_, _temp_ files in the export paths |
| Don't | Do | Why |
|---|---|---|
| Ship debug builds to Steam | debug = false in release export preset | Slower, leaks paths, larger |
| Use 256×256 icon for iOS | 1024×1024 (Apple downscales) | iOS rejects undersized icons |
| Skip Steam trailer | Record at least 30 sec gameplay before launch | Steam blocks the release without it |
| Ship APK to Play Store | Build AAB | Play requires AAB since 2021 |
| Skip code-signing on macOS / Windows | Get a cert; without it, users can't run the build | Gatekeeper / SmartScreen blocks unsigned binaries |
| Skip notarization on macOS | Notarize after signing | Quarantined apps can't run on most modern macOS |
Ship without LICENSE | Add MIT or commercial license to repo root | Steam + itch + most platforms require it |
| Forget attribution for CC-BY assets | attribution.md listing each asset's source + license | Otherwise = takedown notice + ban |
| Auto-upload via skill | Produce builds; user uploads | Uploads have side effects (versioning, refunds, metadata changes) |
| Push 1.0.0 first | Push 0.9.0 internal first, then 1.0.0 to public | Internal testing catches the embarrassing-launch-day bugs |
| Same build for all stores | Per-store metadata + separate upload | Steam wants .exe, Play wants .aab, web wants .html |
This skill produces release artifacts. Always ask before each build is invoked. Group platforms — "I'm about to build Windows + Mac + Linux release configs into build/. OK?". See references/collaborative-protocol.md.
No template — this is a workflow. Each project's export config and store assets are project-specific. For the Steam-specific GodotSteam GDExtension setup, see deployment/steam-uploader/SKILL.md (when shipped).
references/mcp-tools-reference.md — full MCP tool listreferences/godot-version.md — Godot 4.5 export-template versioningreferences/collaborative-protocol.md — "May I write" patterndeployment/export-presets/SKILL.md — preset config deep divedeployment/web-html5-export/SKILL.md — HTML5-specific trapsdeployment/steam-uploader/SKILL.md — steamcmd + GodotSteam (when shipped)deployment/itch-uploader/SKILL.md — butler workflow (when shipped)deployment/mobile-export/SKILL.md — iOS / Android specifics (when shipped)asset-pipeline/attribution-and-licensing/SKILL.md — community asset attributionperformance/tune-performance/SKILL.md — pre-ship performance pass