What problem does it solve? Designing a 3D world composition system often leads to tangled code where rendering logic and world data are mixed together. This Skill establishes a clean contract between data files (registry.json, world.json) and the Three.js renderer, so world state stays declarative and the renderer stays dumb. ## Core Features & Use Cases - Three-layer grammar: Defines L0 tiles (exactly one per cell), L1 environment props (0-3 per cell), and L2 occupants (0-1, mutually exclusive with L1), plus separate UI and dungeon contexts. - Registry-driven validation: Each asset declares its layer, valid tile types, and compatibility rules in registry.json, so adding new asset packs requires zero code changes. - Validated place() function: Provides reference logic that enforces tile compatibility, occupant exclusivity, and context isolation before mutating world data. - Use Case: You are building a hex-grid strategy game in Three.js and need to place castles, trees, and rivers on tiles while guaranteeing that a castle never lands on a river and UI items never leak into the main scene. ## Quick Start Ask the AI to design a world composition system with a place() function that validates assets against tile types using a registry.json and world.json structure.