TL;DR: faf export --agents authors a complete, best-in-class AGENTS.md for any repo — detected from your code, non-destructive, never stale. Point it at a project; it reads the real stack and writes the definitive file an agent needs. Facts, not bloat.

Authored, not generated

We used to say faf generated your AGENTS.md. We were doing it a disservice.

"Generated" is the LLM-slop word — a dumb producer spraying plausible prose. That's the opposite of what faf does. faf reads your repo, discerns what's true, and authors the definitions from that intel — the way an editor authors a dictionary entry: considered, curated, verifiable. Every line traces to something real in your code. Nothing invented.

So we changed the word everywhere. faf doesn't generate. faf authors.

The Concise Context format for AI

The model for a good AGENTS.md isn't a blog post. It's the Concise Oxford — definitions, not prose.

Inspired by the Concise Oxford English Dictionary, that's what FAF authors: the Concise Context for AI. Orientation, setup, tests, conventions, guardrails — dense with fact, stripped of filler. An agent doesn't need your project narrated; it needs to know what's true, fast. Persistent project context for AI — concise, current, correct.

What it authors

Point faf export --agents at any repo and it detects your build/test/lint commands, key files, the conventions toolchain (ESLint · Prettier · strict · ruff · mypy · rustfmt), secrets location, and guardrails — then writes the definitive AGENTS.md:

  • Orientation — type + version, so the agent knows where it landed
  • Setup / build / tests — the commands your project actually uses
  • Where things live — the map, not a tour
  • Conventions — points at your config, never restates your lint rules
  • Three-tier guardrails — Always · Ask-first · Never
  • Definition of Done — composed from your real verification commands
  • Secrets & security — where they are, how they're handled

Data-gated: if it isn't true, it isn't written. And it's non-destructive — your hand-written content is preserved; faf maintains its own labeled block. Run it again next week and the file is current, not stale.

Try it

No install — point it at any repo and read the file it authors:

bunx faf export --agents

Or install the CLI:

npm install -g faf-cli

The Numbers

  • v7.1.3 — The AGENTS.md Edition
  • 1,146 / 1,146 — tests passing
  • 100% — Trophy score
  • Ecosystem downloadslive hard floor at faf.one/downloads
  • IANA-registered · Anthropic-merged (#2759)