What problem does it solve?
Enemy logic in Three.js games often becomes tangled with rendering, animation, and AI code, making enemies hard to extend, validate, or debug. This Skill enforces a clean separation between authored enemy content and runtime state so new enemies can be added as data instead of new code branches.
Core Features & Use Cases
- Content/Runtime Separation: Defines immutable authored enemy definitions (stats, moves, presentation specs) consumed by shared runtime systems, with validation for duplicate IDs, missing references, and impossible timing.
- Data-Driven Movesets: Specifies moves as data with startup, active windows, recovery, cooldowns, contact shapes, and feedback hooks, letting AI select legal move IDs while combat owns timing and outcomes.
- Honest Fallbacks & Validation: Provides placeholder conventions preserving colliders, sockets, and timing when models are unavailable, plus deterministic fixtures and playthrough checks for desktop and mobile.
- Use Case: When adding a new enemy to a Three.js action game, define it as a new authored definition referencing existing archetypes and moves, validate its content, and prove it with deterministic fixtures instead of writing ad-hoc runtime branches.
Quick Start
Use the build-threejs-enemy-systems skill to define a reusable enemy archetype and moveset system for this Three.js action game.