claude-git-hooks 2.1.0 → 2.3.1

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +240 -0
  2. package/README.md +280 -78
  3. package/bin/claude-hooks +295 -119
  4. package/lib/config.js +164 -0
  5. package/lib/hooks/pre-commit.js +180 -67
  6. package/lib/hooks/prepare-commit-msg.js +47 -41
  7. package/lib/utils/claude-client.js +107 -16
  8. package/lib/utils/claude-diagnostics.js +266 -0
  9. package/lib/utils/file-operations.js +1 -65
  10. package/lib/utils/file-utils.js +65 -0
  11. package/lib/utils/installation-diagnostics.js +145 -0
  12. package/lib/utils/package-info.js +75 -0
  13. package/lib/utils/preset-loader.js +214 -0
  14. package/lib/utils/prompt-builder.js +83 -67
  15. package/lib/utils/resolution-prompt.js +12 -2
  16. package/package.json +49 -50
  17. package/templates/ANALYZE_DIFF.md +33 -0
  18. package/templates/COMMIT_MESSAGE.md +24 -0
  19. package/templates/CUSTOMIZATION_GUIDE.md +656 -0
  20. package/templates/SUBAGENT_INSTRUCTION.md +1 -0
  21. package/templates/config.example.json +41 -0
  22. package/templates/pre-commit +40 -2
  23. package/templates/prepare-commit-msg +40 -2
  24. package/templates/presets/ai/ANALYSIS_PROMPT.md +133 -0
  25. package/templates/presets/ai/PRE_COMMIT_GUIDELINES.md +176 -0
  26. package/templates/presets/ai/config.json +12 -0
  27. package/templates/presets/ai/preset.json +42 -0
  28. package/templates/presets/backend/ANALYSIS_PROMPT.md +85 -0
  29. package/templates/presets/backend/PRE_COMMIT_GUIDELINES.md +87 -0
  30. package/templates/presets/backend/config.json +12 -0
  31. package/templates/presets/backend/preset.json +49 -0
  32. package/templates/presets/database/ANALYSIS_PROMPT.md +114 -0
  33. package/templates/presets/database/PRE_COMMIT_GUIDELINES.md +143 -0
  34. package/templates/presets/database/config.json +12 -0
  35. package/templates/presets/database/preset.json +38 -0
  36. package/templates/presets/default/config.json +12 -0
  37. package/templates/presets/default/preset.json +53 -0
  38. package/templates/presets/frontend/ANALYSIS_PROMPT.md +99 -0
  39. package/templates/presets/frontend/PRE_COMMIT_GUIDELINES.md +95 -0
  40. package/templates/presets/frontend/config.json +12 -0
  41. package/templates/presets/frontend/preset.json +50 -0
  42. package/templates/presets/fullstack/ANALYSIS_PROMPT.md +107 -0
  43. package/templates/presets/fullstack/CONSISTENCY_CHECKS.md +147 -0
  44. package/templates/presets/fullstack/PRE_COMMIT_GUIDELINES.md +125 -0
  45. package/templates/presets/fullstack/config.json +12 -0
  46. package/templates/presets/fullstack/preset.json +55 -0
  47. package/templates/shared/ANALYSIS_PROMPT.md +103 -0
  48. package/templates/shared/ANALYZE_DIFF.md +33 -0
  49. package/templates/shared/COMMIT_MESSAGE.md +24 -0
  50. package/templates/shared/PRE_COMMIT_GUIDELINES.md +145 -0
  51. package/templates/shared/RESOLUTION_PROMPT.md +32 -0
  52. package/templates/check-version.sh +0 -266
package/README.md CHANGED
@@ -5,6 +5,7 @@
5
5
  ## ✨ Novedad v2.0.0 - Ahora Cross-Platform
6
6
 
7
7
  **¡Nueva arquitectura!** Migración completa a Node.js con ES6 modules para soporte más universal:
8
+
8
9
  - ✅ **Windows** - Git en Bash y Powershell
9
10
  - ✅ **WSL** - Subsistema de Linux
10
11
  - ✅ **Linux** - Funcionamiento nativo
@@ -16,8 +17,9 @@
16
17
  - 🔍 **Análisis de código pre-commit**: Detecta issues críticos antes de que lleguen al repo
