API design, database operations, error handling, and backend architecture patterns. Use when creating APIs, database schemas, or server-side logic.
View on GitHubFebruary 1, 2026
Select agents to install to:
npx add-skill https://github.com/mnthe/hardworker-marketplace/blob/main/plugins/ultrawork/skills/backend-patterns/SKILL.md -a claude-code --skill backend-patternsInstallation paths:
.claude/skills/backend-patterns/# Backend Patterns
Comprehensive patterns for API design, database operations, error handling, and backend architecture.
## When to Use
- Creating API endpoints
- Designing database schemas
- Implementing business logic
- Error handling and logging
- Background jobs and queues
- Caching strategies
## API Design Patterns
### RESTful API Structure
```typescript
// app/api/users/route.ts
export async function GET(request: Request) {
const { searchParams } = new URL(request.url)
const page = parseInt(searchParams.get('page') || '1')
const limit = parseInt(searchParams.get('limit') || '10')
const users = await db.users.findMany({
skip: (page - 1) * limit,
take: limit
})
return NextResponse.json({
success: true,
data: users,
pagination: {
page,
limit,
total: await db.users.count()
}
})
}
export async function POST(request: Request) {
const body = await request.json()
// Validate input
const validated = CreateUserSchema.parse(body)
const user = await db.users.create({ data: validated })
return NextResponse.json(
{ success: true, data: user },
{ status: 201 }
)
}
// app/api/users/[id]/route.ts
export async function GET(
request: Request,
{ params }: { params: { id: string } }
) {
const user = await db.users.findUnique({
where: { id: params.id }
})
if (!user) {
return NextResponse.json(
{ error: 'User not found' },
{ status: 404 }
)
}
return NextResponse.json({ success: true, data: user })
}
export async function PATCH(
request: Request,
{ params }: { params: { id: string } }
) {
const body = await request.json()
const validated = UpdateUserSchema.parse(body)
const user = await db.users.update({
where: { id: params.id },
data: validated
})
return NextResponse.json({ success: true, data: user })
}
export async function DELETE(
request: Request,
{ params }: { params: { id: string } }
) {
await db.users.delete({ where: