Wolfe-Jam/faf-cli
Wolfe-Jam/faf-cli has 44 GitHub stars and 5 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-14 18:34 UTC. Last push 2026-11-13.
측정된 스타 증가
- in 24h
- 0
- in 7 days
- 기록 수집 중
- in 15 days
- 기록 수집 중
- in 1 month
- 기록 수집 중
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
소개
The context every AI coding agent reads — authors AGENTS.md, CLAUDE.md, GEMINI.md & .cursorrules from your repo's real stack. IANA-registered .faf format.
개발 도구README.md
Original

faf-cli
CONTEXT, versioned.
The context every AI coding agent reads — authored from your repo, never guessed.
One .faf file → AGENTS.md · CLAUDE.md · GEMINI.md · .cursorrules,
detected from your real stack, scored, and versioned with your code. No drift. No re-explaining.
· across npm, PyPI and crates.io · IANA-registered · Anthropic-merged (#2759)
⭐ Star it on GitHub: bookmarks it for you, helps other devs find it too.
FAF defines. AGENTS.md instructs. AI codes.
project/
├── package.json ← npm reads this
├── project.faf ← AI reads this
├── README.md ← humans read this
└── src/
Every building requires a foundation. FAF is AI's foundational layer.
You have a
package.json. AI needs you to add aproject.faf. Done.
Git-Native. project.faf versions with your code — every clone, every fork, every checkout gets full AI context.
No setup, no drift, no re-explaining.
Install
bunx faf auto # Bun — zero install, fastest path
npx faf auto # npm — works everywhere
pnpm dlx faf auto # pnpm — zero install
brew install wolfe-jam/faf/faf-cli && faf auto # Homebrew (auto-taps)
fafwith no arguments shows your project's score.faf autofills what it detects in the repo, and suggests the goal and six W's for you to confirm infaf go.
Quick Start
# ANY GitHub repo — one shallow clone, no install, 2 seconds
bunx faf-cli git https://github.com/facebook/react
# Your own project
bunx faf-cli init # Create .faf
bunx faf-cli auto # Fill the tech slots from the repo, then score
bunx faf-cli go # Confirm the goal and six W's, suggested in gray
Nelly Never Forgets
Run faf with no arguments:

faf-cli dogfoods itself — project.faf is source DNA; CLAUDE.md, GEMINI.md and AGENTS.md are authored from it via
faf export; AGENTS.md keeps a hand-written section below faf's block.
Commands
| Command | What it does |
|---|---|
faf init |
Create project.faf from your local project; suggest the goal and six W's |
faf git <url> |
Instant .faf from any GitHub repo (a shallow clone) |
faf auto |
Detect the stack, fill the slots it detects, score; suggest the goal and six W's |
faf go |
Fill the human slots: each suggestion in gray, Tab to edit, Enter to confirm |
faf score |
Check AI-readiness (0–100%) |
faf export |
Author AGENTS.md, CLAUDE.md, GEMINI.md, .cursorrules |
faf sync |
.faf → CLAUDE.md, one way (faf's block only) |
faf memory |
.fafm soul ops — convert Claude memory, etch, recall, ls, show |
faf diff / log |
Semantic context diff + score timeline across git history |
faf hooks --install |
Pre-commit guard against context regression |
faf taf setup |
Write the CI workflow that prints a Test Receipt for every run (JavaScript with Jest, Vitest or Bun; Python; Go; Rust; Java with Maven or Gradle; .NET) |
faf taf receipts |
Your Test Receipts in the terminal, newest first |
faf compile / decompile |
.faf → .fafb v2 sealed brick; decompile shows sections as JSON |
faf check |
Validate a .faf file |
faf show |
Render project.faf to a browsable HTML page |
faf formats |
List supported stacks and formats |
Run faf --help for the full command set and options.
Memory (.fafm)
Portable agent memory in the IANA-registered .fafm format. Same INTEROP as claude-fafm-sdk 1.0.
# Claude Code memory dir → soul.fafm
faf memory convert ~/.claude/projects/.../memory -o soul.fafm
faf memory ls # ranked facts
faf memory recall "your query" # deterministic filter + rank
faf memory etch "a durable fact" --id my-fact
faf memory show
What's New in v8.10.0 — The Human Slots Edition
AI suggests, you confirm. faf no longer writes your project's goal or six W's: it suggests them, and you confirm each one in faf go.
- Suggestions in gray.
faf goshows each suggestion with where it came from (README.md § Why,package.json description). Tab to edit, Enter to confirm, type to replace,skipto leave it empty.faf init,faf autoandfaf gitsay how many are waiting. - Only facts are suggested. Markup, link and label rows, greetings, install lines and fragments are rejected; a notice or callout (deprecated, sponsored by,
Warning:…) is never the goal; a long first paragraph gives its first sentence, whole. The README leads the goal. - faf-facts. The six W's ask for one line where every word earns its place.
howis how it works;whenis the stage it is at, and since when. - Breaking for library users:
assembleFreshFaf,updateExistingFafandauthorFafFromReporeturn the goal and six W's empty. Files you already have are not changed. faf goinput. Backspace removes a whole character (emoji, CJK), other questions use readline again, and piped answers are read in order.
Earlier editions: CHANGELOG.md · Releases
Custom instructions
Your own rules for the AI — "use full words in identifiers," "use bun, not npm" — go in project.faf under ai_instructions.warnings. They land at the top of every AGENTS.md faf writes, verbatim and non-destructive.
→ How to add custom rules · docs.faf.one
Scoring
✪ Trophy 100% — all or nothing. From v6.6.0 onward, faf-cli recommends only Trophy. 100% on the FCL is what makes the layers above (MD instructions, Agents, AI tooling) work — sub-Trophy leaves gaps that AI guesses on. Sub-Trophy tiers (including Bronze 85) remain on the ladder as honest interim states — they are not deleted; we just no longer aim for 85 as the goal.
| Tier | Score | Status |
|---|---|---|
| ✪ Trophy | 100% | AI never has to guess — target |
| ★ Gold | 99%+ | 1 slot from Trophy |
| ◆ Silver | 95%+ | Close — keep going |
| ◇ Bronze | 85%+ | On the ladder (was the old recommend-min; not the target) |
| ● Green | 70%+ | Interim — keep going |
| ● Yellow | 55%+ | AI flipping coins |
| ○ Red | <55% | AI working blind |
| ♡ White | 0% | No context at all |
Always-33. The score is filled ÷ active across all 33 Mk4 slots. Your app-type decides which slots are active; the rest are slotignored and stay visible. Same file, same engine, same number — see docs/SCORING.md.
One score, three glyphs: ✪ work (CLI · docs · receipts) · 🏆 social (X · blogs) · Trophy Mark PNG (brand). Source of truth: src/core/tiers.ts.
Sync
sync: .faf ───→ CLAUDE.md (one way: faf's block only)
tri-sync: .faf ───→ CLAUDE.md + Claude Code's MEMORY.md (Pro: faf's block only; Claude's notes kept)
Docs
The full manual lives at docs.faf.one — facts for devs, faf-cli first. One-page overview: faf-cli.vercel.app.
- Getting started — install · run · use
- Cards — one
.fafa→ A2A · Server Card · registry · AI Catalog · ARD - Custom rules — pin instructions your AI must follow
For a specific agent: Grok, xAI & Cursor 👀 · Claude Code 👀 · Bun 👀
Recent editions
Pivotal releases — full history in CHANGELOG.md:
- v8.10 — Human Slots — AI suggests the goal and six W's; you confirm each one in
faf go. - v8.9 — Write-Once — a birth certificate that can't be reissued, checked against its birth commit.
- v8.0 — Always33 — one engine, one number: the same score everywhere.
- v7.1 — AGENTS.md —
faf export --agentsauthors a complete, non-destructiveAGENTS.md. - v7.0 — GIT — context goes git-native:
faf diff/log/hooks. - v6.16 — Know Your Stack — every emitted file labels your stack identically.
- v6.15 — Copilot —
faf export --copilotwrites the file GitHub Copilot reads. - v6.14 — Loop —
faf loopdrives any repo to ✪ 100% or the honest human wall. - v6.7 — HTML —
faf showrenders a.fafto a browsable page. (FAF defines. AGENTS.md instructs. AI codes. HTML shows.) - v6.6 — Trophy — 100% or nothing.
- v6.0 — Bun — ground-up rewrite; single portable binary, four platforms.
Compiled Binaries
Bun's single-file compiler produces standalone binaries — no runtime needed.
bun run compile # Current platform
bun run compile:all # darwin-arm64, darwin-x64, linux-x64, windows-x64
Ship faf as a single binary for CI/CD, Docker, or air-gapped environments.
Architecture
src/
├── cli.ts ← Entry point (Commander registrations)
├── commands/ ← one file per faf subcommand
├── core/ ← Types, slots (Mk4), tiers, scorer, schema
├── detect/ ← Framework detection, stack scanner
├── interop/ ← YAML I/O, CLAUDE.md, AGENTS.md, GEMINI.md
├── ui/ ← Colors (#00D4D4), display
└── wasm/ ← faf-scoring-kernel wrapper (Rust → WASM)
Toolchain: Bun (test, build, compile) · TypeScript (strict) · WASM (scoring kernel)
Testing
Robust. Reliable. Next-level WJTTC tested. — The Foundation Edition.
npm test # extensive WJTTC + e2e suite
- WJTTC Build Resilience — regression classes locked.
- WJTTC Kernel Stress — WASM kernel boundary tests.
- e2e lifecycle — commands in sequence.
Test reports in reports/.
Support
- GitHub Discussions — Questions, ideas, community
- Email: [email protected]
If faf-cli has been useful, consider starring the repo — it helps others find it.
Citation
If you use faf-cli or the .faf / .fafm / .fafa formats in research or production, please cite the format papers:
Wolfe, J. (2025). Format-Driven AI Context Architecture: The .faf Standard for Persistent Project Understanding. Zenodo. https://doi.org/10.5281/zenodo.18251362
Wolfe, J. (2026). Permanent Memory and Instant Recall: The .fafm Standard for Multi-Profile AI Agent Memory. Zenodo. https://doi.org/10.5281/zenodo.20348942
Wolfe, J. (2026). Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era. Zenodo. https://doi.org/10.5281/zenodo.21951641
BibTeX
@article{wolfe2025faf,
title = {Format-Driven AI Context Architecture: The .faf Standard for Persistent Project Understanding},
author = {Wolfe, James},
year = {2025},
month = {nov},
publisher = {Zenodo},
doi = {10.5281/zenodo.18251362},
url = {https://doi.org/10.5281/zenodo.18251362}
}
@article{wolfe2026fafm,
title = {Permanent Memory and Instant Recall: The .fafm Standard for Multi-Profile AI Agent Memory},
author = {Wolfe, James},
year = {2026},
month = {may},
publisher = {Zenodo},
doi = {10.5281/zenodo.20348942},
url = {https://doi.org/10.5281/zenodo.20348942}
}
@article{wolfe2026fafa,
title = {Why Agents Need a Passport: .fafa — Portable Identity for the Agentic Era},
author = {Wolfe, James},
year = {2026},
month = {aug},
publisher = {Zenodo},
doi = {10.5281/zenodo.21951641},
url = {https://doi.org/10.5281/zenodo.21951641}
}
License
MIT — Free and open source
IANA-registered: application/vnd.faf+yaml (Context Layer) · application/vnd.fafm+yaml (Memory Layer) · application/vnd.fafa+yaml (Agent Layer)
format | driven 🏎️⚡️ wolfejam.dev · faf.one/cli