Files
sf-sim/.claude/rules/code-style.md
Jorge 9a5308c3c9 chore(claude): configurar Claude Code y formalizar convenciones
Hasta ahora el proyecto carecía de convenciones documentadas. Esta
configuración inicial consolida code style, git conventions, política
de tests, comandos /audit y /check, y las skills locales del repo
(sf-backend-architecture y clean-ddd-hexagonal) en una estructura
reutilizable: defaults estrictos al copiar a otros repos, con
excepciones específicas de sf-sim documentadas por su carácter legacy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 12:09:18 +02:00

2.9 KiB

Code style — reglas mínimas

Subset siempre cargado. Para detalle completo (ejemplos, casos borde, justificaciones) ver .agents/skills/sf-backend-architecture/references/CODE-STYLE.md — invoca la skill sf-backend-architecture para cargarlo bajo demanda.

Reglas que aplican siempre

  • Comentarios en español. Inline, JSDoc, TODO. Sin excepciones.
  • Identificadores: español para dominio (iccid, activarLinea), inglés para infraestructura técnica (httpClient, eventBus).
  • Funciones y métodos: camelCase, verbo en infinitivo (getUsuario, activarLinea, publishEvent).
  • Variables locales y parámetros: camelCase (activationDate, msgData).
  • Constantes literales de módulo: UPPER_SNAKE_CASE (DEFAULT_LIMIT = 1000). Instancias configuradas (aunque sean const) van en camelCase (const eventBus = new RabbitMQEventBus(...)).
  • Clases, interfaces y tipos: PascalCase.
  • Sin prefijo I en interfaces (EventBus, no IEventBus).
  • type por defecto, interface solo para ports (contratos implementados por adapters).
  • Sin enum — usar uniones de strings literales (type X = 'a' | 'b').
  • Sin any en código nuevo salvo en boundaries de I/O externo con comentario justificando. Preferencia: unknown + type guard.
  • async/await siempre. Nada de .then().catch() salvo fire-and-forget consciente con comentario.
  • Tests en español: describe e it ambos (it('debería ...')).
  • Política de tests (TDD por defecto): todo código nuevo se escribe con TDD y el repo mantiene ≥70% de cobertura. Tests del nivel apropiado (domain puro / application con mocks de ports / infrastructure cuando añade adapter). Bugs corregidos requieren test de regresión que reproduzca el fallo. Estrategia detallada en HOUSE-STYLE.md § Tests.
  • Errores: Result<E, D> para fallos esperables, throw solo para invariantes rotas.
  • Aplicación: estricto en código nuevo, oportunista al tocar código existente. No PRs masivos de retrofit.

Excepciones de este repo

Estas excepciones son específicas de sf-sim. Al copiar este fichero a un repo nuevo, sustituye esta sección (o bórrala) — los defaults de arriba aplican sin estas relajaciones.

  • Política de tests: sf-sim es legacy con cobertura ~12%. La regla TDD + 70% es aspiracional, no bloqueante. Estricta para código nuevo; al tocar legacy retrofittear tests es opcional pero valorado; nada de retrofits masivos. La excepción decae cuando alcancemos el 70% global.
  • sim-objenious-cron/ no sigue las convenciones arquitectónicas: sus desvíos son intencionales por la API que consume. No auditar contra este documento salvo petición explícita.
  • Carpeta aplication/ (con typo) se mantiene tal cual hasta refactor coordinado de los path aliases del monorepo.