What problem does it solve? Configuring Angular dependency injection correctly—choosing provider scopes, creating injection tokens, and managing service lifecycles—is error-prone without clear patterns, leading to duplicated instances, circular dependencies, and untestable code. ## Core Features & Use Cases - Modern inject() API: Replace constructor injection with the inject() function for services, components, and tokens. - Provider Configuration: Configure root, component, and route-level providers using useClass, useValue, useFactory, and useExisting. - Injection Tokens & Patterns: Create typed InjectionTokens, multi-providers, app initializers, and advanced patterns like facades, repositories, and abstract-class tokens. - Use Case: When building a feature that needs a configurable API base URL and a scoped state service, use this Skill to define an APP_CONFIG token, provide it in app.config.ts, and inject a component-scoped state service with proper cleanup via DestroyRef. ## Quick Start Ask the AI to create an Angular service using inject() with an injection token for the API URL and configure its providers in app.config.ts.