17
18
  - 💬 **Mensajes de commit automáticos**: Escribe "auto" y Claude genera el mensaje
18
19
  - 📋 **Generación de PRs**: Título, descripción y tests sugeridos con un solo comando
20
+ - 🎯 **Presets por tech-stack**: 6 configuraciones optimizadas (backend, frontend, fullstack, database, ai, default) - v2.3.0+
19
21
  - ⚠️ **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
22
+ - 🚀 **Parallel Analysis**: Multiple Claude CLI processes analyzing file batches simultaneously (v2.2.0+)
21
23
  - 🔄 **Auto-actualización**: Se mantiene actualizado automáticamente
22
24
  - 🌍 **Cross-platform**: Windows, WSL, macOS, Linux sin configuración especial
23
25
 
@@ -37,6 +39,15 @@ claude-hooks analyze-diff develop
37
39
 
38
40
  # Reinstalar durante desarrollo (después de npm link)
39
41
  claude-hooks install --force --skip-auth
42
+
43
+ # Listar presets
44
+ claude-hooks presets
45
+
46
+ # Seleccionar preset
47
+ claude-hooks --set-preset <name>
48
+
49
+ # Mostrar preset actual
50
+ claude-hooks preset current
40
51
  ```
41
52
 
42
53
  ### 📦 Instalación y Gestión
@@ -102,25 +113,126 @@ public void methodToIgnore() {
102
113
  // SKIP_ANALYSIS_BLOCK
103
114
  ```
104
115
 
105
- ### 🔧 Configuración Avanzada
116
+ ### 🔧 Configuración Avanzada (v2.2.0+)
106
117
 
