npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

faf

v8.0.1

Published

Persistent AI context + memory — .faf and .fafm, IANA-registered. Anthropic-merged.

Readme

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.

Anthropic MCP #2759 IANA vnd.faf+yaml IANA vnd.fafm+yaml IANA vnd.fafa+yaml Mentioned in Awesome Claude Code downloads npm

144.4k downloads · see faf.one/downloads for latest stats · IANA-registered · Anthropic-merged (#2759)

⭐ Bookmarks it for you, helps other devs find it too.

DOI: Context paper DOI: Memory paper project.faf → faf TAF CI

FAF defines. AGENTS.md instructs. AI codes.

FAF Trophy 100%

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 a project.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)

faf with no arguments shows your project's score; faf auto detects and fills.


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 every tech slot from the repo, then score
bunx faf-cli go                # Interactive interview to gold code

Nelly Never Forgets

Run faf with no arguments:

faf

faf-cli dogfoods itself — project.faf is source DNA; CLAUDE.md and GEMINI.md are authored from it via faf. AGENTS.md is the BETTER ops briefing (hand-kept for agents; faf export --agents still authors AGENTS.md for other repos).


Commands

| Command | What it does | |---------|--------------| | faf init | Create project.faf from your local project | | faf git <url> | Instant .faf from any GitHub repo (a shallow clone) | | faf auto | Detect stack, fill every slot it can, score | | faf go | Guided interview to fill the human-only slots | | faf score | Check AI-readiness (0–100%) | | faf export | Author AGENTS.md, CLAUDE.md, GEMINI.md, .cursorrules | | faf sync | .faf → CLAUDE.md (pull: Trophy-gated backfill) | | 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 compile / decompile | .faf → .fafb v2 sealed brick; decompile shows sections as JSON | | faf check | Validate a .faf file | | faf recover | Rebuild .faf from an existing CLAUDE.md / AGENTS.md | | 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) — new in 7.2.0

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.0.1 — The Always33 Edition

pnpm installs work: faf-cli depends on faf-scoring-kernel from npm, not a vendored folder.

  • The fix. 8.0.0 pointed at a vendor/ folder inside faf-cli. npm found it; pnpm looked in your project instead and stopped with ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND. faf-cli now gets faf-scoring-kernel from npm, the same files byte for byte.
  • Run without installing: bunx faf, npx faf and now pnpm dlx faf.
  • Checked on every change: CI installs the packed package with npm, pnpm and bun, then runs faf --version and faf score.

The Always33 Edition (8.0)

One engine, one number: faf-cli v8 scores with the always-33 kernel — the same score faf-kernel, faf-rust-sdk and rust-faf-mcp give.

  • The always-33 engine. Every .faf is scored against all 33 Mk4 slots by one Rust kernel (faf-scoring-kernel 3.0.0, WASM). Verified identical to the reference always-33 scorer on the project.faf of all 80 FAF repos.
  • Your 21 slots, and the 12 enterprise slots in view. faf-cli fills the 21 base slots. The 12 enterprise slots — infra, app, ops — are marked slotignored unless your app-type uses them, and faf score shows all 33.
  • Upgrading from 7.x: a .faf without the 12 enterprise markers now scores against 33, so its number can drop (21 filled = 64%). Run faf auto — it writes the markers and your score returns.
✪ TROPHY 100% 21/21 slots — project.faf
  ● project.name
  …
  ● stack.cicd
  — stack.monorepo_tool: slotignored
  …
  — monorepo.remote_cache: slotignored

Recent sprint

  • ✪ 8.0.1 pnpm installs work — faf-scoring-kernel from npm
  • ✪ 8.0.0 The Always33 Edition — one engine, one number
  • 🧱 7.16.2 faf compile emits FAFb wire v2 — same bytes as the faf-fafb golden
  • 🧭 7.16.1 faf back in step with faf-cli
  • 🧭 7.16.0 The Discoverable Edition
  • 🎴 7.15.0 The Pack Edition
  • 🛂 7.14.0 The Passport Edition
  • 🛡️ 7.13.1 security: detection reads stay inside the project
  • 🤝 7.13.0 The Co-Author Edition
  • 🧩 7.12.0 The Open Renderers Edition
  • 🖥️ 7.11.0 The VS Code Edition
  • 📚 7.10.0 The Full-Facts Edition
  • 🌱 7.9.0 The Git-Flow Edition
  • 🎬 7.8.0 The Projector Edition
  • 🐦 7.7.0 The Swift Edition
  • 💎 7.6.0 The Ruby Edition
  • ☕ 7.5.1 The JVM Edition

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  ──── 8ms ───→  CLAUDE.md   (pull: Trophy-gated backfill)
tri-sync:  .faf  ──── 8ms ───→  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.0 — Always33 — one engine, one number: the same score everywhere.
  • v7.1 — AGENTS.md — faf export --agents authors a complete, non-destructive AGENTS.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 --copilot writes the file GitHub Copilot reads.
  • v6.14 — Loop — faf loop drives any repo to ✪ 100% or the honest human wall.
  • v6.7 — HTML — faf show renders a .faf to 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.

bun 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

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

License: MIT Homebrew