ms-business
>-
Install
mkdir -p .claude/skills/ms-business && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15084" && unzip -o skill.zip -d .claude/skills/ms-business && rm skill.zipInstalls to .claude/skills/ms-business
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Microservicio NestJS de dominio de transporte (rutas, paradas, tickets, incidentes, conductores). Patrones controller/service/DTO, TypeORM PostgreSQL, validación JWT vía ms-security. Usar al editar ms-business/, crear endpoints, migraciones, módulos NestJS o integrar auth/Supabase/incidentes.About this skill
ms-business
NestJS 11 + TypeORM + PostgreSQL. Puerto por defecto 3000. Swagger en /docs.
Arquitectura por dominio
Regla del proyecto (detalle en ms-business/docs/ARCHITECTURE.md):
- Controller — solo HTTP: parámetros, body, delegación al service.
- Service — reglas de negocio, repositorios, transformación a DTO de respuesta.
- DTO — entrada (
create-*,update-*,base-*) y salida (response-*, listas conitems+meta). - Entity — TypeORM; no exponer directamente en la API.
Módulos registrados
AuthModule, RouteModule, StopModule, NodeModule, AddressModule, CitizenModule, TicketModule, HistoryModule, BusModule, SchedulerModule, PaymentMethodModule, PaymentMethodCitizenModule, EnterpriseModule, DriverModule, TurnModule, IncidentModule, SharedModule.
Catálogo por dominio: references/domains-and-modules.md.
Crear un endpoint nuevo (workflow)
- Entidad en
entities/*.entity.ts(relaciones TypeORM). base-*.dto.ts→create-*.dto.ts→update-*.dto.ts(PartialType).response-*.dto.tsyresponse-*-list.dto.tssi aplica paginación.- Métodos en
*.service.ts(validar FKs, reglas, mapear respuesta). - Rutas en
*.controller.ts+ decoradores Swagger (@ApiTags,@ApiOperation). - Registrar módulo en
app.module.tssi es dominio nuevo. - Migración TypeORM si cambia el esquema (
synchronize: false).
Patrones DTO: references/dto-patterns.md.
Autenticación
- No validar JWT localmente: usar
JwtValidationService→POST {MS_SECURITY_URL}/api/public/security/validate-token. - Guards esperados en
src/auth/guards/(jwt.guard.ts,roles.guard.ts). - Decoradores:
@CurrentUser(),@Roles('DRIVER'),@UseGuards(JwtAuthGuard, RolesGuard). - Ejemplo protegido:
POST /incident-reports/driverrequiere rolDRIVER.
Detalle: references/auth-and-roles.md.
Migraciones
- Config:
typeorm.config.ts, entidades auto-cargadas desde**/entities/*.ts. - Carpeta:
src/migrations/. - Generar/ejecutar con CLI TypeORM apuntando a
AppDataSource(ver references/migrations.md).
Incidentes y almacenamiento
- Fotos: Supabase Storage (
SUPABASE_URL,SUPABASE_SERVICE_ROLE_KEY,SUPABASE_INCIDENT_BUCKET). - Email supervisor:
MS_NOTIFICATION_URL,INCIDENT_SUPERVISOR_EMAILosupervisorEmailen enterprise.
Comandos
cd ms-business
pnpm install
pnpm run start:dev # desarrollo
pnpm run lint
pnpm test
pnpm run build
Scripts: scripts/dev.sh, scripts/test.sh, scripts/check-env.sh.
Anti-patrones
- Devolver entidades TypeORM sin mapear a response DTO.
- Activar
synchronize: trueen producción. - Duplicar lógica de firma/parseo JWT (solo ms-security).
- Omitir
ValidationPipeglobal (ya configurado enmain.ts: whitelist, transform).
Referencias
| Archivo | Contenido |
|---|---|
| api-catalog.md | Rutas HTTP |
| domains-and-modules.md | Entidades y reglas |
| auth-and-roles.md | JWT y guards |
| dto-patterns.md | Convenciones DTO |
| migrations.md | TypeORM migrations |
| env-vars.md | Variables de entorno |
Integración monorepo: skill monorepo-overview.