107
118
  ```bash
108
- # Archivos de configuración
119
+ # Configuración vía .claude/config.json
109
120
  .claude/
110
- ├── CLAUDE_PRE_COMMIT_SONAR.md # Personalizar criterios
111
- ├── CLAUDE_ANALYSIS_PROMPT_SONAR.md # Modificar prompt
112
- └── settings.local.json # Configuración local
113
-
114
- # Variables de entorno
115
- export CLAUDE_ANALYSIS_MODE=sonarqube # Modo de análisis
116
- export CLAUDE_DEBUG=true # Debug detallado
117
-
118
- # Subagent configuration (parallel analysis for multiple files)
119
- export CLAUDE_USE_SUBAGENTS=true # Enable subagent parallel analysis
120
- export CLAUDE_SUBAGENT_MODEL=haiku # Model: haiku (fast), sonnet (balanced), opus (thorough)
121
- export CLAUDE_SUBAGENT_BATCH_SIZE=3 # Parallel subagents per batch (default: 3)
121
+ ├── config.json # Configuración principal (v2.2.0+)
122
+ ├── CLAUDE_PRE_COMMIT_SONAR.md # Personalizar criterios (override)
123
+ └── CLAUDE_ANALYSIS_PROMPT_SONAR.md # Modificar prompt (override)
124
+
125
+ # Ejemplo de config.json (todas las opciones son opcionales)
126
+ cat > .claude/config.json << 'EOF'
127
+ {
128
+ "preset": "backend",
129
+ "analysis": {
130
+ "maxFileSize": 150000,
131
+ "maxFiles": 12,
132
+ "timeout": 150000
133
+ },
134
+ "commitMessage": {
135
+ "autoKeyword": "auto",
136
+ "timeout": 180000
137
+ },
138
+ "subagents": {
139
+ "enabled": true,
140
+ "model": "haiku",
141
+ "batchSize": 3
142
+ },
143
+ "system": {
144
+ "debug": true
145
+ }
146
+ }
147
+ EOF
148
+ ```
149
+
150
+ #### 🎯 Presets Disponibles
151
+
152
+ | Preset | Extensiones de Archivo | Caso de Uso | Tech Stack |
153
+ | ------------- | -------------------------------------------------------------------------- | ---------------- | ---------------------------- |
154
+ | **backend** | `.java`, `.xml`, `.yml`, `.yaml` | APIs Spring Boot | Spring Boot, JPA, SQL Server |
155
+ | **frontend** | `.js`, `.jsx`, `.ts`, `.tsx`, `.css`, `.scss`, `.html` | Apps React | React, Redux, Material-UI |
156
+ | **fullstack** | Todos backend + frontend | Apps full-stack | Spring Boot + React |
157
+ | **database** | `.sql` | Scripts de BD | SQL Server, T-SQL |
158
+ | **ai** | `.js`, `.json`, `.md`, `.sh` | Herramientas CLI | Node.js, Claude API |
159
+ | **default** | `.js`, `.sh`, `.py`, `.rb`, `.pl`, `.sql`, `.yaml`, `.json`, `.xml`, `.md` | Propósito general| Lenguajes mixtos |
160
+
161
+ ---
162
+
163
+ #### 🔍 Qué Verifica Cada Preset
164
+
165
+ **Backend (Spring Boot + SQL Server)**
166
+
167
+ - ✅ Diseño de API REST y métodos HTTP
168
+ - ✅ Entidades JPA y repositorios
169
+ - ✅ Seguridad (OWASP Top 10)
170
+ - ✅ Prevención de inyección SQL
171
+ - ✅ Gestión de transacciones
172
+ - ✅ Mapeos DTO
173
+ - ✅ Mejores prácticas Spring Security
174
+
175
+ **Frontend (React + Material-UI)**
176
+
177
+ - ✅ Mejores prácticas de hooks React
178
+ - ✅ Diseño de componentes y reusabilidad
179
+ - ✅ Patrones de gestión de estado
180
+ - ✅ Prevención XSS
181
+ - ✅ Optimización de rendimiento
182
+ - ✅ Accesibilidad (a11y)
183
+ - ✅ Error boundaries
184
+
185
+ **Fullstack (Spring Boot + React)**
186
+
187
+ - ✅ **Consistencia de contrato API** (prioridad)
188
+ - ✅ Flujo de datos (BD → API → UI)
189
+ - ✅ Autenticación entre capas
190
+ - ✅ Consistencia en manejo de errores
191
+ - ✅ Todas las verificaciones backend
192
+ - ✅ Todas las verificaciones frontend
193
+
194
+ **Database (SQL Server)**
195
+
196
+ - ✅ Riesgos de inyección SQL
197
+ - ✅ UPDATE/DELETE sin WHERE
198
+ - ✅ Índices faltantes
199
+ - ✅ Rendimiento de consultas
200
+ - ✅ Manejo de transacciones
201
+ - ✅ Restricciones de integridad de datos
202
+
203
+ **AI (Node.js + Claude)**
204
+
205
+ - ✅ Mejores prácticas Claude API
206
+ - ✅ Calidad de ingeniería de prompts
207
+ - ✅ Experiencia de usuario CLI
208
+ - ✅ Seguridad de operaciones Git
209
+ - ✅ Compatibilidad multiplataforma
210
+ - ✅ Protección de API key
211
+
212
+ **Default (Propósito general)**
213
+
214
+ - ✅ Fundamentos de calidad de código
215
+ - ✅ Fundamentos de seguridad
216
+ - ✅ Manejo de errores
217
+ - ✅ Mejores prácticas por lenguaje
218
+ - ✅ Mantenibilidad
219
+
220
+ ---
221
+
222
+ ##### ⚙️ Prioridad de Configuración
223
+
224
+ ```
225
+ defaults (lib/config.js)
226
+
227
+ user config (.claude/config.json) ← General preferences
228
+
229
+ preset config (.claude/presets/{name}/config.json) ← MÁXIMA PRIORIDAD (tech-stack specific)
122
230
  ```
123
231
 
232
+ **Rationale**: User sets general preferences, preset provides tech-stack-specific overrides.
233
+
234
+ **Nota v2.2.0+:** Variables de entorno ya NO son soportadas. Usar `.claude/config.json` en su lugar.
235
+
124
236
  ### 🎯 Casos de Uso Específicos
125
237
 
