claude-git-hooks 1.5.5 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -0
- package/README.md +102 -46
- package/bin/claude-hooks +121 -226
- package/lib/hooks/pre-commit.js +335 -0
- package/lib/hooks/prepare-commit-msg.js +283 -0
- package/lib/utils/claude-client.js +373 -0
- package/lib/utils/file-operations.js +422 -0
- package/lib/utils/git-operations.js +341 -0
- package/lib/utils/logger.js +141 -0
- package/lib/utils/prompt-builder.js +283 -0
- package/lib/utils/resolution-prompt.js +291 -0
- package/package.json +52 -40
- package/templates/pre-commit +58 -445
- package/templates/prepare-commit-msg +61 -151
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,93 @@ Todos los cambios notables en este proyecto se documentarán en este archivo.
|
|
|
5
5
|
El formato está basado en [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
y este proyecto adhiere a [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.1.0] - 2025-11-04
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- 🔄 Renombrado marcador de exclusión de línea única: `// SKIP-ANALYSIS` → `// SKIP_ANALYSIS_LINE` para consistencia de nomenclatura
|
|
13
|
+
- 🐛 Corregido bug crítico en orden de detección de patrones que impedía funcionamiento de `SKIP_ANALYSIS_BLOCK`
|
|
14
|
+
|
|
15
|
+
### Known Issues
|
|
16
|
+
|
|
17
|
+
- ⚠️ **SKIP_ANALYSIS marcado como EXPERIMENTAL/BROKEN**: Los marcadores de exclusión no funcionan correctamente porque el análisis se realiza sobre git diff en lugar del archivo completo. Marcadores agregados en commits anteriores no son detectados en cambios subsecuentes.
|
|
18
|
+
|
|
19
|
+
### Migration Guide
|
|
20
|
+
|
|
21
|
+
Si utilizabas `// SKIP-ANALYSIS` en tu código, reemplázalo por `// SKIP_ANALYSIS_LINE`:
|
|
22
|
+
|
|
23
|
+
```java
|
|
24
|
+
// Antes (deprecated):
|
|
25
|
+
// SKIP-ANALYSIS
|
|
26
|
+
private String legacyCode;
|
|
27
|
+
|
|
28
|
+
// Ahora:
|
|
29
|
+
// SKIP_ANALYSIS_LINE
|
|
30
|
+
private String legacyCode;
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
El marcador de bloque `// SKIP_ANALYSIS_BLOCK` permanece sin cambios.
|
|
34
|
+
|
|
35
|
+
## [2.0.1] - 2025-11-04
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- 🔧 Compatibilidad completa en Windows: corregidos line endings CRLF, validación WSL, y comparación de versiones sin dependencia bash
|
|
40
|
+
- 🔧 Operaciones de rutas utilizan módulo `path` nativo para mejor portabilidad multiplataforma
|
|
41
|
+
|
|
42
|
+
## [2.0.0] - 2025-10-30
|
|
43
|
+
|
|
44
|
+
### 🚀 BREAKING CHANGE: Migration from Bash to Node.js Hooks
|
|
45
|
+
|
|
46
|
+
**Why this change?**
|
|
47
|
+
The bash-based hooks created fundamental incompatibilities with Windows Git and IDE workflows (VSCode, IntelliJ), causing:
|
|
48
|
+
- Git worktree path conflicts (Windows paths incompatible with WSL)
|
|
49
|
+
- IDE commit failures when using Windows Git
|
|
50
|
+
- Developers forced to use WSL terminal exclusively, abandoning IDE Git features
|
|
51
|
+
|
|
52
|
+
### ✅ Advantages
|
|
53
|
+
|
|
54
|
+
**Cross-Platform Native Support**
|
|
55
|
+
- ✅ Works with Windows Git, WSL, and Bash
|
|
56
|
+
- ✅ No more worktree path issues
|
|
57
|
+
- ✅ Single codebase for all platforms
|
|
58
|
+
|
|
59
|
+
**Dramatically Improved Maintainability**
|
|
60
|
+
- ✅ JavaScript/Node.js: ~60-70% of developers proficient vs ~1-2% with bash/jq/sed/awk
|
|
61
|
+
- ✅ Modern tooling: ESLint, Prettier, Jest testing framework
|
|
62
|
+
- ✅ VS Code debugging support vs echo statements
|
|
63
|
+
|
|
64
|
+
**Professional Development Practices**
|
|
65
|
+
- ✅ Unit and integration testing with Jest
|
|
66
|
+
- ✅ Type safety optional (TypeScript)
|
|
67
|
+
- ✅ Consistent error handling patterns
|
|
68
|
+
|
|
69
|
+
### ⚠️ Disadvantages
|
|
70
|
+
|
|
71
|
+
- ⚠️ Initial migration effort
|
|
72
|
+
- ⚠️ Startup performance: +40-90ms overhead (~1% of total execution time)
|
|
73
|
+
|
|
74
|
+
### 🏆 Industry Success Cases
|
|
75
|
+
|
|
76
|
+
**Node.js Git Hooks - Proven Track Record:**
|
|
77
|
+
- **Husky**: 43k GitHub stars, 500+ contributors, 7M+ weekly npm downloads
|
|
78
|
+
- **lint-staged**: 12k stars, 200+ contributors
|
|
79
|
+
- **Commitizen**: 16k stars, industry standard
|
|
80
|
+
- **simple-git-hooks**: Fast, minimal, 1M+ weekly downloads
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
|
|
84
|
+
- 🔄 **Migrated from Bash to Node.js with ES6 modules** - Hooks now in `lib/hooks/*.js` with bash wrappers, removing jq/sed/awk dependencies
|
|
85
|
+
- 🌐 **Cross-platform support enabled** - Works on Windows Git Bash, WSL, Linux, and macOS with automatic Claude detection
|
|
86
|
+
- 🔧 **Platform compatibility** - CRLF-to-LF conversion during install, Windows path support (C:\ to /c/) in bash wrappers
|
|
87
|
+
|
|
88
|
+
### Migration Guide
|
|
89
|
+
|
|
90
|
+
Existing installations will continue working. To upgrade:
|
|
91
|
+
1. Run `claude-hooks update` to get v2.0.0
|
|
92
|
+
2. Run `claude-hooks install --force` to reinstall with Node.js hooks
|
|
93
|
+
3. No configuration changes needed - works transparently
|
|
94
|
+
|
|
8
95
|
## [1.5.5] - 2025-10-29
|
|
9
96
|
|
|
10
97
|
### Added
|
package/README.md
CHANGED
|
@@ -2,14 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
🚀 **Transforma tu flujo de desarrollo con IA**: análisis de código instantáneo, mensajes de commit automáticos y generación de PRs perfectas. Claude revisa tu código antes de cada commit, detecta issues críticos al estilo SonarQube, y genera toda la documentación que necesitas. ¿Lo mejor? Se ejecuta localmente sin contaminar tu CI/CD.
|
|
4
4
|
|
|
5
|
+
## ✨ Novedad v2.0.0 - Ahora Cross-Platform
|
|
6
|
+
|
|
7
|
+
**¡Nueva arquitectura!** Migración completa a Node.js con ES6 modules para soporte más universal:
|
|
8
|
+
- ✅ **Windows** - Git en Bash y Powershell
|
|
9
|
+
- ✅ **WSL** - Subsistema de Linux
|
|
10
|
+
- ✅ **Linux** - Funcionamiento nativo
|
|
11
|
+
- ✅ **Worktrees** - Compatible con git worktrees en cualquier entorno
|
|
12
|
+
- ✅ **IDEs** - Compatible con git manager de IntelliJ and VSCode -> mensaje de commit "auto" committea (y pushea si se quiere) con mensaje automático. Si el commit tiene problemas, se bloquea.
|
|
13
|
+
|
|
5
14
|
## 🎯 Características principales
|
|
6
15
|
|
|
7
16
|
- 🔍 **Análisis de código pre-commit**: Detecta issues críticos antes de que lleguen al repo
|
|
8
|
-
- 💬 **Mensajes de commit automáticos**: Escribe "auto" y Claude genera el mensaje
|
|
17
|
+
- 💬 **Mensajes de commit automáticos**: Escribe "auto" y Claude genera el mensaje
|
|
9
18
|
- 📋 **Generación de PRs**: Título, descripción y tests sugeridos con un solo comando
|
|
10
|
-
-
|
|
11
|
-
-
|
|
19
|
+
- ⚠️ **Skip inteligente** (EXPERIMENTAL/BROKEN): Exclusión de código con comentarios SKIP_ANALYSIS - no funciona correctamente con git diff
|
|
20
|
+
- 🕵️♂️ **Paralelización**: Análisis asincrónico de archivos con sub agentes
|
|
12
21
|
- 🔄 **Auto-actualización**: Se mantiene actualizado automáticamente
|
|
22
|
+
- 🌍 **Cross-platform**: Windows, WSL, macOS, Linux sin configuración especial
|
|
13
23
|
|
|
14
24
|
## 📋 CHEATSHEET
|
|
15
25
|
|
|
@@ -31,15 +41,15 @@ claude-hooks install --force --skip-auth
|
|
|
31
41
|
|
|
32
42
|
### 📦 Instalación y Gestión
|
|
33
43
|
|
|
34
|
-
|
|
44
|
+
✨ **v2.0.0+**: Funciona terminales WSL y Bash.
|
|
35
45
|
|
|
36
46
|
Se debe instalar el paquete globalmente, para luego gestionarlo localmente en cada repositorio.
|
|
37
47
|
|
|
38
48
|
```bash
|
|
39
|
-
#
|
|
49
|
+
# Instalar globalmente (desde cualquier terminal)
|
|
40
50
|
npm install -g claude-git-hooks
|
|
41
51
|
|
|
42
|
-
# Luego en cada proyecto
|
|
52
|
+
# Luego en cada proyecto
|
|
43
53
|
cd /tu/proyecto
|
|
44
54
|
claude-hooks install
|
|
45
55
|
|
|
@@ -75,10 +85,13 @@ git commit --no-verify -m "hotfix: corrección urgente"
|
|
|
75
85
|
git commit --amend
|
|
76
86
|
```
|
|
77
87
|
|
|
78
|
-
###
|
|
88
|
+
### ⚠️ Exclusión de Código del Análisis (EXPERIMENTAL/BROKEN)
|
|
79
89
|
|
|
80
90
|
```java
|
|
81
|
-
//
|
|
91
|
+
// NOTA: Este feature NO funciona correctamente
|
|
92
|
+
// Los marcadores no son detectados si fueron agregados en commits anteriores
|
|
93
|
+
|
|
94
|
+
// SKIP_ANALYSIS_LINE
|
|
82
95
|
private String legacyCode = "no analizar siguiente línea";
|
|
83
96
|
|
|
84
97
|
// SKIP_ANALYSIS_BLOCK
|
|
@@ -174,25 +187,50 @@ git commit -m "feat: implement multiple features"
|
|
|
174
187
|
|
|
175
188
|
**Best for:** Large commits (3+ files), refactoring tasks, feature branches
|
|
176
189
|
|
|
190
|
+
### 🎨 Personalización y Customización
|
|
191
|
+
|
|
192
|
+
**Archivos clave para modificar:**
|
|
193
|
+
- `.claude/CLAUDE_PRE_COMMIT_SONAR.md` - Criterios (backend/frontend/data/db)
|
|
194
|
+
- `.claude/CLAUDE_ANALYSIS_PROMPT_SONAR.md` - Template del prompt
|
|
195
|
+
- `lib/hooks/pre-commit.js` - CONFIG object (extensiones, límites, umbrales)
|
|
196
|
+
|
|
197
|
+
**Subagents (v1.5.5+)** - Para commits multi-archivo (3+), reduce análisis 60-70%:
|
|
198
|
+
```bash
|
|
199
|
+
export CLAUDE_USE_SUBAGENTS=true # Activar paralelo
|
|
200
|
+
export CLAUDE_SUBAGENT_MODEL=haiku # haiku/sonnet/opus
|
|
201
|
+
export CLAUDE_SUBAGENT_BATCH_SIZE=3 # Archivos simultáneos
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Ejemplo:**
|
|
205
|
+
```bash
|
|
206
|
+
vim .claude/CLAUDE_PRE_COMMIT_SONAR.md # Agregar reglas API REST/Spring Boot
|
|
207
|
+
```
|
|
208
|
+
|
|
177
209
|
## 🔧 Configuración Previa Importante
|
|
178
210
|
|
|
179
|
-
###
|
|
211
|
+
### Requisitos del Sistema
|
|
212
|
+
|
|
213
|
+
✨ **v2.0.0+**: Los hooks funcionan en cualquier terminal donde tengas:
|
|
214
|
+
|
|
215
|
+
- **Node.js** >= 16.9.0
|
|
216
|
+
- **Git** configurado
|
|
217
|
+
- **Claude CLI** instalado y autenticado
|
|
180
218
|
|
|
181
|
-
|
|
219
|
+
### Credenciales Git
|
|
220
|
+
|
|
221
|
+
Si es tu primera vez configurando git en esta terminal, configura tus credenciales:
|
|
182
222
|
|
|
183
223
|
```bash
|
|
184
|
-
# En WSL
|
|
185
224
|
git config --global user.name "Tu Nombre"
|
|
186
225
|
git config --global user.email "tu.email@ejemplo.com"
|
|
187
226
|
|
|
188
|
-
# Si usas
|
|
227
|
+
# Si usas credential helper (opcional)
|
|
189
228
|
git config --global credential.helper store
|
|
190
|
-
# O configura tu credential helper específico
|
|
191
229
|
```
|
|
192
230
|
|
|
193
231
|
## 🚀 Instalación
|
|
194
232
|
|
|
195
|
-
**
|
|
233
|
+
✨ **v2.0.0+**: Instalación cross-platform. Funciona en PowerShell, CMD, WSL, macOS Terminal, Linux shell.
|
|
196
234
|
|
|
197
235
|
```bash
|
|
198
236
|
# Instalar el paquete globalmente
|
|
@@ -203,15 +241,18 @@ cd tu-proyecto
|
|
|
203
241
|
claude-hooks install
|
|
204
242
|
```
|
|
205
243
|
|
|
206
|
-
El comando `claude-hooks install`
|
|
244
|
+
El comando `claude-hooks install` incluye:
|
|
207
245
|
|
|
208
|
-
- ✅ Verificación completa de dependencias del sistema
|
|
209
|
-
- ✅ Instalación automática de paquetes faltantes (jq, curl)
|
|
210
|
-
- ✅ Configuración de Git (line endings WSL/Windows)
|
|
246
|
+
- ✅ Verificación completa de dependencias del sistema (Node.js, Git, Claude CLI)
|
|
211
247
|
- ✅ Verificación de autenticación Claude con entretenimiento (omitible con `--skip-auth`)
|
|
212
|
-
- ✅ Instalación de hooks
|
|
248
|
+
- ✅ Instalación de hooks con arquitectura bash wrapper + Node.js
|
|
249
|
+
- ✅ Instalación de archivos de pautas y templates
|
|
213
250
|
- ✅ Actualización automática de .gitignore con archivos de Claude
|
|
214
251
|
|
|
252
|
+
**Nuevo en v2.0.0 - Soporte Cross-Platform:**
|
|
253
|
+
|
|
254
|
+
Auto-detecta plataforma, convierte CRLF→LF en install, busca Claude en WSL (Windows), instala bash wrappers que convierten rutas C:\ a /c/
|
|
255
|
+
|
|
215
256
|
**Opciones de instalación:**
|
|
216
257
|
|
|
217
258
|
- `--force`: Reinstala aunque los hooks ya existan
|
|
@@ -255,7 +296,7 @@ Si no existe un `.gitignore`, se creará uno nuevo. Si ya existe, las entradas s
|
|
|
255
296
|
|
|
256
297
|
### Hook pre-commit (Análisis de código)
|
|
257
298
|
|
|
258
|
-
1. **Intercepta cada intento de commit**
|
|
299
|
+
1. **Intercepta cada intento de commit**
|
|
259
300
|
2. **Extrae y filtra archivos modificados**:
|
|
260
301
|
- Solo analiza: Java, XML, properties, yml, yaml
|
|
261
302
|
- Omite archivos mayores a 100KB
|
|
@@ -309,21 +350,19 @@ Si no existe un `.gitignore`, se creará uno nuevo. Si ya existe, las entradas s
|
|
|
309
350
|
- **Modo debug**: `DEBUG=1 git commit` guarda respuestas en `debug-claude-response.json`
|
|
310
351
|
- **Análisis de PR**: Nuevo comando `analyze-diff` para generar información de Pull Requests
|
|
311
352
|
- **Validación de dependencias**: Verifica que Claude CLI esté autenticado antes de ejecutar
|
|
312
|
-
-
|
|
353
|
+
- **⚠️ Exclusión de código del análisis (EXPERIMENTAL/BROKEN)**: Los marcadores `// SKIP_ANALYSIS_LINE` y `// SKIP_ANALYSIS_BLOCK` no funcionan correctamente. El hook analiza git diff en lugar del archivo completo, por lo que marcadores agregados en commits anteriores no son detectados en cambios subsecuentes.
|
|
313
354
|
|
|
314
355
|
```java
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
@Autowired private LegacyService legacyService;
|
|
356
|
+
// NOTA: Este feature actualmente NO funciona de forma confiable
|
|
357
|
+
// SKIP_ANALYSIS_LINE
|
|
358
|
+
@Autowired private LegacyService legacyService;
|
|
318
359
|
|
|
319
|
-
//
|
|
320
|
-
// SKIP-ANALYSIS_BLOCK
|
|
360
|
+
// SKIP_ANALYSIS_BLOCK
|
|
321
361
|
@Deprecated
|
|
322
362
|
public void methodWithKnownIssues() {
|
|
323
|
-
|
|
324
|
-
System.out.println("Debug temporal");
|
|
363
|
+
System.out.println("Legacy code");
|
|
325
364
|
}
|
|
326
|
-
//
|
|
365
|
+
// SKIP_ANALYSIS_BLOCK
|
|
327
366
|
```
|
|
328
367
|
|
|
329
368
|
### Desactivar/Activar hooks
|
|
@@ -351,17 +390,17 @@ claude-hooks status
|
|
|
351
390
|
|
|
352
391
|
### Scripts
|
|
353
392
|
|
|
354
|
-
|
|
393
|
+
✨ **v2.0.0+**: Configuración en archivos Node.js dentro de `lib/hooks/`.
|
|
394
|
+
|
|
395
|
+
En `lib/hooks/pre-commit.js`:
|
|
355
396
|
|
|
356
397
|
- **`MAX_FILE_SIZE`**: Tamaño máximo de archivo a analizar (default: 100KB)
|
|
357
398
|
- **`MAX_FILES`**: Número máximo de archivos por commit (default: 10)
|
|
358
|
-
- **`
|
|
359
|
-
- **`GUIDELINES_FILE`**: Archivo de pautas (default: ".claude/CLAUDE_PRE_COMMIT_SONAR.md")
|
|
399
|
+
- **`ALLOWED_EXTENSIONS`**: Extensiones permitidas (default: .java, .xml, .properties, .yml, .yaml)
|
|
360
400
|
|
|
361
|
-
En
|
|
401
|
+
En `lib/hooks/prepare-commit-msg.js`:
|
|
362
402
|
|
|
363
403
|
- **`MAX_FILE_SIZE`**: Tamaño máximo para incluir diff completo (default: 100KB)
|
|
364
|
-
- **`CLAUDE_CLI`**: Comando de Claude CLI (default: "claude")
|
|
365
404
|
|
|
366
405
|
### Pautas de Evaluación
|
|
367
406
|
|
|
@@ -386,27 +425,42 @@ No hay... esto es la perfección hecha código.
|
|
|
386
425
|
|
|
387
426
|
### Estructura del Proyecto
|
|
388
427
|
|
|
428
|
+
✨ **v2.0.0+**: Nueva arquitectura modular con ES6 modules.
|
|
429
|
+
|
|
389
430
|
```
|
|
390
431
|
claude-git-hooks/
|
|
391
432
|
├── bin/
|
|
392
|
-
│ └── claude-hooks # CLI principal
|
|
433
|
+
│ └── claude-hooks # CLI principal (ES6 modules)
|
|
434
|
+
├── lib/ # 🆕 Código Node.js modular
|
|
435
|
+
│ ├── hooks/
|
|
436
|
+
│ │ ├── pre-commit.js # Hook de análisis (Node.js)
|
|
437
|
+
│ │ └── prepare-commit-msg.js # Hook de mensajes (Node.js)
|
|
438
|
+
│ └── utils/
|
|
439
|
+
│ ├── logger.js # Sistema de logging centralizado
|
|
440
|
+
│ ├── git-operations.js # Operaciones git abstractas
|
|
441
|
+
│ ├── file-operations.js # I/O con filtro SKIP_ANALYSIS_LINE
|
|
442
|
+
│ ├── claude-client.js # Cliente Claude CLI
|
|
443
|
+
│ ├── prompt-builder.js # Constructor de prompts
|
|
444
|
+
│ └── resolution-prompt.js # Generador de resolution prompts
|
|
393
445
|
├── templates/
|
|
394
|
-
│ ├── pre-commit #
|
|
395
|
-
│ ├── prepare-commit-msg #
|
|
446
|
+
│ ├── pre-commit # Bash wrapper (llama a lib/hooks/pre-commit.js)
|
|
447
|
+
│ ├── prepare-commit-msg # Bash wrapper (llama a lib/hooks/prepare-commit-msg.js)
|
|
396
448
|
│ ├── check-version.sh # Script de verificación de versión
|
|
397
|
-
│ ├── CLAUDE_PRE_COMMIT_SONAR.md # Pautas SonarQube
|
|
449
|
+
│ ├── CLAUDE_PRE_COMMIT_SONAR.md # Pautas SonarQube
|
|
398
450
|
│ ├── CLAUDE_ANALYSIS_PROMPT_SONAR.md # Template de prompt para análisis
|
|
399
451
|
│ └── CLAUDE_RESOLUTION_PROMPT.md # Template para resolución de issues
|
|
452
|
+
├── test/ # 🆕 Tests unitarios con Jest
|
|
453
|
+
│ └── unit/
|
|
454
|
+
│ └── logger.test.js # Tests del logger
|
|
400
455
|
├── .claude/ # Directorio de configuración local (gitignore)
|
|
401
456
|
│ └── settings.local.json # Configuración local del usuario
|
|
402
|
-
├──
|
|
457
|
+
├── jest.config.js # 🆕 Configuración Jest para ES6
|
|
458
|
+
├── .eslintrc.json # 🆕 Configuración ESLint
|
|
459
|
+
├── .prettierrc.json # 🆕 Configuración Prettier
|
|
460
|
+
├── package.json # Configuración NPM (type: "module")
|
|
403
461
|
├── package-lock.json # Lock file de NPM
|
|
404
462
|
├── README.md # Este archivo
|
|
405
|
-
├── README-NPM.md # Documentación para publicación NPM
|
|
406
463
|
├── CHANGELOG.md # Historial de versiones
|
|
407
|
-
├── PUBLISH.md # Guía de publicación
|
|
408
|
-
├── CLAUDE_PRE_COMMIT_SONAR.md # Pautas de evaluación (legacy)
|
|
409
|
-
├── pre-commit # Hook principal (legacy)
|
|
410
464
|
└── .gitignore # Archivos ignorados por git
|
|
411
465
|
```
|
|
412
466
|
|
|
@@ -432,10 +486,12 @@ claude-hooks install
|
|
|
432
486
|
|
|
433
487
|
#### 1. Modificar Hooks
|
|
434
488
|
|
|
435
|
-
|
|
489
|
+
✨ **v2.0.0+**: La lógica de los hooks está en `lib/hooks/`:
|
|
436
490
|
|
|
437
|
-
- `
|
|
438
|
-
- `
|
|
491
|
+
- `lib/hooks/pre-commit.js` - Lógica de análisis de código (Node.js ES6)
|
|
492
|
+
- `lib/hooks/prepare-commit-msg.js` - Lógica de generación de mensajes (Node.js ES6)
|
|
493
|
+
- `templates/pre-commit` - Bash wrapper que llama al script Node.js
|
|
494
|
+
- `templates/prepare-commit-msg` - Bash wrapper que llama al script Node.js
|
|
439
495
|
|
|
440
496
|
#### 2. Probar Localmente
|
|
441
497
|
|