Help us improve
Share bugs, ideas, or general feedback.
From forgebee
Observes Claude Code sessions via hooks to create atomic instincts with confidence scoring, evolving them into skills/commands/agents while scoping to projects.
npx claudepluginhub forbee-dev/forgebee --plugin forgebeeHow this skill is triggered — by the user, by Claude, or both
Slash command
/forgebee:continuous-learningThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn session observations into reusable knowledge through atomic instincts — small learned behaviors with confidence scoring that persist across sessions.
Observes Claude Code sessions via hooks to build atomic instincts with confidence scores, evolving them into skills/commands/agents. Supports project-scoped storage and promotion.
Observes Claude Code sessions to extract atomic 'instincts' (behaviors with confidence scoring), evolving them into reusable skills/commands/agents. Adds project-scoped instincts in v2.1 to prevent cross-project contamination.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Turn session observations into reusable knowledge through atomic instincts — small learned behaviors with confidence scoring that persist across sessions.
An advanced learning system that turns your ForgeBee sessions into reusable knowledge through atomic "instincts" — small learned behaviors with confidence scoring.
Project-scoped instincts keep React patterns in your React project, Python conventions in your Python project, and universal patterns (like "always validate input") shared globally.
An instinct is a small learned behavior:
---
id: prefer-functional-style
trigger: "when writing new functions"
confidence: 0.7
domain: "code-style"
source: "session-observation"
scope: project
project_id: "a1b2c3d4e5f6"
project_name: "my-react-app"
---
# Prefer Functional Style
## Action
Use functional patterns over classes when appropriate.
## Evidence
- Observed 5 instances of functional pattern preference
- User corrected class-based approach to functional
Properties:
project (default) or globalSession Activity (in a git repo)
|
| Hooks capture tool use (PreToolUse + PostToolUse)
| + detect project context (git remote / repo path)
v
+-----------------------------------------+
| projects/<hash>/observations.jsonl |
| (tools, inputs, outputs, timestamps) |
+-----------------------------------------+
|
| /learn analyzes patterns
v
+-----------------------------------------+
| projects/<hash>/instincts/personal/ |
| * prefer-functional.yaml (0.7) |
| * use-react-hooks.yaml (0.9) |
+-----------------------------------------+
| instincts/personal/ (GLOBAL) |
| * always-validate-input.yaml (0.85) |
| * grep-before-edit.yaml (0.6) |
+-----------------------------------------+
|
| /evolve clusters + /promote
v
+-----------------------------------------+
| evolved/ |
| * commands/new-feature.md |
| * skills/testing-workflow.md |
| * agents/refactor-specialist.md |
+-----------------------------------------+
The system automatically detects your current project:
CLAUDE_PROJECT_DIR env var (highest priority)git remote get-url origin — hashed to create a portable project IDgit rev-parse --show-toplevel — fallback using repo pathEach project gets a 12-character hash ID. A registry at ~/.claude/forgebee-learning/projects.json maps IDs to human-readable names.
| Command | Description |
|---|---|
/learn | Analyze current session and extract patterns as instincts |
/evolve | Cluster related instincts into skills/commands/agents |
/instinct-status | Show all instincts (project + global) with confidence |
/instinct-export | Export instincts (filterable by scope/domain) |
/instinct-import | Import instincts with scope control |
The observation hooks fire on every tool call (100% reliable — unlike skills which are probabilistic):
{
"PreToolUse": [{ "matcher": "*", "hooks": [{ "type": "command", "command": "node \"${CLAUDE_PLUGIN_ROOT}/skills/continuous-learning/scripts/observe.js\"" }] }],
"PostToolUse": [{ "matcher": "*", "hooks": [{ "type": "command", "command": "node \"${CLAUDE_PLUGIN_ROOT}/skills/continuous-learning/scripts/observe.js\"" }] }]
}
| Score | Meaning | Behavior |
|---|---|---|
| 0.3 | Tentative | Suggested but not enforced |
| 0.5 | Moderate | Applied when relevant |
| 0.7 | Strong | Auto-approved for application |
| 0.9 | Near-certain | Core behavior |
| Pattern Type | Scope | Examples |
|---|---|---|
| Language/framework conventions | project | "Use React hooks", "Follow Django REST patterns" |
| File structure preferences | project | "Tests in tests/", "Components in src/components/" |
| Code style | project | "Use functional style", "Prefer dataclasses" |
| Security practices | global | "Validate user input", "Sanitize SQL" |
| General best practices | global | "Write tests first", "Always handle errors" |
| Tool workflow preferences | global | "Grep before Edit", "Read before Write" |
| Git practices | global | "Conventional commits", "Small focused commits" |
When the same instinct appears in 2+ projects with average confidence ≥ 0.8, it's a candidate for global promotion. Run /evolve to see promotion candidates.
~/.claude/forgebee-learning/
├── projects.json # Registry: project hash → name/path/remote
├── observations.jsonl # Global observations (fallback)
├── instincts/
│ ├── personal/ # Global auto-learned instincts
│ └── inherited/ # Global imported instincts
├── evolved/
│ ├── agents/ # Global generated agents
│ ├── skills/ # Global generated skills
│ └── commands/ # Global generated commands
└── projects/
└── <project-hash>/
├── observations.jsonl
├── observations.archive/
├── instincts/
│ ├── personal/
│ └── inherited/
└── evolved/