● MVP · MCP-native · zero config required

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.

11
MCP tools
2
Promotion paths
46
Tests passing
0
Config required to start
Design philosophy

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.

The loop

How a skill gets made

Four steps, all reachable over MCP today.

1

Observe

An agent reports a noteworthy procedure — a fix, a convention, a workaround — as it happens.

2

Warm up

Similar observations accumulate reps in a queue, matched by token-overlap similarity.

3

Promote

Enough reps, or a high-stakes signal, and a real SKILL.md is drafted and written — live immediately.

4

Stay alive

Corrections mutate the file directly. Confirmations build confidence. Unused skills get flagged, not forgotten.

What an agent can actually call

11 MCP tools, grouped by what they do

Every tool is backed by the same SQLite store — no separate index to keep in sync.

Capture
record_observation
Report a noteworthy, domain-specific procedure. The extraction step, for now.
Warmup queue
list_warmup_queue
Candidates still accumulating reps, not yet promoted.
promote_skill
Force-promote a candidate now, bypassing the reps/high-stakes gate.
Feedback
record_skill_feedback
Correction mutates the live file; confirmation logs confidence.
mark_skill_used
Resets the staleness clock, independent of feedback.
Inspect
list_skills
Promoted skills with full provenance — reason, observation count, staleness.
render_skill_graph
One skill's bounded neighborhood — candidate, observations, corrections — as a PNG.
Review queue
list_pending_review
Redacted excerpts auto-staged from session transcripts, awaiting a judgment call.
dismiss_pending_review
Clear a staged item, whether or not it became an observation.
Archive
archive_skill
Move a stale skill's file out of the live directory — explicit only, never automatic.
restore_skill
Reverse archive_skill exactly.
How it fits together

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        │
                    └────────────────────────────────────┘
Storage
SQLite, WAL journal mode
Matching
Jaccard token-overlap similarity
Promotion
Reps threshold, or explicit high-stakes signal
Feedback
Corrections appended live into the promoted file
Atrophy
Informational stale flag, judged by last-invoked
Tests
46 passing — unit + real MCP stdio protocol
Honest, not aspirational

What's real vs. still sketch

Full detail in the README.

  • Observation → warmup queue → promotion loop
  • Living SKILL.md — corrections mutate it directly
  • Usage tracking + informational atrophy flag
  • Automatic session ingestion — SessionEnd hook, 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
Getting good skills out of it

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.

1

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.

2

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.

3

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.

4

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.

5

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.

6

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.

Get running in a minute

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.