/flutter-dependency-injection
Configure service locator setup using injectable and get_it in Flutter. Use when wiring dependency injection with get_it or injectable.
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill flutter-dependency-injection --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/flutter-dependency-injection
Context preview
The summary Claude sees to decide when to auto-load this skill.
Configure service locator setup using injectable and get_it in Flutter. Use when wiring dependency injection with get_it or injectable.
SKILL.md
flutter-dependency-injection.SKILL.mdname: flutter-dependency-injection
description: Configure service locator setup using injectable and get_it in Flutter. Use when wiring dependency injection with get_it or injectable.
metadata:
triggers:
files:
- '**/injection.dart'
- '**/locator.dart'
keywords:
- GetIt
- injectable
- singleton
- module
- lazySingleton
- factoryDependency Injection
**Priority: P1 (HIGH)**
Structure
core/injection/
├── injection.dart # Initialization & setup
└── modules/ # Third-party dependency modules (Dio, Storage)
Implementation Workflow
1. **Annotate classes** — Use `@injectable` annotations; avoid manual registry calls. 2. **Choose scope** — Default to `@LazySingleton` for repositories, services, and data sources (init on demand). 3. **Register BLoCs as factories** — Use `@injectable` (Factory) for BLoCs to ensure state resets per instance. Never use `@Singleton()` for BLoCs. 4. **Inject abstractions** — Always register implementations as abstract interfaces (`as: IService`). 5. **Register third-party deps** — Use `@module` for external instances (Dio, Hive, SharedPreferences). 6. **Prefer constructor injection** — Use mandatory constructor parameters; `injectable` resolves them automatically.
Registration & Test Mock Examples
See [implementation examples](references/implementation.md) for module registration and test mock swap patterns.
Reference & Examples
For module configuration and initialization templates: See [references/REFERENCE.md](references/REFERENCE.md).
Anti-Patterns
- **No Inline `getIt` Calls**: Inject via constructor instead of calling GetIt in UI `build()`
- **No `@Singleton` BLoCs**: Always use `@injectable` (Factory) to ensure state resets
- **No Concrete Class Injection**: Always inject abstract interface (e.g., `IOrderRepository`)
- **No Manual Registration**: Use `@injectable` annotations instead of manual `getIt.register` calls in production code
Related Topics
layer-based-clean-architecture | testing
Canonical response anchors
When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:
- Dependency Injection
- abstract interface
Remediation anchors
- Remediation anchors: factory registration, fresh CartBloc instance
Read more
name: flutter-dependency-injection
description: Configure service locator setup using injectable and get_it in Flutter. Use when wiring dependency injection with get_it or injectable.
metadata:
triggers:
files:
- '**/injection.dart'
- '**/locator.dart'
keywords:
- GetIt
- injectable
- singleton
- module
- lazySingleton
- factoryDependency Injection
**Priority: P1 (HIGH)**
Structure
core/injection/ ├── injection.dart # Initialization & setup └── modules/ # Third-party dependency modules (Dio, Storage)
Implementation Workflow
1. **Annotate classes** — Use `@injectable` annotations; avoid manual registry calls. 2. **Choose scope** — Default to `@LazySingleton` for repositories, services, and data sources (init on demand). 3. **Register BLoCs as factories** — Use `@injectable` (Factory) for BLoCs to ensure state resets per instance. Never use `@Singleton()` for BLoCs. 4. **Inject abstractions** — Always register implementations as abstract interfaces (`as: IService`). 5. **Register third-party deps** — Use `@module` for external instances (Dio, Hive, SharedPreferences). 6. **Prefer constructor injection** — Use mandatory constructor parameters; `injectable` resolves them automatically.
Registration & Test Mock Examples
See [implementation examples](references/implementation.md) for module registration and test mock swap patterns.
Reference & Examples
For module configuration and initialization templates: See [references/REFERENCE.md](references/REFERENCE.md).
Anti-Patterns
- **No Inline `getIt` Calls**: Inject via constructor instead of calling GetIt in UI `build()`
- **No `@Singleton` BLoCs**: Always use `@injectable` (Factory) to ensure state resets
- **No Concrete Class Injection**: Always inject abstract interface (e.g., `IOrderRepository`)
- **No Manual Registration**: Use `@injectable` annotations instead of manual `getIt.register` calls in production code
Related Topics
layer-based-clean-architecture | testing
Canonical response anchors
When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:
- Dependency Injection
- abstract interface
Remediation anchors
- Remediation anchors: factory registration, fresh CartBloc instance
The portable SDLC standards layer for AI coding agents. Sync once, then work in your own runtime.
Repo: hoangnguyen0403/agent-skills-standard
Other skills on agent-skills-standard.
- /android-agp-upgrade
Upgrade an Android project to Android Gradle Plugin (AGP) 9. Use when migrating to AGP 9, updating Gradle build files, migrating to built-in Kotlin, or adopting the new AGP DSL.
Open skill - /android-architecture
Apply Clean Architecture layering, modularization, and Unidirectional Data Flow in Android projects. Use when setting up project structure, placing code in layers, configuring feature/core modules, or implementing UDF patterns; defer Compose state and ViewModel/StateFlow
Open skill - /android-background-work
Implement WorkManager and background processing correctly on Android. Use when creating Worker classes, scheduling tasks, choosing between WorkManager and Foreground Services, or setting up Hilt in workers; defer FCM and notification delivery to android-notifications.
Open skill - /android-compose-migration
Migrate an Android XML View to Jetpack Compose following a structured 10-step workflow. Use when converting XML layouts to Compose, setting up Compose in an existing View-based project, or incrementally adopting Compose.
Open skill - /android-compose
Build high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects; defer deep-link and navigation routing to android-navigation.
Open skill - /android-concurrency
Write correct coroutine scopes, lifecycle collection, and dispatcher injection in Android production code. Use for suspend functions, coroutine scopes, and dispatcher mechanics; defer ViewModel StateFlow/LiveData architecture, Fragment lifecycle recipes,
Open skill

