conventional-commits · git:20261021.863f25a · 2026-10-21 · sha256 aac4393b071b5848

conventional-commits git:20261021.863f25aA

Immutable. This exact content never changes and is served at /api/v1/blob/aac4393b071b5848.

---
name: conventional-commits
description: Use for ALL commits — enforces incremental commits with Conventional Commits prefixes and descriptive messages in Spanish.
---

# Conventional Commits

## Overview

Hacer commits pequeños e incrementales tras cada cambio lógico completado. Usar prefijos estandarizados para facilitar la navegación del historial y la reversión selectiva.

## When to Use

**Siempre.** Cada commit debe seguir esta convención, desde el primer cambio hasta el final de la sesión.

## Regla de oro: un cambio lógico = un commit

Commitear inmediatamente después de completar UN cambio atómico:

- ✅ Spec escrita → `docs: spec de registro de oveja`
- ✅ Test implementado → `test: validar crotal duplicado en compra`
- ✅ Código implementado → `feat: registrar compra individual`
- ✅ ADR creado → `docs: ADR 0001 - DTOs con factory methods`
- ✅ Refactor → `refactor: extrae validación de crotal a método`
- ❌ NO acumular: "Agrega spec, test, código, ADR y arregla bug" en un solo commit

## Prefijos

| Prefijo | Cuándo usarlo | Ejemplo |
|---------|---------------|---------|
| `feat:` | Nueva feature de dominio (código) | `feat: registrar parto con múltiples crías` |
| `test:` | Tests nuevos o modificados | `test: rechazar parto con madre en fase incorrecta` |
| `docs:` | Specs, ADRs, documentación (no código) | `docs: spec de fases de ciclo de vida` |
| `refactor:` | Cambio de estructura sin cambio funcional | `refactor: extrae máquina de estados a método privado` |
| `fix:` | Corrección de bug | `fix: validar crotal nulo antes de comparar` |
| `chore:` | Config, build, archivos de proyecto | `chore: actualiza skills-lock.json` |

## Flujo de trabajo

1. Hacer un cambio atómico
2. `git add -A`
3. `git commit -m "<prefijo>: <mensaje descriptivo en español>"`
4. Repetir

No esperar al final de la sesión para commitear. Los commits incrementales permiten revertir cambios específicos sin afectar al resto.

## Byline de rol (cuando el commit lo ejecuta un agente)

Los commits ejecutados por un agente llevan el rol como byline al final del body:

```text
git commit -m "feat: registrar parto con múltiples crías

By ddd-engineer."
```

- Solo cuando el commit lo ejecuta un agente. Los commits del usuario no llevan byline.
- El byline se añade al **body**, nunca al título (el título conserva el prefijo conventional).
- Ejemplo de body: `By ddd-analyst.`, `By ddd-engineer.`, `By qa-analyst.`