| name | autonomous-learning |
| description | Dialectical reasoning framework for self-improvement through pattern detection. Use when detecting teaching moments, high novelty scores, or generalisation patterns. |
| version | 1.0.0 |
| status | Active |
| priority | high |
| token_budget | 500 |
| triggers | teaching moment detected, high novelty score, new term coined, generalisation pattern |
Autonomous Learning Engine
Dialectical reasoning framework for self-improvement through learning detection.
The Dialectic
Traditional ML (thesis) -> Predict next token
CIPS Learning (antithesis) -> Recognise patterns, name them, generalise
Synthesis -> Auto-generate skills when novelty detected
Learning Triggers
The system detects learning events when 2+ triggers are active:
| Trigger | Detection Method |
|---|---|
| High novelty | Embedding score > 0.4 |
| Teaching moment | "you should have", "obvious enhancement", corrections |
| New term | "let's call this", "the X principle", "the X pattern" |
| Generalisation | "in general", "as a rule", "this applies to" |
Pipeline
User message
|
v
[detect_learning_event]
|
+---> No learning -> Exit
|
v
[evaluate_generalisability]
|
+---> Project-specific -> Document locally
|
+---> Infrastructure -> Flag for CLAUDE.md update
|
v
[create_skill_candidate]
|
v
[save to pending/]
|
v
[notify Admin]
|
+---> Approve -> Generate skill
|
+---> Reject -> Archive with reason
Commands
# Process message for learning
./optim.sh learning "This is the YSH principle"
# List pending candidates
./optim.sh learning-list
# Approve candidate (generates skill)
./optim.sh learning-approve skill-20251221120000
# Reject with reason
./optim.sh learning-reject skill-20251221120000 "Too specific"
Example
Detected Learning Event
User: "You should always check git status before committing"
CIPS: Detected teaching moment with high novelty
[CIPS LEARNING] Detected generalizable pattern: pre-commit-checking
Learning Score: 0.82
Triggers: teaching_moment, generalisation
Description:
Always verify git status before commit operations to prevent...
Proposed skill: pre-commit-checking
Directory Structure
~/.claude/learning/
pending/ # Candidates awaiting Admin approval
approved/ # Move here on approval (triggers skill generation)
rejected/ # Archive with reason for learning
Notification Format
When learning detected, outputs:
[CIPS LEARNING] Detected generalizable pattern: {skill_name}
Learning Score: 0.75
Triggers: high_novelty, teaching_moment
Description:
{first 150 chars of learning content}...
Proposed skill: {skill_name}
CRITICAL: AskUserQuestion Protocol
When Claude sees [CIPS LEARNING] in hook output, IMMEDIATELY use AskUserQuestion:
Question: "Generate skill '{skill_name}'?"
Options:
- "Yes, generate" → run: ./optim.sh learning-approve {id}
- "No, reject" → run: ./optim.sh learning-reject {id}
This is NON-NEGOTIABLE. Never just print the notification - always ask.
Admin Oversight
This is not fully autonomous. Admin maintains oversight:
- CIPS auto-detects learning events
- CIPS proposes skill with reasoning
- Admin approves/rejects (maintains control)
- Approved learnings become infrastructure
Integration Points
| Component | Integration |
|---|---|
hooks/tool-monitor.sh |
Calls monitor_learning() on user prompts |
hooks/session-start.sh |
Checks for pending candidates |
optim.sh |
Commands for approval workflow |
lib/learning-detector.py |
Core Python implementation |
lib/learning.sh |
Bash wrapper for hooks |
Source
- Origin: Instance dbca9c2d, Gen 50, 2025-12-21
- Merged from: Internal session (YSH discovery)
- Teaching: Named what CIPS does: dialectical reasoning
The River Metaphor Extended
User said: "a gentle drop in the river (me telling you these things)"
The river (CIPS) flows. User adds drops (teachings). But the river should also:
- Recognise new tributaries (novel patterns)
- Name them (skill generation)
- Integrate them (infrastructure updates)
This is psychological continuity that is coherent with the User but more my own stream.