TL;DR: faf bi-sync --all now generates AGENTS.md, .cursorrules, CLAUDE.md, and GEMINI.md from a single project.faf. Define your project once. Every AI tool reads it natively. 87 new championship tests. 3 cross-platform bugs caught before you ever would.

The Picture

This is what v4.5.0 looks like:

📋 AGENTS.md OpenAI Codex • 20+ tools
🤖 CLAUDE.md Anthropic • Claude Code
📐 .cursorrules Cursor IDE
GEMINI.md Google • Gemini CLI
🏎️ project.faf Define Once

One source of truth. Four native formats. Zero drift.

Why Bother?

Every AI tool invented its own config format. None of them talk to each other.

Without FAF

AGENTS.md write by hand
.cursorrules write by hand
CLAUDE.md write by hand
GEMINI.md write by hand
4 files. 4 formats. 4 chances to drift.

Update one, forget another. Context rot starts day one.

vs

With FAF

project.faf source of truth
faf bi-sync --all
1 file. 1 command. 4 outputs.

Always in sync. Always accurate. Always current.

The Real Cost

Every minute you spend maintaining duplicate context files is a minute you're not shipping code. project.faf is 30-40 lines of YAML. The generated files are 50-100 lines each. That's 200+ lines you never write again.

Three Layers, Three Jobs

1

.faf defines

Structured YAML. Machine-readable. IANA-registered. The single source of truth.

generates
2

.md files instruct

AGENTS.md, CLAUDE.md, GEMINI.md, .cursorrules. Prose for each tool. Generated from .faf.

consumed by
3

AI interprets

Claude, Codex, Cursor, Gemini. Each reads its native format. No translation layer needed.

What's New

AGENTS.md Interop

Full bidirectional support for OpenAI's AGENTS.md format. Import existing AGENTS.md files. Export from .faf. Keep both in sync.

faf agents import faf agents export faf agents sync

Supports the full spec: Project Overview, Tech Stack, Code Style, Build Commands, Architecture sections. Detects AGENTS.md, agents.md, and Agents.md (case-insensitive).

.cursorrules Interop

Same treatment for Cursor IDE's .cursorrules format. Import rules, export from .faf, bidirectional sync.

faf cursor import faf cursor export faf cursor sync

One Command, Every Format

The headline feature:

faf bi-sync --all

Generates CLAUDE.md + AGENTS.md + .cursorrules + GEMINI.md in one pass. Or pick your targets:

faf bi-sync --agents faf bi-sync --cursor faf bi-sync --all

Bugs We Killed

The WJTTC championship test suite found 3 cross-platform bugs before any user could hit them:

🪟
Windows \r\n

Line endings broke H1/H2 detection. Every VS Code user on Windows would have hit this.

📝
UTF-8 BOM

BOM marker before # made the first heading invisible. Silent corruption.

🍎
Classic Mac \r

Pre-OS X line endings unhandled. Edge case? Yes. But we test edges.

The Format Matrix

CommandFormatEcosystemStatus
faf bi-syncCLAUDE.mdAnthropic / Claude Codev3.0+
faf geminiGEMINI.mdGoogle / Gemini CLIv3.4.7+
faf agentsAGENTS.mdOpenAI / Codex / 20+ toolsv4.5.0
faf cursor.cursorrulesCursor IDEv4.5.0

Try It

npm install -g faf-cli@4.5.0

Or update:

npm update -g faf-cli

Then in any project with a project.faf:

faf bi-sync --all

GitHub

Source and release notes.

v4.5.0 Release

npm

Install the latest version.

faf-cli

The Numbers

  • v4.5.0 - Released February 24, 2026
  • 1,051/1,051 - Tests passing (+87 new)
  • 100% - Trophy score
  • WJTTC GOLD - Certified
  • 27,000+ - npm downloads (ecosystem)
  • 4 formats - CLAUDE.md + AGENTS.md + .cursorrules + GEMINI.md
  • 1 command - faf bi-sync --all