claude-git-hooks 2.0.0 → 2.3.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.
Files changed (47) hide show
  1. package/CHANGELOG.md +212 -0
  2. package/README.md +217 -92
  3. package/bin/claude-hooks +311 -149
  4. package/lib/config.js +163 -0
  5. package/lib/hooks/pre-commit.js +180 -68
  6. package/lib/hooks/prepare-commit-msg.js +47 -41
  7. package/lib/utils/claude-client.js +93 -11
  8. package/lib/utils/file-operations.js +23 -74
  9. package/lib/utils/file-utils.js +65 -0
  10. package/lib/utils/package-info.js +75 -0
  11. package/lib/utils/preset-loader.js +209 -0
  12. package/lib/utils/prompt-builder.js +83 -67
  13. package/lib/utils/resolution-prompt.js +12 -2
  14. package/package.json +49 -50
  15. package/templates/ANALYZE_DIFF.md +33 -0
  16. package/templates/COMMIT_MESSAGE.md +24 -0
  17. package/templates/SUBAGENT_INSTRUCTION.md +1 -0
  18. package/templates/config.example.json +41 -0
  19. package/templates/presets/ai/ANALYSIS_PROMPT.md +133 -0
  20. package/templates/presets/ai/PRE_COMMIT_GUIDELINES.md +176 -0
  21. package/templates/presets/ai/config.json +12 -0
  22. package/templates/presets/ai/preset.json +42 -0
  23. package/templates/presets/backend/ANALYSIS_PROMPT.md +85 -0
  24. package/templates/presets/backend/PRE_COMMIT_GUIDELINES.md +87 -0
  25. package/templates/presets/backend/config.json +12 -0
  26. package/templates/presets/backend/preset.json +49 -0
  27. package/templates/presets/database/ANALYSIS_PROMPT.md +114 -0
  28. package/templates/presets/database/PRE_COMMIT_GUIDELINES.md +143 -0
  29. package/templates/presets/database/config.json +12 -0
  30. package/templates/presets/database/preset.json +38 -0
  31. package/templates/presets/default/config.json +12 -0
  32. package/templates/presets/default/preset.json +53 -0
  33. package/templates/presets/frontend/ANALYSIS_PROMPT.md +99 -0
  34. package/templates/presets/frontend/PRE_COMMIT_GUIDELINES.md +95 -0
  35. package/templates/presets/frontend/config.json +12 -0
  36. package/templates/presets/frontend/preset.json +50 -0
  37. package/templates/presets/fullstack/ANALYSIS_PROMPT.md +107 -0
  38. package/templates/presets/fullstack/CONSISTENCY_CHECKS.md +147 -0
  39. package/templates/presets/fullstack/PRE_COMMIT_GUIDELINES.md +125 -0
  40. package/templates/presets/fullstack/config.json +12 -0
  41. package/templates/presets/fullstack/preset.json +55 -0
  42. package/templates/shared/ANALYSIS_PROMPT.md +103 -0
  43. package/templates/shared/ANALYZE_DIFF.md +33 -0
  44. package/templates/shared/COMMIT_MESSAGE.md +24 -0
  45. package/templates/shared/PRE_COMMIT_GUIDELINES.md +145 -0
  46. package/templates/shared/RESOLUTION_PROMPT.md +32 -0
  47. package/templates/check-version.sh +0 -266
