← ClaudeAtlas

add-featurelisted

Scaffolds a new feature module under src/modules/ or extends an existing one in a package-by-feature React Native codebase. Use when the user asks to add a feature, screen, module, setting, Redux slice, selector, or thunk; wire a new route into React Navigation; register a reducer in the store; or extend an existing module. Also use when deciding where new code belongs (module vs utils vs theme) or when a change crosses module boundaries.
ltatarev/skills · ★ 0 · Web & Frontend · score 65
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