Automatically extract reusable patterns from Claude Code sessions and save them as learned skills for future use.
Continuous Learning Skill
Automatically evaluates Claude Code sessions on end to extract reusable patterns that can be saved as learned skills.
How It Works
This skill runs as a Stop hook at the end of each session:
- Session Evaluation: Checks if session has enough messages (default: 10+)
- Pattern Detection: Identifies extractable patterns from the session
- Skill Extraction: Saves useful patterns to
~/.claude/skills/learned/
Configuration
Edit config.json to customize:
{
"min_session_length": 10,
"extraction_threshold": "medium",
"auto_approve": false,
"learned_skills_path": "~/.claude/skills/learned/",
"patterns_to_detect": [
"error_resolution",
"user_corrections",
"workarounds",
"debugging_techniques",
"project_specific"
],
"ignore_patterns": [
"simple_typos",
"one_time_fixes",
"external_api_issues"
]
}
Pattern Types
| Pattern | Description |
|---|---|
error_resolution |
How specific errors were resolved |
user_corrections |
Patterns from user corrections |
workarounds |
Solutions to framework/library quirks |
debugging_techniques |
Effective debugging approaches |
project_specific |
Project-specific conventions |
Hook Setup
Add to your ~/.claude/settings.json:
{
"hooks": {
"Stop": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "~/.claude/skills/continuous-learning/evaluate-session.sh"
}]
}]
}
}
Why Stop Hook?
- Lightweight: Runs once at session end
- Non-blocking: Doesn't add latency to every message
- Complete context: Has access to full session transcript
Related
- The Longform Guide - Section on continuous learning
/learncommand - Manual pattern extraction mid-session
Comparison Notes (Research: Jan 2025)
vs Homunculus (github.com/humanplane/homunculus)
Homunculus v2 takes a more sophisticated approach:
| Feature | Our Approach | Homunculus v2 |
|---|---|---|
| Observation | Stop hook (end of session) | PreToolUse/PostToolUse hooks (100% reliable) |
| Analysis | Main context | Background agent (Haiku) |
| Granularity | Full skills | Atomic "instincts" |
| Confidence | None | 0.3-0.9 weighted |
| Evolution | Direct to skill | Instincts → cluster → skill/command/agent |
| Sharing | None | Export/import instincts |
Key insight from homunculus:
"v1 relied on skills to observe. Skills are probabilistic—they fire ~50-80% of the time. v2 uses hooks for observation (100% reliable) and instincts as the atomic unit of learned behavior."
Potential v2 Enhancements
- Instinct-based learning - Smaller, atomic behaviors with confidence scoring
- Background observer - Haiku agent analyzing in parallel
- Confidence decay - Instincts lose confidence if contradicted
- Domain tagging - code-style, testing, git, debugging, etc.
- Evolution path - Cluster related instincts into skills/commands
See: /Users/affoon/Documents/tasks/12-continuous-learning-v2.md for full spec.
You Might Also Like
Related Skills

coding-agent
Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.
openclaw
add-uint-support
Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.
pytorch
at-dispatch-v2
Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.
pytorch
skill-writer
Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.
pytorch
implementing-jsc-classes-cpp
Implements JavaScript classes in C++ using JavaScriptCore. Use when creating new JS classes with C++ bindings, prototypes, or constructors.
oven-sh
implementing-jsc-classes-zig
Creates JavaScript classes using Bun's Zig bindings generator (.classes.ts). Use when implementing new JS APIs in Zig with JSC integration.
oven-sh