package/CHANGELOG.md CHANGED
@@ -5,6 +5,218 @@ 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.3.0] - 2025-11-11
9
+
10
+ ### ✨ Added
11
+
12
+ - **Preset System (Phase 3)**
13
+ - 🎯 6 built-in presets: `backend`, `frontend`, `fullstack`, `database`, `ai`, `default`
14
+ - 📦 Self-contained preset packages with custom prompts and configurations
15
+ - 🔍 Smart file filtering per preset (`.java` for backend, `.tsx` for frontend, etc.)
16
+ - 🎨 Rich metadata: tech stack, focus areas, file extensions, display names
17
+ - 🔌 Template inheritance with placeholder replacement ({{TECH_STACK}}, {{FOCUS_AREAS}})
18
+ - 🛠️ Manual preset selection via CLI: `claude-hooks --set-preset <name>`
19
+ - 📋 Preset management commands: `presets`, `preset current`, `--set-preset`
20
+ - 📖 See `next-steps/V2.3.0_PHASE3_PRESETS_FINAL.md` for full specification
21
+
22
+ - **CLI Enhancements**
23
+ - 🏷️ Added `--version`, `-v`, and `version` commands to display current version
24
+ - 📊 Version check on install with interactive update prompt (skippable with `--skip-auth` or `--force`)
25
+
26
+ ### 🐛 Fixed
27
+
28
+ - **Critical Bug**: `prepare-commit-msg` now properly loads merged config (preset + user overrides)
29
+ - Was using sync default import instead of async `getConfig()`
30
+ - Preset settings were being ignored in commit message generation
31
+ - **Template Name Mismatch**: Fixed config.js template paths
32
+ - `COMMIT_MESSAGE.md` (was `CLAUDE_COMMIT_MESSAGE.md`)
33
+ - `ANALYZE_DIFF.md` (was `CLAUDE_ANALYZE_DIFF.md`)
34
+ - **Missing Auto-Update**: `checkVersionAndPromptUpdate()` now called during install
35
+
36
+ ### 🗑️ Removed
37
+
38
+ - ❌ Deleted `readPassword()` function (24 lines) - unused since v2.0.0 sudo removal
39
+ - ❌ Deleted `setMode()` function (5 lines) - empty implementation, never used
40
+ - ❌ Deleted `readMultipleFiles()` function (62 lines) - exported but never imported
41
+ - ❌ Removed `"main": "lib/index.js"` from package.json - CLI-only package
42
+ - ❌ Deleted obsolete root template `CLAUDE_PRE_COMMIT_SONAR.md`
43
+
44
+ ### 🔄 Changed
45
+
46
+ - **Commit Message Timeout**: Increased from 120s to 180s for complex analysis
47
+ - **Config Loading**: All hooks now use async `getConfig()` for proper preset merging
48
+
49
+ ### 📚 Documentation
50
+
51
+ - 📖 Updated CHANGELOG with v2.3.0 release notes
52
+ - 📝 Marked Phase 3 preset system as IMPLEMENTED in spec
53
+
54
+ ### 🎯 Preset Examples
55
+
56
+ ```bash
57
+ # List available presets
58
+ claude-hooks presets
59
+
60
+ # Set backend preset (filters to .java, .xml, .yml files)
61
+ claude-hooks --set-preset backend
62
+
63
+ # Check active preset
64
+ claude-hooks preset current
65
+
66
+ # All presets installed during: claude-hooks install
67
+ ```
68
+
69
+ ### 📦 Available Presets
70
+
71
+ 1. **backend** - Spring Boot + SQL Server (Java, XML, YAML)
72
+ 2. **frontend** - React + Material-UI (JS, JSX, TS, TSX, CSS)
73
+ 3. **fullstack** - Backend + Frontend + DB with consistency checks
74
+ 4. **database** - SQL Server migrations and procedures
75
+ 5. **ai** - Node.js + Claude CLI integration
76
+ 6. **default** - General-purpose scripting
77
+
78
+ ### 📋 Migration from v2.2.0
79
+
80
+ No breaking changes. Presets are opt-in:
81
+
82
+ ```bash
83
+ # Continue using defaults (no preset)
84
+ git commit -m "message"
85
+
86
+ # Or activate a preset
87
+ claude-hooks --set-preset backend
88
+ git commit -m "message" # Now filters to .java, .xml, .yml only
89
+ ```
90
+
91
+ ## [2.2.0] - 2025-11-04
92
+
93
+ ### ✨ Added
94
+
95
+ - **Configuration Centralization (Phase 1)**
96
+ - 📁 Created `lib/config.js` - single source of truth for all configurable values
97
+ - 🔧 User override support via `.claude/config.json` with deep merge
98
+ - 📊 Structured config: analysis, commitMessage, subagents, templates, output, system, git
99
+ - 🚫 Eliminated environment variables (except OS for platform detection)
100
+ - 📖 See `next-steps/V2.2.0_CONFIG_CENTRALIZATION.md` for details
101
+
102
+ - **Prompt Externalization (Phase 2)**
103
+ - 📝 Extracted ALL embedded prompts to external .md template files
104
+ - 🔌 Created `loadPrompt()` utility - combines load + variable replacement
105
+ - 📄 New templates: `COMMIT_MESSAGE.md`, `ANALYZE_DIFF.md`
106
+ - 🎯 JavaScript is now completely "prompt-agnostic"
107
+ - 📖 See `next-steps/V2.2.0_PHASE2_PROMPTS.md` for details
108
+
109
+ - **Parallel Analysis**
110
+ - 🚀 True OS-level parallel execution using multiple Claude CLI processes simultaneously
111
+ - ⚡ `analyzeCodeParallel()` function runs batches via Node.js `Promise.all()`
112
+ - 📊 Configurable `batchSize` for optimal speed/cost balance (default: 2)
113
+ - 🔀 Automatic result consolidation with worst-case quality gate logic
114
+ - 📈 Real-time console output showing parallel batch launches and completion
115
+ - 🎯 Enabled by default for commits with 3+ files
116
+ - ⏱️ Speed improvement: up to 4x faster with `batchSize: 1`
117
+
118
+ ### 🔄 Changed
119
+
120
+ - **Configuration Migration**
121
+ - ♻️ Migrated `lib/hooks/pre-commit.js` to use centralized config
122
+ - ♻️ Migrated `lib/hooks/prepare-commit-msg.js` to use centralized config
123
+ - ♻️ Migrated `lib/utils/claude-client.js` to use centralized config
124
+ - 🔧 `process.env.DEBUG` → `config.system.debug`
125
+ - 🔧 All hardcoded timeouts now configurable
126
+
127
+ - **Prompt Migration**
128
+ - ♻️ `prepare-commit-msg.js`: 40 lines → 15 lines (62% reduction)
129
+ - ♻️ `bin/claude-hooks`: 30 lines → 10 lines (67% reduction)
130
+ - 🎨 Prompts now editable without touching JavaScript code
131
+
132
+ - **Template Loading**
133
+ - 📂 Enhanced `loadTemplate()` with fallback: `.claude/` → `templates/`
134
+ - 🔀 Enables per-project customization of prompts
135
+
136
+ ### 🗑️ Removed
137
+
138
+ - ❌ Deleted `buildCommitMessagePrompt()` - unused legacy code
139
+ - ❌ Removed all `process.env` references except OS check
140
+
141
+ ### 📚 Documentation
142
+
143
+ - 📖 Added `next-steps/V2.2.0_CONFIG_CENTRALIZATION.md`
144
+ - 📖 Added `next-steps/V2.2.0_PHASE2_PROMPTS.md`
145
+ - 📝 Updated configuration examples and customization guides
146
+
147
+ ### 🎯 Benefits
148
+
149
+ - **Maintainability:** Prompts editable by non-developers
150
+ - **Flexibility:** Easy A/B testing of prompt styles
151
+ - **Customization:** Per-project overrides via `.claude/config.json`
152
+ - **Simplicity:** Clear separation of concerns (JS = logic, .md = content)
153
+
154
+ ### 📋 Migration Guide
155
+
156
+ No breaking changes. All defaults match previous behavior.
157
+
158
+ **Optional: Customize configuration**
159
+ ```bash
160
+ # Create project config
161
+ mkdir -p .claude
162
+ cat > .claude/config.json << 'EOF'
163
+ {
164
+ "analysis": {
165
+ "maxFileSize": 200000,
166
+ "maxFiles": 15
167
+ },
168
+ "subagents": {
169
+ "enabled": true,
170
+ "model": "sonnet"
171
+ },
172
+ "system": {
173
+ "debug": true
174
+ }
175
+ }
176
+ EOF
177
+ ```
178
+
179
+ **Optional: Customize prompts**
180
+ ```bash
181
+ # Override commit message prompt
182
+ cp templates/COMMIT_MESSAGE.md .claude/
183
+ # Edit .claude/COMMIT_MESSAGE.md as needed
184
+ ```
185
+
186
+ ## [2.1.0] - 2025-11-04
187
+
188
+ ### Changed
189
+
190
+ - 🔄 Renombrado marcador de exclusión de línea única: `// SKIP-ANALYSIS` → `// SKIP_ANALYSIS_LINE` para consistencia de nomenclatura
191
+ - 🐛 Corregido bug crítico en orden de detección de patrones que impedía funcionamiento de `SKIP_ANALYSIS_BLOCK`
192
+
193
+ ### Known Issues
194
+
195
+ - ⚠️ **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.
196
+
197
+ ### Migration Guide
198
+
199
+ Si utilizabas `// SKIP-ANALYSIS` en tu código, reemplázalo por `// SKIP_ANALYSIS_LINE`:
200
+
201
+ ```java
202
+ // Antes (deprecated):
203
+ // SKIP-ANALYSIS
204
+ private String legacyCode;
205
+
206
+ // Ahora:
207
+ // SKIP_ANALYSIS_LINE
208
+ private String legacyCode;
209
+ ```
210
+
211
+ El marcador de bloque `// SKIP_ANALYSIS_BLOCK` permanece sin cambios.
212
+
213
+ ## [2.0.1] - 2025-11-04
214
+
215
+ ### Fixed
216
+
217
+ - 🔧 Compatibilidad completa en Windows: corregidos line endings CRLF, validación WSL, y comparación de versiones sin dependencia bash
218
+ - 🔧 Operaciones de rutas utilizan módulo `path` nativo para mejor portabilidad multiplataforma
219
+
8
220
  ## [2.0.0] - 2025-10-30
