claude-reflection

Claude Reflection Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "claude-reflection" with this command: npx skills add vamseeachanta/workspace-hub/vamseeachanta-workspace-hub-claude-reflection

Claude Reflection Skill

Meta-skill for continuous self-improvement through the Reflect, Abstract, Generalize, Store loop.

Quick Start

Auto-triggers on detection of:

- User corrections

- Preference statements

- Repeated patterns

- Positive reinforcement

Manual trigger for reflection

/claude-reflection

Review captured learnings

cat ~/.claude/memory/learnings.yaml

Sync learnings across sessions

/claude-reflection --sync

Overview

The claude-reflection skill enables Claude to learn continuously from user interactions, capturing corrections, preferences, workflow patterns, and positive feedback. Unlike session-scoped context, learnings persist across conversations through structured memory files.

Why This Matters

Without reflection:

  • Same mistakes repeated across sessions

  • User preferences forgotten

  • Valuable patterns lost

  • No accumulation of domain knowledge

With reflection:

  • Corrections learned once, applied forever

  • User preferences remembered and applied

  • Workflow patterns automated over time

  • Domain expertise accumulates across sessions

Core Philosophy

REFLECT - Notice what happened (correction, preference, pattern) ABSTRACT - Extract the generalizable principle GENERALIZE - Determine scope (global, domain, project, session) STORE - Persist to appropriate memory file

When to Use

Auto-Detection Triggers

This skill auto-executes when it detects these patterns in conversation:

  1. Direct Correction

User: "No, don't use snake_case for that. Use camelCase for JavaScript." Trigger: Explicit correction of Claude's behavior Action: Capture coding style preference

  1. Preference Statement

User: "I prefer shorter commit messages, just one line." Trigger: Statement of preference (I prefer, I like, I want, always, never) Action: Capture workflow preference

  1. Explicit Memory Request

