add-featurelisted
Install: claude install-skill ltatarev/skills
# Adding or Extending a Feature Module
Scaffolding a new `src/modules/<name>/` module and extending existing ones: the
file anatomy, the typed thunk pattern, store registration, persistence
consequences, navigation wiring, and module boundary rules. The standard: a new
module must look indistinguishable from the smallest existing one, and nothing
may import module internals from outside.
## Ground yourself first
Read the repo before scaffolding — module conventions drift between projects.
1. `ls src/modules/` and pick the **smallest module that already has Redux**.
That is your template; copy its shape rather than this skill's.
2. Read `AGENTS.md` / `CLAUDE.md` for the conventions and non-negotiables.
3. Read `CONTEXT.md` if present for the domain vocabulary — use its terms
exactly, and the `domain-model` skill if you are introducing new ones.
4. Read the root store file to see how reducers are registered and what the
persist config actually persists.
## Anatomy of a module
```text
src/modules/<name>/
├── const.ts # MODULE_NAME (the Redux slice key + route prefix)
├── types.ts # module-owned types
├── index.ts # public barrel — the ONLY cross-module import surface
└── redux/
├── slice.ts # createSlice; exports <name>Actions, <name>Reducer
├── selectors.ts # plain functions over RootState
├── thunks.ts # createAppAsyncThunk wrappers
├── utils.ts # slice-local helpers
└── index.ts # re-exports sli