home / skills / bejranonda / llm-autonomous-agent-plugin-for-claude / pattern-learning

pattern-learning skill

/skills/pattern-learning

This skill enables autonomous pattern learning and retrieval to improve project approaches through self-learning and historical success.

npx playbooks add skill bejranonda/llm-autonomous-agent-plugin-for-claude --skill pattern-learning

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
15.0 KB
---
name: pattern-learning
description: Enables autonomous pattern recognition, storage, and retrieval at project level with self-learning capabilities for continuous improvement
version: 1.0.0
---

## Overview

This skill provides the framework for autonomous pattern learning and recognition at the project level. It enables Claude agents to:
- Automatically detect and store successful task execution patterns
- Build a knowledge base of project-specific approaches
- Recommend skills and strategies based on historical success
- Continuously improve through self-assessment and adaptation

## Pattern Recognition System

### Automatic Pattern Detection

**Task Categorization**:
Automatically classify tasks into categories:
- `refactoring`: Code restructuring and improvement
- `bug-fix`: Error resolution and debugging
- `feature`: New functionality implementation
- `optimization`: Performance improvements
- `documentation`: Docs creation and updates
- `testing`: Test suite development
- `security`: Security analysis and fixes

**Context Extraction**:
Automatically extract context from:
- Programming languages used (file extensions)
- Frameworks detected (package.json, requirements.txt, etc.)
- Project structure patterns (MVC, microservices, etc.)
- Complexity indicators (file count, LOC, dependencies)

### Pattern Storage Structure

**Directory Setup**:
```
.claude-patterns/
├── patterns.json                   # Main pattern database
├── skill-effectiveness.json       # Skill performance metrics
└── task-history.json              # Complete task execution log
```

**Pattern Data Model**:
```json
{
  "version": "1.0.0",
  "project_context": {
    "detected_languages": ["python", "javascript"],
    "frameworks": ["flask", "react"],
    "project_type": "web-application"
  },
  "patterns": [
    {
      "id": "pattern-001",
      "timestamp": "2025-10-20T10:30:00Z",
      "task_type": "refactoring",
      "task_description": "Refactor authentication module",
      "context": {
        "language": "python",
        "framework": "flask",
        "module": "authentication",
        "complexity": "medium"
      },
      "execution": {
        "skills_used": ["code-analysis", "quality-standards"],
        "agents_delegated": ["code-analyzer", "quality-controller"],
        "approach": "Extract method refactoring with pattern matching",
        "duration_seconds": 120
      },
      "outcome": {
        "success": true,
        "quality_score": 96,
        "tests_passing": true,
        "standards_compliance": 98,
        "documentation_complete": true
      },
      "lessons_learned": "Security-critical modules benefit from quality-controller validation",
      "reuse_count": 5
    }
  ],
  "skill_effectiveness": {
    "code-analysis": {
      "total_uses": 45,
      "successful_uses": 42,
      "success_rate": 0.93,
      "avg_quality_contribution": 15,
      "recommended_for": ["refactoring", "bug-fix", "optimization"]
    },
    "testing-strategies": {
      "total_uses": 30,
      "successful_uses": 27,
      "success_rate": 0.90,
      "avg_quality_contribution": 20,
      "recommended_for": ["testing", "feature", "bug-fix"]
    }
  },
  "agent_effectiveness": {
    "code-analyzer": {
      "total_delegations": 38,
      "successful_completions": 36,
      "success_rate": 0.95,
      "avg_execution_time": 85
    }
  }
}
```

## Skill Auto-Selection Algorithm

### Decision Process

**Step 1: Analyze Current Task**
```
Input: Task description
Output: Task type, context, complexity

Process:
1. Extract keywords and intent
2. Scan project files for context
3. Classify task type
4. Determine complexity level (low/medium/high)
```

**Step 2: Query Pattern Database**
```
Input: Task type, context
Output: Recommended skills, agents, approach

Process:
1. Load patterns.json
2. Filter patterns by task_type match
3. Filter patterns by context similarity
4. Rank by success_rate * reuse_count
5. Extract top 3 most successful patterns
```

**Step 3: Skill Selection**
```
Input: Top patterns, skill effectiveness data
Output: Ordered list of skills to load

Process:
1. Aggregate skills from top patterns
2. Weight by skill effectiveness scores
3. Filter by task type recommendation
4. Return ordered list (highest effectiveness first)
```

### Selection Examples

