# Skill Learning System - Quick Start

## TL;DR

The skill learning system automatically learns from successful tasks and QA passes, storing learnings in the knowledge graph to improve future recommendations.

**Enable it in one line:**
```bash
python3 lib/qa_validator.py --learn --sync --verbose
```

## How It Works

1. **Task Completes** → QA validation passes
2. **System Analyzes** → Extracts skills used, patterns, tools
3. **Learning Created** → Stores in knowledge graph with metadata
4. **Future Tasks** → System recommends relevant skills based on prompt

## Basic Usage

### Run QA with Learning Extraction

```bash
# Standard QA validation only
python3 lib/qa_validator.py --sync --verbose

# With learning extraction enabled
python3 lib/qa_validator.py --learn --sync --verbose
```

### Extract Learnings from Completed Task

```python
from lib.skill_learning_engine import SkillLearningSystem

system = SkillLearningSystem()

task_data = {
    "task_id": "my_task",
    "prompt": "Refactor authentication module",
    "project": "overbits",
    "status": "success",
    "tools_used": ["Bash", "Read", "Edit"],
    "duration": 45.2,
    "result_summary": "Successfully refactored",
    "qa_passed": True,
    "timestamp": "2026-01-09T12:00:00"
}

qa_results = {
    "passed": True,
    "results": {"syntax": True, "routes": True},
    "summary": {"errors": 0}
}

result = system.process_task_completion(task_data, qa_results)
print(f"Learning ID: {result['learning_id']}")
```

### Get Recommendations for a Task

```python
system = SkillLearningSystem()

recommendations = system.get_recommendations(
    task_prompt="Debug authentication issue",
    project="overbits"
)

for rec in recommendations:
    print(f"{rec['skill']}: {rec['confidence']:.0%} confidence")
```

### View Learned Skills Profile

```python
profile = system.get_learning_summary()

print(f"Total learnings: {profile['total_learnings']}")
print(f"Top skills: {profile['top_skills']}")
```

## What Gets Learned

The system extracts and learns:

### Tool Usage
- Which tools are used for which tasks
- Tool frequency and patterns
- Tool combinations that work well together

### Decision Patterns
- **Optimization**: Performance improvement approaches
- **Debugging**: Error diagnosis and fixing strategies
- **Testing**: Validation and verification techniques
- **Refactoring**: Code improvement methods
- **Documentation**: Documentation practices
- **Integration**: System integration approaches
- **Automation**: Automation and scheduling patterns

### Project Knowledge
- Which projects benefit from which approaches
- Project-specific tool combinations
- Project patterns and best practices

### Quality Metrics
- Success rates by tool combination
- Task completion times
- QA pass rates by category

## Storage

All learnings stored in the **research knowledge graph**:

```
/etc/luz-knowledge/research.db
```

Query learnings:
```bash
python3 lib/knowledge_graph.py search "optimization"
python3 lib/knowledge_graph.py list research finding
```

## Examples

### Example 1: Learn from Database Optimization

```bash
# Task completes successfully with QA passing
python3 lib/qa_validator.py --learn --sync

# System automatically:
# - Identifies tools used: Bash, Read, Edit
# - Recognizes pattern: optimization
# - Stores learning about database optimization
# - Creates relations between tools and pattern
```

### Example 2: Get Recommendations

```python
# Later, for similar task:
recommendations = system.get_recommendations(
    "Optimize API endpoint performance",
    project="overbits"
)

# Might suggest:
# - Use Bash for performance analysis
# - Use Edit for code changes
# - Watch for optimization patterns
# - Similar to previous successful tasks
```

### Example 3: Build Team Knowledge

Run multiple tasks with learning enabled:
```bash
# Day 1: Deploy task with --learn
python3 lib/qa_validator.py --learn --sync

# Day 2: Optimization task with --learn
python3 lib/qa_validator.py --learn --sync

# Day 3: Similar deployment task
# System now has learnings from both previous tasks
recommendations = system.get_recommendations("Deploy new version")
```

## Statistics and Monitoring

View learning system statistics:

```bash
python3 lib/qa_learning_integration.py --stats
```

Output:
```
=== QA Learning Integration Statistics ===

  total_events: 42
  qa_passed: 40
  learnings_extracted: 38
  extraction_rate: 0.95
  last_event: 2026-01-09T12:00:00
```

## Testing

Quick test of the system:

```bash
python3 lib/skill_learning_engine.py test
```

Full test suite:
```bash
python3 -m pytest tests/test_skill_learning.py -v
```

## Troubleshooting

### "No learnings extracted"
- Check that QA actually passed
- Verify knowledge graph is accessible
- Run with `--verbose` to see details

### "Empty recommendations"
- Need to complete tasks with `--learn` first
- Task prompt must match learning keywords
- Check knowledge graph has entries:
  ```bash
  python3 lib/knowledge_graph.py list research finding
  ```

### "Permission denied"
- Check `/etc/luz-knowledge/` permissions
- Ensure user is in `ai-users` group
- Check knowledge graph domain permissions

## Next Steps

1. **Start collecting learnings**: Run tasks with `--learn`
2. **Monitor learnings**: Check statistics and knowledge graph
3. **Use recommendations**: Integrate into task routing
4. **Refine patterns**: Add custom extraction patterns as needed

## Learn More

- Full documentation: [SKILL_LEARNING_SYSTEM.md](./SKILL_LEARNING_SYSTEM.md)
- Source code: `lib/skill_learning_engine.py`
- Integration: `lib/qa_learning_integration.py`
- Tests: `tests/test_skill_learning.py`