126
238
  ```bash
@@ -148,60 +260,84 @@ git commit -m "fix: resolver issues"
148
260
  1. **Mensaje automático**: Usa `"auto"` como mensaje para que Claude lo genere
149
261
  2. **Skip auth**: Usa `--skip-auth` en CI/CD o desarrollo local
150
262
  3. **Force install**: Usa `--force` para reinstalar sin confirmación
151
- 4. **Debug**: Activa `CLAUDE_DEBUG=true` para ver detalles completos
263
+ 4. **Debug**: Activa en `.claude/config.json`: `{"system": {"debug": true}}`
152
264
  5. **Archivos grandes**: Se omiten automáticamente archivos > 100KB
153
- 6. **Límite de archivos**: Máximo 10 archivos por commit
265
+ 6. **Límite de archivos**: Máximo 10 archivos por commit (configurable)
154
266
 
155
- ### 🚀 Parallel Analysis with Subagents (NEW in v1.5.5)
267
+ ### 🚀 Parallel Analysis (v2.2.0+)
156
268
 
157
- **When analyzing 3+ files**, enable subagents for faster parallel processing:
269
+ **When analyzing 3+ files**, parallel execution runs multiple Claude CLI processes simultaneously for faster analysis:
158
270
 
159
271
  ```bash
160
- # Enable subagent parallel analysis
161
- export CLAUDE_USE_SUBAGENTS=true
162
-
163
- # Optional: Choose model (default: haiku for speed)
164
- export CLAUDE_SUBAGENT_MODEL=haiku # Fast & cheap
165
- export CLAUDE_SUBAGENT_MODEL=sonnet # Balanced quality/speed
166
- export CLAUDE_SUBAGENT_MODEL=opus # Maximum quality
272
+ # Configure in .claude/config.json
273
+ {
274
+ "subagents": {
275
+ "enabled": true,
276
+ "model": "haiku",
277
+ "batchSize": 2
278
+ }
279
+ }
280
+ ```
167
281
 
168
- # Optional: Adjust batch size (default: 3 files at a time)
169
- export CLAUDE_SUBAGENT_BATCH_SIZE=3
282
+ **Model options:**
170
283
 
171
- # Now commits will use parallel analysis automatically
172
- git commit -m "feat: implement multiple features"
173
- ```
284
+ - `haiku` - Fast & cheap (default, recommended)
285
+ - `sonnet` - Balanced quality/speed
286
+ - `opus` - Maximum quality (slower)
174
287
 
175
288
  **How batching works:**
176
- - `BATCH_SIZE=1` with 4 files → 4 sequential batches (1 subagent each)
177
- - `BATCH_SIZE=3` with 4 files → 2 batches (3 parallel, then 1)
178
- - `BATCH_SIZE=4` with 4 files → 1 batch (all 4 in parallel)
179
- - Batch size is validated automatically (minimum: 1)
180
289
 
181
- **How it works:**
182
- - Each file is analyzed by a dedicated Claude subagent
183
- - Files are processed in batches for optimal performance
184
- - Results are consolidated automatically into single response
185
- - Shows execution time for all operations
186
- - Uses one-line prompt injection - no complex architecture changes
290
+ - Files are split into batches of size `batchSize`
291
+ - Each batch runs in a separate Claude CLI process
292
+ - All batches execute in parallel (true OS-level parallelism)
293
+ - Results are consolidated automatically
187
294
 
188
- **Best for:** Large commits (3+ files), refactoring tasks, feature branches
295
+ **Examples with 4 files:**
296
+
297
+ - `batchSize: 1` → 4 parallel Claude processes (1 file each) - **fastest**
298
+ - `batchSize: 2` → 2 parallel Claude processes (2 files each) - **balanced**
299
+ - `batchSize: 4` → 1 process (all files) - no parallelization
300
+
301
+ **Speed improvement:**
302
+
303
+ - Sequential: 60s per file × 4 = 240s total
304
+ - Parallel (batch=1): max(60s) = 60s total ✅ **4x faster**
305
+
306
+ **Console output:**
307
+
308
+ ```
309
+ 🚀 PARALLEL EXECUTION: 4 Claude processes
310
+ ⚡ Launching batch 1/4...
311
+ ⚡ Launching batch 2/4...
312
+ ⚡ Launching batch 3/4...
313
+ ⚡ Launching batch 4/4...
314
+ ⏳ Waiting for all batches to complete...
315
+
316
+ ✅ PARALLEL EXECUTION COMPLETE: 4 results in 62.5s
317
+ ```
318
+
319
+ **Best for:** Large commits (3+ files), refactoring, multi-file features
189
320
 
190
321
  ### 🎨 Personalización y Customización
191
322
 
192
323
  **Archivos clave para modificar:**
