383 lines
13 KiB
Markdown
Raw Normal View History

# Stop Hook Documentation
## Overview
The Stop Hook is a comprehensive session analytics and persistence engine that runs at the end of each Claude Code session. It implements the `/sc:save` logic with advanced performance tracking, providing detailed analytics about session effectiveness, learning consolidation, and intelligent session data storage.
## Purpose
The Stop Hook serves as the primary session analytics and persistence system for SuperClaude Framework, delivering:
- **Session Analytics**: Comprehensive performance and effectiveness metrics
- **Learning Consolidation**: Consolidation of learning events from the entire session
- **Session Persistence**: Intelligent session data storage with compression
- **Performance Optimization**: Recommendations for future sessions based on analytics
- **Quality Assessment**: Session success evaluation and improvement suggestions
- **Framework Effectiveness**: Measurement of SuperClaude framework impact
## Execution Context
### When This Hook Runs
- **Trigger**: Session termination in Claude Code
- **Context**: End of user session, before final cleanup
- **Data Available**: Complete session history, operations log, error records
- **Timing**: After all user operations completed, before session cleanup
### Hook Integration Points
- **Session Lifecycle**: Final stage of session processing
- **MCP Intelligence**: Coordinates with MCP servers for enhanced analytics
- **Learning Engine**: Consolidates learning events and adaptations
- **Framework Logic**: Applies SuperClaude framework patterns for analysis
## Performance Target
**Primary Target**: <200ms execution time for complete session analytics
### Performance Benchmarks
- **Initialization**: <50ms for component loading
- **Analytics Generation**: <100ms for comprehensive analysis
- **Session Persistence**: <30ms for data storage
- **Learning Consolidation**: <20ms for learning events processing
- **Total Processing**: <200ms end-to-end execution
### Performance Monitoring
```python
execution_time = (time.time() - start_time) * 1000
target_met = execution_time < self.performance_target_ms
```
## Session Analytics
### Comprehensive Performance Metrics
#### Overall Score Calculation
```python
overall_score = (
productivity * 0.4 +
effectiveness * 0.4 +
(1.0 - error_rate) * 0.2
)
```
#### Performance Categories
- **Productivity Score**: Operations per minute, completion rates
- **Quality Score**: Error rates, operation success rates
- **Intelligence Utilization**: MCP server usage, SuperClaude effectiveness
- **Resource Efficiency**: Memory, CPU, token usage optimization
- **User Satisfaction Estimate**: Derived from session patterns and outcomes
#### Analytics Components
```yaml
performance_metrics:
overall_score: 0.85 # Combined performance indicator
productivity_score: 0.78 # Operations efficiency
quality_score: 0.92 # Error-free execution rate
efficiency_score: 0.84 # Resource utilization
satisfaction_estimate: 0.87 # Estimated user satisfaction
```
### Bottleneck Identification
- **High Error Rate**: >20% operation failure rate
- **Low Productivity**: <50% productivity score
- **Underutilized Intelligence**: <30% MCP usage with SuperClaude enabled
- **Resource Constraints**: Memory/CPU/token usage optimization opportunities
### Optimization Opportunities Detection
- **Tool Usage Optimization**: >10 unique tools suggest coordination improvement
- **MCP Server Coordination**: <2 servers with >5 operations suggest better orchestration
- **Workflow Enhancement**: Pattern analysis for efficiency improvements
## Learning Consolidation
### Learning Events Processing
The hook consolidates all learning events generated during the session:
```python
def _consolidate_learning_events(self, context: dict) -> dict:
# Generate learning insights from session
insights = self.learning_engine.generate_learning_insights()
# Session-specific learning metrics
session_learning = {
'session_effectiveness': context.get('superclaude_effectiveness', 0),
'performance_score': context.get('session_productivity', 0),
'mcp_coordination_effectiveness': min(context.get('mcp_usage_ratio', 0) * 2, 1.0),
'error_recovery_success': 1.0 - context.get('error_rate', 0)
}
```
### Learning Categories
- **Effectiveness Feedback**: Session performance patterns
- **User Preferences**: Interaction and usage patterns
- **Technical Patterns**: Tool usage and coordination effectiveness
- **Error Recovery**: Success patterns for error handling
### Adaptation Creation
- **Session-Level Adaptations**: Immediate session pattern learning
- **User-Level Adaptations**: Long-term preference learning
- **Technical Adaptations**: Tool and workflow optimization patterns
## Session Persistence
### Intelligent Storage Strategy
#### Data Classification
- **Session Analytics**: Complete performance and effectiveness data
- **Learning Events**: Consolidated learning insights and adaptations
- **Context Data**: Session operational context and metadata
- **Recommendations**: Generated suggestions for future sessions
#### Compression Logic
```python
# Apply compression for large session data
if len(analytics_data) > 10000: # 10KB threshold
compression_result = self.compression_engine.compress_content(
analytics_data,
context,
{'content_type': 'session_data'}
)
```
#### Storage Optimization
- **Session Cleanup**: Maintains 50 most recent sessions
- **Automatic Pruning**: Removes sessions older than retention policy
- **Compression**: Applied to sessions >10KB for storage efficiency
### Persistence Results
```yaml
persistence_result:
persistence_enabled: true
session_data_saved: true
analytics_saved: true
learning_data_saved: true
compression_applied: true
compression_ratio: 0.65
storage_optimized: true
```
## Recommendations Generation
### Performance Improvements
Generated when overall score <70%:
- Focus on reducing error rate through validation
- Enable more SuperClaude intelligence features
- Optimize tool selection and usage patterns
### SuperClaude Optimizations
Based on framework effectiveness analysis:
- **Low Effectiveness (<60%)**: Enable more MCP servers, use delegation features
- **Disabled Framework**: Recommend SuperClaude enablement for productivity
- **Underutilization**: Activate compression and intelligence features
### Learning Suggestions
- **Low Learning Events (<3)**: Engage with more complex operations
- **Pattern Recognition**: Suggestions based on successful session patterns
- **Workflow Enhancement**: Recommendations for process improvements
### Workflow Enhancements
Based on error patterns and efficiency analysis:
- **High Error Rate (>10%)**: Use validation hooks, enable pre-tool intelligence
- **Resource Optimization**: Memory, CPU, token usage improvements
- **Coordination Enhancement**: Better MCP server and tool coordination
## Configuration
### Hook Configuration
Loaded from `superclaude-config.json` hook configuration:
```yaml
stop_hook:
performance_target_ms: 200
analytics:
comprehensive_metrics: true
learning_consolidation: true
recommendation_generation: true
persistence:
enabled: true
compression_threshold_bytes: 10000
session_retention_count: 50
learning:
session_adaptations: true
user_preference_tracking: true
technical_pattern_learning: true
```
### Session Configuration
Falls back to session.yaml configuration when available:
```yaml
session:
analytics_enabled: true
learning_consolidation: true
performance_tracking: true
recommendation_generation: true
persistence_optimization: true
```
## Integration with /sc:save
### Command Implementation
The Stop Hook directly implements the `/sc:save` command logic:
#### Core /sc:save Features
- **Session Analytics**: Complete session performance analysis
- **Learning Consolidation**: All learning events processed and stored
- **Intelligent Persistence**: Session data saved with optimization
- **Recommendation Generation**: Actionable suggestions for improvement
- **Performance Tracking**: <200ms execution time monitoring
#### /sc:save Workflow Integration
```python
def process_session_stop(self, session_data: dict) -> dict:
# 1. Extract session context
context = self._extract_session_context(session_data)
# 2. Analyze session performance (/sc:save analytics)
performance_analysis = self._analyze_session_performance(context)
# 3. Consolidate learning events (/sc:save learning)
learning_consolidation = self._consolidate_learning_events(context)
# 4. Generate session analytics (/sc:save metrics)
session_analytics = self._generate_session_analytics(...)
# 5. Perform session persistence (/sc:save storage)
persistence_result = self._perform_session_persistence(...)
# 6. Generate recommendations (/sc:save recommendations)
recommendations = self._generate_recommendations(...)
```
### /sc:save Output Format
```yaml
session_report:
session_id: "session_2025-01-31_14-30-00"
session_completed: true
completion_timestamp: 1704110400
analytics:
session_summary: {...}
performance_metrics: {...}
superclaude_effectiveness: {...}
quality_analysis: {...}
learning_summary: {...}
persistence:
persistence_enabled: true
analytics_saved: true
compression_applied: true
recommendations:
performance_improvements: [...]
superclaude_optimizations: [...]
learning_suggestions: [...]
workflow_enhancements: [...]
```
## Quality Assessment
### Session Success Criteria
A session is considered successful when:
- **Overall Score**: >60% performance score
- **SuperClaude Effectiveness**: >60% when framework enabled
- **Learning Achievement**: >0 insights generated
- **Recommendations**: Actionable suggestions provided
### Quality Metrics
```yaml
quality_analysis:
error_rate: 0.05 # 5% error rate
operation_success_rate: 0.95 # 95% success rate
bottlenecks: ["low_productivity"] # Identified issues
optimization_opportunities: [...] # Improvement areas
```
### Success Indicators
- **Session Success**: `overall_score > 0.6`
- **SuperClaude Effective**: `effectiveness_score > 0.6`
- **Learning Achieved**: `insights_generated > 0`
- **Recommendations Generated**: `total_recommendations > 0`
### User Satisfaction Estimation
```python
def _estimate_user_satisfaction(self, context: dict) -> float:
satisfaction_factors = []
# Error rate impact
satisfaction_factors.append(1.0 - error_rate)
# Productivity impact
satisfaction_factors.append(productivity)
# SuperClaude effectiveness impact
if superclaude_enabled:
satisfaction_factors.append(effectiveness)
# Session duration optimization (15-60 minutes optimal)
satisfaction_factors.append(duration_satisfaction)
return statistics.mean(satisfaction_factors)
```
## Error Handling
### Graceful Degradation
When errors occur during hook execution:
```python
except Exception as e:
log_error("stop", str(e), {"session_data": session_data})
return self._create_fallback_report(session_data, str(e))
```
### Fallback Reporting
```yaml
fallback_report:
session_completed: false
error: "Analysis engine failure"
fallback_mode: true
analytics:
performance_metrics:
overall_score: 0.0
persistence:
persistence_enabled: false
```
### Recovery Strategies
- **Analytics Failure**: Provide basic session summary
- **Persistence Failure**: Continue with recommendations generation
- **Learning Engine Error**: Skip learning consolidation, continue with core analytics
- **Complete Failure**: Return minimal session completion report
## Performance Optimization
### Efficiency Strategies
- **Lazy Loading**: Components initialized only when needed
- **Batch Processing**: Multiple analytics operations combined
- **Compression**: Large session data automatically compressed
- **Caching**: Learning insights cached for reuse
### Resource Management
- **Memory Optimization**: Session cleanup after processing
- **Storage Efficiency**: Old sessions automatically pruned
- **Processing Time**: <200ms target with continuous monitoring
- **Token Efficiency**: Compressed analytics data when appropriate
## Future Enhancements
### Planned Features
- **Cross-Session Analytics**: Performance trends across multiple sessions
- **Predictive Recommendations**: ML-based optimization suggestions
- **Real-Time Monitoring**: Live session analytics during execution
- **Collaborative Learning**: Shared learning patterns across users
- **Advanced Compression**: Context-aware compression algorithms
### Integration Opportunities
- **Dashboard Integration**: Real-time analytics visualization
- **Notification System**: Alerts for performance degradation
- **API Endpoints**: Session analytics via REST API
- **Export Capabilities**: Analytics data export for external analysis
---
*The Stop Hook represents the culmination of session management in SuperClaude Framework, providing comprehensive analytics, learning consolidation, and intelligent persistence to enable continuous improvement and optimization of user productivity.*