claude-git-hooks 2.1.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.
- package/CHANGELOG.md +178 -0
- package/README.md +203 -79
- package/bin/claude-hooks +295 -119
- package/lib/config.js +163 -0
- package/lib/hooks/pre-commit.js +179 -67
- package/lib/hooks/prepare-commit-msg.js +47 -41
- package/lib/utils/claude-client.js +93 -11
- package/lib/utils/file-operations.js +1 -65
- package/lib/utils/file-utils.js +65 -0
- package/lib/utils/package-info.js +75 -0
- package/lib/utils/preset-loader.js +209 -0
- package/lib/utils/prompt-builder.js +83 -67
- package/lib/utils/resolution-prompt.js +12 -2
- package/package.json +49 -50
- package/templates/ANALYZE_DIFF.md +33 -0
- package/templates/COMMIT_MESSAGE.md +24 -0
- package/templates/SUBAGENT_INSTRUCTION.md +1 -0
- package/templates/config.example.json +41 -0
- package/templates/presets/ai/ANALYSIS_PROMPT.md +133 -0
- package/templates/presets/ai/PRE_COMMIT_GUIDELINES.md +176 -0
- package/templates/presets/ai/config.json +12 -0
- package/templates/presets/ai/preset.json +42 -0
- package/templates/presets/backend/ANALYSIS_PROMPT.md +85 -0
- package/templates/presets/backend/PRE_COMMIT_GUIDELINES.md +87 -0
- package/templates/presets/backend/config.json +12 -0
- package/templates/presets/backend/preset.json +49 -0
- package/templates/presets/database/ANALYSIS_PROMPT.md +114 -0
- package/templates/presets/database/PRE_COMMIT_GUIDELINES.md +143 -0
- package/templates/presets/database/config.json +12 -0
- package/templates/presets/database/preset.json +38 -0
- package/templates/presets/default/config.json +12 -0
- package/templates/presets/default/preset.json +53 -0
- package/templates/presets/frontend/ANALYSIS_PROMPT.md +99 -0
- package/templates/presets/frontend/PRE_COMMIT_GUIDELINES.md +95 -0
- package/templates/presets/frontend/config.json +12 -0
- package/templates/presets/frontend/preset.json +50 -0
- package/templates/presets/fullstack/ANALYSIS_PROMPT.md +107 -0
- package/templates/presets/fullstack/CONSISTENCY_CHECKS.md +147 -0
- package/templates/presets/fullstack/PRE_COMMIT_GUIDELINES.md +125 -0
- package/templates/presets/fullstack/config.json +12 -0
- package/templates/presets/fullstack/preset.json +55 -0
- package/templates/shared/ANALYSIS_PROMPT.md +103 -0
- package/templates/shared/ANALYZE_DIFF.md +33 -0
- package/templates/shared/COMMIT_MESSAGE.md +24 -0
- package/templates/shared/PRE_COMMIT_GUIDELINES.md +145 -0
- package/templates/shared/RESOLUTION_PROMPT.md +32 -0
- package/templates/check-version.sh +0 -266
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,184 @@ 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
|
+
|
|
8
186
|
## [2.1.0] - 2025-11-04
|
|
9
187
|
|
|
10
188
|
### Changed
|
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
|
-
-
|
|
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,24 +113,123 @@ 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
|
-
#
|
|
119
|
+
# Configuración vía .claude/config.json
|
|
109
120
|
.claude/
|
|
110
|
-
├──
|
|
111
|
-
├──
|
|
112
|
-
└──
|
|
113
|
-
|
|
114
|
-
#
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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
|
+
|
|
122
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.
|
|
123
233
|
|
|
124
234
|
### 🎯 Casos de Uso Específicos
|
|
125
235
|
|
|
@@ -148,60 +258,74 @@ git commit -m "fix: resolver issues"
|
|
|
148
258
|
1. **Mensaje automático**: Usa `"auto"` como mensaje para que Claude lo genere
|
|
149
259
|
2. **Skip auth**: Usa `--skip-auth` en CI/CD o desarrollo local
|
|
150
260
|
3. **Force install**: Usa `--force` para reinstalar sin confirmación
|
|
151
|
-
4. **Debug**: Activa
|
|
261
|
+
4. **Debug**: Activa en `.claude/config.json`: `{"system": {"debug": true}}`
|
|
152
262
|
5. **Archivos grandes**: Se omiten automáticamente archivos > 100KB
|
|
153
|
-
6. **Límite de archivos**: Máximo 10 archivos por commit
|
|
263
|
+
6. **Límite de archivos**: Máximo 10 archivos por commit (configurable)
|
|
154
264
|
|
|
155
|
-
### 🚀 Parallel Analysis
|
|
265
|
+
### 🚀 Parallel Analysis (v2.2.0+)
|
|
156
266
|
|
|
157
|
-
**When analyzing 3+ files**,
|
|
267
|
+
**When analyzing 3+ files**, parallel execution runs multiple Claude CLI processes simultaneously for faster analysis:
|
|
158
268
|
|
|
159
269
|
```bash
|
|
160
|
-
#
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
270
|
+
# Configure in .claude/config.json
|
|
271
|
+
{
|
|
272
|
+
"subagents": {
|
|
273
|
+
"enabled": true,
|
|
274
|
+
"model": "haiku",
|
|
275
|
+
"batchSize": 2
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
```
|
|
167
279
|
|
|
168
|
-
|
|
169
|
-
export CLAUDE_SUBAGENT_BATCH_SIZE=3
|
|
280
|
+
**Model options:**
|
|
170
281
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
282
|
+
- `haiku` - Fast & cheap (default, recommended)
|
|
283
|
+
- `sonnet` - Balanced quality/speed
|
|
284
|
+
- `opus` - Maximum quality (slower)
|
|
174
285
|
|
|
175
286
|
**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
287
|
|
|
181
|
-
|
|
182
|
-
- Each
|
|
183
|
-
-
|
|
184
|
-
- Results are consolidated automatically
|
|
185
|
-
|
|
186
|
-
|
|
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
|
|
187
298
|
|
|
188
|
-
**
|
|
299
|
+
**Speed improvement:**
|
|
300
|
+
|
|
301
|
+
- Sequential: 60s per file × 4 = 240s total
|
|
302
|
+
- Parallel (batch=1): max(60s) = 60s total ✅ **4x faster**
|
|
303
|
+
|
|
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
|
|
189
318
|
|
|
190
319
|
### 🎨 Personalización y Customización
|
|
191
320
|
|
|
192
321
|
**Archivos clave para modificar:**
|
|
322
|
+
|
|
323
|
+
- `.claude/config.json` - Configuración principal (v2.2.0+)
|
|
193
324
|
- `.claude/CLAUDE_PRE_COMMIT_SONAR.md` - Criterios (backend/frontend/data/db)
|
|
194
325
|
- `.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
326
|
|
|
204
327
|
**Ejemplo:**
|
|
328
|
+
|
|
205
329
|
```bash
|
|
206
330
|
vim .claude/CLAUDE_PRE_COMMIT_SONAR.md # Agregar reglas API REST/Spring Boot
|
|
207
331
|
```
|
|
@@ -268,9 +392,9 @@ El comando `claude-hooks install` crea los siguientes archivos y directorios:
|
|
|
268
392
|
2. **`.git/hooks/prepare-commit-msg`** - Hook de generación de mensajes
|
|
269
393
|
3. **`.git/hooks/check-version.sh`** - Script de verificación de versión
|
|
270
394
|
4. **`.claude/`** - Directorio para archivos de configuración
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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
|
|
274
398
|
|
|
275
399
|
### Actualización automática de .gitignore
|
|
276
400
|
|
|
@@ -298,21 +422,21 @@ Si no existe un `.gitignore`, se creará uno nuevo. Si ya existe, las entradas s
|
|
|
298
422
|
|
|
299
423
|
1. **Intercepta cada intento de commit**
|
|
300
424
|
2. **Extrae y filtra archivos modificados**:
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
425
|
+
- Solo analiza: Java, XML, properties, yml, yaml
|
|
426
|
+
- Omite archivos mayores a 100KB
|
|
427
|
+
- Límite de 10 archivos por commit
|
|
304
428
|
3. **Construye prompt inteligente**:
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
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
|
|
309
433
|
4. **Envía a Claude CLI para revisión**
|
|
310
434
|
5. **Procesa respuesta JSON estructurada**:
|
|
311
|
-
|
|
312
|
-
|
|
435
|
+
- blockingIssues siempre como objetos con localización precisa
|
|
436
|
+
- verifica `QUALITY_GATE`, muestra métricas y issues por severidad
|
|
313
437
|
6. **Decisión final**:
|
|
314
|
-
|
|
315
|
-
|
|
438
|
+
- Si hay problemas críticos → genera prompt AI de resolución y bloquea commit
|
|
439
|
+
- Si todo está bien → commit procede
|
|
316
440
|
7. **Generación de Prompt de Resolución AI** (opcional): Cuando se detectan problemas críticos:
|
|
317
441
|
|
|
318
442
|
- Se genera automáticamente un archivo `claude_resolution_prompt.md`
|
|
@@ -323,28 +447,28 @@ Si no existe un `.gitignore`, se creará uno nuevo. Si ya existe, las entradas s
|
|
|
323
447
|
### Hook prepare-commit-msg (Generación automática de mensajes)
|
|
324
448
|
|
|
325
449
|
1. **Se activa cuando el mensaje es**:
|
|
326
|
-
|
|
450
|
+
- `"auto"`
|
|
327
451
|
2. **Analiza los cambios del staging area**:
|
|
328
|
-
|
|
329
|
-
|
|
452
|
+
- Lista archivos modificados con estadísticas
|
|
453
|
+
- Incluye diffs completos para archivos < 100KB
|
|
330
454
|
3. **Genera mensaje en formato Conventional Commits**:
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
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
|
|
334
458
|
4. **Manejo de errores**:
|
|
335
|
-
|
|
336
|
-
|
|
459
|
+
- Si falla la generación → cancela el commit completamente
|
|
460
|
+
- No usa mensajes genéricos de fallback
|
|
337
461
|
|
|
338
462
|
### Características adicionales
|
|
339
463
|
|
|
340
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:
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
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`
|
|
348
472
|
- **Auto-actualización**: Verificación automática de versiones antes de cada commit con prompt interactivo para actualizar
|
|
349
473
|
- **Comando update**: `claude-hooks update` para actualizar manualmente a la última versión
|
|
350
474
|
- **Modo debug**: `DEBUG=1 git commit` guarda respuestas en `debug-claude-response.json`
|