📊 Error Analytics Skill
name: error-analytics
description: Analyze error patterns, identify root causes, and provide systematic solutions
🎯 Purpose
วิเคราะห์ error patterns, หา root causes, และเสนอ systematic solutions เพื่อลด recurring errors
📋 When to Use
- เจอ errors ซ้ำๆ
- ต้องการเข้าใจ error patterns
- Reduce error rate
- Improve error handling
- Debug production issues
🔧 Analysis Dimensions
1. Error Classification
| Category | Examples |
|---|
| Syntax | SyntaxError, TSError |
| Runtime | TypeError, ReferenceError |
| Logic | Wrong output, infinite loops |
| Network | Timeout, CORS, 404/500 |
| Resource | Memory, disk, connection |
2. Error Frequency
High Frequency (daily) → Fix immediately
Medium Frequency (weekly) → Plan fix
Low Frequency (monthly) → Monitor
3. Error Impact
Critical (app crash) → Highest priority
Major (feature broken) → High priority
Minor (cosmetic issue) → Low priority
📊 Error Pattern Analysis
Common Patterns
Null Reference Errors
// Pattern: Accessing property of null/undefined
TypeError: Cannot read property 'x' of undefined
// Analysis: Missing null checks
// Occurrences: 45 times in last week
// Location: UserProfile.tsx, OrderPage.tsx
// Solution: Add optional chaining
const value = obj?.property ?? default;
Async/Await Errors
// Pattern: Unhandled promise rejection
UnhandledPromiseRejection: ...
// Analysis: Missing try-catch or .catch()
// Occurrences: 23 times
// Solution: Wrap in try-catch
try {
await asyncOperation();
} catch (error) {
handleError(error);
}
API Errors
// Pattern: Network failures
Error: Network request failed
// Analysis:
// - 30% timeout (> 30s response)
// - 50% server errors (500)
// - 20% client errors (400)
// Solutions:
// - Add retry logic
// - Implement circuit breaker
// - Add request timeout
📝 Analysis Process
1. COLLECT error data
- Error messages
- Stack traces
- Frequency
- Timestamps
2. CATEGORIZE errors
- By type
- By location
- By severity
3. IDENTIFY patterns
- Common root causes
- Related errors
- Trigger conditions
4. ANALYZE root cause
- Why does it happen?
- What triggers it?
- Who does it affect?
5. PROPOSE solutions
- Quick fixes
- Long-term solutions
- Prevention strategies
6. TRACK results
- Error rate before/after
- Recurrence
- Side effects
📋 Error Analysis Report Template
## 📊 Error Analysis Report
### Period: {date range}
### Total Errors: {count}
---
### 🔴 Critical Errors
#### Error: {error message}
- **Occurrences**: {count}
- **Files affected**: {list}
- **Root cause**: {analysis}
- **Solution**: {proposed fix}
- **Priority**: Critical
---
### 📈 Error Trends
| Error Type | Last Week | This Week | Trend |
|------------|-----------|-----------|-------|
| TypeError | 45 | 12 | ⬇️ -73% |
| NetworkError | 30 | 35 | ⬆️ +17% |
| SyntaxError | 5 | 0 | ⬇️ -100% |
### 🎯 Top Recommendations
1. Add global error boundary
2. Implement retry logic for API calls
3. Add input validation on forms
🔧 Error Monitoring Setup
Sentry
import * as Sentry from '@sentry/react';
Sentry.init({
dsn: 'your-dsn',
environment: process.env.NODE_ENV,
tracesSampleRate: 1.0,
});
// Capture errors
Sentry.captureException(error);
Custom Error Tracking
class ErrorTracker {
private errors: ErrorLog[] = [];
log(error: Error, context: object) {
this.errors.push({
message: error.message,
stack: error.stack,
context,
timestamp: new Date(),
});
this.analyze();
}
analyze() {
const grouped = groupBy(this.errors, 'message');
const frequent = Object.entries(grouped)
.filter(([, errors]) => errors.length > 5)
.map(([message, errors]) => ({
message,
count: errors.length,
lastOccurred: errors[errors.length - 1].timestamp,
}));
return frequent;
}
}
📊 Key Metrics
| Metric | Description | Target |
|---|
| Error Rate | Errors per 1000 requests | < 1% |
| MTTR | Mean time to resolve | < 4 hours |
| Recurrence | Same error repeating | 0% |
| Coverage | Errors with handling | 100% |
✅ Error Prevention Checklist
🔗 Related Skills
debugging - Debug specific errors
auto-debug - Auto-fix errors
logging - Error logging
testing - Prevent errors