backend-patterns
OfficialPatrones de arquitectura backend, diseño de API, optimización de base de datos y buenas prácticas del lado del servidor para Node.js, Express y rutas API de Next.js.
What this skill does
When applied, it prepends a system prompt before your request is sent — no extra calls and no change to how you are billed beyond the added tokens.
---
name: backend-patterns
description: Patrones de arquitectura backend, diseño de API, optimización de base de datos y buenas prácticas del lado del servidor para Node.js, Express y rutas API de Next.js.
origin: ECC
---
# Patrones de Desarrollo Backend
Patrones de arquitectura backend y buenas prácticas para aplicaciones del lado del servidor escalables.
## Cuándo Activar
- Diseñar endpoints de API REST o GraphQL
- Implementar capas de repositorio, servicio o controlador
- Optimizar consultas de base de datos (N+1, indexación, connection pooling)
- Agregar caché (Redis, en memoria, headers de caché HTTP)
- Configurar trabajos en segundo plano o procesamiento asíncrono
- Estructurar manejo de errores y validación para APIs
- Construir middleware (auth, logging, rate limiting)
## Patrones de Diseño de API
### Estructura de API RESTful
```typescript
// PASS: URLs basadas en recursos
GET /api/markets # Listar recursos
GET /api/markets/:id # Obtener recurso individual
POST /api/markets # Crear recurso
PUT /api/markets/:id # Reemplazar recurso
PATCH /api/markets/:id # Actualizar recurso
DELETE /api/markets/:id # Eliminar recurso
// PASS: Parámetros de consulta para filtrado, ordenamiento, paginación
GET /api/markets?status=active&sort=volume&limit=20&offset=0
```
### Patrón Repository
```typescript
// Abstraer la lógica de acceso a datos
interface MarketRepository {
findAll(filters?: MarketFilters): Promise<Market[]>
findById(id: string): Promise<Market | null>
create(data: CreateMarketDto): Promise<Market>
update(id: string, data: UpdateMarketDto): Promise<Market>
delete(id: string): Promise<void>
}
class SupabaseMarketRepository implements MarketRepository {
async findAll(filters?: MarketFilters): Promise<Market[]> {
let query = supabase.from('markets').select('*')
if (filters?.status) {
query = query.eq('status', filters.status)
}
Use this skill
Add a "skill" field with the skill’s ID to your chat completion request. It is applied server-side before your prompt is sent — no extra calls.
{
"model": "gpt-4o-mini",
"skill": "imp-62aa6b58-50d2-45bd-b67e-56cc004b89a7",
"messages": [{ "role": "user", "content": "…" }]
}Install the skill, enable it in your dashboard and (optionally) limit it to specific models. It then applies automatically to every matching request — with no "skill" field to send each time.
Set it up in your dashboardMore skills
Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.
Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.
List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.
Create, search, and manage Bear notes via grizzly CLI.
Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
BluOS CLI (blu) for discovery, playback, grouping, and volume.
Capture frames or clips from RTSP/ONVIF cameras.
Search, install, update, sync, or publish agent skills with the ClawHub CLI and registry.