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.
Embeddings, optional
Token-overlap matching works with zero config. Point it at any OpenAI-compatible endpoint for cosine-similarity matching instead — off by default, and it degrades to token-overlap on any failure.
Safe by default
Remote embedding endpoints are blocked unless loopback/private or explicitly allowed. Nothing calls out anywhere unless you turn it on.
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 or embeddings.
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.
6 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
- ✓ Optional embeddings-based similarity, policy-gated
- ✓ CI (fmt/clippy/test) + MCP protocol integration tests
- ○ Automatic session-transcript ingestion via a
SessionEndhook - ○ A redaction pass ahead of any transcript content
- ○ Scoped-neighborhood graph visualizer
- ○ Re-embedding older candidates after enabling embeddings later
- ○ Any action taken on a stale skill beyond the flag
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.