Un linter de mensajes de commit con personalidad y humor matutino. Mantén tus commits claros, concisos y consistentes — como un buen café.
╭───────────────────────────────────────────╮
│ 🐓 ¡CLUCK! Tu commit necesita más café. │
╰───────────────────────────────────────────╯
Mensaje: "wip"
Problemas encontrados: 4
1. El asunto debe tener al menos 10 caracteres.
→ ¿Ni siquiera un sorbo de espresso? Agrega más detalle al asunto.
2. El asunto debe empezar con una letra mayúscula.
→ Amanece con mayúscula; los commits respetan el protocolo.
3. Empieza con un verbo imperativo como Add, Fix o Update.
→ Usa un verbo en imperativo: Add, Fix, Update, Remove, Refactor...
4. Evita palabras genéricas o de WIP en el asunto.
→ Evita palabras genéricas como 'fix' o 'wip'. Sé específico y claro.
☕️ Antes del café, todo es posible. Después, es obligatorio.
pip install clean-commitPara instalar en modo desarrollo con dependencias de test:
git clone https://github.com/tu-usuario/clean-commit.git
cd clean-commit
pip install -e .[test]clean-commit check "fix bug" # Falla con estilo
clean-commit check "Add user login" # Pasa sin problemasclean-commit check --message-file .git/COMMIT_EDITMSGclean-commit initEsto crea .git/hooks/commit-msg que valida cada commit automáticamente.
clean-commit init --force # Sobrescribe un hook existenteclean-commit status # Muestra si el hook está instalado
clean-commit uninstall-hook # Elimina el hookclean-commit rules- min_length: Longitud mínima del asunto (10 caracteres).
- max_length: Longitud máxima del asunto (72 caracteres).
- capital_letter: El asunto debe comenzar con mayúscula.
- imperative_mood: El asunto debe iniciar con un verbo imperativo.
- no_period_end: El asunto no debe terminar con punto.
- no_wip_banned_words: No usar palabras genéricas o WIP en el asunto.
Crea un archivo clean-commit.json o .clean-commit.json en la raíz de tu repositorio:
{
"min_length": 15,
"max_length": 72,
"banned_words": ["wip", "tarea", "arreglar"]
}El comando check detecta este archivo automáticamente. También puedes especificar la ruta:
clean-commit check --config mi-config.json "Add feature"| Clave | Tipo | Descripción | Default |
|---|---|---|---|
min_length |
int |
Longitud mínima del asunto | 10 |
max_length |
int |
Longitud máxima del asunto | 72 |
banned_words |
list[str] |
Palabras prohibidas en el asunto | ["wip","fix","cambios","update code","test"] |
| Regla | Descripción |
|---|---|
min_length |
El asunto debe tener al menos 10 caracteres |
max_length |
El asunto no debe superar 72 caracteres |
capital_letter |
El asunto debe comenzar con mayúscula |
imperative_mood |
Debe iniciar con Add, Fix, Update, Remove, Refactor, Merge, Bump, Clean, Improve, Document o Release |
no_period_end |
El asunto no debe terminar con punto |
no_wip_banned_words |
No usar "wip", "fix", "cambios", "update code" o "test" |
pytest tests/ -vclean-commit/
├── src/
│ └── clean_commit/
│ ├── __init__.py
│ ├── cli.py # Punto de entrada CLI
│ ├── linter.py # Motor de reglas de validación
│ ├── rules.py # Definición de reglas
│ ├── reporter.py # Mensajes de error con personalidad
│ ├── config.py # Carga de configuración JSON
│ └── git_hook.py # Instalación/desinstalación del hook
├── tests/
├── pyproject.toml
├── README.md
├── LICENSE
└── .gitignore
MIT © 2026 Sr Claude