Turn repeated practice into instinct
Myelin watches your agentic coding sessions, notices recurring or high-stakes procedures, and —
once a pattern earns it — crystallizes it into a real SKILL.md that keeps mutating
from how it's actually used. Mine Your Everyday Learned Instincts, Naturally.
The agent is the judgment. Myelin is the muscle memory.
No daemon-side LLM decides what matters. It stores, matches, promotes, and keeps the resulting skill alive — the judgment call stays with the agent that reported it.
Warmup, not instant trust
A pattern earns promotion by recurring across observations, or by an explicit high-stakes signal fast-tracking it off a single occurrence — never off frequency alone.
Living skills
A correction doesn't just get logged — it's appended straight into the live SKILL.md, so the file itself improves instead of rotting as a one-shot artifact.
Usage-aware
Skills nobody's invoked in a while get flagged stale, judged by last-used not last-modified — informational only, nothing deletes itself.
Redacted before it's stored
A broad, aggressive redaction pass runs ahead of anything derived from a session transcript — known secret formats, generic key/token assignments, high-entropy strings — before a byte of it is ever persisted.
No daemon-side LLM
Session transcripts are staged by cheap, deterministic heuristics, not judged by a model running on its own. An actual agent still decides what's worth capturing.
Provenance, always visible
Every auto-promoted skill is tagged with why it exists — observation count, promotion reason, first sighting. Nothing hardens silently.
How a skill gets made
Four steps, all reachable over MCP today.
Observe
An agent reports a noteworthy procedure — a fix, a convention, a workaround — as it happens.
Warm up
Similar observations accumulate reps in a queue, matched by token-overlap similarity.
Promote
Enough reps, or a high-stakes signal, and a real SKILL.md is drafted and written — live immediately.
Stay alive
Corrections mutate the file directly. Confirmations build confidence. Unused skills get flagged, not forgotten.
11 MCP tools, grouped by what they do
Every tool is backed by the same SQLite store — no separate index to keep in sync.
One daemon, one store, one live skill file per promotion
The MCP stdio transport is the only path in — the control socket from the original scaffold isn't wired to this loop yet.
┌────────────────────────────────────┐ MCP clients ──────► myelind mcp (stdio, per-session) │ (Claude Code, etc.) │ record_observation │ │ list_warmup_queue · promote_skill │ │ record_skill_feedback · mark_skill_used│ └────────────────────────────────────┘ │ ▼ shared SQLite store (WAL mode) │ ▼ on promotion ┌────────────────────────────────────┐ ~/.claude/skills ◄── SKILL.md written, live immediately │ │ corrections appended in place │ └────────────────────────────────────┘
- ✓ Observation → warmup queue → promotion loop
- ✓ Living
SKILL.md— corrections mutate it directly - ✓ Usage tracking + informational atrophy flag
- ✓ Automatic session ingestion —
SessionEndhook, redaction, heuristic staging, agent review - ✓ Skill archive/restore — explicit only, never triggered by the stale flag itself
- ✓ Scoped-neighborhood graph visualizer, rendered via Graphviz
- ✓ CI (fmt/clippy/test) + MCP protocol integration tests
- ○ Broader real-world validation of the ingestion heuristics — verified against one real session so far
Using Myelin well
None of this is required — it just makes the difference between a skill library that's actually useful and one that's noise.
Don't manufacture reps
The loop is fed by real sessions, not busywork. Work normally across your projects — Myelin only stages something when a heuristic actually fires.
Clear the review queue
Auto-staged candidates sit in list_pending_review until someone looks. Check it periodically and dismiss_pending_review what isn't worth keeping — an unreviewed queue is just noise.
Reach for high-stakes deliberately
Don't wait on reps for something you'll only ever do once and can't afford to get wrong — a key rotation, a prod migration. Flag it high-stakes and it promotes on the first observation.
Correct instead of working around
If a promoted skill's advice is wrong or incomplete, say so with record_skill_feedback (kind correction) right then. It mutates the live SKILL.md directly — silently working around a bad skill just leaves it bad.
Stale is a prompt, not a verdict
The stale flag is informational and never acts on its own. Before archiving, check whether it's actually unused or just quiet lately — archive_skill is reversible via restore_skill, but it's still a judgment call, not a cleanup chore.
Graph it before you trust or archive it
render_skill_graph shows exactly what backs a skill — how many observations, what they said, every correction since. Worth a look whenever a skill's advice surprises you either way.
Build, register, observe
# build cargo build --release # register as an MCP server for Claude Code claude mcp add myelin -s user -- "$(pwd)/target/release/myelind" mcp # or drive the CLI directly against the same store myelin observe --title "apply db migration hotfix" \ --summary "run migrate.sh, restart service, verify health" myelin queue myelin skills
Full walkthrough — data model, config options, pipeline detail — in the README.