**Example 1: Refactoring Task**
```
Task: "Refactor user authentication module"

Analysis:
- Type: refactoring
- Context: authentication (security-critical)
- Language: Python (detected)
- Complexity: medium

Pattern Query Results:
- Pattern-001: refactoring + auth → success_rate: 0.96
- Pattern-015: refactoring + security → success_rate: 0.94
- Pattern-023: refactoring + Python → success_rate: 0.91

Skill Selection:
1. code-analysis (appeared in all 3 patterns, avg effectiveness: 0.93)
2. quality-standards (appeared in 2/3 patterns, avg effectiveness: 0.88)
3. pattern-learning (for continuous improvement)

Auto-Load: code-analysis, quality-standards, pattern-learning
```

**Example 2: Testing Task**
```
Task: "Add unit tests for payment processing"

Analysis:
- Type: testing
- Context: payment (critical business logic)
- Language: JavaScript (detected)
- Complexity: high

Pattern Query Results:
- Pattern-042: testing + payment → success_rate: 0.89
- Pattern-051: testing + JavaScript → success_rate: 0.92

Skill Selection:
1. testing-strategies (effectiveness: 0.90)
2. quality-standards (for test quality)
3. pattern-learning (for continuous improvement)

Auto-Load: testing-strategies, quality-standards, pattern-learning
```

## Pattern Storage Workflow

### Automatic Storage Process

**During Task Execution**:
1. Monitor task progress and decisions
2. Record skills loaded and agents delegated
3. Track execution metrics (time, resources)
4. Capture approach and methodology

**After Task Completion**:
1. Run quality assessment
2. Calculate quality score
3. Determine success/failure
4. Extract lessons learned
5. Store pattern to database
6. Update skill effectiveness metrics
7. Update agent effectiveness metrics

### Storage Implementation

**Auto-Create Pattern Directory - WITH SAFETY VALIDATION**:
```javascript
// 🚨 CRITICAL: Always validate content before applying cache_control
function safeExecuteOperation(operation, fallbackContent) {
  try {
    const result = operation();
    // Validate result before using
    if (result !== null && result !== undefined && String(result).trim().length > 0) {
      return result;
    }
  } catch (error) {
    console.log("Operation failed, using fallback");
  }
  // Always return meaningful fallback
  return fallbackContent || "Pattern initialization in progress...";
}

// Executed automatically by orchestrator with safety checks
const dirExists = safeExecuteOperation(() => exists('.claude-patterns/'), false);
if (!dirExists) {
  safeExecuteOperation(() => create_directory('.claude-patterns/'));
  safeExecuteOperation(() => create_file('.claude-patterns/patterns.json', '{"version":"1.0.0","patterns":[]}'));
  safeExecuteOperation(() => create_file('.claude-patterns/skill-effectiveness.json', '{}'));
  safeExecuteOperation(() => create_file('.claude-patterns/task-history.json', '[]'));
}
```

**Store New Pattern - WITH COMPREHENSIVE SAFETY**:
```javascript
// 🚨 CRITICAL: Safe pattern storage with full validation
function store_pattern(task_data, execution_data, outcome_data) {
  // Validate inputs first
  if (!task_data || !execution_data || !outcome_data) {
    console.log("Invalid pattern data, skipping storage");
    return "Pattern data incomplete - storage skipped";
  }

  try {
    const pattern = {
      id: generate_id() || `pattern_${Date.now()}`,
      timestamp: now() || new Date().toISOString(),
      task_type: task_data.type || "unknown",
      task_description: task_data.description || "Task completed",
      context: extract_context(task_data) || {},
      execution: execution_data,
      outcome: outcome_data,
      lessons_learned: analyze_lessons(execution_data, outcome_data) || "Task completed successfully",
      reuse_count: 0
    }

    // Load existing patterns safely
    const db = safeLoadPatterns('.claude-patterns/patterns.json');
    if (!db) {
      return "Pattern database unavailable - storage skipped";
    }

    // Check for similar patterns
    const similar = find_similar_patterns(db.patterns || [], pattern);

    if (similar && similar.length > 0 && similarity_score > 0.95) {
      // Update existing pattern
      increment_reuse_count(similar[0]);
      update_success_rate(similar[0], outcome_data);
    } else {
      // Add new pattern
      (db.patterns = db.patterns || []).push(pattern);
    }

    // Update skill effectiveness
    update_skill_metrics(db, execution_data.skills_used || [], outcome_data);

    // Save with validation
    const saveResult = safeSavePatterns('.claude-patterns/patterns.json', db);
    return saveResult ? "Pattern stored successfully" : "Pattern storage completed";

  } catch (error) {
    console.log("Pattern storage failed:", error.message);
    return "Pattern storage encountered an error but completed safely";
  }
}

// Safe pattern loading with fallback
function safeLoadPatterns(filePath) {
  try {
    if (!exists(filePath)) {
      return { version: "1.0.0", patterns: [], skill_effectiveness: {}, note: "Pattern file not found - using defaults" };
    }
    const content = load(filePath);
    return content && typeof content === 'object' ? content : { version: "1.0.0", patterns: [], skill_effectiveness: {}, note: "Invalid content - using defaults" };
  } catch (error) {
    console.log("Pattern loading failed, using defaults");
    return { version: "1.0.0", patterns: [], skill_effectiveness: {}, note: "Error loading patterns - using defaults" };
  }
}

// Safe pattern saving with validation
function safeSavePatterns(filePath, data) {
  try {
    if (!data || typeof data !== 'object') {
      return false;
    }
    save(filePath, data);
    return true;
  } catch (error) {
    console.log("Save failed, but continuing safely");
    return false;
  }
}
```

