faf-cli 7.1.3 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -263
- package/dist/cli.js +271 -259
- package/dist/cli.js.map +51 -47
- package/dist/fafm/from-claude-dir.d.ts +14 -0
- package/dist/fafm/index.d.ts +4 -0
- package/dist/fafm/soul.d.ts +71 -0
- package/dist/fafm/types.d.ts +41 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +138 -138
- package/dist/index.js.map +23 -20
- package/package.json +8 -4
- package/project.faf +47 -3
package/README.md
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
<div align="center">
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
<h1>
|
|
7
|
+
<img src="https://www.faf.one/orange-smiley.svg" alt="FAF" width="72" /><br>
|
|
8
|
+
faf-cli<br>
|
|
9
|
+
<sub><sub>CONTEXT, versioned.</sub></sub>
|
|
10
|
+
</h1>
|
|
11
11
|
|
|
12
12
|
### The context every AI coding agent reads — authored from your repo, never guessed.
|
|
13
13
|
|
|
@@ -21,10 +21,11 @@ detected from your real stack, scored, and versioned with your code. No drift. N
|
|
|
21
21
|
[](https://www.npmjs.com/package/faf-cli)
|
|
22
22
|
[](https://www.npmjs.com/package/faf-cli)
|
|
23
23
|
|
|
24
|
+
<br>
|
|
25
|
+
|
|
24
26
|
**115,000+ downloads across the FAF ecosystem · IANA-registered · Anthropic-merged (#2759)**
|
|
25
27
|
|
|
26
|
-
⭐ **
|
|
27
|
-
despite all our downloads, ~3 of 4 developers check stars before adopting.
|
|
28
|
+
⭐ **A star helps other devs find faf-cli** — despite the downloads, ~3 of 4 devs check stars.
|
|
28
29
|
|
|
29
30
|
<!-- ② papers · funnel · testing — one line -->
|
|
30
31
|
[](https://doi.org/10.5281/zenodo.18251362)
|
|
@@ -33,7 +34,7 @@ despite all our downloads, ~3 of 4 developers check stars before adopting.
|
|
|
33
34
|
[](https://github.com/Wolfe-Jam/faf-taf-git)
|
|
34
35
|
[](https://github.com/Wolfe-Jam/faf-cli/actions/workflows/ci.yml)
|
|
35
36
|
|
|
36
|
-
|
|
37
|
+
FAF defines. MD instructs. AI codes.
|
|
37
38
|
|
|
38
39
|
<!-- trophy — bottom of hero -->
|
|
39
40
|
[](https://faf.one)
|
|
@@ -69,271 +70,73 @@ brew install wolfe-jam/faf/faf-cli && faf # Homebrew (auto-taps)
|
|
|
69
70
|
|
|
70
71
|
---
|
|
71
72
|
|
|
72
|
-
##
|
|
73
|
-
|
|
74
|
-
Run `faf` with no arguments:
|
|
75
|
-
|
|
76
|
-

|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## v7.1 — The AGENTS.md Edition
|
|
81
|
-
|
|
82
|
-
**`faf export --agents` now authors a complete, best-in-class AGENTS.md for any repo — detected from your code, non-destructive, never stale.**
|
|
83
|
-
|
|
84
|
-
Point it at any repo and it detects your build/test commands, key files, conventions (ESLint/Prettier/strict/ruff/mypy…), and guardrails — then writes the definitive AGENTS.md: orientation, setup, tests, where-things-live, conventions, three-tier guardrails, a Definition of Done composed from your real commands, and secrets handling. Facts, not bloat. Your hand-written content is preserved.
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
npx faf-cli export --agents
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Context for AI agents
|
|
93
|
-
|
|
94
|
-
FAF-CLI authors the files agents read (AGENTS.md, CLAUDE.md, .cursorrules) from real project detection — zero-install via `bunx faf`.
|
|
95
|
-
|
|
96
|
-
- [→ FAF-CLI for Grok, xAI & Cursor 👀](docs/faf-cli-for-agents.md)
|
|
97
|
-
- [→ FAF-CLI for Claude Code 👀](docs/faf-cli-for-claude.md)
|
|
98
|
-
- [→ FAF-CLI for Bun 👀](docs/faf-cli-for-bun.md)
|
|
99
|
-
|
|
100
|
-
## v7.0 — The GIT Version
|
|
101
|
-
|
|
102
|
-
**FAF is to Context what Git is to Versions.**
|
|
103
|
-
|
|
104
|
-
Git gave your *code* diff, log, blame, hooks, CI. v7.0 gives your *context* the same — `project.faf` is now a git-native artifact:
|
|
105
|
-
|
|
106
|
-
- **`faf diff`** — semantic context diff + score delta between any two refs (`85% ● → 100% 🏆`)
|
|
107
|
-
- **`git diff` speaks .faf** — `faf diff --install-driver` makes native `git diff` / `log -p` / `show` render the delta
|
|
108
|
-
- **`faf log`** — the score timeline across history (Proof-Over-Time)
|
|
109
|
-
- **`faf hooks --install`** — pre-commit guard: warn, or `--strict` block, on a context regression
|
|
110
|
-
- **`faf git owner/repo --ref <tag>`** — instant, *versioned*, scored context from any repo
|
|
111
|
-
|
|
112
|
-
Purely additive — a safe upgrade. (One change: `faf git` now refuses to overwrite an existing `project.faf` — pass `--force`.)
|
|
113
|
-
|
|
114
|
-
## v6.16 — Know Your Stack
|
|
115
|
-
|
|
116
|
-
**FAF knows your stack — and now labels it identically in every file it writes: CLAUDE.md, AGENTS.md, copilot-instructions.md, GEMINI.md, .cursorrules.**
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
faf export --all # CLAUDE.md · AGENTS.md · copilot-instructions.md · GEMINI.md · .cursorrules
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
FAF *knows your stack* — all 33 canonical slots now carry their display label in the registry, so `api_type` → **API**, `cicd` → **CI/CD**, `frontend` → **Framework**, the same way in **every** emitted file. GEMINI.md and `.cursorrules` were raw-key dumps; now they read like the rest. And `.github/copilot-instructions.md` gets a ground-up **Copilot-grade** rewrite — a prose overview, a `## Build & run` command section, GitHub-spec framing. Copilot enhancements, and more.
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## v6.15 — The Copilot Edition
|
|
127
|
-
|
|
128
|
-
**FAF now writes the file GitHub Copilot reads.**
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
faf export --copilot # → .github/copilot-instructions.md (every Copilot surface reads it)
|
|
132
|
-
faf git owner/repo # instant scored .faf from any GitHub repo (now injection-hardened)
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
`faf export --copilot` emits GitHub Copilot's repository-wide instruction file — the **widest-surface** one, read by default across web chat, code review, VS Code, JetBrains, the CLI, and the coding agent. `faf git` is now hardened against URL command injection (no-shell `execFileSync` + a strict allowlist). Shipped with an exemplary WJTTC Git suite that adopts the full five tiers — **BRAKE · ENGINE · AERO · TYRE · PIT**.
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## v6.14 — The Loop Edition
|
|
140
|
-
|
|
141
|
-
**`faf loop` drives any repo to 🏆 100% or the honest human wall** — sourcing every slot it can with provenance, asking only what only you know, never inventing.
|
|
73
|
+
## Quick Start
|
|
142
74
|
|
|
143
75
|
```bash
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
The loop sources what detection can, then stops at one of three honest terminals: `done` (🏆 100%), `needs-human` (it asks only the slots only you can answer), or `stuck` (it sourced everything sourceable and nothing's left for a human to add). It never fabricates a slot to reach 100% — sourced 6Ws now carry provenance (`{value, source, confidence}`), so every seeded value is a confirm-or-edit suggestion, never an auto-confirmed guess.
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
## v6.13 — The Dart Edition
|
|
152
|
-
|
|
153
|
-
**faf now understands Dart and Flutter projects.** Content-aware `pubspec.yaml` classification — Flutter app vs reusable package · Dart server (Serverpod / Dart Frog / Shelf) / CLI / MCP — pure Dart stays Dart. The single-source engine faf-python-sdk and the MCPs compose, parity-tested across languages.
|
|
76
|
+
# ANY GitHub repo — no clone, no install, 2 seconds
|
|
77
|
+
bunx faf-cli git https://github.com/facebook/react
|
|
154
78
|
|
|
155
|
-
|
|
156
|
-
faf
|
|
79
|
+
# Your own project
|
|
80
|
+
bunx faf-cli init # Create .faf
|
|
81
|
+
bunx faf-cli auto # Zero to 100% in one command
|
|
82
|
+
bunx faf-cli go # Interactive interview to gold code
|
|
157
83
|
```
|
|
158
84
|
|
|
159
|
-
A pubspec alone no longer means "Flutter": `faf` reads the dependencies and classifies — a Flutter app, a reusable package, a Dart server, a CLI, or a Dart MCP server. The detection knowledge lives in one spec (`dart-detection.json`) that faf-cli, faf-python-sdk, and the MCPs all share.
|
|
160
|
-
|
|
161
85
|
---
|
|
162
86
|
|
|
163
|
-
##
|
|
164
|
-
|
|
165
|
-
**faf-cli is now the single source for the registry `_meta`** — it emits the `one.faf/context` block every FAF MCP server composes: `registryMeta`/`registryName`/`fafContextBlock`, one deterministic projection, byte-identical, end-to-end across every surface, verifiable by sha, re-derivable instantly on-demand.
|
|
87
|
+
## Nelly Never Forgets
|
|
166
88
|
|
|
167
|
-
|
|
168
|
-
import { registryMeta, registryName } from 'faf-cli';
|
|
89
|
+
Run `faf` with no arguments:
|
|
169
90
|
|
|
170
|
-
|
|
171
|
-
serverJson._meta = registryMeta(faf); // nests one.faf/context under publisher-provided (4 KB cap)
|
|
172
|
-
```
|
|
91
|
+

|
|
173
92
|
|
|
174
|
-
|
|
93
|
+
> **faf-cli dogfoods itself** — [project.faf](./project.faf) is source DNA; [CLAUDE.md](./CLAUDE.md) and [GEMINI.md](./GEMINI.md) are authored from it via `faf`. [AGENTS.md](./AGENTS.md) is the **BETTER** ops briefing (hand-kept for agents; `faf export --agents` still authors AGENTS.md for other repos).
|
|
175
94
|
|
|
176
95
|
---
|
|
177
96
|
|
|
178
|
-
##
|
|
97
|
+
## Commands
|
|
179
98
|
|
|
180
|
-
|
|
99
|
+
| Command | What it does |
|
|
100
|
+
|---------|--------------|
|
|
101
|
+
| `faf init` | Create `project.faf` from your local project |
|
|
102
|
+
| `faf git <url>` | Instant `.faf` from any GitHub repo — no clone |
|
|
103
|
+
| `faf auto` | Detect stack, fill every slot it can, score |
|
|
104
|
+
| `faf go` | Guided interview to fill the human-only slots |
|
|
105
|
+
| `faf score` | Check AI-readiness (0–100%) |
|
|
106
|
+
| `faf export` | Author `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.cursorrules` |
|
|
107
|
+
| `faf sync` | Bi-directional `.faf` ↔ `CLAUDE.md` |
|
|
108
|
+
| `faf memory` | `.fafm` soul ops — convert Claude memory, etch, recall, ls, show |
|
|
109
|
+
| `faf diff` / `log` | Semantic context diff + score timeline across git history |
|
|
110
|
+
| `faf hooks --install` | Pre-commit guard against context regression |
|
|
111
|
+
| `faf compile` / `decompile` | `.faf` ↔ `.fafb` sealed binary |
|
|
112
|
+
| `faf check` | Validate a `.faf` file |
|
|
113
|
+
| `faf recover` | Rebuild `.faf` from an existing `CLAUDE.md` / `AGENTS.md` |
|
|
114
|
+
| `faf show` | Render `project.faf` to a browsable HTML page |
|
|
115
|
+
| `faf formats` | List supported stacks and formats |
|
|
116
|
+
|
|
117
|
+
Run `faf --help` for the full command set and options.
|
|
118
|
+
|
|
119
|
+
### Memory (`.fafm`) — new in 7.2.0
|
|
120
|
+
|
|
121
|
+
Portable agent memory in the IANA-registered [`.fafm`](https://www.iana.org/assignments/media-types/application/vnd.fafm+yaml) format. Same INTEROP as [claude-fafm-sdk 1.0](https://pypi.org/project/claude-fafm-sdk/).
|
|
181
122
|
|
|
182
123
|
```bash
|
|
183
|
-
|
|
184
|
-
|
|
124
|
+
# Claude Code memory dir → soul.fafm
|
|
125
|
+
faf memory convert ~/.claude/projects/.../memory -o soul.fafm
|
|
185
126
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
**Every FAF MCP composes single-source engines, never reimplements them.** Turbo-Cat (the ~200-format knowledge base) and the bench engine join the public API, alongside scoring and the 6Ws Interview:
|
|
191
|
-
|
|
192
|
-
```ts
|
|
193
|
-
import { turboCatScan, deriveQuestionSet, publicQuestions, gradeAnswers, buildReceipt } from 'faf-cli';
|
|
127
|
+
faf memory ls # ranked facts
|
|
128
|
+
faf memory recall "your query" # deterministic filter + rank
|
|
129
|
+
faf memory etch "a durable fact" --id my-fact
|
|
130
|
+
faf memory show
|
|
194
131
|
```
|
|
195
132
|
|
|
196
|
-
- **Turbo-Cat composed** — `turboCatScan` / `turboCatSlots`: per-format breakdown + stack signature, sourced-only, deterministic, pure read. The MCPs retire their hardcoded format maps.
|
|
197
|
-
- **Bench composed** — derive questions from any `.faf` (the answer key stays server-side via `publicQuestions`), grade mechanically, emit the `✪` receipt. One grading engine, byte-identical everywhere.
|
|
198
|
-
- **`✪` = one convention** — parity · trust · bench all emit sha256-over-canonical-projection receipts any third party can re-derive.
|
|
199
|
-
|
|
200
133
|
---
|
|
201
134
|
|
|
202
|
-
##
|
|
135
|
+
## Custom instructions
|
|
203
136
|
|
|
204
|
-
|
|
137
|
+
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.
|
|
205
138
|
|
|
206
|
-
|
|
207
|
-
- **The 6Ws Interview, exported** — the 8-question core (name + goal + the six Ws) plus the stack interview now ship as the public API (`SIX_WS_INTERVIEW`, `questionForSlot`, `interviewForMissing`). One registry; every consumer (CLI, MCPs, UIs) asks the same questions. Question drift is dead.
|
|
208
|
-
- **`faf refresh`** — the re-ground: re-score the live `.faf`, measure drift vs the DNA baseline (`drift: 43% ↑ 55% (+12)`), keep an existing `.fafb` fast tier compiled current, record the journey. `drift → refresh → re-grounded`.
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## v6.7 — The HTML Edition
|
|
213
|
-
|
|
214
|
-
**We rendered a `.faf`. 🔥 The day we *saw* FAF.**
|
|
215
|
-
|
|
216
|
-
A major development — not a new flag, a new way to *see* what your AI
|
|
217
|
-
works from. A `.faf` was always machine-readable. Now it is
|
|
218
|
-
human-visible.
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
faf show
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
**What:** one verb renders your *current* `project.faf` to a
|
|
225
|
-
self-contained `project.html` and opens it — score, tier, the 6 W's,
|
|
226
|
-
the stack, in any browser.
|
|
227
|
-
|
|
228
|
-
**Why it matters:** HTML shows **on-demand** — current truth, never a
|
|
229
|
-
stale snapshot — **visuals for human *and team* review.** The same
|
|
230
|
-
context your AI reads, now reviewable by people. Trophy renders the
|
|
231
|
-
earned award; sub-Trophy renders the honest gaps — a map, not a
|
|
232
|
-
verdict. Humans like visuals. We gave them one.
|
|
233
|
-
|
|
234
|
-
It is a **cross-check**: see what your AI sees, then improve what it is
|
|
235
|
-
working with **at the root** — the `project.faf` itself, not the
|
|
236
|
-
symptoms.
|
|
237
|
-
|
|
238
|
-
This is the **4th pillar**:
|
|
239
|
-
|
|
240
|
-
> **FAF defines. MD instructs. AI codes. HTML shows.**
|
|
241
|
-
|
|
242
|
-
`faf show` · `faf export --html` · a public render API
|
|
243
|
-
(`generateProjectHtml`) — one single-sourced renderer, no reinvention.
|
|
244
|
-
|
|
245
|
-
Receipts → [CHANGELOG](./CHANGELOG.md)
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## v6.6 — The Trophy Edition
|
|
250
|
-
|
|
251
|
-
Until now we have had 85% as a recommended minimum. **It's now 100%! 🏆 All or nothing.**
|
|
252
|
-
|
|
253
|
-
AI gets its best shot at assisting you. **Period.**
|
|
254
|
-
|
|
255
|
-
We are able to do this because we can now get you to 100% on virtually any app-type.
|
|
256
|
-
|
|
257
|
-
**FAF Init > Auto > Go = 100%.**
|
|
258
|
-
|
|
259
|
-
`faf sync` locks MD ↔ FAF with 100% 🏆 — anti-hallucination, pro-code.
|
|
260
|
-
|
|
261
|
-
(Adding `about` — the 20th app-type — made the ladder hit a score. *How no-score became a score.* Fitting, because v6.6 is when that score became the only one we recommend.)
|
|
262
|
-
|
|
263
|
-
Receipts → [CHANGELOG](./CHANGELOG.md)
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
## v6.0 — Built with Bun
|
|
268
|
-
|
|
269
|
-
v6 is a ground-up rewrite. All-in on Bun — same toolchain as Claude Code.
|
|
270
|
-
|
|
271
|
-
| | Claude Code | faf-cli v6 |
|
|
272
|
-
|-|-------------|------------|
|
|
273
|
-
| **Runtime** | Bun | Bun (`bunx`) |
|
|
274
|
-
| **Test** | Bun | `bun test` |
|
|
275
|
-
| **Build** | Bun | `bun build` |
|
|
276
|
-
| **Language** | TypeScript | TypeScript |
|
|
277
|
-
| **Compile** | Bun bytecode | `bun build --compile` |
|
|
278
|
-
|
|
279
|
-
880 tests in ~18s. 296KB bundle in 2.4s. Single portable binary, 4 platforms. npx backward-compatible.
|
|
280
|
-
|
|
281
|
-
32 commands. 880 tests. WJTTC-tested. 93% smaller than v5.
|
|
282
|
-
|
|
283
|
-
```
|
|
284
|
-
commands → interop → core → wasm
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
The WASM scoring kernel (`faf-scoring-kernel` 2.0.0) does the math. Bun does the delivery.
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
## Commands
|
|
292
|
-
|
|
293
|
-
| # | Command | One-liner |
|
|
294
|
-
|---|---------|-----------|
|
|
295
|
-
| 1 | `faf init` | Create `.faf` from your local project |
|
|
296
|
-
| 2 | `faf git <url>` | Instant `.faf` from any GitHub repo — no clone |
|
|
297
|
-
| 3 | `faf auto` | Zero to 100% in one command |
|
|
298
|
-
| 4 | `faf go` | Guided interview to gold code |
|
|
299
|
-
| 5 | `faf score` | Check AI-readiness (0-100%) |
|
|
300
|
-
| 6 | `faf sync` | `.faf` ↔ CLAUDE.md (bi-sync, mtime auto-direction) |
|
|
301
|
-
| 7 | `faf compile` | `.faf` → `.fafb` binary — sealed, portable, deterministic |
|
|
302
|
-
| 8 | `faf decompile` | `.fafb` → JSON |
|
|
303
|
-
| 9 | `faf export` | Author AGENTS.md, .cursorrules, GEMINI.md |
|
|
304
|
-
| 10 | `faf check` | Validate `.faf` file |
|
|
305
|
-
| 11 | `faf edit` | Edit `.faf` fields inline |
|
|
306
|
-
| 12 | `faf convert` | Convert `.faf` to JSON |
|
|
307
|
-
| 13 | `faf drift` | Check context drift |
|
|
308
|
-
| 14 | `faf context` | Author context output |
|
|
309
|
-
| 15 | `faf recover` | Recover `.faf` from CLAUDE.md / AGENTS.md |
|
|
310
|
-
| 16 | `faf migrate` | Migrate `.faf` to latest version |
|
|
311
|
-
| 17 | `faf search` | Search slots and formats |
|
|
312
|
-
| 18 | `faf share` | Share `.faf` via URL |
|
|
313
|
-
| 19 | `faf taf` | Generate TAF test receipt |
|
|
314
|
-
| 20 | `faf demo` | Demo walkthrough |
|
|
315
|
-
| 21 | `faf ai` | AI-powered enhance & analyze |
|
|
316
|
-
| 22 | `faf pro` | Pro features & licensing |
|
|
317
|
-
| 23 | `faf conductor` | Conductor integration |
|
|
318
|
-
| 24 | `faf formats` | Show supported formats |
|
|
319
|
-
| 25 | `faf info` | Version and system info |
|
|
320
|
-
| 26 | `faf clear` | Clear cached data |
|
|
321
|
-
|
|
322
|
-
Run `faf --help` for full options.
|
|
323
|
-
|
|
324
|
-
---
|
|
325
|
-
|
|
326
|
-
## Quick Start
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
# ANY GitHub repo — no clone, no install, 2 seconds
|
|
330
|
-
bunx faf-cli git https://github.com/facebook/react
|
|
331
|
-
|
|
332
|
-
# Your own project
|
|
333
|
-
bunx faf-cli init # Create .faf
|
|
334
|
-
bunx faf-cli auto # Zero to 100% in one command
|
|
335
|
-
bunx faf-cli go # Interactive interview to gold code
|
|
336
|
-
```
|
|
139
|
+
**→ [How to add custom rules](https://docs.faf.one/custom-rules)** · [docs.faf.one](https://docs.faf.one)
|
|
337
140
|
|
|
338
141
|
---
|
|
339
142
|
|
|
@@ -359,12 +162,38 @@ bunx faf-cli go # Interactive interview to gold code
|
|
|
359
162
|
## Sync
|
|
360
163
|
|
|
361
164
|
```
|
|
362
|
-
bi-sync: .faf ←── 8ms ──→ CLAUDE.md
|
|
363
|
-
tri-sync: .faf ←── 8ms ──→ CLAUDE.md ↔ MEMORY.md
|
|
165
|
+
bi-sync: .faf ←── 8ms ──→ CLAUDE.md
|
|
166
|
+
tri-sync: .faf ←── 8ms ──→ CLAUDE.md ↔ MEMORY.md
|
|
364
167
|
```
|
|
365
168
|
|
|
366
169
|
---
|
|
367
170
|
|
|
171
|
+
## Docs
|
|
172
|
+
|
|
173
|
+
The full manual lives at **[docs.faf.one](https://docs.faf.one)** — facts for devs, faf-cli first.
|
|
174
|
+
|
|
175
|
+
- [Getting started](https://docs.faf.one/getting-started) — install · run · use
|
|
176
|
+
- [Custom rules](https://docs.faf.one/custom-rules) — pin instructions your AI must follow
|
|
177
|
+
|
|
178
|
+
For a specific agent: [Grok, xAI & Cursor 👀](docs/faf-cli-for-agents.md) · [Claude Code 👀](docs/faf-cli-for-claude.md) · [Bun 👀](docs/faf-cli-for-bun.md)
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Recent editions
|
|
183
|
+
|
|
184
|
+
Pivotal releases — full history in [CHANGELOG.md](./CHANGELOG.md):
|
|
185
|
+
|
|
186
|
+
- **v7.1 — AGENTS.md** — `faf export --agents` authors a complete, non-destructive `AGENTS.md`.
|
|
187
|
+
- **v7.0 — GIT** — context goes git-native: `faf diff` / `log` / `hooks`.
|
|
188
|
+
- **v6.16 — Know Your Stack** — every emitted file labels your stack identically.
|
|
189
|
+
- **v6.15 — Copilot** — `faf export --copilot` writes the file GitHub Copilot reads.
|
|
190
|
+
- **v6.14 — Loop** — `faf loop` drives any repo to 🏆 100% or the honest human wall.
|
|
191
|
+
- **v6.7 — HTML** — `faf show` renders a `.faf` to a browsable page. *(FAF defines. MD instructs. AI codes. HTML shows.)*
|
|
192
|
+
- **v6.6 — Trophy** — 100% or nothing.
|
|
193
|
+
- **v6.0 — Bun** — ground-up rewrite; single portable binary, four platforms.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
368
197
|
## Compiled Binaries
|
|
369
198
|
|
|
370
199
|
Bun's single-file compiler produces standalone binaries — no runtime needed.
|
|
@@ -382,9 +211,9 @@ Ship `faf` as a single binary for CI/CD, Docker, or air-gapped environments.
|
|
|
382
211
|
|
|
383
212
|
```
|
|
384
213
|
src/
|
|
385
|
-
├── cli.ts ← Entry point
|
|
386
|
-
├── commands/ ←
|
|
387
|
-
├── core/ ← Types, slots (
|
|
214
|
+
├── cli.ts ← Entry point (Commander registrations)
|
|
215
|
+
├── commands/ ← one file per faf subcommand
|
|
216
|
+
├── core/ ← Types, slots (Mk4), tiers, scorer, schema
|
|
388
217
|
├── detect/ ← Framework detection, stack scanner
|
|
389
218
|
├── interop/ ← YAML I/O, CLAUDE.md, AGENTS.md, GEMINI.md
|
|
390
219
|
├── ui/ ← Colors (#00D4D4), display
|
|
@@ -400,12 +229,12 @@ src/
|
|
|
400
229
|
> **Robust. Reliable. Next-level WJTTC tested.** — The Foundation Edition.
|
|
401
230
|
|
|
402
231
|
```bash
|
|
403
|
-
bun test #
|
|
232
|
+
bun test # extensive WJTTC + e2e suite
|
|
404
233
|
```
|
|
405
234
|
|
|
406
|
-
- **WJTTC Build Resilience**
|
|
407
|
-
- **WJTTC Kernel Stress**
|
|
408
|
-
- **e2e lifecycle** —
|
|
235
|
+
- **WJTTC Build Resilience** — regression classes locked.
|
|
236
|
+
- **WJTTC Kernel Stress** — WASM kernel boundary tests.
|
|
237
|
+
- **e2e lifecycle** — commands in sequence.
|
|
409
238
|
|
|
410
239
|
Test reports in `reports/`.
|
|
411
240
|
|
|
@@ -416,13 +245,10 @@ Test reports in `reports/`.
|
|
|
416
245
|
- **[GitHub Discussions](https://github.com/Wolfe-Jam/faf-cli/discussions)** — Questions, ideas, community
|
|
417
246
|
- **Email:** team@faf.one
|
|
418
247
|
|
|
419
|
-
---
|
|
420
|
-
|
|
421
248
|
If `faf-cli` has been useful, consider starring the repo — it helps others find it.
|
|
422
249
|
|
|
423
250
|
---
|
|
424
251
|
|
|
425
|
-
|
|
426
252
|
## Citation
|
|
427
253
|
|
|
428
254
|
If you use `faf-cli` or the `.faf` / `.fafm` formats in research or production, please cite the format papers:
|
|
@@ -461,7 +287,7 @@ MIT — Free and open source
|
|
|
461
287
|
|
|
462
288
|
**IANA-registered:** [`application/vnd.faf+yaml`](https://www.iana.org/assignments/media-types/application/vnd.faf+yaml) (Context Layer) · [`application/vnd.fafm+yaml`](https://www.iana.org/assignments/media-types/application/vnd.fafm+yaml) (Memory Layer)
|
|
463
289
|
|
|
464
|
-
*format | driven 🏎️⚡️ [wolfejam.dev](https://wolfejam.dev)*
|
|
290
|
+
*format | driven 🏎️⚡️ [wolfejam.dev](https://wolfejam.dev) · [faf.one/cli](https://faf.one/cli)*
|
|
465
291
|
|
|
466
292
|
<div align="center">
|
|
467
293
|
|