$npx -y skills add thedivergentai/GD-Agentic-Skills --skill godot-genre-fightingExpert blueprint for fighting games including frame data (startup/active/recovery frames, advantage on hit/block), hitbox/hurtbox systems, input buffering (5-10 frames), motion input detection (QCF, DP), combo systems (damage scaling, cancel hierarchy), character states (idle/att
| 1 | ## Godot 4.7 Baseline |
| 2 | |
| 3 | - Expert patterns in this skill target **Godot 4.7+** (stable, 2026-06-18). |
| 4 | - Consult the [Godot 4.7 migration guide](https://docs.godotengine.org/en/4.7/tutorials/migrating/upgrading_to_godot_4.7.html) when upgrading projects from 4.6. |
| 5 | - **NEVER** assume 4.6 defaults (stretch mode, audio area_mask, RichTextLabel percent flags) without checking 4.7 migration notes. |
| 6 | |
| 7 | # Genre: Fighting Game |
| 8 | |
| 9 | Expert blueprint for 2D/3D fighters emphasizing frame-perfect combat and competitive balance. |
| 10 | |
| 11 | ## NEVER Do (Expert Anti-Patterns) |
| 12 | |
| 13 | ### Frame-Data & Logic |
| 14 | - NEVER use variable framerates; strictly lock logic to a **Deterministic Fixed Loop** (using `_physics_process` with a frame-counter) and call **`reset_physics_interpolation()`** on teleport. |
| 15 | - NEVER use standard Physics for hit detection; strictly use **`PhysicsDirectSpaceState.intersect_shape()`** to query hitboxes instantly without Area2D signal lag. |
| 16 | - NEVER skip **Damage Scaling**; strictly apply 10% reduction per hit in a combo to prevent infinite matches. |
| 17 | - NEVER make all moves safe on block; strictly ensure high-reward moves have **Recovery Windows** where the attacker is punishable. |
| 18 | - NEVER rely on `Area2D.get_overlapping_areas()`; strictly use **`intersect_shape()`** for immediate, frame-perfect resolution. |
| 19 | - NEVER forget **Hitbox Proximity (Proximity Guard)**; strictly trigger guard states when a hitbox enters a nearby zone, even if it hasn't landed. |
| 20 | |
| 21 | ### Character & Animation |
| 22 | - NEVER use simple parenting (`scale.x = -1`) for character flip; strictly adjust the dedicated **Visuals node** while managing hitbox offsets programmatically. |
| 23 | - NEVER use string-based animation triggers; strictly use `AnimationMixer` with `ADVANCE_MANUAL` for frame-synced playback. |
| 24 | - NEVER use `yield` or `await` for frame-critical logic; strictly use **Integer Frame Counting** within state machines to manage recovery/startup windows perfectly. |
| 25 | - NEVER store frame data in raw scripts; strictly use **`Resource` files (.tres)** with delegated logic for damage scaling, cancels, and combo-state tracking. |
| 26 | - NEVER use deep node hierarchies for character parts; strictly keep skeletons shallow to reduce transformation overhead. |
| 27 | |
| 28 | ### Input & Networking |
| 29 | - NEVER skip **Input Buffering**; strictly implement a 5-10 frame buffer to ensure lenient, responsive execution for the player. |
| 30 | - NEVER leave `Input.use_accumulated_input` enabled; strictly disable it to preserve sub-frame timing for precise combo links. |
| 31 | - NEVER use client-side hit detection for netplay; strictly use **rollback netcode** or server validation to prevent desyncs. |
| 32 | - NEVER use standard TCP for multiplayer; strictly use **UDP/ENet** to avoid head-of-line blocking during latency spikes. |
| 33 | - NEVER rely on the SceneTree for fighter transforms in netplay; strictly manage positions in a **serializable data buffer**. |
| 34 | --- |
| 35 | |
| 36 | ## 🛠 Expert Components (scripts/) |
| 37 | |
| 38 | ### Original Expert Patterns |
| 39 | - [fighting_input_buffer.gd](scripts/fighting_input_buffer.gd) - Frame-locked input engine (60fps) with motion command fuzzy matching (QCF/DP). |
| 40 | - [hitbox_component.gd](scripts/hitbox_component.gd) - Professional hitbox/hurtbox utility with layered collision zones (High/Low/Throw). |
| 41 | |
| 42 | ### Modular Components |
| 43 | - [deterministic_physics_loop.gd](scripts/deterministic_physics_loop.gd) - Custom loop pattern for frame-perfect game state progression. |
| 44 | - [direct_hitbox_query.gd](scripts/direct_hitbox_query.gd) - PhysicsServer shape-casting for immediate collision resolution. |
| 45 | - [hit_stop_controller.gd](scripts/hit_stop_controller.gd) - Dynamic time-scale manipulation for "impact" feel. |
| 46 | - [manual_animation_advancer.gd](scripts/manual_animation_advancer.gd) - Frame-synced animation control via manual delta processing. |
| 47 | - [rollback_state_serializer.gd](scripts/rollback_state_serializer.gd) - Serialization logic for managing discrete game state snapshots. |
| 48 | - [bitwise_state_flags.gd](scripts/bitwise_state_flags.gd) - High-performance bitwise flags for fighter state tracking. |
| 49 | - [input_accumulation_control.gd](scripts/input_accumulation_control.gd) - Toggle for disabling Godot's input accumulation for sub-frame timing. |
| 50 | - [raw_byte_network_sync.gd](scripts/raw_byte_network_sync.gd) - UDP-based state synchronization for netplay efficiency. |
| 51 | - [string_name_optimization.gd](scripts/string_name_optimization.gd) - Pattern for using pointer-level `StringName` comparisons in AI states. |
| 52 | - [round_timer_logic.gd](scr |