Claude-skill-registry experience-library
Capture task outcomes, score performance, and derive rules as token priors for continual learning without model weight changes. Use for post-task feedback, experience capture, pattern extraction, and learning from mistakes. Achieves continual learning for $18 per 100 samples vs $10k fine-tune cost. Triggers on "learn from experience", "capture patterns", "post-task analysis", "continual learning", "experience extraction".
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/experience-library" ~/.claude/skills/majiayu000-claude-skill-registry-experience-library && rm -rf "$T"
manifest:
skills/data/experience-library/SKILL.mdsource content
Experience Library Update
Purpose
Sample task answers, score outcomes, and derive rules as token priors - achieving continual learning for $18/100 samples vs $10k fine-tune cost, without changing model weights.
When to Use
- Post-task learning and improvement
- Capturing successful patterns
- Learning from failures
- Tool call optimization
- Building domain expertise over time
- Pattern extraction from experience
Core Instructions
Pattern: Experience Capture Loop
def update_experience_library(task, answer, outcome): """ Capture and learn from task experience """ # 1. Score the outcome score = evaluate_outcome(answer, outcome) # 2. Extract patterns if successful if score > threshold: pattern = extract_pattern(task, answer) library.add_rule(pattern) # 3. Use as token prior (no weight changes) return library.get_relevant_rules(new_task)
Step 1: Score Task Outcome
def evaluate_outcome(answer, outcome): """ Score how well the task was completed Returns: float: Score from 0.0 (failed) to 1.0 (perfect) """ metrics = { 'correctness': check_correctness(answer, outcome), 'efficiency': measure_efficiency(answer), 'completeness': check_completeness(answer, outcome) } # Weighted average score = ( metrics['correctness'] * 0.5 + metrics['efficiency'] * 0.3 + metrics['completeness'] * 0.2 ) return score
Step 2: Extract Patterns
def extract_pattern(task, answer): """ Extract reusable pattern from successful task """ pattern = { 'task_type': classify_task(task), 'approach': extract_approach(answer), 'tools_used': extract_tools(answer), 'context': extract_context(task), 'success_factors': analyze_success(answer), 'applicable_to': generalize_pattern(task) } return pattern
Step 3: Store as Token Prior
class ExperienceLibrary: """ Library of learned patterns (token-based, not model weights) """ def __init__(self): self.patterns = [] def add_rule(self, pattern): """Add successful pattern""" self.patterns.append({ 'pattern': pattern, 'timestamp': datetime.now(), 'usage_count': 0, 'success_rate': 1.0 }) def get_relevant_rules(self, new_task): """ Retrieve patterns relevant to new task Returns as token context (not model update) """ task_type = classify_task(new_task) relevant = [ p for p in self.patterns if task_type in p['pattern']['applicable_to'] ] # Sort by success rate relevant.sort( key=lambda x: x['success_rate'], reverse=True ) return relevant[:5] # Top 5 patterns
Step 4: Apply to New Tasks
def execute_with_experience(new_task, library): """ Execute task using learned patterns """ # 1. Get relevant patterns patterns = library.get_relevant_rules(new_task) # 2. Inject as context (token prior) context = format_patterns_as_context(patterns) # 3. Execute task with learned context result = execute_task(new_task, context=context) # 4. Update pattern statistics for pattern in patterns: pattern['usage_count'] += 1 if result.success: pattern['success_rate'] = update_success_rate(pattern) return result
Example Workflow
Initial Task (No Experience)
task = "Extract data from JSON API" answer = execute_task(task) outcome = {"success": True, "time": 5.2} # Score and capture score = evaluate_outcome(answer, outcome) # 0.85 if score > 0.7: pattern = extract_pattern(task, answer) library.add_rule(pattern)
Extracted Pattern:
{ 'task_type': 'api_data_extraction', 'approach': 'use_requests_with_retry', 'tools_used': ['requests', 'json'], 'success_factors': [ 'retry_logic', 'timeout_handling', 'error_checking' ], 'applicable_to': [ 'api_data_extraction', 'rest_api_calls', 'json_parsing' ] }
Similar Task Later (With Experience)
new_task = "Fetch user data from REST API" # Library automatically provides relevant patterns patterns = library.get_relevant_rules(new_task) # Claude receives patterns as token context: # "Previous successful approach: # - Use requests with retry logic # - Handle timeouts (30s) # - Validate JSON response # - Check status codes" # Execute with learned context result = execute_with_experience(new_task, library) # Faster, more reliable due to learned patterns
Performance Characteristics
| Approach | Cost | Time | Permanence |
|---|---|---|---|
| Fine-tuning | $10,000 | Days | Permanent (model weights) |
| Experience Library | $18/100 samples | Minutes | Session-based (token context) |
Advantages of Token Priors:
- Cost: 555x cheaper ($18 vs $10,000)
- Speed: Minutes vs days
- Flexibility: Easy to update/remove patterns
- No model changes: Works with any Claude version
- Transparency: Patterns are human-readable
Trade-offs:
- Token cost per request (small, ~100-200 tokens)
- Not permanent across sessions (unless persisted)
- Requires pattern storage and retrieval system
Pattern Storage
# Save patterns to disk import json def save_library(library, filename='experience_library.json'): """Persist patterns""" with open(filename, 'w') as f: json.dump(library.patterns, f, default=str) def load_library(filename='experience_library.json'): """Load patterns""" library = ExperienceLibrary() with open(filename) as f: library.patterns = json.load(f) return library
Best Practices
Pattern Quality
- Only store patterns from successful tasks (score > 0.7)
- Include context: task type, tools, environment
- Generalize appropriately (not too specific, not too vague)
- Update success rates based on actual usage
Pattern Pruning
- Remove low-performing patterns (success_rate < 0.5)
- Merge similar patterns to reduce redundancy
- Keep library size manageable (<100 patterns)
Context Injection
- Top 5 most relevant patterns per task
- Format as clear, actionable guidance
- Include success factors and pitfalls
Version
v1.0.0 (2025-10-23) - Based on meta-learning and ReAct optimization patterns