smithery.ai

create-service

Guide for creating services in the backend. Use when asked to create a service layer component. Directs to the appropriate service skill based on the type of service needed.

First seen Apr 2, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,697 B
  • docs SUMMARY.md 195 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Create Service

Services contain business logic and orchestrate operations between repositories, external APIs, and other services.

Service Types

There are two types of services in this architecture:

Type Purpose Skill
Resource Service CRUD operations on entities (notes, users, etc.) create-resource-service
Utility Service Cross-cutting concerns (auth, notifications, email) create-utility-service

Which Skill to Use?

Use create-resource-service when:

  • Creating a service for a domain entity (Note, User, Course, etc.)
  • The service will perform CRUD operations via a repository
  • The service needs authorization checks per operation
  • The service should emit events for real-time updates
  • You've already created the schema and repository for this entity

Example: NoteService, UserService, CourseService

Use create-utility-service when:

  • Creating a service for cross-cutting concerns
  • The service calls external APIs (auth service, payment gateway, etc.)
  • The service provides shared functionality used by other services
  • The service doesn't directly map to a domain entity

Example: AuthenticationService, AuthorizationService, EmailService, NotificationService

Service Layer Principles

Regardless of type, all services follow these principles:

  1. Business logic lives here - Not in controllers or repositories
  2. Dependency injection - Inject dependencies via constructor
  3. Throw domain errors - Use errors from @/errors (not HTTP errors)
  4. User context - Accept AuthenticatedUserContextType where needed
  5. Return domain types - Return schema types, not HTTP responses

File Naming

Location: src/services/{service-name}.service.ts

Type Example
Resource note.service.ts, user.service.ts
Utility authentication.service.ts, authorization.service.ts

See Also

  • create-resource-service - CRUD services for entities
  • create-utility-service - Cross-cutting/specialized services
  • add-resource-events - Add real-time events to a resource service