324
+
325
+ - `.claude/config.json` - Configuración principal (v2.2.0+)
193
326
  - `.claude/CLAUDE_PRE_COMMIT_SONAR.md` - Criterios (backend/frontend/data/db)
194
327
  - `.claude/CLAUDE_ANALYSIS_PROMPT_SONAR.md` - Template del prompt
195
- - `lib/hooks/pre-commit.js` - CONFIG object (extensiones, límites, umbrales)
196
328
 
197
- **Subagents (v1.5.5+)** - Para commits multi-archivo (3+), reduce análisis 60-70%:
329
+ **Crear o modificar presets personalizados:**
330
+
198
331
  ```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
332
+ # Ver guía completa de customización
333
+ cat templates/CUSTOMIZATION_GUIDE.md
334
+
335
+ # O en GitHub
336
+ # https://github.com/pablorovito/claude-git-hooks/blob/main/templates/CUSTOMIZATION_GUIDE.md
202
337
  ```
203
338
 
204
339
  **Ejemplo:**
340
+
205
341
  ```bash
206
342
  vim .claude/CLAUDE_PRE_COMMIT_SONAR.md # Agregar reglas API REST/Spring Boot
207
343
  ```
@@ -268,9 +404,9 @@ El comando `claude-hooks install` crea los siguientes archivos y directorios:
268
404
  2. **`.git/hooks/prepare-commit-msg`** - Hook de generación de mensajes
269
405
  3. **`.git/hooks/check-version.sh`** - Script de verificación de versión
270
406
  4. **`.claude/`** - Directorio para archivos de configuración
271
- - `CLAUDE_PRE_COMMIT_SONAR.md` - Pautas de evaluación SonarQube
272
- - `CLAUDE_ANALYSIS_PROMPT_SONAR.md` - Template de prompt para análisis SonarQube
273
- - `CLAUDE_RESOLUTION_PROMPT.md` - Template para prompt de resolución AI
407
+ - `CLAUDE_PRE_COMMIT_SONAR.md` - Pautas de evaluación SonarQube
408
+ - `CLAUDE_ANALYSIS_PROMPT_SONAR.md` - Template de prompt para análisis SonarQube
409
+ - `CLAUDE_RESOLUTION_PROMPT.md` - Template para prompt de resolución AI
274
410
 
275
411
  ### Actualización automática de .gitignore
276
412
 
@@ -298,21 +434,21 @@ Si no existe un `.gitignore`, se creará uno nuevo. Si ya existe, las entradas s
298
434
 
299
435
  1. **Intercepta cada intento de commit**
300
436
  2. **Extrae y filtra archivos modificados**:
301
- - Solo analiza: Java, XML, properties, yml, yaml
302
- - Omite archivos mayores a 100KB
303
- - Límite de 10 archivos por commit
437
+ - Solo analiza: Java, XML, properties, yml, yaml
438
+ - Omite archivos mayores a 100KB
439
+ - Límite de 10 archivos por commit
304
440
  3. **Construye prompt inteligente**:
305
- - Usa template de prompt desde `.claude/CLAUDE_ANALYSIS_PROMPT*.md`
306
- - Lee las pautas desde `.claude/CLAUDE_PRE_COMMIT*.md`
307
- - Incluye el diff completo para archivos nuevos
308
- - Muestra solo cambios para archivos existentes
441
+ - Usa template de prompt desde `.claude/CLAUDE_ANALYSIS_PROMPT*.md`
442
+ - Lee las pautas desde `.claude/CLAUDE_PRE_COMMIT*.md`
443
+ - Incluye el diff completo para archivos nuevos
444
+ - Muestra solo cambios para archivos existentes
309
445
  4. **Envía a Claude CLI para revisión**
310
446
  5. **Procesa respuesta JSON estructurada**:
311
- - blockingIssues siempre como objetos con localización precisa
312
- - verifica `QUALITY_GATE`, muestra métricas y issues por severidad
447
+ - blockingIssues siempre como objetos con localización precisa
448
+ - verifica `QUALITY_GATE`, muestra métricas y issues por severidad
313
449
  6. **Decisión final**:
314
- - Si hay problemas críticos → genera prompt AI de resolución y bloquea commit
315
- - Si todo está bien → commit procede
450
+ - Si hay problemas críticos → genera prompt AI de resolución y bloquea commit
451
+ - Si todo está bien → commit procede
316
452
  7. **Generación de Prompt de Resolución AI** (opcional): Cuando se detectan problemas críticos:
