Claude-skill-registry create-resource
Orchestrator skill for creating a complete CRUD resource with all layers. Use when creating a new domain entity like notes, users, or courses from scratch. Triggers on "create resource", "new entity", "add crud for".
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/create-resource" ~/.claude/skills/majiayu000-claude-skill-registry-create-resource && rm -rf "$T"
skills/data/create-resource/SKILL.mdCreate Resource (Orchestrator)
Complete workflow for creating a new CRUD resource with all layers, tests, and real-time events.
Overview
This skill orchestrates the creation of a complete resource by guiding you through all the required skills in the correct order.
Prerequisites
Before starting, you should know:
- Entity name (e.g., "Course", "Project", "Task")
- Entity fields (what data does it hold?)
- Business rules (who can do what?)
Creation Workflow
Phase 1: Schema Layer
| Step | Skill | Output |
|---|---|---|
| 1 | | |
| 2 | | |
Creates: Zod schemas for entity, create DTO, update DTO, query params, and TypeScript types.
Phase 2: Repository Layer
| Step | Skill | Output |
|---|---|---|
| 3 | | |
| 4 | | |
| 5 | | |
| 6 | | |
| 7 | | |
Creates: Repository interface and implementations for MockDB and MongoDB.
Phase 3: Service Layer
| Step | Skill | Output |
|---|---|---|
| 8 | | |
| 9 | | Update |
| 10 | | |
Creates: Business logic service with authorization and event emission.
Phase 4: Controller Layer
| Step | Skill | Output |
|---|---|---|
| 11 | | |
| 12 | | |
Creates: HTTP request handlers.
Phase 5: Routes Layer
| Step | Skill | Output |
|---|---|---|
| 13 | | |
| 14 | | Update to mount routes |
| 15 | | |
Creates: Route definitions with middleware, integrated into app.
Phase 6: Events (Optional)
| Step | Skill | Output |
|---|---|---|
| 16 | | Update events router |
Creates: Real-time SSE event streaming for the resource.
Files Created Summary
src/ ├── schemas/ │ └── {entity}.schema.ts # Zod schemas + types ├── repositories/ │ ├── {entity}.repository.ts # Interface │ ├── mockdb/ │ │ └── {entity}.mockdb.repository.ts │ └── mongodb/ │ └── {entity}.mongodb.repository.ts ├── services/ │ ├── {entity}.service.ts # Business logic │ └── authorization.service.ts # Updated with permissions ├── controllers/ │ └── {entity}.controller.ts # HTTP handlers ├── routes/ │ ├── {entity}.router.ts # Route definitions │ └── events.router.ts # Updated for SSE └── app.ts # Updated to mount routes tests/ ├── schemas/ │ └── {entity}.schema.test.ts ├── repositories/ │ ├── {entity}.mockdb.repository.test.ts │ └── {entity}.mongodb.repository.test.ts ├── services/ │ └── {entity}.service.test.ts ├── controllers/ │ └── {entity}.controller.test.ts └── routes/ └── {entity}.router.test.ts
Quick Start Checklist
## Creating {Entity} Resource ### Phase 1: Schema - [ ] Create schema with `create-schema` - [ ] Add tests with `test-schema` - [ ] Run tests: `pnpm test tests/schemas/{entity}.schema.test.ts` ### Phase 2: Repository - [ ] Create interface with `create-repository` - [ ] Create MockDB implementation with `create-mockdb-repository` - [ ] Add MockDB tests with `test-mockdb-repository` - [ ] Run tests: `pnpm test tests/repositories/{entity}.mockdb.repository.test.ts` - [ ] Create MongoDB implementation with `create-mongodb-repository` - [ ] Add MongoDB tests with `test-mongodb-repository` - [ ] Run tests: `pnpm test tests/repositories/{entity}.mongodb.repository.test.ts` ### Phase 3: Service - [ ] Create service with `create-resource-service` - [ ] Add authorization methods with `add-authorization-methods` - [ ] Add tests with `test-resource-service` - [ ] Run tests: `pnpm test tests/services/{entity}.service.test.ts` ### Phase 4: Controller - [ ] Create controller with `create-controller` - [ ] Add tests with `test-controller` - [ ] Run tests: `pnpm test tests/controllers/{entity}.controller.test.ts` ### Phase 5: Routes - [ ] Create routes with `create-routes` - [ ] Mount routes in app.ts with `integrate-routes` - [ ] Add tests with `test-routes` - [ ] Run tests: `pnpm test tests/routes/{entity}.router.test.ts` ### Phase 6: Events (Optional) - [ ] Add event emission with `add-resource-events` - [ ] Update events router ### Final Verification - [ ] Run all tests: `pnpm test` - [ ] Run type check: `pnpm type-check` - [ ] Run linting: `pnpm lint` - [ ] Test manually with API client
Example: Creating a "Project" Resource
# Follow skills in order: 1. create-schema → src/schemas/project.schema.ts 2. test-schema → tests/schemas/project.schema.test.ts 3. create-repository → src/repositories/project.repository.ts 4. create-mockdb-repository → src/repositories/mockdb/project.mockdb.repository.ts 5. test-mockdb-repository → tests/repositories/project.mockdb.repository.test.ts 6. create-mongodb-repository → src/repositories/mongodb/project.mongodb.repository.ts 7. test-mongodb-repository → tests/repositories/project.mongodb.repository.test.ts 8. create-resource-service → src/services/project.service.ts 9. add-authorization-methods → Update authorization.service.ts with canViewProject, etc. 10. test-resource-service → tests/services/project.service.test.ts 11. create-controller → src/controllers/project.controller.ts 12. test-controller → tests/controllers/project.controller.test.ts 13. create-routes → src/routes/project.router.ts 14. integrate-routes → Update app.ts to mount /projects routes 15. test-routes → tests/routes/project.router.test.ts 16. add-resource-events → Update events.router.ts (optional)
See Also
- Individual skill files for detailed instructions
- Validate a completed resource follows all patternsreview-resource
- Mounting routes in app.tsintegrate-routes
- Adding entity permissionsadd-authorization-methods
- Adding custom query filtersadd-query-filter
- Starting a new project from scratchbootstrap-project