9
221
 
10
222
  ### 🚀 BREAKING CHANGE: Migration from Bash to Node.js Hooks
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
19
- - 🚫 **Skip inteligente**: Excluye código con comentarios SKIP-ANALYSIS
20
- - 🕵️‍♂️ **Paralelización**: Análisis asincrónico de archivos con sub agentes
20
+ - 🎯 **Presets por tech-stack**: 6 configuraciones optimizadas (backend, frontend, fullstack, database, ai, default) - v2.3.0+
21
+ - ⚠️ **Skip inteligente** (EXPERIMENTAL/BROKEN): Exclusión de código con comentarios SKIP_ANALYSIS - no funciona correctamente con git diff
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
@@ -85,10 +96,13 @@ git commit --no-verify -m "hotfix: corrección urgente"
85
96
  git commit --amend
86
97
  ```
87
98
 
88
- ### 🚫 Exclusión de Código del Análisis
99
+ ### ⚠️ Exclusión de Código del Análisis (EXPERIMENTAL/BROKEN)
89
100
 
90
101
  ```java
91
- // SKIP-ANALYSIS
102
+ // NOTA: Este feature NO funciona correctamente
103
+ // Los marcadores no son detectados si fueron agregados en commits anteriores
104
+
105
+ // SKIP_ANALYSIS_LINE
92
106
  private String legacyCode = "no analizar siguiente línea";