317
453
 
318
454
  - Se genera automáticamente un archivo `claude_resolution_prompt.md`
@@ -323,28 +459,28 @@ Si no existe un `.gitignore`, se creará uno nuevo. Si ya existe, las entradas s
323
459
  ### Hook prepare-commit-msg (Generación automática de mensajes)
324
460
 
325
461
  1. **Se activa cuando el mensaje es**:
326
- - `"auto"`
462
+ - `"auto"`
327
463
  2. **Analiza los cambios del staging area**:
328
- - Lista archivos modificados con estadísticas
329
- - Incluye diffs completos para archivos < 100KB
464
+ - Lista archivos modificados con estadísticas
465
+ - Incluye diffs completos para archivos < 100KB
330
466
  3. **Genera mensaje en formato Conventional Commits**:
331
- - Determina tipo: feat, fix, docs, style, refactor, test, chore
332
- - Crea título conciso y descriptivo
333
- - Añade body con detalles si es necesario
467
+ - Determina tipo: feat, fix, docs, style, refactor, test, chore
468
+ - Crea título conciso y descriptivo
469
+ - Añade body con detalles si es necesario
334
470
  4. **Manejo de errores**:
335
- - Si falla la generación → cancela el commit completamente
336
- - No usa mensajes genéricos de fallback
471
+ - Si falla la generación → cancela el commit completamente
472
+ - No usa mensajes genéricos de fallback
337
473
 
338
474
  ### Características adicionales
339
475
 
340
476
  - **Generación de información para Pull Requests**: `claude-hooks analyze-diff [branch]` para comparar rama local con rama origin, propone nombre para rama actual, título y detalles para pull request, da tips para verificar trabajo. Si se especifica branch, compara con origin/branch. Si no, compara con origin de la rama actual. Este comando genera automáticamente:
341
- - 📝 Título de PR conciso (máx. 72 caracteres)
342
- - 📄 Descripción detallada con markdown
343
- - 🌿 Nombre de rama sugerido (formato: tipo/descripcion)
344
- - 📋 Tipo de cambio (feature/fix/refactor/docs/test/chore)
345
- - ⚠️ Indicador de breaking changes
346
- - 🧪 Notas de testing recomendado
347
- - 📝 Archivo `.claude-pr-analysis.json`
477
+ - 📝 Título de PR conciso (máx. 72 caracteres)
478
+ - 📄 Descripción detallada con markdown
479
+ - 🌿 Nombre de rama sugerido (formato: tipo/descripcion)
480
+ - 📋 Tipo de cambio (feature/fix/refactor/docs/test/chore)
481
+ - ⚠️ Indicador de breaking changes
482
+ - 🧪 Notas de testing recomendado
483
+ - 📝 Archivo `.claude-pr-analysis.json`
348
484
  - **Auto-actualización**: Verificación automática de versiones antes de cada commit con prompt interactivo para actualizar
349
485
  - **Comando update**: `claude-hooks update` para actualizar manualmente a la última versión
350
486
  - **Modo debug**: `DEBUG=1 git commit` guarda respuestas en `debug-claude-response.json`
@@ -432,16 +568,20 @@ claude-git-hooks/
432
568
  ├── bin/
433
569
  │ └── claude-hooks # CLI principal (ES6 modules)
434
570
  ├── lib/ # 🆕 Código Node.js modular
571
+ │ ├── config.js # Configuración centralizada con merge
435
572
  │ ├── hooks/
436
573
  │ │ ├── pre-commit.js # Hook de análisis (Node.js)
437
574
  │ │ └── prepare-commit-msg.js # Hook de mensajes (Node.js)
438
575
  │ └── utils/
439
576
  │ ├── logger.js # Sistema de logging centralizado
440
577
  │ ├── git-operations.js # Operaciones git abstractas
441
- │ ├── file-operations.js # I/O con filtro SKIP_ANALYSIS_LINE
578
+ │ ├── file-utils.js # Utilidades de sistema de archivos
442
579
  │ ├── claude-client.js # Cliente Claude CLI
443
580
  │ ├── prompt-builder.js # Constructor de prompts
