Instinct-based learning system that observes development patterns via hooks and builds a knowledge base of reusable instincts with confidence scoring. Instincts evolve from observations into skills, commands, and agents.
Install
npx skillscat add peopleforrester/claude-dotfiles/continuous-learning-v2 Install via the SkillsCat registry.
SKILL.md
Continuous Learning v2: Instinct-Based System
Learn from development sessions automatically using hook-based observation
and confidence-scored instincts.
Why v2?
v1 used skills for learning (probabilistic activation, 50-80% reliability).
v2 uses hooks (deterministic, 100% reliability) with structured instincts.
Core Concepts
Instincts
Atomic units of learned behavior with confidence scoring:
---
id: prefer-const-assertions
trigger: "when defining constant arrays or objects in TypeScript"
confidence: 0.7
domain: "code-style"
source: "session-observation"
---
# Use `as const` for constant definitions
TypeScript `as const` assertions provide literal types and readonly guarantees.
## Pattern
```typescript
const ROLES = ['admin', 'user', 'guest'] as const;
type Role = typeof ROLES[number];Evidence
- Applied in 3 sessions
- Approved by reviewer each time
- Matches TypeScript best practices
### Confidence Levels
| Score | Level | Behavior |
|-------|-------|----------|
| 0.3 | Tentative | Suggested, not enforced |
| 0.5 | Moderate | Applied when context matches |
| 0.7 | Strong | Auto-applied, can be overridden |
| 0.9 | Near-certain | Core behavior, always applied |
### Confidence Evolution
- New observation: starts at 0.3
- Repeated application without correction: +0.1 per session
- User correction/rejection: -0.2
- Maximum: 0.9 (never fully automatic)
## Observation Hooks
### PreToolUse Observer
Before tool execution, check if any instincts apply:
```json
{
"matcher": "tool == \"Write\" || tool == \"Edit\"",
"type": "message",
"message": "Check instincts for applicable patterns before writing code."
}PostToolUse Observer
After tool execution, look for learnable patterns:
{
"matcher": "tool == \"Edit\" && result.success == true",
"type": "command",
"command": "echo 'Pattern observed: successful edit to $CLAUDE_FILE_PATH'",
"async": true
}Instinct Lifecycle
Observation → Instinct (0.3) → Strengthened (0.5-0.7) → Evolved (0.9)
↓ ↓
Weakened/Removed Promoted to Skill/RuleCommands
| Command | Purpose |
|---|---|
/learn |
Extract patterns from current session |
/checkpoint |
Save state including instinct observations |
Storage
Instincts stored in ~/.claude/instincts/ as markdown files:
~/.claude/instincts/
prefer-const-assertions.md
use-errgroup-for-goroutines.md
validate-inputs-with-zod.mdEvolution Path
When instincts cluster around a domain, they can be promoted:
- 3+ related instincts → candidate for a Skill
- 5+ high-confidence instincts → candidate for a Rule
- Domain-specific cluster → candidate for an Agent prompt
Best Practices
- Review instincts periodically (monthly)
- Export instincts when switching projects to preserve learning
- Share instincts with team members for consistency
- Prune instincts that haven't been triggered in 30+ days