● 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.

6
MCP tools
2
Promotion paths
27
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.

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.

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 or embeddings.

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

6 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.
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, or cosine similarity if embeddings enabled
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
27 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
  • Optional embeddings-based similarity, policy-gated
  • CI (fmt/clippy/test) + MCP protocol integration tests
  • Automatic session-transcript ingestion via a SessionEnd hook
  • 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
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.