User: "Remember that this project uses tabs, not spaces." Trigger: Direct request to remember (remember, don't forget, always do) Action: Store as project-level preference

  1. Positive Reinforcement

User: "Perfect! That's exactly how I want error messages formatted." Trigger: Positive feedback on specific behavior Action: Reinforce and capture the pattern

  1. Repeated Patterns

User asks for the same type of change 3+ times in a session Trigger: Repetition detection Action: Extract pattern for automation

  1. Error-Then-Success

Claude makes mistake -> User corrects -> Claude succeeds Trigger: Correction followed by success Action: Capture the correction as a learning

Manual Trigger

Force reflection analysis on recent conversation

/claude-reflection

Reflect on specific topic

/claude-reflection --topic "code formatting"

Export learnings for review

/claude-reflection --export

Clear session learnings (keeps persistent)

/claude-reflection --clear-session

Core Process

The Reflect-Abstract-Generalize-Store Loop

                +------------------+
                |    DETECTION     |
                | (correction,     |
                |  preference,     |
                |  pattern)        |
                +--------+---------+
                         |
                         v

+------------------+ +---------+ +------------------+ | REFLECT |<---| Event |--->| ABSTRACT | | What happened? | +---------+ | What's the | | What was wrong? | | underlying | | What was right? | | principle? | +--------+---------+ +--------+---------+ | | v v +------------------+ +------------------+ | GENERALIZE | | STORE | | What scope? | | Where to save? | | Global/Domain/ | | What format? | | Project/Session | | How to retrieve? | +--------+---------+ +------------------+ | ^ +--------------------------------------+

Step 1: Reflect

Analyze what happened in the interaction:

Example reflection analysis

def reflect(interaction: dict) -> dict: """Analyze what happened and why.""" reflection = { "event_type": classify_event(interaction), "what_happened": interaction["claude_action"], "user_response": interaction["user_feedback"], "outcome": "correction" | "success" | "preference", "confidence": calculate_confidence(interaction) } return reflection

Example: User corrected formatting

{

"event_type": "correction",

"what_happened": "Used 4-space indentation",

"user_response": "Use 2-space indentation for this project",

"outcome": "correction",

"confidence": 0.95

}

Step 2: Abstract

Extract the generalizable principle:

Example abstraction

def abstract_principle(reflection: dict) -> dict: """Extract the underlying principle from the reflection.""" principle = { "category": categorize(reflection), # coding_style, workflow, communication "rule": extract_rule(reflection), "anti_pattern": reflection.get("what_happened"), "correct_pattern": extract_correct_pattern(reflection), "context_clues": extract_context(reflection) } return principle

Example output:

{

"category": "coding_style",

"rule": "Use 2-space indentation",

"anti_pattern": "4-space indentation",

"correct_pattern": "2-space indentation",

"context_clues": ["javascript", "this project"]

}

Step 3: Generalize

Determine the appropriate scope:

Example generalization

def determine_scope(principle: dict) -> str: """Determine if learning is global, domain, project, or session specific."""

context_clues = principle.get("context_clues", [])

# Session-only: temporary, experimental
if any(word in context_clues for word in ["just this time", "for now", "temporarily"]):
    return "session"

# Project-specific: mentions project name or "this project"
if "this project" in context_clues or detect_project_name(context_clues):
    return "project"

# Domain-specific: mentions technology or domain
if detect_domain(context_clues):  # javascript, python, marine, etc.
    return "domain"

# Global: general preference, no specific context
return "global"

Example: "this project" -> scope: project

Step 4: Store

Persist the learning appropriately:

Example storage

def store_learning(principle: dict, scope: str) -> None: """Store learning in appropriate memory location."""

learning_entry = {
    "timestamp": datetime.now().isoformat(),
    "category": principle["category"],
    "rule": principle["rule"],
    "anti_pattern": principle.get("anti_pattern"),
    "correct_pattern": principle["correct_pattern"],
    "confidence": principle.get("confidence", 0.8),
    "source": "user_correction",
    "times_applied": 0
}

# Route to appropriate storage
storage_paths = {
    "global": "~/.claude/memory/global_learnings.yaml",
    "domain": f"~/.claude/memory/domains/{domain}/learnings.yaml",
    "project": ".claude/memory/project_learnings.yaml",
    "session": "session_context"  # Not persisted
}

append_to_yaml(storage_paths[scope], learning_entry)

Storage Scopes

Scope Hierarchy

+----------------------------------------------------------+ | GLOBAL (/.claude/memory/global_learnings.yaml) | | - User-wide preferences | | - Universal coding style | | - Communication preferences | | +-----------------------------------------------------+ | | | DOMAIN (/.claude/memory/domains/<domain>/) | | | | - Technology-specific preferences | | | | - Domain knowledge (marine, finance, etc.) | | | | +------------------------------------------------+ | | | | | PROJECT (.claude/memory/project_learnings.yaml)| | | | | | - Project conventions | | | | | | - Team standards | | | | | | +-------------------------------------------+ | | | | | | | SESSION (in-memory only) | | | | | | | | - Temporary adjustments | | | | | | | | - Experimental preferences | | | | | | | +-------------------------------------------+ | | | | | +------------------------------------------------+ | | | +-----------------------------------------------------+ | +----------------------------------------------------------+

Storage Locations

Scope Location Persistence Example

Global ~/.claude/memory/

Permanent "Always use descriptive variable names"

Domain ~/.claude/memory/domains/<name>/

Permanent "JavaScript: use camelCase"

Project .claude/memory/

With project "This repo uses tabs"

Session In-memory Session only "Skip tests for this PR"

Directory Structure

~/.claude/ ├── memory/ │ ├── global_learnings.yaml # User-wide learnings │ ├── preferences.yaml # User preferences │ ├── patterns.yaml # Workflow patterns │ ├── corrections.yaml # Correction history │ └── domains/ │ ├── python/ │ │ ├── learnings.yaml │ │ └── patterns.yaml │ ├── javascript/ │ │ ├── learnings.yaml │ │ └── patterns.yaml │ └── marine-engineering/ │ ├── learnings.yaml │ └── domain_knowledge.yaml └── reflection/ ├── session_log.yaml # Current session learnings └── pending_confirmations.yaml # Learnings awaiting validation

<project>/.claude/ ├── memory/ │ ├── project_learnings.yaml # Project-specific learnings │ ├── team_preferences.yaml # Team conventions │ └── automation_candidates.yaml # Patterns to automate └── reflection/ └── history.yaml # Reflection history

Core Capabilities

  1. Correction Detection and Learning

Detection Patterns:

Correction indicators

correction_signals: explicit: - "No, " - "Actually, " - "That's wrong" - "Don't do that" - "Instead, " - "Use X instead of Y"

implicit: - user_edits_claude_output - user_asks_to_redo - user_provides_alternative

contextual: - negation_after_claude_action - contrast_statement

Example 1: Coding Style Correction

Detected interaction

interaction: claude_action: "Created function with snake_case name: get_user_data()" user_response: "Use camelCase for JavaScript functions"

Reflection output

reflection: event_type: correction category: coding_style rule: "Use camelCase for JavaScript function names" anti_pattern: "snake_case function names" correct_pattern: "camelCase function names" scope: domain domain: javascript confidence: 0.95

Stored learning

learning: id: "js-function-naming-001" timestamp: "2026-01-17T10:30:00Z" category: coding_style scope: domain domain: javascript rule: "Use camelCase for function names in JavaScript" example: wrong: "get_user_data()" right: "getUserData()" source: user_correction confidence: 0.95

Example 2: Error Handling Correction

Claude's original approach (incorrect)

def process_data(data): return data.transform() # No error handling

User correction:

"Always wrap data operations in try-except with logging"

Learned pattern

learning = { "category": "error_handling", "scope": "global", "rule": "Wrap data operations in try-except with logging", "anti_pattern": """ def process_data(data): return data.transform() """, "correct_pattern": """ def process_data(data): try: return data.transform() except Exception as e: logger.error(f"Data processing failed: {e}") raise """, "confidence": 0.9 }

  1. Preference Capture

Preference Indicators:

Phrases indicating preferences

preference_signals: strong: - "I prefer" - "I always want" - "Never do" - "Always use" - "My preference is"

moderate: - "I like" - "I'd rather" - "Can you use" - "Let's go with"

implicit: - consistent_user_choices - repeated_requests_for_same_format

Example 3: Communication Preference

Detected preference

interaction: context: "Claude provided detailed explanation" user_response: "I prefer concise responses. Just give me the code."

Captured preference

preference: id: "comm-style-001" timestamp: "2026-01-17T11:00:00Z" category: communication scope: global preference: "Provide concise responses with minimal explanation" context: "When providing code solutions" strength: strong source: explicit_statement

Application rule

application: when: "user_asks_for_code" action: "Provide code with brief comment, skip lengthy explanations" unless: "user_asks_for_explanation"

Example 4: Formatting Preference

Detected pattern (multiple interactions)

interactions:

  • user_edits_claude_output: "Removed extra blank lines"
  • user_edits_claude_output: "Removed extra blank lines"
  • user_statement: "Too much whitespace"

Captured preference

preference: id: "format-whitespace-001" category: formatting scope: global preference: "Minimize blank lines in code output" evidence: - "2 edits removing blank lines" - "explicit complaint about whitespace" confidence: 0.85

  1. Pattern Extraction from Repeated Workflows

Pattern Detection:

def detect_workflow_pattern(session_history: list) -> Optional[dict]: """Detect repeated workflow patterns worth automating."""

# Look for repeated sequences
sequences = extract_sequences(session_history)

for sequence in sequences:
    if sequence.occurrences >= 3:
        pattern = {
            "steps": sequence.steps,
            "occurrences": sequence.occurrences,
            "trigger": identify_trigger(sequence),
            "automation_potential": calculate_automation_score(sequence)
        }

        if pattern["automation_potential"] > 0.7:
            return pattern

return None

Example 5: Git Workflow Pattern

Detected repeated workflow

pattern: id: "git-workflow-001" name: "Feature Branch Workflow" occurrences: 5

steps: - action: "git checkout -b feature/..." variation: "branch name varies" - action: "make changes" - action: "git add ." - action: "git commit -m '...'" variation: "message varies" - action: "git push -u origin feature/..." - action: "gh pr create"

trigger: "user says 'new feature' or 'start feature'"

automation: potential: 0.85 suggestion: "Create /start-feature command" template: | git checkout -b feature/{name} # ... make changes ... git add . git commit -m "{type}: {description}" git push -u origin feature/{name} gh pr create --title "{description}"

Stored for potential skill creation

automation_candidate: pattern_id: "git-workflow-001" skill_name: "feature-branch-creator" priority: high confirmed: false

Example 6: Data Analysis Pattern

Detected repeated workflow

pattern: id: "data-analysis-001" name: "CSV Analysis Workflow" occurrences: 4

steps: - action: "Load CSV with pandas" - action: "Check for missing values" - action: "Generate summary statistics" - action: "Create visualization" - action: "Export HTML report"

parameters: - input_file: varies - output_path: "reports/" - viz_type: usually "plotly"

automation: potential: 0.9 suggestion: "Create /analyze-csv command" template: | df = pd.read_csv("{input_file}") missing = df.isnull().sum() stats = df.describe() fig = create_plotly_viz(df) save_html_report(fig, stats, "{output_path}")

  1. Knowledge Persistence

File Format: YAML

~/.claude/memory/global_learnings.yaml

version: "1.0" last_updated: "2026-01-17T12:00:00Z" total_learnings: 15

learnings:

  • id: "learn-001" timestamp: "2026-01-15T09:00:00Z" category: coding_style rule: "Use descriptive variable names over abbreviations" example: wrong: "x = get_val()" right: "user_count = get_user_count()" confidence: 0.95 times_applied: 12 last_applied: "2026-01-17T10:30:00Z" validated: true

  • id: "learn-002" timestamp: "2026-01-16T14:00:00Z" category: communication rule: "Provide code first, explanation after" context: "When user asks for code solution" confidence: 0.9 times_applied: 8 last_applied: "2026-01-17T11:00:00Z" validated: true

  • id: "learn-003" timestamp: "2026-01-17T10:00:00Z" category: error_handling rule: "Always include error context in log messages" example: wrong: 'logger.error("Failed")' right: 'logger.error(f"Failed to process {item}: {e}")' confidence: 0.85 times_applied: 3 last_applied: "2026-01-17T11:30:00Z" validated: false # Needs more applications

Persistence Operations:

def persist_learning(learning: dict, scope: str) -> str: """Persist a learning to the appropriate memory file."""

# Determine storage path
if scope == "global":
    path = Path.home() / ".claude/memory/global_learnings.yaml"
elif scope == "domain":
    domain = learning.get("domain", "general")
    path = Path.home() / f".claude/memory/domains/{domain}/learnings.yaml"
elif scope == "project":
    path = Path.cwd() / ".claude/memory/project_learnings.yaml"
else:
    return "session_only"  # Don't persist

# Ensure directory exists
path.parent.mkdir(parents=True, exist_ok=True)

# Load existing learnings
if path.exists():
    with open(path) as f:
        data = yaml.safe_load(f) or {"learnings": []}
else:
    data = {
        "version": "1.0",
        "last_updated": None,
        "total_learnings": 0,
        "learnings": []
    }

# Add new learning
learning["id"] = f"learn-{len(data['learnings']) + 1:04d}"
data["learnings"].append(learning)
data["last_updated"] = datetime.now().isoformat()
data["total_learnings"] = len(data["learnings"])

# Write back
with open(path, "w") as f:
    yaml.dump(data, f, default_flow_style=False)

return learning["id"]

5. Cross-Session Learning

Loading Learnings at Session Start:

def load_applicable_learnings(project_path: Optional[Path] = None) -> dict: """Load all learnings applicable to current context."""

learnings = {
    "global": [],
    "domain": [],
    "project": []
}

# 1. Load global learnings
global_path = Path.home() / ".claude/memory/global_learnings.yaml"
if global_path.exists():
    with open(global_path) as f:
        data = yaml.safe_load(f)
        learnings["global"] = data.get("learnings", [])

# 2. Load domain learnings (detect from project)
domains = detect_project_domains(project_path)
for domain in domains:
    domain_path = Path.home() / f".claude/memory/domains/{domain}/learnings.yaml"
    if domain_path.exists():
        with open(domain_path) as f:
            data = yaml.safe_load(f)
            learnings["domain"].extend(data.get("learnings", []))

# 3. Load project learnings
if project_path:
    project_mem = project_path / ".claude/memory/project_learnings.yaml"
    if project_mem.exists():
        with open(project_mem) as f:
            data = yaml.safe_load(f)
            learnings["project"] = data.get("learnings", [])

return learnings

def apply_learnings_to_context(learnings: dict) -> str: """Generate context prompt from loaded learnings."""

context_parts = []

# High-priority learnings (high confidence, frequently applied)
priority_learnings = []
for scope in ["global", "domain", "project"]:
    for learning in learnings[scope]:
        if learning.get("confidence", 0) > 0.8 and learning.get("times_applied", 0) > 3:
            priority_learnings.append(learning)

if priority_learnings:
    context_parts.append("## Learned Preferences\n")
    for learning in priority_learnings[:10]:  # Top 10
        context_parts.append(f"- {learning['rule']}")

return "\n".join(context_parts)

Validation and Reinforcement:

Validation rules

validation:

Learning becomes validated after:

conditions: - times_applied >= 5 - no_contradictions: true - user_confirmed: true # Optional but accelerates

Confidence decay for unused learnings

decay: days_without_use: 30 decay_rate: 0.05 # -5% per month of non-use minimum_confidence: 0.3

Reinforcement on successful application

reinforcement: successful_application: +0.02 user_confirmation: +0.1 maximum_confidence: 0.99

Integration with Progress Tracking

Hook Integration

#!/bin/bash

.claude/hooks/post-interaction.sh

Called after each significant interaction

INTERACTION_LOG="$1" REFLECTION_SKILL="$HOME/.claude/skills/workspace-hub/claude-reflection"

Check for reflection triggers

if grep -qE "(No,|Actually,|I prefer|Remember that)" "$INTERACTION_LOG"; then echo "Reflection trigger detected, analyzing..." "$REFLECTION_SKILL/analyze.sh" "$INTERACTION_LOG" fi

Session Summary

At session end, generate reflection summary:

Session reflection summary

session_summary: session_id: "2026-01-17-session-001" duration: "2h 30m"

learnings_captured: total: 5 corrections: 2 preferences: 2 patterns: 1

details: - type: correction rule: "Use 2-space indentation for YAML" scope: domain confidence: 0.95

- type: preference
  rule: "Prefer functional approach over OOP"
  scope: project
  confidence: 0.85

- type: pattern
  name: "Test-then-implement workflow"
  occurrences: 3
  automation_potential: 0.7

validation_status: pending: 3 validated: 2

recommendations: - "Consider creating /yaml-format command for repeated YAML formatting" - "Review python domain learnings - 2 may conflict"

File Formats

learnings.yaml Schema

Schema for learnings files

$schema: "https://workspace-hub.dev/schemas/learnings-v1.yaml"

version: "1.0" last_updated: "2026-01-17T12:00:00Z" total_learnings: 0

metadata: scope: global | domain | project domain: null | string # For domain-scoped project: null | string # For project-scoped

learnings:

  • id: string # Unique identifier timestamp: datetime # When captured category: string # coding_style, communication, workflow, error_handling, etc. rule: string # The learned rule/preference context: string # When this applies (optional)

    example: # Optional example wrong: string right: string

    anti_pattern: string # What NOT to do (optional) correct_pattern: string # What TO do (optional)

    confidence: float # 0.0 to 1.0 times_applied: int # Usage count last_applied: datetime

    source: string # user_correction, preference_statement, pattern_extraction validated: boolean # Meets validation criteria

    tags: list[string] # Optional categorization

preferences.yaml Schema

Schema for preferences files

$schema: "https://workspace-hub.dev/schemas/preferences-v1.yaml"

version: "1.0" last_updated: "2026-01-17T12:00:00Z"

preferences: communication: verbosity: concise | detailed | adaptive explanation_style: code_first | explanation_first | balanced question_format: direct | exploratory

coding: indentation: spaces | tabs indent_size: 2 | 4 naming_convention: snake_case | camelCase | PascalCase comments: minimal | moderate | comprehensive

workflow: tdd: true | false commit_style: conventional | descriptive | minimal branch_naming: feature/ | feat/ | custom

formatting: line_length: 80 | 100 | 120 blank_lines: minimal | standard trailing_newline: true | false

patterns.yaml Schema

Schema for workflow patterns

$schema: "https://workspace-hub.dev/schemas/patterns-v1.yaml"

version: "1.0" last_updated: "2026-01-17T12:00:00Z"

patterns:

  • id: string name: string description: string

    trigger: phrases: list[string] conditions: list[string]

    steps:

    • action: string parameters: dict optional: boolean

    occurrences: int last_used: datetime

    automation: potential: float # 0.0 to 1.0 skill_candidate: boolean suggested_command: string

Best Practices

  1. Learning Quality

Do:

  • Capture specific, actionable learnings

  • Include examples when available

  • Set appropriate scope (don't over-generalize)

  • Validate learnings over time

Don't:

  • Capture one-off adjustments as permanent learnings

  • Over-generalize from single instances

  • Ignore conflicting learnings

  • Let unvalidated learnings persist indefinitely

  1. Scope Selection

Decision tree for scope selection

def select_scope(learning: dict) -> str: """Select appropriate scope for a learning."""

# Check for explicit scope indicators
if "this project" in learning.get("context", "").lower():
    return "project"

if "always" in learning.get("context", "").lower():
    return "global"

# Check for domain indicators
domain_keywords = {
    "javascript": "javascript",
    "python": "python",
    "marine": "marine-engineering",
    "offshore": "marine-engineering",
    "react": "javascript"
}

for keyword, domain in domain_keywords.items():
    if keyword in learning.get("rule", "").lower():
        learning["domain"] = domain
        return "domain"

# Default to project if uncertain
return "project"

3. Conflict Resolution

When learnings conflict

conflict_resolution: strategy: "newer_wins" | "higher_confidence" | "ask_user"

example: learning_1: rule: "Use 4-space indentation" timestamp: "2026-01-10" confidence: 0.8

learning_2:
  rule: "Use 2-space indentation"
  timestamp: "2026-01-17"
  confidence: 0.95

resolution:
  action: "supersede"
  winner: learning_2
  reason: "Newer with higher confidence"

notification: message: "Superseded learning: 'Use 4-space indentation' replaced by 'Use 2-space indentation'"

  1. Privacy Considerations

Privacy rules

privacy: never_capture: - passwords - api_keys - personal_identifiable_information - financial_data - credentials

sanitize: - file_paths: "Replace with placeholders" - user_names: "Anonymize" - project_names: "Use generic references unless essential"

retention: validated_learnings: "indefinite" unvalidated_learnings: "90 days" session_data: "end of session"

  1. Maintenance

Regular maintenance tasks

1. Review unvalidated learnings

cat ~/.claude/memory/global_learnings.yaml | grep "validated: false"

2. Check for conflicting learnings

/claude-reflection --check-conflicts

3. Prune unused learnings (>6 months, <3 applications)

/claude-reflection --prune --dry-run

4. Export learnings for backup

/claude-reflection --export > ~/claude-learnings-backup-$(date +%Y%m%d).yaml

5. Sync domain learnings across projects

/claude-reflection --sync-domains

Troubleshooting

Learnings Not Being Applied

Symptom: Claude doesn't seem to remember previous corrections

Check:

1. Verify learnings exist

cat ~/.claude/memory/global_learnings.yaml

2. Check if learning is validated

grep -A5 "rule: 'your expected rule'" ~/.claude/memory/global_learnings.yaml

3. Verify confidence threshold

Learnings with confidence < 0.5 may not be applied

Solution:

  • Manually validate the learning

  • Increase confidence by repeating the preference

  • Check for conflicting learnings

Conflicting Learnings

Symptom: Claude applies inconsistent rules

Check:

Find potential conflicts

/claude-reflection --check-conflicts

Example output:

CONFLICT DETECTED:

Learning 1: "Use 4-space indentation" (global, conf: 0.8)

Learning 2: "Use 2-space indentation" (project, conf: 0.9)

Resolution: Project scope takes precedence

Solution:

  • Review and remove outdated learnings

  • Set appropriate scopes

  • Explicitly confirm the correct preference

Memory Files Corrupted

Symptom: YAML parsing errors

Check:

Validate YAML syntax

python -c "import yaml; yaml.safe_load(open('~/.claude/memory/global_learnings.yaml'))"

Solution:

1. Backup corrupted file

cp ~/.claude/memory/global_learnings.yaml ~/.claude/memory/global_learnings.yaml.bak

2. Restore from last good backup or reset

/claude-reflection --reset-memory --scope global

Too Many Low-Quality Learnings

Symptom: Memory files bloated with unvalidated learnings

Solution:

Prune learnings that:

- Have never been applied

- Are older than 90 days

- Have confidence < 0.5

/claude-reflection --prune --criteria "times_applied=0,age>90d,confidence<0.5"

Execution Checklist

On Trigger Detection:

  • Identify trigger type (correction/preference/pattern)

  • Extract relevant information

  • Classify category

  • Determine appropriate scope

  • Check for existing similar learnings

  • Handle conflicts if any

  • Store with appropriate confidence

  • Log for session summary

At Session End:

  • Generate session summary

  • Review captured learnings

  • Flag any for user confirmation

  • Update confidence scores

  • Sync to storage

Periodic Maintenance:

  • Validate pending learnings

  • Prune stale learnings

  • Check for conflicts

  • Backup memory files

  • Review automation candidates

Related Skills

  • skill-learner - Creates skills from patterns

  • repo-readiness - Loads project context

  • session-start-routine - Session initialization

References

  • Memory Management Best Practices

  • Learning Framework

  • YAML Configuration Standards

Version History

  • 1.0.0 (2026-01-17): Initial release - comprehensive meta-skill for self-improvement with Reflect-Abstract-Generalize-Store loop, multi-scope storage (global/domain/project/session), correction detection, preference capture, pattern extraction, cross-session learning, YAML persistence, validation framework, conflict resolution, and integration with progress tracking system

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

echarts

No summary provided by upstream source.

Repository SourceNeeds Review
General

pandoc

No summary provided by upstream source.

Repository SourceNeeds Review
General

mkdocs

No summary provided by upstream source.

Repository SourceNeeds Review