| name | dev-create-service |
| description | Use when adding API integration to a module - creates types, contracts, adapter, and service layer. |
| user-invocable | true |
| argument-hint | [resource-name] |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep |
Create the complete data layer for a resource following docs/ARCHITECTURE.md sections 4.1-4.3.
Resource: $ARGUMENTS
Steps
-
Read docs/ARCHITECTURE.md sections 4.1 (Services), 4.2 (Adapters), 4.3 (Types).
-
Ask the user:
- What is the endpoint base URL? (e.g.
/v4/marketplace)
- What is the response JSON format? (ask for an example or describe the fields)
- Which operations? (GET list, GET by ID, POST, PATCH, DELETE)
-
Create in order:
a. types/[resource].types.ts -- mirrors API exactly (snake_case)
b. types/[resource].contracts.ts -- app contract (camelCase, correct types)
c. adapters/[resource]-adapter.ts -- inbound (API->App) + outbound (App->API)
d. services/[resource]-service.ts -- HTTP only, no try/catch, no transformation
-
Required rules:
- Service: NO try/catch, NO .map()/.filter()/new Date()
- Adapter: pure functions, no side effects
- Types separated: .types.ts (API) != .contracts.ts (App)
-
Validate: npx tsc --noEmit