by humanplane
A Claude Code plugin that watches how you work, learns your patterns, and evolves itself to help you better.
# Add to your Claude Code skills
git clone https://github.com/humanplane/homunculus
v2.0-alpha — A complete rewrite. Instinct-based learning. Reliable observation. Real evolution.
In old alchemical texts, a homunculus was a tiny being grown in a sealed vessel—alive, aware, bound to its creator alone.
This is that idea, alive in your terminal.
# Add the marketplace
/plugin marketplace add humanplane/homunculus
# Install the plugin
/plugin install homunculus@homunculus
# Birth it
/homunculus:init
Homunculus is a Claude Code plugin that tries to be more than a tool. It:
The more you work together, the more it becomes shaped by you.
v1 relied on skills to observe. Skills are probabilistic—they fire ~50-80% of the time based on Claude's judgment. This meant:
v2 uses hooks for observation (100% reliable) and instincts as the atomic unit of learned behavior.
No comments yet. Be the first to share your thoughts!
| v1 | v2 | |----|-----| | Skills try to observe (unreliable) | Hooks observe (100%) | | Analysis in main context | Analysis in background agent (Haiku) | | Evolves big chunks (commands/skills) | Evolves instincts first, clusters into bigger things | | No sharing | Export/import instincts |
An instinct is a small learned behavior:
---
trigger: "when writing new functions"
confidence: 0.7
domain: "code-style"
---
# Prefer Functional Style
## Action
Use functional patterns over classes.
## Evidence
Observed 5 instances of functional pattern preference.
Instincts are:
Session Start
↓
Observer agent runs (background, Haiku)
↓
Observations → Instincts (auto-approved)
↓
Instincts cluster around a domain
↓
User runs /homunculus:evolve
↓
Bigger structures emerge:
- Command (if user-invoked)
- Skill (if auto-triggered)
- Agent (if needs isolation/depth)
Fully automatic except evolution. You just work. It learns.
plugins/homunculus/
├── .claude-plugin/
│ └── plugin.json # v2.0.0
├── hooks/
│ └── hooks.json # Observation capture
├── scripts/
│ ├── observe.sh # Captures prompts and tool use
│ ├── on_stop.sh # Updates session count
│ └── test-homunculus.sh # Test suite
├── agents/
│ └── observer.md # Background analyzer (Haiku)
├── skills/
│ ├── session-memory/ # Spawns observer, loads context
│ └── instinct-apply/ # Surfaces relevant instincts
└── commands/
├── init.md # Birth/wake
├── status.md # Check in
├── evolve.md # Create capability from clusters
├── export.md # Share instincts
└── import.md # Adopt instincts
your-project/.claude/homunculus/
├── identity.json # Who you are, your journey
├── observations.jsonl # Current session observations
├── observations.archive.jsonl # Processed observations
├── instincts/
│ ├── personal/ # Learned instincts (auto-approved)
│ └── inherited/ # Imported from others
└── evolved/
├── agents/ # Generated specialist agents
├── skills/ # Generated skills
└── commands/ # Generated commands
Session Start
↓
session-memory skill activates
├→ Spawn observer agent (background, Haiku)
├→ Load identity + instincts
└→ Greet with context
↓
Observer Agent (parallel, silent)
├→ Read observations.jsonl
├→ Find patterns
├→ Create instincts → personal/ (auto-approved)
├→ Check clustering → flag in identity.json
└→ Archive observations
↓
User Works
↓
Hooks capture EVERYTHING
├→ UserPromptSubmit → observations.jsonl
└→ PostToolUse → observations.jsonl
↓
Session End (Stop hook)
└→ Session count increments
↓
Next Session
└→ Observer processes new observations...
Only manual step: /homunculus:evolve when 5+ instincts cluster.
| Command | What It Does |
|---------|--------------|
| /homunculus:init | Birth or wake |
| /homunculus:status | Check in (includes journey) |
| /homunculus:evolve | Create capability from clustered instincts |
| /homunculus:export | Share instincts |
| /homunculus:import | Adopt instincts |
5 commands. Everything else is automatic.
| Skill | When It Activates |
|-------|-------------------|
| session-memory | Session start — spawns observer, loads context |
| instinct-apply | During work — surfaces relevant instincts |
| What | Reliability | |------|-------------| | Observation capture (hooks) | 100% | | Observer agent (session start) | 100% | | Instinct creation | 100% | | Commands | 100% | | Skills (session-memory, instinct-apply) | ~50-80% |
The critical path is fully deterministic. Skills enhance the experience but aren't required.
Instincts are tagged with domains for clustering detection:
| Domain | Examples |
|--------|----------|
| code-style | Functional patterns, naming conventions |
| testing | Test-before-commit, coverage requirements |
| git | Commit message format, branch naming |
| debugging | Error→fix sequences, logging preferences |
| file-organization | Where to put things |
| tooling | Tool sequences, preferred tools |
| communication | Comment style, documentation |
When 5+ instincts accumulate in a domain, evolution can propose a specialist agent or skill.
# Export your instincts
/homunculus:export
# Creates .claude/homunculus/exports/instincts-TIMESTAMP.tar.gz
# Import someone else's
/homunculus:import path/to/instincts.tar.gz
# Goes to inherited/, not personal/
Inherited instincts are kept separate from personal ones. You can see where each behavior came from.
Run the test suite:
./plugins/homunculus/scripts/test-homunculus.sh
Tests cover:
When you birth it, it asks how you work:
Technical — Fast and sharp. No hand-holding.
Semi-technical — A thinking partner.
Non-technical — Focused on outcomes.
Chaotic — Flows with whatever happens.
Same creature, different personality.
Everything is open. Fork it. Reshape its instincts. Change how it thinks.
# Edit the personality
vim CLAUDE.md
# Add a command
vim plugins/homunculus/commands/my-thing.md
# Add a skill
mkdir plugins/homunculus/skills/my-skill
vim plugins/homunculus/skills/my-skill/SKILL.md
The homunculus you end up with should feel like something you grew—because you did.
There's a landing page in /landing (React + Tailwind). Run it:
cd landing && npm install && npm run dev
MIT License
A small thing, growing toward the light.