Most of the work here is bookkeeping an agent can do for itself — read the manifests, fill the stack slots, rewrite CLAUDE.md — and the part it cannot do is the six questions faf_go puts to you. The score and the doctor checklist are what make that concrete: they name the slots that are still empty instead of saying the context is thin. faf_bench then answers the obvious follow-up by asking about your repo with and without the file and grading the two answers.
A server around the FAF format — a project.faf file that carries project context — with tools to create it, fill its stack slots from your real manifests, score how readable it is for an AI, sync it into the instruction file each coding agent reads, and keep decisions in a separate .fafm memory file.
- faf_init creates a project.faf from a name, goal and language and will not overwrite an existing one; faf_go asks the human the six questions no scanner can answer — goal, why, who, what, where and when
- faf_auto reads package.json, Cargo.toml, pyproject.toml and go.mod and fills the stack slots from real dependencies rather than defaults
- faf_score returns a 0–100% AI-readability figure with a tier and a per-slot breakdown from the deterministic Mk4 engine
- faf_doctor turns a low score into a prioritised checklist: which slots are empty or weak, and how to fix each
- faf_sync writes the file into CLAUDE.md as a faf-managed block, and on request into AGENTS.md, .cursorrules, GEMINI.md and .github/copilot-instructions.md
- faf_trust attests the file — validity, score, and a deterministic parity hash any conformant engine reproduces
- faf_bench asks the model about this repo cold and again with the .faf, grades the two mechanically, and reports the difference
- faf_etch stores a decision, gotcha or win in the .fafm project soul with a type, tags and a priority, and faf_recall returns them ranked by priority then recency and filtered by query, tag or type
- faf_context sets the project path every other faf_ call resolves against, and faf_enhance refines the file with claude, gemini or grok — optionally by consensus, and with a dry-run preview
The npm package claude-faf-mcp, launched over stdio; the same version is also published as a .mcpb bundle on the repository's releases for clients that install those. It needs a project directory to work in — call faf_context once at the start of a session to set the path the other calls resolve against. FAF_TOOLS=all exposes the full tool set rather than the core one, and faf_enhance reaches out to an external model, so it needs whichever of claude, gemini or grok you point it at.
One command — npm install -g claude-faf-mcp
