create-featurelisted
Install: claude install-skill NarekManukyan/flutter-mobx-kit
# Create a feature module
Governed by [ADR-0001](../../../docs/adr/0001-layered-architecture.md) (layers), [ADR-0005](../../../docs/adr/0005-flat-feature-tree.md) (flat tree), [ADR-0006](../../../docs/adr/0006-feature-owned-singletons.md) (feature-owned stores).
## Decide the location first
Features are **peers** under a domain grouping. A feature must never contain a `features/` subdirectory.
```
❌ lib/features/meetings/meeting_details/features/ai_chat/
✅ lib/features/meetings/ai_chat/
✅ lib/features/meetings/meeting_details/
```
A pure view-layer sub-page with no store of its own may stay under the parent's `view/` (e.g. `meeting_details/view/share_meeting/`). The moment it gains its own store or state, promote it to a sibling.
Never create anything under `lib/shared/` — it is deprecated.
## Directory shape
Create only the directories the feature actually needs. A feature with no modals does not get a `modals/` folder.
```
lib/features/{feature}/
view/
{feature}_page.dart @RoutePage widget — Provider root
{feature}_page_state.dart @injectable, MobX, no API access
{feature}_keys.dart widget keys used by Maestro flows
widgets/ private widgets for this page
use_cases/ UCs consumed only by view/state
mobx/
{feature}_store.dart @injectable or @singleton, owns DioService
use_cases/ UCs consumed only by the store
core/use_cases/ UCs consume