444
- └── resolution-prompt.js # Generador de resolution prompts
581
+ ├── resolution-prompt.js # Generador de resolution prompts
582
+ │ ├── preset-loader.js # Cargador de presets
583
+ │ ├── installation-diagnostics.js # Diagnósticos de instalación
584
+ │ └── claude-diagnostics.js # Diagnósticos de errores Claude CLI
445
585
  ├── templates/
446
586
  │ ├── pre-commit # Bash wrapper (llama a lib/hooks/pre-commit.js)
447
587
  │ ├── prepare-commit-msg # Bash wrapper (llama a lib/hooks/prepare-commit-msg.js)
@@ -464,6 +604,68 @@ claude-git-hooks/
464
604
  └── .gitignore # Archivos ignorados por git
465
605
  ```
466
606
 
607
+ ### 🔌 Utility Modules Reference
608
+
609
+ **Purpose**: Reusable modules for extending claude-hooks or building similar tools
610
+
611
+ #### Core Utilities
612
+
613
+ | Module | Purpose | Key Exports | Usage Context |
614
+ |--------|---------|-------------|---------------|
615
+ | **`config.js`** | Centralized configuration management | `getConfig()`, `defaults` | Priority merging: defaults < user < preset |
616
+ | **`logger.js`** | Structured logging with debug support | `info()`, `warning()`, `error()`, `debug()` | Console output with context tracking |
617
+ | **`git-operations.js`** | Git command abstractions | `getRepoRoot()`, `getStagedFiles()`, `getDiff()` | Safe git operations with error handling |
618
+ | **`file-utils.js`** | File system operations | `ensureDir()`, `writeFile()` | Repo-root-relative path handling |
619
+ | **`claude-client.js`** | Claude CLI integration | `analyzeCode()`, `analyzeCodeParallel()` | Prompt execution with timeout/retry |
620
+ | **`prompt-builder.js`** | Template-based prompts | `buildAnalysisPrompt()`, `loadTemplate()` | Dynamic prompt construction from .md files |
621
+ | **`preset-loader.js`** | Preset system | `loadPreset()`, `listPresets()`, `loadTemplate()` | Metadata, config, template loading |
622
+ | **`resolution-prompt.js`** | Issue resolution prompts | `generateResolutionPrompt()` | AI-friendly error remediation prompts |
623
+ | **`installation-diagnostics.js`** | Installation error diagnostics | `formatError()`, `getInstallationDiagnostics()` | Installation error formatting with remediation |
624
+ | **`claude-diagnostics.js`** | Claude CLI error diagnostics | `detectClaudeError()`, `formatClaudeError()` | Rate limit, auth, network error detection |
625
+
626
+ #### Using Utilities in Other Claude Instances
627
+
628
+ **Example: Check installation health**
629
+ ```javascript
630
+ import { formatError } from './lib/utils/installation-diagnostics.js';
631
+
632
+ try {
633
+ // ... operation that may fail
634
+ } catch (error) {
635
+ console.error(formatError('Operation failed', ['Additional context line']));
636
+ process.exit(1);
637
+ }
638
+ ```
639
+
640
+ **Example: Load configuration**
641
+ ```javascript
642
+ import { getConfig } from './lib/config.js';
643
+
644
+ const config = await getConfig();
645
+ const maxFiles = config.analysis.maxFiles;
646
+ ```
647
+
648
+ **Example: Execute git operations**
649
+ ```javascript
650
+ import { getRepoRoot, getStagedFiles } from './lib/utils/git-operations.js';
651
+
652
+ const repoRoot = getRepoRoot();
653
+ const files = getStagedFiles({ extensions: ['.js', '.ts'] });
654
+ ```
655
+
656
+ **Example: Build custom prompts**
657
+ ```javascript
658
+ import { buildAnalysisPrompt } from './lib/utils/prompt-builder.js';
659
+
660
+ const prompt = await buildAnalysisPrompt({
661
+ templateName: 'CUSTOM_PROMPT.md',
662
+ files: filesData,
663
+ metadata: { REPO_NAME: 'my-repo' }
664
+ });
665
+ ```
666
+
667
+ **Note**: All utilities follow single-responsibility principle and include JSDoc documentation inline.
668
+
467
669
  ### Configuración del Entorno de Desarrollo
468
670
 
469
671
  ```bash