Skip to main content

Formato Obligatorio

Reglas y Componentes

  1. Type: Define el tipo de cambio. Debe ser uno de los tipos permitidos listados abajo.
  2. Scope: Debe proporcionarse y estar encerrado entre paréntesis. Indica la parte lógica del código base afectada (ej., core, services, radicacion, asignacion, auth, ds-tw). Elige el scope más relevante.
  3. Subject: Descripción concisa (< 50 caracteres recomendado) del cambio en modo imperativo y minúsculas (ej., “add,” “fix,” “update”). No debe terminar con un punto.
  4. Body (Opcional): Úsalo para proporcionar contexto, motivación o detalles. Sepáralo del subject con una línea en blanco. Ajusta las líneas a 72 caracteres.
  5. Footer (Opcional): Úsalo para referenciar IDs de issues (ej., Refs ADO-123, Fixes #456) y es obligatorio para notificaciones de BREAKING CHANGE:. Sepáralo del body con una línea en blanco.

Tipos de Commit Estándar (con Ejemplos)

  • feat(<scope>): <description>
    • Propósito: Introduce una nueva característica o funcionalidad visible para el usuario final.
    • Ejemplo: feat(radicacion): add drag-and-drop file upload for expedientes
  • 🐛 fix(<scope>): <description>
    • Propósito: Corrige un error (bug) en el código base.
    • Ejemplo: fix(services): handle null priority in DefaultAsignacionService
  • 📚 docs(<scope>): <description>
    • Propósito: Cambios relacionados únicamente con la documentación (READMEs, guías, comentarios en el código).
    • Ejemplo: docs(core): update UserService interface method descriptions
  • 🎨 style(<scope>): <description>
    • Propósito: Ajustes de estilo de código (formato, espacios en blanco, punto y coma) sin cambiar la lógica. Aplicable también al uso o configuración del Design System (ds-tw scope si se modifica el DS mismo).
    • Ejemplo: style(radicacion): apply consistent padding using ds-tw vars
  • ♻️ refactor(<scope>): <description>
    • Propósito: Reestructuración de código existente sin cambiar su comportamiento externo (mejorar legibilidad, extraer métodos, etc.).
    • Ejemplo: refactor(services): extract common validation logic in UserService implementations
  • ⚡️ perf(<scope>): <description>
    • Propósito: Cambios en el código destinados específicamente a mejorar el rendimiento.
    • Ejemplo: perf(web): optimize image loading on dashboard page using next/image
  • 🧪 test(<scope>): <description>
    • Propósito: Añadir nuevas pruebas o modificar las existentes. Sin cambios en el código de producción.
    • Ejemplo: test(services): add unit tests for DefaultUserService
  • 🏗️ build(<scope>): <description>
    • Propósito: Cambios que impactan el proceso de build, dependencias o configuración del proyecto (ej., pnpm, config de Next.js, Docker, config de Turborepo).
    • Ejemplo: build(deps): upgrade xstate to v5
  • ⚙️ ci(<scope>): <description>
    • Propósito: Modificaciones a la configuración o scripts de Integración Continua/Despliegue Continuo (ej., GitHub Actions, Azure Pipelines).
    • Ejemplo: ci: add type checking stage to github actions workflow
  • 🧹 chore(<scope>): <description>
    • Propósito: Tareas rutinarias o mantenimiento que no encajan en otros tipos (ej., actualizar .gitignore, configuración de herramientas, tareas de release).
    • Ejemplo: chore: update eslint configuration rules for new plugin
  • ⏪️ revert(<scope>): <description>
    • Propósito: Revierte un commit anterior. El subject debe indicar claramente qué se está revirtiendo.
    • Ejemplo: revert: feat(radicacion): remove experimental search feature
    • El body DEBE explicar la razón de la reversión y referenciar el hash del commit original.
Ejemplos de Scope: (core), (hooks), (config), (services), (machines), (validation), (radicacion), (asignacion), (auth), (deps), (ci), (docs), (release), (ds-tw). Selecciona el scope más específico y relevante.

BREAKING CHANGES

  • Cualquier commit que introduzca un cambio incompatible hacia atrás (backward-incompatible) debe incluir una sección de footer BREAKING CHANGE:.
  • Esta sección debe comenzar con las palabras exactas BREAKING CHANGE:, seguidas de una descripción detallada del cambio, la justificación y cualquier instrucción de migración necesaria.