Expert blueprint for console platforms (PlayStation, Xbox, Nintendo Switch) covering controller-first UI, certification requirements (TRCs/TCRs), platform services (achievements, cloud saves), and performance compliance. Use when targeting console releases or implementing gamepad-only interfaces. Keywords console, PlayStation, Xbox, Switch, TRC, TCR, certification, controller, gamepad, achievements.
npx skills add https://github.com/thedivergentai/GD-Agentic-Skills --skill godot-platform-console
Controller-first design, certification compliance, and locked frame rates define console development.
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN).NOTIFICATION_APPLICATION_FOCUS_OUT and force a pause.Engine.max_fps and enable VSync.controller_prompt_mapper.gd), not "Press A".Input.get_connected_joypads().get_vector() / get_action_strength().Input.start_joy_vibration() + accessibility toggle.DisplayServer.window_set_mode() is ignored/fails.ui_accept, ui_cancel, custom actions).NOTIFICATION_WM_CLOSE_REQUEST for termination — Consoles suspend; handle focus/suspend paths.Input.flush_buffered_events() before critical checks.== / != on analog trigger axes — Use is_equal_approx().queue_free() and break cycles.res:// at runtime — Use user:// only..tmp then rename.InputEvent.DEVICE_ID_* constants — never assume device 0 is mouse/keyboard.> MANDATORY: Read the appropriate script before implementing the corresponding pattern.
Expert TRC/TCR compliance (focus loss, controller disconnects).
Dynamic Resolution Scaling and FSR 2.2 management for console performance.
Direct RenderingServer/PhysicsServer bypass for high-frequency objects.
Atomic, corruption-resistant threaded save system.
GUID-based button prompt detection (PlayStation/Xbox/Switch).
Strict RAM monitoring for platform-specific hardware budgets.
Native OS dialog and virtual keyboard abstraction.
Asset pre-fetching using WorkerThreadPool to avoid level-load stutters.
Achievement/Trophy caching with offline persistence.
Hardware-aware hardware initialization and rendering overrides.
Run this checklist in order for a console-ready vertical slice. Do NOT Load optional scripts unless the row below says optional.
| Step | MANDATORY script | Do NOT Load (unless needed) |
| :--- | :--- | :--- |
| 1. Boot | console_boot_config.gd | server_side_projectile.gd — RID bypass, not cert |
| 2. Focus / disconnect | certification_manager.gd | — |
| 3. Save atomicity | async_save_manager.gd | — |
| 4. FPS / scaler / RAM | performance_scaler_fsr.gd + memory_budget_guard.gd | Switch: set ram_limit_mb ≈ 3072 (retail) / warn at 3584; PS/Xbox: 4096–5120 per SKU — see script @export |
| 5. Prompts | controller_prompt_mapper.gd | — |
Optional only: achievement_offline_queue.gd, platform_dialog_invoker.gd, background_data_prefetcher.gd. Do NOT Load these during steps 1–5 unless achievements, system dialogs, or prefetch are in scope.
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("ui_accept"):
on_confirm()
elif event.is_action_pressed("ui_cancel"):
on_cancel()
# Prompts: MANDATORY controller_prompt_mapper.gd for face-button glyphs
| Symptom | Fix script | Doc |
| :--- | :--- | :--- |
| Mouse pointer visible in game UI | Hide via Input Map flow + Input.MOUSE_MODE_HIDDEN in boot | Custom mouse cursor |
| Game runs when dashboard/home pressed | certification_manager.gd focus-out pause | Handling quit requests |
| "Press A" hardcoded on Switch | controller_prompt_mapper.gd GUID glyphs | Controllers, gamepads, and joysticks |
| Save corruption on power loss | async_save_manager.gd .tmp rename | Saving games |
| Frame time spikes / TRC perf fail | performance_scaler_fsr.gd + RAM guard | Resolution scaling |
Prefer platform_dialog_invoker.gd / platform_overlay_manager.gd / DisplayServer.dialog_show() for TRC system messages over custom modal stacks.
Enable shader/pipeline cache on fixed console GPUs; see console_shader_manager.gd and Official Docs pipeline compilation guidance in Reference.
Use Input.joy_connection_changed + Input.get_joy_info() via controller_telemetry.gd; battery level often needs a platform GDExtension under NDA.
> 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.
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Materials science toolkit. Crystal structures (CIF, POSCAR), phase diagrams, band structure, DOS, Materials Project integration, format conversion, for computational materials science.
Transforms vague UI ideas into polished, Stitch-optimized prompts. Enhances specificity, adds UI/UX keywords, injects design system context, and structures output for better generation results.
Take thedivergentai/godot-platform-console from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.