Our review
Creates a complete data layer for a resource, including types, contracts, adapters, and service, following a specific architecture.
Strengths
- Automates consistent creation of the service/adapter/types layer
- Enforces conventions (snake_case for API, camelCase for app)
- Generates pure adapters with no side effects and a service without try/catch
- Validates with tsc --noEmit after generation
Limitations
- Requires user to provide JSON format details and operations
- Assumes architecture exactly matches sections 4.1-4.3 of docs/ARCHITECTURE.md
- Does not handle advanced cases like authentication or pagination
Use when adding a new API integration in an Angular project that follows a strict separation of types and adapters.
Do not use if the project does not use Angular HttpClient or if the architecture does not match the specified sections.
Security analysis
SafeThe skill only generates code files and runs 'npx tsc --noEmit' for validation. It does not execute external scripts, delete files, or exfiltrate data. No destructive commands or obfuscation are present. Allowed tools are used for legitimate purposes.
No concerns found
Examples
dev-create-service productsdev-create-service users
Endpoint base URL: /api/users
Response JSON format: { "id": 1, "name": "John", "email": "john@example.com" }
Operations: GET list, GET by ID, POST, PATCH, DELETEname: 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.mdsections 4.1 (Services), 4.2 (Adapters), 4.3 (Types). -
Ask the user:
- What is the endpoint base URL? (e.g.
/api/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)
- What is the endpoint base URL? (e.g.
-
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-- HttpClient only, inject(HttpClient), @Injectable({ providedIn: 'root' }) -
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
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.