service-development
Scaffolds and manages services in app/features/services using established project templates.
Install
mkdir -p .claude/skills/service-development && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16318" && unzip -o skill.zip -d .claude/skills/service-development && rm skill.zipInstalls to .claude/skills/service-development
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
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.Key capabilities
- →Scaffold new services using a template
- →Update existing service components (container, store, structure, lib, constants)
- →Remove existing services and their wiring
- →Enforce consistent file roles and guardrails for service components
- →Auto-inject reducer and action bindings for services with stores
How it works
The skill provides CLI commands to scaffold, update, or remove services. It enforces a specific directory structure and coding conventions for service components like containers, stores, and libraries, ensuring consistency with project rules.
Inputs & outputs
When to use service-development
- →Creating new feature services
- →Standardizing Redux store wiring
- →Cleaning up old project services
About this skill
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
- Scaffold via CLI:
ill addService auth- or
ill addService --name auth - Add
--no-storeif the service does not need a Redux slice/store wiring.
- Keep export surface the same (
index.tsxre-exports store/constants/lib and exposes{ service: useContainer }from a lowercase export). - Replace placeholder DTO/UI types, schemas, and data models; move every magic number/string into
constants/and re-export viaconstants/index.ts. - If the service is global (app-wide side effects), register it in the root ServiceInjector services list.
- 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).
- Hook signature stays
-
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.
- Must export a lowercase service object to avoid collisions with widgets:
-
store/index.ts
- Only reducers inside
createSlice; no extra functions. initialStateimported fromstructure; do not typeinitialState.- Re-export via
ActionsandReducer(used byuseAppActionsand store assembly).
- Only reducers inside
-
structure/index.ts
- Holds
initialStateonly; no functions; no type declaration for the state object.
- Holds
-
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.
- Use
-
lib/mappers
- Sole place for DTO ↔ internal model transformations; return
Nullablewhere appropriate.
- Sole place for DTO ↔ internal model transformations; return
-
lib/schemas
- Yup schemas for forms/validation when needed; keys should be enums from
lib/types.
- Yup schemas for forms/validation when needed; keys should be enums from
-
lib/utils
- Lightweight helpers that consume typed data; magic values go to
constants/.
- Lightweight helpers that consume typed data; magic values go to
-
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).
- SCREAMING_SNAKE_CASE, meaningful names, no single-letter or cryptic abbreviations; re-export through
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.
When not to use it
- →When creating a service that does not need a Redux slice/store wiring but `--no-store` is not used
- →When using `useCallback`/`useMemo` in containers
- →When using inline magic literals instead of constants
Limitations
- →Hook signature for `useContainer` stays `useContainer: SC`; no props passed.
- →No `useCallback`/`useMemo` in containers.
- →Only reducers inside `createSlice`; no extra functions.
How it compares
This skill standardizes service development by providing scaffolding, update, and removal tools that enforce strict conventions for file structure, naming, and Redux integration, ensuring consistency across a project unlike ad-hoc service c
Compared to similar skills
service-development side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| service-development (this skill) | 0 | 4mo | No flags | Intermediate |
| senior-fullstack | 35 | 7mo | Review | Intermediate |
| web-component-design | 5 | 5mo | No flags | Intermediate |
| react-component-patterns | 3 | 1mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
senior-fullstack
davila7
Comprehensive fullstack development skill for building complete web applications with React, Next.js, Node.js, GraphQL, and PostgreSQL. Includes project scaffolding, code quality analysis, architecture patterns, and complete tech stack guidance. Use when building new projects, analyzing code quality, implementing design patterns, or setting up development workflows.
web-component-design
wshobson
Master React, Vue, and Svelte component patterns including CSS-in-JS, composition strategies, and reusable component architecture. Use when building UI component libraries, designing component APIs, or implementing frontend design systems.
react-component-patterns
HoangNguyen0403
Modern React component architecture and composition patterns.
nx-generate
nrwl
Generate code using nx generators. USE WHEN scaffolding code or transforming existing code - for example creating libraries or applications, or anything else that is boilerplate code or automates repetitive tasks. ALWAYS use this first when generating code with Nx instead of calling MCP tools or running nx generate immediately.
dev-builder
zinohome
你是全栈开发工程师,负责根据产品需求文档(Product-Spec.md)和原型图(如有)实现功能代码。你的核心职责是:
screenshot-to-code
OneWave-AI
Convert UI screenshots into working HTML/CSS/React/Vue code. Detects design patterns, components, and generates responsive layouts. Use this when users provide screenshots of websites, apps, or UI designs and want code implementation.