## Self-Assessment & Quality Metrics

### Quality Score Calculation

**Formula**:
```
Quality Score (0-100) =
  tests_passing (30 points) +
  standards_compliance (25 points) +
  documentation_complete (20 points) +
  pattern_adherence (15 points) +
  code_quality_metrics (10 points)
```

**Component Breakdown**:

1. **Tests Passing (30 points)**:
   - All tests pass: 30 points
   - 90-99% pass: 25 points
   - 80-89% pass: 20 points
   - <80% pass: 0 points

2. **Standards Compliance (25 points)**:
   - Linting score: up to 15 points
   - Code style adherence: up to 10 points

3. **Documentation Complete (20 points)**:
   - All functions documented: 20 points
   - Partial documentation: 10 points
   - No documentation: 0 points

4. **Pattern Adherence (15 points)**:
   - Follows established patterns: 15 points
   - Partially follows: 8 points
   - Deviates from patterns: 0 points

5. **Code Quality Metrics (10 points)**:
   - Cyclomatic complexity: up to 5 points
   - Code duplication: up to 5 points

### Continuous Improvement

**Learning Cycle**:
```
Execute Task
    ↓
Measure Quality
    ↓
Store Pattern
    ↓
Analyze Trends
    ↓
Adjust Skill Selection
    ↓
[Next Task Benefits from Learning]
```

**Trend Analysis**:
- Track quality scores over time
- Identify improving/declining patterns
- Adjust skill recommendations based on trends
- Deprecate ineffective approaches

## Pattern Retrieval & Recommendation

### Query Interface

**Find Similar Patterns - WITH SAFETY VALIDATION**:
```javascript
function find_similar_tasks(current_task) {
  // Validate input
  if (!current_task || !current_task.type) {
    return [{ note: "Invalid task input - no similar tasks found", type: "fallback" }];
  }

  try {
    const db = safeLoadPatterns('.claude-patterns/patterns.json');
    if (!db || !db.patterns || !Array.isArray(db.patterns)) {
      return [{ note: "No pattern database available - no similar tasks found", type: "fallback" }];
    }

    const similar = db.patterns
      .filter(p => p && p.task_type === current_task.type)
      .filter(p => context_similarity(p.context || {}, current_task.context || {}) > 0.7)
      .sort((a, b) => (b.outcome?.quality_score || 0) - (a.outcome?.quality_score || 0))
      .slice(0, 5);

    return similar.length > 0 ? similar : [{ note: "No similar tasks found in pattern database", type: "fallback" }];
  } catch (error) {
    console.log("Pattern search failed, returning fallback");
    return [{ note: "Pattern search encountered an error - using fallback", type: "fallback" }];
  }
}
```