93
107
 
94
108
  // SKIP_ANALYSIS_BLOCK
@@ -99,25 +113,124 @@ public void methodToIgnore() {
99
113
  // SKIP_ANALYSIS_BLOCK
100
114
  ```
101
115
 
102
- ### 🔧 Configuración Avanzada
116
+ ### 🔧 Configuración Avanzada (v2.2.0+)
103
117
 
104
118
  ```bash
105
- # Archivos de configuración
119
+ # Configuración vía .claude/config.json
106
120
  .claude/
107
- ├── CLAUDE_PRE_COMMIT_SONAR.md # Personalizar criterios
108
- ├── CLAUDE_ANALYSIS_PROMPT_SONAR.md # Modificar prompt
109
- └── settings.local.json # Configuración local
110
-
111
- # Variables de entorno
112
- export CLAUDE_ANALYSIS_MODE=sonarqube # Modo de análisis
113
- export CLAUDE_DEBUG=true # Debug detallado
114
-
115
- # Subagent configuration (parallel analysis for multiple files)
116
- export CLAUDE_USE_SUBAGENTS=true # Enable subagent parallel analysis
117
- export CLAUDE_SUBAGENT_MODEL=haiku # Model: haiku (fast), sonnet (balanced), opus (thorough)
118
- 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
119
148
  ```
120
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
+ preset config (templates/presets/backend/config.json)
228
+
229
+ user config (.claude/config.json) ← MÁXIMA PRIORIDAD
230
+ ```
231
+
232
+ **Nota v2.2.0+:** Variables de entorno ya NO son soportadas. Usar `.claude/config.json` en su lugar.
233
+
121
234
  ### 🎯 Casos de Uso Específicos
122
235
 
123
236
  ```bash
@@ -145,60 +258,74 @@ git commit -m "fix: resolver issues"
145
258
  1. **Mensaje automático**: Usa `"auto"` como mensaje para que Claude lo genere
146
259
  2. **Skip auth**: Usa `--skip-auth` en CI/CD o desarrollo local
147
260
  3. **Force install**: Usa `--force` para reinstalar sin confirmación
148
- 4. **Debug**: Activa `CLAUDE_DEBUG=true` para ver detalles completos
261
+ 4. **Debug**: Activa en `.claude/config.json`: `{"system": {"debug": true}}`
149
262
  5. **Archivos grandes**: Se omiten automáticamente archivos > 100KB
150
- 6. **Límite de archivos**: Máximo 10 archivos por commit
263
+ 6. **Límite de archivos**: Máximo 10 archivos por commit (configurable)
151
264
 
152
- ### 🚀 Parallel Analysis with Subagents (NEW in v1.5.5)
265
+ ### 🚀 Parallel Analysis (v2.2.0+)
153
266
 
154
- **When analyzing 3+ files**, enable subagents for faster parallel processing:
267
+ **When analyzing 3+ files**, parallel execution runs multiple Claude CLI processes simultaneously for faster analysis:
155
268
 
156
269
  ```bash
157
- # Enable subagent parallel analysis
158
- export CLAUDE_USE_SUBAGENTS=true
159
-
160
- # Optional: Choose model (default: haiku for speed)
161
- export CLAUDE_SUBAGENT_MODEL=haiku # Fast & cheap
162
- export CLAUDE_SUBAGENT_MODEL=sonnet # Balanced quality/speed
163
- export CLAUDE_SUBAGENT_MODEL=opus # Maximum quality
270
+ # Configure in .claude/config.json
271
+ {
272
+ "subagents": {
273
+ "enabled": true,
274
+ "model": "haiku",
275
+ "batchSize": 2
276
+ }
277
+ }
278
+ ```
164
279
 
165
- # Optional: Adjust batch size (default: 3 files at a time)
166
- export CLAUDE_SUBAGENT_BATCH_SIZE=3
280
+ **Model options:**
167
281
 
168
- # Now commits will use parallel analysis automatically
169
- git commit -m "feat: implement multiple features"
170
- ```
282
+ - `haiku` - Fast & cheap (default, recommended)
283
+ - `sonnet` - Balanced quality/speed
284
+ - `opus` - Maximum quality (slower)
171
285
 
172
286
  **How batching works:**
173
- - `BATCH_SIZE=1` with 4 files → 4 sequential batches (1 subagent each)
174
- - `BATCH_SIZE=3` with 4 files → 2 batches (3 parallel, then 1)
175
- - `BATCH_SIZE=4` with 4 files → 1 batch (all 4 in parallel)
176
- - Batch size is validated automatically (minimum: 1)
177
287
 
178
- **How it works:**
179
- - Each file is analyzed by a dedicated Claude subagent
180
- - Files are processed in batches for optimal performance
181
- - Results are consolidated automatically into single response
182
- - Shows execution time for all operations
183
- - Uses one-line prompt injection - no complex architecture changes
288
+ - Files are split into batches of size `batchSize`
289
+ - Each batch runs in a separate Claude CLI process
290
+ - All batches execute in parallel (true OS-level parallelism)
291
+ - Results are consolidated automatically
292
+
293
+ **Examples with 4 files:**
294
+
295
+ - `batchSize: 1` → 4 parallel Claude processes (1 file each) - **fastest**
296
+ - `batchSize: 2` → 2 parallel Claude processes (2 files each) - **balanced**
297
+ - `batchSize: 4` → 1 process (all files) - no parallelization
298
+
299
+ **Speed improvement:**
300
+
301
+ - Sequential: 60s per file × 4 = 240s total
302
+ - Parallel (batch=1): max(60s) = 60s total ✅ **4x faster**
184
303
 
185
- **Best for:** Large commits (3+ files), refactoring tasks, feature branches
304
+ **Console output:**
305
+
306
+ ```
307
+ 🚀 PARALLEL EXECUTION: 4 Claude processes
308
+ ⚡ Launching batch 1/4...
309
+ ⚡ Launching batch 2/4...
310
+ ⚡ Launching batch 3/4...
311
+ ⚡ Launching batch 4/4...
312
+ ⏳ Waiting for all batches to complete...
313
+
314
+ ✅ PARALLEL EXECUTION COMPLETE: 4 results in 62.5s
315
+ ```
316
+
317
+ **Best for:** Large commits (3+ files), refactoring, multi-file features
186
318
 
187
319
  ### 🎨 Personalización y Customización
188
320
 
189
321
  **Archivos clave para modificar:**
322
+
323
+ - `.claude/config.json` - Configuración principal (v2.2.0+)
190
324
  - `.claude/CLAUDE_PRE_COMMIT_SONAR.md` - Criterios (backend/frontend/data/db)
191
325
  - `.claude/CLAUDE_ANALYSIS_PROMPT_SONAR.md` - Template del prompt
192
- - `lib/hooks/pre-commit.js` - CONFIG object (extensiones, límites, umbrales)
193
-
194
- **Subagents (v1.5.5+)** - Para commits multi-archivo (3+), reduce análisis 60-70%:
195
- ```bash
196
- export CLAUDE_USE_SUBAGENTS=true # Activar paralelo
197
- export CLAUDE_SUBAGENT_MODEL=haiku # haiku/sonnet/opus
198
- export CLAUDE_SUBAGENT_BATCH_SIZE=3 # Archivos simultáneos
199
- ```
200
326
 
201
327
  **Ejemplo:**
328
+
202
329
  ```bash
203
330
  vim .claude/CLAUDE_PRE_COMMIT_SONAR.md # Agregar reglas API REST/Spring Boot
204
331
  ```
@@ -265,9 +392,9 @@ El comando `claude-hooks install` crea los siguientes archivos y directorios:
265
392
  2. **`.git/hooks/prepare-commit-msg`** - Hook de generación de mensajes
266
393
  3. **`.git/hooks/check-version.sh`** - Script de verificación de versión
267
394
  4. **`.claude/`** - Directorio para archivos de configuración
268
- - `CLAUDE_PRE_COMMIT_SONAR.md` - Pautas de evaluación SonarQube
269
- - `CLAUDE_ANALYSIS_PROMPT_SONAR.md` - Template de prompt para análisis SonarQube
270
- - `CLAUDE_RESOLUTION_PROMPT.md` - Template para prompt de resolución AI
395
+ - `CLAUDE_PRE_COMMIT_SONAR.md` - Pautas de evaluación SonarQube
396
+ - `CLAUDE_ANALYSIS_PROMPT_SONAR.md` - Template de prompt para análisis SonarQube
397
+ - `CLAUDE_RESOLUTION_PROMPT.md` - Template para prompt de resolución AI
271
398
 
272
399
  ### Actualización automática de .gitignore
273
400
 
@@ -295,21 +422,21 @@ Si no existe un `.gitignore`, se creará uno nuevo. Si ya existe, las entradas s
295
422
 
296
423
  1. **Intercepta cada intento de commit**
297
424
  2. **Extrae y filtra archivos modificados**:
298
- - Solo analiza: Java, XML, properties, yml, yaml
299
- - Omite archivos mayores a 100KB
300
- - Límite de 10 archivos por commit
425
+ - Solo analiza: Java, XML, properties, yml, yaml
426
+ - Omite archivos mayores a 100KB
427
+ - Límite de 10 archivos por commit
301
428
  3. **Construye prompt inteligente**:
302
- - Usa template de prompt desde `.claude/CLAUDE_ANALYSIS_PROMPT*.md`
303
- - Lee las pautas desde `.claude/CLAUDE_PRE_COMMIT*.md`
304
- - Incluye el diff completo para archivos nuevos
305
- - Muestra solo cambios para archivos existentes
429
+ - Usa template de prompt desde `.claude/CLAUDE_ANALYSIS_PROMPT*.md`
430
+ - Lee las pautas desde `.claude/CLAUDE_PRE_COMMIT*.md`
431
+ - Incluye el diff completo para archivos nuevos
432
+ - Muestra solo cambios para archivos existentes
306
433
  4. **Envía a Claude CLI para revisión**
307
434
  5. **Procesa respuesta JSON estructurada**:
308
- - blockingIssues siempre como objetos con localización precisa
309
- - verifica `QUALITY_GATE`, muestra métricas y issues por severidad
435
+ - blockingIssues siempre como objetos con localización precisa
436
+ - verifica `QUALITY_GATE`, muestra métricas y issues por severidad
310
437
  6. **Decisión final**:
311
- - Si hay problemas críticos → genera prompt AI de resolución y bloquea commit
312
- - Si todo está bien → commit procede
438
+ - Si hay problemas críticos → genera prompt AI de resolución y bloquea commit
439
+ - Si todo está bien → commit procede
313
440
  7. **Generación de Prompt de Resolución AI** (opcional): Cuando se detectan problemas críticos:
314
441
 
315
442
  - Se genera automáticamente un archivo `claude_resolution_prompt.md`
@@ -320,48 +447,46 @@ Si no existe un `.gitignore`, se creará uno nuevo. Si ya existe, las entradas s
320
447
  ### Hook prepare-commit-msg (Generación automática de mensajes)
321
448
 
322
449
  1. **Se activa cuando el mensaje es**:
323
- - `"auto"`
450
+ - `"auto"`
324
451
  2. **Analiza los cambios del staging area**:
325
- - Lista archivos modificados con estadísticas
326
- - Incluye diffs completos para archivos < 100KB
452
+ - Lista archivos modificados con estadísticas
453
+ - Incluye diffs completos para archivos < 100KB
327
454
  3. **Genera mensaje en formato Conventional Commits**:
328
- - Determina tipo: feat, fix, docs, style, refactor, test, chore
329
- - Crea título conciso y descriptivo
330
- - Añade body con detalles si es necesario
455
+ - Determina tipo: feat, fix, docs, style, refactor, test, chore
456
+ - Crea título conciso y descriptivo
457
+ - Añade body con detalles si es necesario
331
458
  4. **Manejo de errores**:
332
- - Si falla la generación → cancela el commit completamente
333
- - No usa mensajes genéricos de fallback
459
+ - Si falla la generación → cancela el commit completamente
460
+ - No usa mensajes genéricos de fallback
334
461
 
335
462
  ### Características adicionales
336
463
 
337
464
  - **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:
338
- - 📝 Título de PR conciso (máx. 72 caracteres)
339
- - 📄 Descripción detallada con markdown
340
- - 🌿 Nombre de rama sugerido (formato: tipo/descripcion)
341
- - 📋 Tipo de cambio (feature/fix/refactor/docs/test/chore)
342
- - ⚠️ Indicador de breaking changes
343
- - 🧪 Notas de testing recomendado
344
- - 📝 Archivo `.claude-pr-analysis.json`
465
+ - 📝 Título de PR conciso (máx. 72 caracteres)
466
+ - 📄 Descripción detallada con markdown
467
+ - 🌿 Nombre de rama sugerido (formato: tipo/descripcion)
468
+ - 📋 Tipo de cambio (feature/fix/refactor/docs/test/chore)
469
+ - ⚠️ Indicador de breaking changes
470
+ - 🧪 Notas de testing recomendado
471
+ - 📝 Archivo `.claude-pr-analysis.json`
345
472
  - **Auto-actualización**: Verificación automática de versiones antes de cada commit con prompt interactivo para actualizar
346
473
  - **Comando update**: `claude-hooks update` para actualizar manualmente a la última versión
347
474
  - **Modo debug**: `DEBUG=1 git commit` guarda respuestas en `debug-claude-response.json`
348
475
  - **Análisis de PR**: Nuevo comando `analyze-diff` para generar información de Pull Requests
349
476
  - **Validación de dependencias**: Verifica que Claude CLI esté autenticado antes de ejecutar
350
- - **Exclusión de código del análisis con SKIP-ANALYSIS**: Puedes excluir código específico del análisis usando comentarios `// SKIP-ANALYSIS`:
477
+ - **⚠️ 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.
351
478
 
352
479
  ```java
353
- // Excluir una sola línea
354
- // SKIP-ANALYSIS
355
- @Autowired private LegacyService legacyService; // Esta línea no será analizada
480
+ // NOTA: Este feature actualmente NO funciona de forma confiable
481
+ // SKIP_ANALYSIS_LINE
482
+ @Autowired private LegacyService legacyService;
356
483
 
357
- // Excluir un bloque de código
358
- // SKIP-ANALYSIS_BLOCK
484
+ // SKIP_ANALYSIS_BLOCK
359
485
  @Deprecated
360
486
  public void methodWithKnownIssues() {
361
- // Código legacy que no queremos que sea analizado
362
- System.out.println("Debug temporal");
487
+ System.out.println("Legacy code");
363
488
  }
364
- // SKIP-ANALYSIS_BLOCK
489
+ // SKIP_ANALYSIS_BLOCK
365
490
  ```
366
491
 
367
492
  ### Desactivar/Activar hooks
@@ -437,7 +562,7 @@ claude-git-hooks/
437
562
  │ └── utils/
438
563
  │ ├── logger.js # Sistema de logging centralizado
439
564
  │ ├── git-operations.js # Operaciones git abstractas
440
- │ ├── file-operations.js # I/O con filtro SKIP-ANALYSIS
565
+ │ ├── file-operations.js # I/O con filtro SKIP_ANALYSIS_LINE
441
566
  │ ├── claude-client.js # Cliente Claude CLI
442
567
  │ ├── prompt-builder.js # Constructor de prompts
443
568
  │ └── resolution-prompt.js # Generador de resolution prompts