claude-buddy
Version:
Your friendly AI development companion for Claude Code - supercharge Claude Code with intelligent workflows and safety features
679 lines (524 loc) • 15.5 kB
Markdown
# Claude Buddy Troubleshooting Guide
This comprehensive guide helps you diagnose and resolve common issues with Claude Buddy.
## Table of Contents
- [Quick Diagnosis](#quick-diagnosis)
- [Installation Issues](#installation-issues)
- [Persona System Issues](#persona-system-issues)
- [Hook System Issues](#hook-system-issues)
- [Performance Issues](#performance-issues)
- [Debug Mode](#debug-mode)
- [Common Error Messages](#common-error-messages)
- [Advanced Troubleshooting](#advanced-troubleshooting)
- [Getting Help](#getting-help)
## Quick Diagnosis
### System Health Check
Run this command to get a quick system status:
```bash
# Check if Claude Buddy is properly installed
claude-buddy --version
# Check UV installation
uv --version
# Check TypeScript compilation
npm run type-check
# Run smoke tests
npm run test:smoke
```
### Common Quick Fixes
1. **Restart Claude Code**: Close and reopen Claude Code
2. **Clear package cache**: `npm run build && npm install`
3. **Reinstall globally**: `npm run install-global`
4. **Check UV installation**: `uv --version`
## Installation Issues
### UV Not Found Error
**Symptoms**: `uv: command not found` or similar UV-related errors
**Diagnosis**:
```bash
# Check if UV is installed
which uv
uv --version
```
**Solutions**:
1. **Install UV**:
```bash
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# Using pip
pip install uv
```
2. **Add UV to PATH**:
```bash
# Add to your shell profile (.bashrc, .zshrc, etc.)
export PATH="$HOME/.cargo/bin:$PATH"
```
3. **Verify installation**:
```bash
uv --version
# Should output: uv 0.1.x (or later)
```
### Node.js Version Issues
**Symptoms**: `Error: Node.js version 18.0.0 or higher is required`
**Solutions**:
1. **Update Node.js**:
```bash
# Using nvm
nvm install 18
nvm use 18
# Using n
n latest
```
2. **Verify version**:
```bash
node --version
# Should be >= 18.0.0
```
### Permission Errors
**Symptoms**: `EACCES` or permission denied errors
**Solutions**:
1. **Fix npm permissions**:
```bash
# Change npm global directory
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
# Add to PATH
export PATH=~/.npm-global/bin:$PATH
```
2. **Use sudo for global install** (not recommended):
```bash
sudo npm install -g claude-buddy
```
3. **Install locally instead**:
```bash
npm install claude-buddy
npx claude-buddy --project
```
## Persona System Issues
### Personas Not Loading
**Symptoms**: `No personas available` or empty persona list
**Diagnosis**:
```bash
# Check persona configuration
ls src/personas/specialists/
cat src/config/personas-config.json
# Use persona analytics for detailed diagnosis
npm run build
node -e "
const { personaSystem } = require('./dist/personas/index.js');
personaSystem.initialize().then(() => {
const analytics = personaSystem.getAnalytics();
console.log('System Health:', analytics.systemHealth);
console.log('Available Personas:', analytics.systemHealth.availablePersonas);
});
"
```
**Solutions**:
1. **Verify persona files**:
```bash
# Check if all 11 persona files exist
ls src/personas/specialists/*.md | wc -l
# Should output: 11
```
2. **Check configuration syntax**:
```bash
# Validate JSON configuration
uv run --no-project python -m json.tool src/config/personas-config.json
```
3. **Reinitialize persona system**:
```bash
npm run build
node -e "
const { PersonaSystem } = require('./dist/personas/index.js');
const system = new PersonaSystem();
system.initialize().then(success => console.log('Init:', success));
"
```
### Auto-Activation Not Working
**Symptoms**: Wrong personas activated or no auto-activation
**Debug Steps**:
1. **Persona Analytics Diagnostic**:
```bash
# Get comprehensive activation analysis
npm run build
node -e "
const { personaSystem } = require('./dist/personas/index.js');
async function analyzeActivation() {
await personaSystem.initialize();
// Test activation with debug
const result = await personaSystem.processInput(
'Review security vulnerabilities',
{ files: ['auth.ts'], debug: true }
);
console.log('=== Activation Analysis ===');
console.log('Success:', result.success);
console.log('Active Personas:', result.personas?.activePersonas?.map(p => p.name));
console.log('Confidence Scores:', result.personas?.activePersonas?.map(p => p.confidence));
if (result.personas?.detectionResults) {
console.log('Detection Results:');
result.personas.detectionResults.recommendations.forEach(rec => {
console.log(\`- \${rec.persona}: \${rec.confidence.toFixed(2)} (\${rec.reasoning})\`);
});
}
// Get usage analytics
const analytics = personaSystem.getAnalytics();
console.log('\\n=== Usage Analytics ===');
console.log('Total Interactions:', analytics.personaManager.totalInteractions);
console.log('Average Confidence:', analytics.personaManager.averageConfidence);
console.log('Learning Effectiveness:', analytics.learning.learningEffectiveness);
}
analyzeActivation().catch(console.error);
"
```
2. **Check activation engine**:
```bash
# Enable debug logging
DEBUG=persona:activation npm run test:personas
```
3. **Test manual activation**:
```bash
# Try manual persona flags
claude-code --persona-security "review this code"
```
4. **Verify configuration**:
```javascript
// Check persona auto-activation config
const config = require('./src/config/personas-config.json');
console.log(config.personas.security.auto_activation);
```
**Solutions**:
1. **Update activation keywords**:
```json
{
"personas": {
"security": {
"auto_activation": {
"keywords": ["security", "vulnerability", "auth", "crypto"],
"confidence_threshold": 0.7
}
}
}
}
```
2. **Reset learning data**:
```bash
# Clear session memory
rm -rf ~/.claude-buddy/sessions/
```
### Collaboration Issues
**Symptoms**: Personas not working together effectively
**Solutions**:
1. **Check collaboration matrix**:
```javascript
// Verify collaboration patterns
const manager = new PersonaManager();
await manager.initialize();
console.log(manager.collaborationMatrix);
```
2. **Test multi-persona activation**:
```bash
claude-code --persona-security --persona-performance "optimize this code"
```
## Hook System Issues
### Hooks Not Executing
**Symptoms**: File protection or command validation not working
**Diagnosis**:
```bash
# Check hook configuration
cat src/config/hooks-config.json
# Test individual hook
uv run --no-project python hooks/file-guard.py --test
```
**Solutions**:
1. **Verify UV execution**:
```bash
# Test UV Python execution
uv run --no-project python -c "print('UV working')"
```
2. **Check hook permissions**:
```bash
# Ensure hooks are executable
chmod +x hooks/*.py
```
3. **Test hook manually**:
```bash
# Run file guard directly
uv run --no-project python hooks/file-guard.py "test-file.txt"
```
### File Guard False Positives
**Symptoms**: Legitimate files being blocked from modification
**Solutions**:
1. **Check protection patterns**:
```python
# In hooks/file-guard.py
PROTECTED_PATTERNS = [
r'\.env$', # Adjust patterns as needed
r'\.env\.',
r'keys?\.json$',
]
```
2. **Add file exceptions**:
```python
# Add to file-guard.py
EXCEPTION_PATTERNS = [
r'test\.env$', # Allow test environment files
r'\.env\.example$', # Allow example files
]
```
### Command Validation Issues
**Symptoms**: Valid commands being blocked
**Solutions**:
1. **Update command allowlist**:
```python
# In hooks/command-validator.py
ALLOWED_COMMANDS = [
'git', 'npm', 'yarn', 'node', 'python', 'pip',
'your-custom-command' # Add your command
]
```
2. **Test command validation**:
```bash
uv run --no-project python hooks/command-validator.py "your-command"
```
## Performance Issues
### Slow Persona Activation
**Symptoms**: Long delays before persona responses
**Diagnosis**:
```bash
# Profile persona activation
time npm run test:personas
# Check memory usage
ps aux | grep node
# Use persona analytics for performance analysis
npm run build
node -e "
const { personaSystem } = require('./dist/personas/index.js');
async function profilePerformance() {
await personaSystem.initialize();
console.log('=== Performance Profiling ===');
const testInputs = [
'Review security issues',
'Optimize performance',
'Design architecture',
'Fix bugs'
];
for (const input of testInputs) {
const start = Date.now();
const result = await personaSystem.processInput(input);
const duration = Date.now() - start;
console.log(\`Input: \"\${input}\"\`);
console.log(\`Duration: \${duration}ms\`);
console.log(\`Personas: \${result.personas?.activePersonas?.map(p => p.name).join(', ') || 'none'}\`);
console.log('---');
}
// Get overall analytics
const analytics = personaSystem.getAnalytics();
console.log('System Health:', analytics.systemHealth);
console.log('Learning Effectiveness:', analytics.learning.learningEffectiveness);
}
profilePerformance().catch(console.error);
"
```
**Solutions**:
1. **Enable caching**:
```javascript
// In PersonaSystem
const system = new PersonaSystem({
enableCaching: true,
cacheTimeout: 5000
});
```
2. **Reduce confidence threshold**:
```json
{
"auto_activation": {
"confidence_threshold": 0.6 // Lower = faster activation
}
}
```
3. **Monitor learning patterns**:
```bash
# Check if learning system needs cleanup
node -e "
const { personaSystem } = require('./dist/personas/index.js');
personaSystem.initialize().then(() => {
const analytics = personaSystem.getAnalytics();
console.log('Session interactions:', analytics.learning.sessionStats.interactions);
console.log('Persistent patterns:', analytics.learning.persistentStats.successfulPatterns);
if (analytics.learning.sessionStats.interactions > 1000) {
console.log('RECOMMENDATION: Consider resetting session memory');
}
});
"
```
### High Memory Usage
**Solutions**:
1. **Clear session memory**:
```javascript
// Reset persona system periodically
await personaSystem.reset();
```
2. **Limit interaction history**:
```javascript
// In PersonaManager
if (this.sessionMemory.interactions.length > 50) {
this.sessionMemory.interactions =
this.sessionMemory.interactions.slice(-50);
}
```
## Debug Mode
### Enable Debug Logging
```bash
# Enable all debug logs
DEBUG=* npm run dev
# Enable specific modules
DEBUG=persona:* npm run dev
DEBUG=hooks:* npm run dev
DEBUG=activation:* npm run dev
```
### Verbose Testing
```bash
# Run tests with detailed output
npm run test -- --verbose
npm run test:personas -- --verbose
# Debug specific test
npm run test:debug -- --grep "persona activation"
```
### System Information
```bash
# Collect system info for bug reports
node -e "
console.log('Node:', process.version);
console.log('Platform:', process.platform);
console.log('Arch:', process.arch);
console.log('Memory:', Math.round(process.memoryUsage().heapUsed / 1024 / 1024) + 'MB');
"
uv --version
npm list claude-buddy
```
## Common Error Messages
### `TypeError: Cannot read property 'personas' of undefined`
**Cause**: Persona configuration not loaded
**Solution**:
```bash
# Rebuild and ensure config exists
npm run build
ls src/config/personas-config.json
```
### `Error: spawn uv ENOENT`
**Cause**: UV not installed or not in PATH
**Solution**: Install UV and add to PATH (see UV installation above)
### `Failed to initialize persona system`
**Cause**: Configuration or file loading errors
**Solution**:
```bash
# Check all required files
npm run test:smoke
# Fix any missing files or configuration errors
```
### `Hook execution timeout`
**Cause**: Hook taking too long to execute
**Solution**:
```json
{
"timeout": 10000, // Increase timeout in hooks-config.json
}
```
## Advanced Troubleshooting
### Generate Diagnostic Report
```bash
# Create comprehensive diagnostic report
npm run build
node -e "
const { PersonaSystem } = require('./dist/personas/index.js');
const system = new PersonaSystem();
async function diagnose() {
console.log('=== Claude Buddy Diagnostic Report ===');
console.log('Date:', new Date().toISOString());
console.log('Version:', require('./package.json').version);
try {
const success = await system.initialize();
console.log('Initialization:', success ? 'SUCCESS' : 'FAILED');
if (success) {
const analytics = system.getAnalytics();
console.log('Available personas:', analytics.systemHealth.availablePersonas);
console.log('System ready:', system.isReady());
}
} catch (error) {
console.log('Error:', error.message);
}
}
diagnose();
"
```
### Profile Performance
```bash
# Profile persona activation performance
node --prof -e "
const { PersonaSystem } = require('./dist/personas/index.js');
const system = new PersonaSystem();
async function profile() {
await system.initialize();
// Test activation speed
const start = Date.now();
await system.processInput('review security issues');
const end = Date.now();
console.log('Activation time:', end - start, 'ms');
}
profile();
"
```
### Memory Leak Detection
```bash
# Monitor memory usage over time
node --expose-gc -e "
const { PersonaSystem } = require('./dist/personas/index.js');
const system = new PersonaSystem();
async function memoryTest() {
await system.initialize();
for (let i = 0; i < 100; i++) {
await system.processInput('test input ' + i);
if (i % 10 === 0) {
global.gc();
const usage = process.memoryUsage();
console.log('Iteration', i, 'Memory:', Math.round(usage.heapUsed / 1024 / 1024) + 'MB');
}
}
}
memoryTest();
"
```
## Getting Help
### Before Reporting Issues
1. **Search existing issues**: Check GitHub issues for similar problems
2. **Run diagnostic tests**: Use the commands in this guide
3. **Collect system information**: Node version, OS, Claude Buddy version
4. **Create minimal reproduction**: Simplest case that shows the problem
### What to Include in Bug Reports
```bash
# System information
node --version
uv --version
npm list claude-buddy
# Diagnostic output
npm run test:smoke 2>&1
# Error logs (if any)
DEBUG=* npm run dev 2>&1 | head -50
```
### Community Resources
- **GitHub Issues**: [claude-buddy/issues](https://github.com/claude-buddy/claude-buddy/issues)
- **Documentation**: [Project README](../README.md)
- **API Reference**: [API Documentation](./api/README.md)
- **Architecture**: [Architecture Decision Records](./architecture/README.md)
### Emergency Recovery
If Claude Buddy is completely broken:
```bash
# Complete reset
npm uninstall -g claude-buddy
rm -rf ~/.claude-buddy/
rm -rf node_modules/
npm cache clean --force
# Clean reinstall
npm install
npm run build
npm run install-global
```