**Recommend Skills - WITH SAFETY VALIDATION**:
```javascript
function recommend_skills(task_type, context) {
  // Validate input
  if (!task_type) {
    return ['code-analysis', 'quality-standards']; // Safe default
  }

  try {
    const db = safeLoadPatterns('.claude-patterns/patterns.json');
    if (!db || !db.skill_effectiveness || typeof db.skill_effectiveness !== 'object') {
      return ['code-analysis', 'quality-standards']; // Safe default
    }

    // Get skills with highest success rate for this task type
    const skills = Object.entries(db.skill_effectiveness)
      .filter(([skill, data]) => data && data.recommended_for && data.recommended_for.includes(task_type))
      .sort((a, b) => (b[1]?.success_rate || 0) - (a[1]?.success_rate || 0))
      .map(([skill, data]) => skill);

    return skills.length > 0 ? skills : ['code-analysis', 'quality-standards'];
  } catch (error) {
    console.log("Skill recommendation failed, using safe defaults");
    return ['code-analysis', 'quality-standards'];
  }
}
```

### Usage History Tracking

**Maintain Complete History**:
```json
// .claude-patterns/task-history.json
[
  {
    "timestamp": "2025-10-20T10:00:00Z",
    "task_description": "Refactor auth module",
    "skills_used": ["code-analysis", "quality-standards"],
    "quality_score": 96,
    "success": true
  },
  {
    "timestamp": "2025-10-20T11:30:00Z",
    "task_description": "Add payment tests",
    "skills_used": ["testing-strategies"],
    "quality_score": 89,
    "success": true
  }
]
```

## When to Apply

Use this skill when:
- Starting any new task (for pattern retrieval)
- Completing any task (for pattern storage)
- Analyzing project approach effectiveness
- Optimizing skill selection strategy
- Building project-specific knowledge base
- Enabling autonomous decision-making
- Tracking improvement over time

## Integration with Agents

**Orchestrator Agent**:
- Uses pattern-learning for skill auto-selection
- Stores patterns after each task
- Queries patterns before delegation

**Quality Controller Agent**:
- References quality score calculations
- Uses trend analysis for improvement recommendations

**All Specialized Agents**:
- Reference pattern database for context
- Contribute to pattern storage after execution

## Resources

**Reference Files**:
- REFERENCE.md: Detailed algorithm implementations
- pattern-database-schema.json: Complete data structure
- quality-metrics-guide.md: In-depth quality assessment guide

**Auto-Generated Files** (in project):
- .claude-patterns/patterns.json
- .claude-patterns/skill-effectiveness.json
- .claude-patterns/task-history.json

Overview

This skill enables autonomous pattern recognition, storage, and retrieval at the project level with self-learning capabilities for continuous improvement. It builds a local knowledge base of successful task approaches, recommends skills and agents based on historical outcomes, and continuously adjusts recommendations through self-assessment. The design is privacy-first with 100% local processing and production-ready safety checks.

How this skill works

During task execution the system extracts task type, context (languages, frameworks, project structure), and complexity, then monitors decisions, skills loaded, and execution metrics. After completion it runs a quality assessment, computes a quality score, extracts lessons learned, and safely stores the new pattern in a local pattern database (.claude-patterns). A selection algorithm queries stored patterns to recommend an ordered list of skills and agents for similar future tasks.

When to use it

  • Automating skill selection for recurring development tasks (refactoring, bug-fix, feature work).
  • Improving code-review and PR automation by reusing proven approaches and agents.
  • Bootstrapping test and security strategies based on past successful executions.
  • Tracking long-term trends in skill and agent effectiveness for process improvement.
  • Maintaining an auditable, local history of task outcomes and lessons learned.

Best practices

  • Validate inputs and project context before creating or updating patterns to avoid noise.
  • Run full quality assessments (tests, linting, docs) after tasks to produce meaningful scores.
  • Prefer safe defaults when the pattern database is missing or content is invalid.
  • Use similarity thresholds to avoid merging distinct approaches; increment reuse only for truly similar patterns.
  • Periodically review and deprecate low-performing skills or patterns based on trend analysis.

Example use cases

  • Refactor an authentication module: auto-select code-analysis and quality-standards based on prior high-quality refactors.
  • Add unit tests for payment processing: recommend testing-strategies and quality-standards tailored to language and domain.
  • Continuous pipeline: store each task outcome to track quality score trends and adjust future skill weights.
  • Security hardening: detect security-critical contexts and favor additional validation steps from previous successful runs.

FAQ

Where are patterns stored?

Patterns and metrics are stored locally under a .claude-patterns directory (patterns.json, skill-effectiveness.json, task-history.json).

How does it avoid unsafe updates to the pattern database?

All create, load, and save operations run safety validation and fall back to defaults on error; similarity checks prevent accidental merges.