Claude Code Plugins

Community-maintained marketplace

Feedback

experience-library

@dredd-us/seashells
0
0

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 Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name experience-library
description 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".

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