You don't configure it per project. You don't invoke it manually. It watches your Claude Code sessions and acts — catching violations, surfacing impact, verifying delivery, and building memory that compounds over time.
Connect with GitHub, copy your install token, and run one command in your terminal. XF installs seven hooks into Claude Code's hook system. From that point forward, it's always running — you don't do anything differently.
What gets installed: Seven Python modules and seven shell hooks. They live in ~/.claude/ alongside your Claude Code config. Your projects don't change. Your workflow doesn't change.
What it costs: About 2 seconds per tool call for the lightweight checks. The models that run XF's analysis (Mistral Nemo, 8B) are fast and cheap — not Claude. Claude is reserved for your actual work.
XF's seven modules run in every session. Most are silent — they only surface when they find something. One, XFFI, you invoke intentionally at the start of any non-trivial task to define what done means before work begins.
XF doesn't use developer language. It speaks to you like a collaborator who caught something — describes what's wrong in plain English, tells you what could happen if you ignore it, and asks what you want to do. One question. Two options. You decide.
It never acts without asking. XF surfaces findings — you make the call. If you say "fix it," it fixes it and confirms clean. If you say "leave it," it steps back and records the decision.
After it fixes something, XF re-checks its own work. It doesn't assume the fix worked — it verifies.
No new syntax. No special commands to memorize. When XF asks "Fix it, or leave it for now?" — you just answer. When it surfaces a memory from two sessions ago, you just say "pick up from there."
For when you want to invoke something directly, XF ships a set of slash commands. Type them in Claude Code exactly as written — they're part of XF's skill layer, installed with the framework.
| When XF says… | You can say… |
|---|---|
| Fix it, or show you what changed first? | "Fix it" — applies the repair immediately |
| Fix it, or show you what changed first? | "Show me first" — displays the diff, then asks again |
| Address these, or leave them for now? | "Leave them" — XF steps back, records the decision |
| Snapshot and compact now, or keep going? | "Snapshot now" — saves session, compacts context |
| Terminal closed. Commit and push? | "Yes, push it" — or "keep iterating" |
| Command | What it does |
|---|---|
| /xfdb | Run verification. Auto-detects your most recent spec or plan and checks each terminal — met or unmet — against what's actually in the code. |
| /xfdb <path> | Verify against a specific spec file. |
| /xfdb synthesize | No spec yet? XF drafts one from the conversation, then runs verification against it. |
| Command | What it does |
|---|---|
| /xf-mem | Save a snapshot now. Writes the current session to the memory tree — before a risky refactor, before compacting, at any milestone. |
| /xf-memr <query> | Search your memory. "What did we decide about auth?" "How did we set up Stripe?" Returns the most relevant sessions. |
| Command | What it does |
|---|---|
| /dispatch | Show pending tool recommendations — what Dispatch matched, why, and how to install it. Clears the badge after viewing. |
| /dispatch-compact-md | Compact oversized CLAUDE.md files — moves reference sections to ~/.claude/ref/, keeps Claude's working context lean. |
Before you commit, run /xfdb. XF checks every terminal — every thing you said you were building — against what's actually in the code. Not what Claude said it did. What's there.
Already built something? XF can work backwards. Describe what you intended, generate a spec from the conversation, and verify your existing code against it. Ships clean or ships with a known gap — never ships with a hidden one.
This is what "code that enforces what the LLM doesn't always do reliably on its own" means in practice. Claude says it's done. XF checks. If XF says it's done, it's done.
XF Memory doesn't just save a file — it builds a tree. Every session is a branch. Every decision, every build, every open question becomes a node that future sessions can reach back to. The tree grows every time you work.
You never start from scratch again. If you've been building something for six weeks, Claude knows it — because XF recorded it, structured it, and loads the relevant branches at session start. Not because you explained it.
Search across every session with /xf-memr. Recall a decision from three months ago. Resume a project you haven't touched since last quarter. The tree is always there — and it only gets deeper.
This is what compounds. Not Claude's knowledge — yours.
Install is two minutes. The first session tells you everything.
Connect with GitHub — it's free10-day free trial · Pro: $15/mo · First 250 founders: $6/mo locked for life