What problem does it solve? In craft-ts, a route is more than a path-to-component map: each routed component declares its injected dependencies via componentDeps, and a per-route RouteCheckedDI check turns unmet providers into TypeScript errors. Skipping these checks silently disables compile-time DI safety, and the generated check blocks are easy to get wrong or leave stale. This Skill ensures every route file keeps its DI proofs armed and exhaustive. ## Core Features & Use Cases - Route scaffolding with DI checks: Wraps routes in craftRoutes(name, [...]), wires componentDeps to generated GenDeps_* types, and adds RouteCheckedDI / CanRun pairs per routed component. - Lazy feature splitting: Splits features into child route collections via loadChildren, pins them with .withParent, and enforces placement with assertChildRouteMounts. - Exhaustive exception handling: Applies assertExhaustiveRouteExceptions and typed pendingComponent / viewTransitionPayload patterns with independent DI verification. - Use Case: When adding a new user-detail route to an Angular app, the Skill generates the route entry, the GenDeps import, the DI check block, and the exhaustiveness assert, then directs ESLint --fix to keep everything in sync. ## Quick Start Add a new lazy-loaded feature route with a userId parameter to my Angular app using craft-ts, including its DI check and exception exhaustiveness assert.