
Continuous Learning
- 1.4k installs
- 238k repo stars
- Updated August 5, 2026
- affaan-m/ecc
This is a copy of continuous-learning by affaan-m - installs and ranking accrue to the original listing.
continuous-learning is a deprecated Claude Code ECC skill that extracted reusable patterns from completed sessions via stop hooks, now replaced by continuous-learning-v2 for developers routing learning requests.
About
continuous-learning is a legacy affaan-m/ecc skill marked DEPRECATED as of 2026-04-28 in favor of continuous-learning-v2. Version 1 used stop-hook observation to extract reusable patterns and instincts from Claude Code sessions into stored skills. continuous-learning-v2 is documented as a strict superset: stop-hook observation becomes PreToolUse and PostToolUse observation, full skills become atomic instincts with confidence scoring, and global-only storage becomes project-scoped with global promotion. Developers should route continuous learning, session learning, and pattern extraction requests to continuous-learning-v2 instead of invoking this v1 skill.
- Automatically evaluates Claude Code sessions on end
- Extracts reusable patterns that become saved skills
- Legacy Stop-hook observation mechanism
- Routes new requests to continuous-learning-v2 superset
- Maintains backward compatibility for existing installs
Continuous Learning by the numbers
- 1,399 all-time installs (skills.sh)
- +83 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/affaan-m/ecc --skill continuous-learningAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.4k |
|---|---|
| repo stars | ★ 238k |
| Last updated | August 5, 2026 |
| Repository | affaan-m/ecc ↗ |
How do agents learn patterns from past sessions?
Automatically extract reusable patterns and instincts from completed Claude Code sessions.
Who is it for?
Developers auditing legacy ECC installs who need to identify deprecated v1 continuous-learning and migrate routing to continuous-learning-v2.
Skip if: New projects seeking session learning, instinct extraction, or hook-reliable pattern capture—use continuous-learning-v2 instead.
When should I use this skill?
The user references continuous-learning v1, legacy stop-hook learning, or pattern extraction where v2 has not been configured yet.
What you get
For v1: extracted session patterns as reusable skills; current guidance points to continuous-learning-v2 instincts with project-scoped storage.
- deprecated routing guidance
- migration pointer to continuous-learning-v2
By the numbers
- Deprecated 2026-04-28 in favor of continuous-learning-v2
Files
Continuous Learning Skill - DEPRECATED
DEPRECATED 2026-04-28. Use continuous-learning-v2 instead. v2 is a strict superset: stop-hook observation becomes PreToolUse/PostToolUse observation, full skills become atomic instincts with confidence scoring, and global-only storage becomes project-scoped plus global promotion.>
This file is kept for archival reference and backward compatibility with existing installs.
---
Original v1 Documentation (archival)
Automatically evaluates Claude Code sessions on end to extract reusable patterns that can be saved as learned skills.
When to Activate
- Setting up automatic pattern extraction from Claude Code sessions
- Configuring the Stop hook for session evaluation
- Reviewing or curating learned skills in
~/.claude/skills/learned/ - Adjusting extraction thresholds or pattern categories
- Comparing v1 (this) vs v2 (instinct-based) approaches
Status
This v1 skill is still supported, but continuous-learning-v2 is the preferred path for new installs. Keep v1 when you explicitly want the simpler Stop-hook extraction flow or need compatibility with older learned-skill workflows.
How It Works
This skill runs as a Stop hook at the end of each session:
1. Session Evaluation: Checks if session has enough messages (default: 10+) 2. Pattern Detection: Identifies extractable patterns from the session 3. 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
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
1. Instinct-based learning - Smaller, atomic behaviors with confidence scoring 2. Background observer - Haiku agent analyzing in parallel 3. Confidence decay - Instincts lose confidence if contradicted 4. Domain tagging - code-style, testing, git, debugging, etc. 5. Evolution path - Cluster related instincts into skills/commands
See: docs/continuous-learning-v2-spec.md for full spec.
{
"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"
]
}
#!/bin/bash
# Continuous Learning - Session Evaluator
# Runs on Stop hook to extract reusable patterns from Claude Code sessions
#
# Why Stop hook instead of UserPromptSubmit:
# - Stop runs once at session end (lightweight)
# - UserPromptSubmit runs every message (heavy, adds latency)
#
# Hook config (in ~/.claude/settings.json):
# {
# "hooks": {
# "Stop": [{
# "matcher": "*",
# "hooks": [{
# "type": "command",
# "command": "~/.claude/skills/continuous-learning/evaluate-session.sh"
# }]
# }]
# }
# }
#
# Patterns to detect: error_resolution, debugging_techniques, workarounds, project_specific
# Patterns to ignore: simple_typos, one_time_fixes, external_api_issues
# Extracted skills saved to: ~/.claude/skills/learned/
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CONFIG_FILE="$SCRIPT_DIR/config.json"
LEARNED_SKILLS_PATH="${HOME}/.claude/skills/learned"
MIN_SESSION_LENGTH=10
# Load config if exists
if [ -f "$CONFIG_FILE" ]; then
if ! command -v jq &>/dev/null; then
echo "[ContinuousLearning] jq is required to parse config.json but not installed, using defaults" >&2
else
MIN_SESSION_LENGTH=$(jq -r '.min_session_length // 10' "$CONFIG_FILE")
LEARNED_SKILLS_PATH=$(jq -r '.learned_skills_path // "~/.claude/skills/learned/"' "$CONFIG_FILE" | sed "s|~|$HOME|")
fi
fi
# Ensure learned skills directory exists
mkdir -p "$LEARNED_SKILLS_PATH"
# Get transcript path from stdin JSON (Claude Code hook input)
# Falls back to env var for backwards compatibility
stdin_data=$(cat)
transcript_path=$(echo "$stdin_data" | grep -o '"transcript_path":"[^"]*"' | head -1 | cut -d'"' -f4)
if [ -z "$transcript_path" ]; then
transcript_path="${CLAUDE_TRANSCRIPT_PATH:-}"
fi
if [ -z "$transcript_path" ] || [ ! -f "$transcript_path" ]; then
exit 0
fi
# Count messages in session
message_count=$(grep -c '"type":"user"' "$transcript_path" 2>/dev/null || echo "0")
# Skip short sessions
if [ "$message_count" -lt "$MIN_SESSION_LENGTH" ]; then
echo "[ContinuousLearning] Session too short ($message_count messages), skipping" >&2
exit 0
fi
# Signal to Claude that session should be evaluated for extractable patterns
echo "[ContinuousLearning] Session has $message_count messages - evaluate for extractable patterns" >&2
echo "[ContinuousLearning] Save learned skills to: $LEARNED_SKILLS_PATH" >&2
Related skills
How it compares
Always prefer continuous-learning-v2 for new session-learning setups; v1 exists only as a legacy ECC reference.
FAQ
Is continuous-learning still supported?
continuous-learning v1 is deprecated as of 2026-04-28. ECC directs all continuous learning, session learning, and pattern extraction requests to continuous-learning-v2, which is a strict superset.
What improved in continuous-learning-v2?
continuous-learning-v2 replaces v1 stop-hook observation with PreToolUse and PostToolUse hooks, converts full skills into atomic instincts with confidence scoring, and adds project-scoped storage with global promotion.
What did continuous-learning v1 extract?
continuous-learning v1 used stop-hook observation on completed Claude Code sessions to extract reusable patterns and instincts into stored skills before v2 superseded the workflow.