infinitylooplabs/react-template/service-development
Claude Code and agent skill by infinitylooplabs/react-template
- community
Checking that the SKILL.md file is still in the repository.
Build or update services in `app/features/services` using the `_template/service` conventions (container/store/structure/lib/constants) so code stays consistent with project rules.
Install
npx vskill@latest install infinitylooplabs/react-template/service-developmentSKILL.md
Service Development
When to use
- Creating a new service (copy
_template/serviceintoapp/features/services/<serviceName>and rename Sample placeholders). - Updating container/store/structure/lib/constants for an existing service while keeping template rules intact.
- Removing an existing service and its wiring from store/actions via CLI.
Quick start
0) Scaffold via CLI:
ill addService auth- or
ill addService --name auth - Add
--no-storeif the service does not need a Redux slice/store wiring.
1) Keep export surface the same (index.tsx re-exports store/constants/lib and exposes { service: useContainer } from a lowercase export). 2) Replace placeholder DTO/UI types, schemas, and data models; move every magic number/string into constants/ and re-export via constants/index.ts. 3) If the service is global (app-wide side effects), register it in the root ServiceInjector services list. 4) Remove via CLI when needed:
ill removeService auth- or
ill removeService --name auth
File roles and guardrails
- container (`container/index.ts`)
- Hook signature stays
useContainer: SC; no props passed. - Comment every logical block with
// Описание: Начало/Конец; do not comment the return; update comments instead of deleting. - Naming: camelCase vars/functions, PascalCase components/types, booleans with is/has/should/can; handlers named
on***Handler; use meaningful names. - No
useCallback/useMemo(React compiler handles it). - Constants in SCREAMING_SNAKE_CASE under
constants/with barrel re-export; no inline magic literals. - If the service talks to backend and you map data between layers, keep transformations in
lib/mappers(do not do mapping in container).
- index.tsx
- Must export a lowercase service object to avoid collisions with widgets:
export const auth = { service: useContainer }- Re-export
constants,store,libto supportuseAppActionsauto-binding.
- store/index.ts
- Only reducers inside
createSlice; no extra functions. initialStateimported fromstructure; do not typeinitialState.- Re-export via
ActionsandReducer(used byuseAppActionsand store assembly).
- structure/index.ts
- Holds
initialStateonly; no functions; no type declaration for the state object.
- lib/types
- Use
typealiases (no interfaces) withTypesuffix; enums withEnumsuffix. - No function type definitions here; boolean names with is/has/should/can.
- Put request/response DTO adapters here if service interacts with API/persistence.
- lib/mappers
- Sole place for DTO ↔ internal model transformations; return
Nullablewhere appropriate.
- lib/schemas
- Yup schemas for forms/validation when needed; keys should be enums from
lib/types.
- lib/utils
- Lightweight helpers that consume typed data; magic values go to
constants/.
- constants/
- SCREAMING_SNAKE_CASE, meaningful names, no single-letter or cryptic abbreviations; re-export through
constants/index.ts. name.tsbuilds a service name fromNAME_FROM_PACKAGE_JSON(service naming, not widget naming).
Store and actions wiring
If you scaffolded without --no-store, the CLI will auto-inject:
- Reducer import + reducer key into
app/application/store/reducers.tsunder// Services: Начало - Actions binding into
app/utils/hooks/useAppActions.ts
If you scaffolded with --no-store:
- CLI will NOT inject reducer/hooks. Keep the service free of Redux usage (or wire it manually if you later add a slice).
Do not confuse templates
- repo root
_template/service/*: scaffolding templates used byill addService - widget-local
templates/*: UI decomposition pieces used by widgets (not applicable to services)
Final checks
- Comments preserved/updated per template; no inline magic values; types/mappers/schemas/constants live in their dedicated files.
- Export name casing: service export is lowercase in
index.tsx. - If the service is app-global: it is included in the
ServiceInjectorlist in/app/root.tsx.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/service-development/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/infinitylooplabs/react-template/service-development)