Expert blueprint for Metroidvanias including ability-gated exploration (locks/keys), interconnected world design (backtracking with shortcuts), persistent state tracking (collectibles, boss defeats), room transitions (seamless loading), map systems (grid-based revelation), and ability versatility (combat + traversal). Use for exploration platformers or action-adventure games. Trigger keywords: metroidvania, ability_gating, interconnected_world, backtracking, map_system, persistent_state, room_transition, soft_locks.
npx skills add https://github.com/thedivergentai/GD-Agentic-Skills --skill godot-genre-metroidvania
Expert blueprint for Metroidvanias balancing exploration, progression, and backtracking rewards.
load(); strictly use ResourceLoader.load_threaded_request() for seamless transitions.Vector2i to prevent precision jitter.call_deferred()._process(); strictly use _physics_process() to prevent stutter.CharacterBody2D velocity by delta before move_and_slide(); the engine handles this internally.is_action_just_pressed() inside _physics_process() for buffering; strictly capture events in _unhandled_input().StringName (&"dashing") for pointer-speed comparisons.SceneTree.call_group() for efficient mass communication.free(); strictly use queue_free() to avoid segmentation faults.ResourceLoader.StringName pattern matching for traversal/combat states.PhysicsServer queries for performance-optimized wall detection.| Phase | Skills | Purpose |
|-------|--------|---------|
| 1. Character | godot-characterbody-2d, godot-state-machine-advanced | Tight movement + ability states |
| 2. World | godot-tilemap-mastery, godot-scene-management | Rooms, biomes, threaded transitions |
| 3. Systems | godot-save-load-systems, godot-ability-system | Persist gates/collectibles; unlock keys |
| 4. UI | godot-ui-containers, godot-inventory-system | Map / inventory / HUD |
| 5. Balance | godot-monte-carlo-balancer | Soft-lock risk, backtrack length |
MANDATORY: metroid_game_state.gd + persistent_progression_system.gd. Rooms never own global ability flags. Room metadata uses resource_local_to_scene so instanced rooms do not share collectible state.
MANDATORY: background_room_streamer.gd + safe_scene_switcher.gd.
Fast travel must match NEVER (threaded load + deferred swap) — never ResourceLoader.load() / sync change_scene:
class_name FastTravelSystem extends Node
var _pending_path: String = ""
var _spawn_id: StringName = &""
func travel_to_room(scene_path: String, spawn_id: StringName) -> void:
_pending_path = scene_path
_spawn_id = spawn_id
var err := ResourceLoader.load_threaded_request(scene_path)
if err != OK:
push_error("Fast travel request failed: %s" % scene_path)
return
set_process(true)
func _process(_delta: float) -> void:
var status := ResourceLoader.load_threaded_get_status(_pending_path)
if status == ResourceLoader.THREAD_LOAD_IN_PROGRESS:
return
set_process(false)
if status != ResourceLoader.THREAD_LOAD_LOADED:
push_error("Fast travel load failed: %s" % _pending_path)
return
var packed := ResourceLoader.load_threaded_get(_pending_path) as PackedScene
# SceneTree work must be deferred — never from a worker thread
call_deferred("_swap_room", packed, _spawn_id)
func _swap_room(packed: PackedScene, spawn_id: StringName) -> void:
GlobalState.target_spawn_id = spawn_id
get_tree().change_scene_to_packed(packed)
MANDATORY: ability_unlock_resource.gd + progression_gate_manager.gd + ability_state_machine.gd. Gates query StringName abilities from the Autoload — do not hardcode ability strings in room scripts.
MANDATORY: minimap_fog_manager.gd. Use Vector2i cells only.
> LLM-ignorance rule: If a general agent would not know it before reading, load the reference — never delete expert deltas.
> 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.
move_and_slide, floor detection, and velocity rules for coyote/buffer jumps and dash traversal._physics_process; capture buffers in input callbacks._unhandled_input jump/ability buffering so presses are not lost between physics ticks.ResourceLoader.load_threaded_request for adjacent-room preload without hitch spikes.queue_free of the outgoing room..tres data with safe duplication.TileMapLayer + Vector2i cells for minimap fog revelation and grid room tracking.limit_* bounds and tweened limit handoffs for seamless camera room transitions.call_group for save-station heal/respawn broadcasts instead of walking the whole tree.if/elif sprawl.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-genre-metroidvania 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.