{"_id":"@anatomytool/cli","_rev":"3-ab993168b109a44a680172cfb6c7da67","name":"@anatomytool/cli","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@anatomytool/cli","version":"1.0.0","license":"MIT","_id":"@anatomytool/cli@1.0.0","maintainers":[{"name":"0xhayd3n","email":"haydenseymour02@gmail.com"}],"bin":{"anatomy":"dist/bin.js","anatomy-cli":"dist/bin.js"},"dist":{"shasum":"65ea7c5cab3c3108724206c97d1f75b19ff0c2b2","tarball":"https://registry.npmjs.org/@anatomytool/cli/-/cli-1.0.0.tgz","fileCount":571,"integrity":"sha512-0ImPvsq01fbjb9fOBLHWZg2XZxvPjHLPm4FvSwGtEM/RQejHBe5fdGXHAT4qkC2Xai9uv1siHjOuApNXPV7PoQ==","signatures":[{"sig":"MEUCIH45oevY01smG2S630ZB7Qhg+j97b7JHqcmQkGquuTWjAiEAy2CvzHvWmKfURKMqrThEgqyWyqNSnnWE8UzdDPlqAN8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1245927},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d7704efab8bec9a3bbbba5d26b7aa01bd41ec56e","scripts":{"test":"vitest run","build":"tsc","prebuild":"node scripts/prebuild.mjs","test:watch":"vitest"},"_npmUser":{"name":"0xhayd3n","email":"haydenseymour02@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for the Anatomy standard — validate, generate (Pass 1 deterministic + optional Pass 2 AI fill), show (--prose), migrate (v0.1 → v1.0), rehash (in-place fingerprint), explain. Manage paired .anatomy-memory entries (add, list, grep, show, stats, depreca","directories":{},"_nodeVersion":"22.17.0","dependencies":{"smol-toml":"^1.3.0","linguist-js":"^2.9.2","@anatomytool/validate":"^1.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","fast-check":"^4.7.0","typescript":"^5.5.0","@types/node":"^22.19.19"},"optionalDependencies":{"@ast-grep/napi":"^0.42.0","@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.0.0_1779025631332_0.02328830553800243","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@anatomytool/cli","version":"1.0.1","license":"MIT","_id":"@anatomytool/cli@1.0.1","maintainers":[{"name":"0xhayd3n","email":"haydenseymour02@gmail.com"}],"bin":{"anatomy":"dist/bin.js","anatomy-cli":"dist/bin.js"},"dist":{"shasum":"41a834aaf559c865dbb5f43c160e2e670d18b4ba","tarball":"https://registry.npmjs.org/@anatomytool/cli/-/cli-1.0.1.tgz","fileCount":575,"integrity":"sha512-1fxdMenlLX3wSGrFQrb65UT9SfdNXCNopOPlh8QS38jhwiM2cHvmyoeI7ucY2BeXdcuCe7LovfQJ3R29mogGPA==","signatures":[{"sig":"MEUCIHPrhD/hSzoQ3rQAkyV+M4/PqPlrxH9U5ihOVBAT6ty3AiEAmnqFua70a/gw1kGhl41edeSd2bzmtK9dLXC5mBs2dMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1252206},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a6d3db198d053ca1cbf477df7fc6f62516b63063","scripts":{"test":"vitest run","build":"tsc","prebuild":"node scripts/prebuild.mjs","test:watch":"vitest"},"_npmUser":{"name":"0xhayd3n","email":"haydenseymour02@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for the Anatomy standard — validate, generate (Pass 1 deterministic + optional Pass 2 AI fill), show (--prose), migrate (v0.1 → v1.0), rehash (in-place fingerprint), explain. Manage paired .anatomy-memory entries (add, list, grep, show, stats, depreca","directories":{},"_nodeVersion":"22.17.0","dependencies":{"smol-toml":"^1.3.0","linguist-js":"^2.9.2","@anatomytool/validate":"^1.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","fast-check":"^4.7.0","typescript":"^5.5.0","@types/node":"^22.19.19"},"optionalDependencies":{"@ast-grep/napi":"^0.42.0","@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_1.0.1_1779472853831_0.26066541337899607","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@anatomytool/cli","version":"1.1.0","description":"CLI for the Anatomy standard — validate, generate (Pass 1 deterministic + optional Pass 2 AI fill), show (--prose), migrate (v0.1 → v1.0), rehash (in-place fingerprint), explain. Manage paired .anatomy-memory entries (add, list, grep, show, stats, depreca","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"anatomy":"dist/bin.js","anatomy-cli":"dist/bin.js"},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"engines":{"node":">=22"},"license":"MIT","publishConfig":{"access":"public"},"scripts":{"prebuild":"node scripts/prebuild.mjs","build":"tsc","test":"vitest run","test:watch":"vitest"},"dependencies":{"@anatomytool/validate":"^1.0.0","@modelcontextprotocol/sdk":"^1.29.0","linguist-js":"^2.9.2","smol-toml":"^1.3.0"},"optionalDependencies":{"@ast-grep/napi":"^0.42.0","@xenova/transformers":"^2.17.0"},"devDependencies":{"@types/node":"^22.19.19","fast-check":"^4.7.0","typescript":"^5.5.0","vitest":"^2.0.0"},"gitHead":"e499471bbf7afac5572c3a49e2de9f845bd03201","_id":"@anatomytool/cli@1.1.0","_nodeVersion":"22.17.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-rTM4B05vY2kQubnSR5c20Vba2m9CpKlmAejSRLSxE9G0qkVPDp5HAjGqihdnMqsDWNMDMV89PkbokUc00zc8Yw==","shasum":"7d183150097a9938b835de134e312b8b7aab86f0","tarball":"https://registry.npmjs.org/@anatomytool/cli/-/cli-1.1.0.tgz","fileCount":579,"unpackedSize":1279471,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC+zaQD7iheuUBINDUijxocvuCaKrOrLBWO6DPZkUGw5gIhAImI7gn2umMV1yoWWwPg8TopJUG31aaMmNVergDD7Eb3"}]},"_npmUser":{"name":"0xhayd3n","email":"haydenseymour02@gmail.com"},"directories":{},"maintainers":[{"name":"0xhayd3n","email":"haydenseymour02@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_1.1.0_1781522909515_0.013074684649823975"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T13:47:11.219Z","modified":"2026-06-15T11:28:29.839Z","1.0.0":"2026-05-17T13:47:11.492Z","1.0.1":"2026-05-22T18:00:54.024Z","1.1.0":"2026-06-15T11:28:29.691Z"},"license":"MIT","description":"CLI for the Anatomy standard — validate, generate (Pass 1 deterministic + optional Pass 2 AI fill), show (--prose), migrate (v0.1 → v1.0), rehash (in-place fingerprint), explain. Manage paired .anatomy-memory entries (add, list, grep, show, stats, depreca","maintainers":[{"name":"0xhayd3n","email":"haydenseymour02@gmail.com"}],"readme":"# @anatomytool/cli\n\n`anatomy` — the command-line tool for the [Anatomy standard](https://anatomy.dev).\nGenerate, validate, and maintain **`.anatomy`** files: a small,\nmachine-readable corpus of per-repo context that AI coding agents can\n**cite reliably** and that **detects its own staleness** against git. Manage\nthe paired **`.anatomy-memory`** lived-experience log, and serve both to AI\ntooling as a Claude Code SessionStart hook or an MCP server.\n\nIt targets a recurring failure mode: agents re-derive the same project facts\nevery session, miss system-level rules that don't grep cleanly, and trust\nstale docs. `.anatomy` captures the *uncapturable* (rules, flows, decisions,\ncoined vocabulary, cross-file invariants, anti-patterns, prerequisites) plus a\nfour-pillar identity, pins every read to a commit, and renders the same\nsurface into formats other tools already read (`AGENTS.md`, Cursor, Aider,\nCline, Roo, Continue, Windsurf).\n\n> Honest scope: the measured win is *citation reliability* and\n> *self-detected staleness*, not faster lookups. See the\n> [project README](../README.md) for the cross-repo eval numbers.\n\n## Install\n\n```bash\nnpm install -g @anatomytool/cli      # provides `anatomy` (and `anatomy-cli`)\n# or, without installing:\nnpx @anatomytool/cli --help\n```\n\nRequires **Node.js ≥ 22**.\n\n## Quick start\n\n```bash\nanatomy generate          # Pass 1: starter .anatomy from manifest + README + dirs; also writes AGENTS.md\nanatomy generate --force --ai   # Pass 2: enrich the TODO/human-knowledge fields via an AI provider\nanatomy validate          # validate .anatomy (and a sibling .anatomy-memory if present)\nanatomy render            # cheap re-render of derived files after hand-edits (no Pass 1/2)\nanatomy mcp               # expose it to agents over MCP  (or: anatomy hook)\n```\n\nA generated `.anatomy` is TOML you are expected to **hand-edit** — Pass 1\nfills what it can deterministically and leaves `# TODO` markers for the\nhuman-knowledge fields.\n\n## Concepts\n\n- **`.anatomy`** — TOML at the repo root. Required: `[identity]` (four\n  pillars — Stack, Form, Domain, Function — plus a derived `fingerprint`) and\n  `[generated]` (provenance, including the git commit it was generated at).\n  Optional high-value sections: `[[rules]]`, `[[flows]]`, `[[decisions]]`,\n  and (v0.15+/v1.0) `[[vocabulary]]`, `[[invariants]]`, `[[anti_patterns]]`,\n  `[[prerequisites]]`.\n- **`.anatomy-memory`** — append-only log of lived experience (gotchas,\n  decisions, conventions, attempts, milestones), paired to the `.anatomy` by\n  `repo_fingerprint`.\n- **Staleness** — every consumer read compares `[generated].commit` to git\n  `HEAD`; drift is surfaced, not silently trusted.\n- **Rule verification** — a `[[rules]]` entry may carry an optional `verify`\n  clause so the documented rule is machine-checked against source; per-rule\n  drift is reported on MCP reads.\n- **Format version** — declared by `anatomy_version`. Latest is **v1.0**\n  (the stabilization of v0.15 — structurally identical; the 0→1 bump is a\n  stability commitment, not a breaking change). v0.1–v0.15 remain valid and\n  routable. Normative index: [`spec/CURRENT.md`](../spec/CURRENT.md).\n\n## Commands\n\n`anatomy --help` is the authoritative, always-current reference. Global\noptions: `-h, --help` · `--version` · `-v, --verbose`.\n\n### Generation & authoring\n\n- **`anatomy generate [--repo <path>] [--force] [--stdout] [--ai] [--rich] [--provider <name>] [--print-prompt] [--providers] [--no-agents-md]`**\n  Deterministic Pass 1 from manifest + README + directory listing. `--ai`\n  runs Pass 2 to fill `domain`/`function`, structure purposes, and\n  `[[rules]]`/`[[flows]]`/`[[decisions]]`. `--rich` additionally pulls\n  README-derivable facts (author, license, docs URL, install/dev commands,\n  key dependencies with versions, full description) and emits the latest\n  format version (implies `--ai`). Also writes `AGENTS.md` unless\n  `--no-agents-md`.\n- **`anatomy ingest [<path>] [--repo <dir>] [--force] [--no-pass1] [--stdout]`**\n  Seed a `.anatomy` from an existing `CLAUDE.md` / `AGENTS.md` /\n  `.cursorrules` / `.windsurfrules`. Auto-scans the repo root when no path is\n  given; uses Pass 1 for identity/structure and a heading allowlist (Rules /\n  Conventions / Guidelines / Code style / …) for rule extraction. Refuses on\n  an existing `.anatomy` unless `--force`. Deterministic, no AI dependency.\n- **`anatomy render [--repo <path>] [--check] [--budget <tokens>] [--memory-count <n>] [--no-agents-md] [--yes]`**\n  Re-emit the derived files from an existing `.anatomy` — no Pass 1/2. Cheap\n  regen after hand-edits to `.anatomy` or `.anatomy-memory`. `--check` exits\n  non-zero with a unified diff if disk is out of date (CI drift gate). Hand-\n  written `AGENTS.md` is backed up to `AGENTS.md.bak` on first regeneration.\n\nPer-tool emitters can be individually suppressed on `generate`/`render`:\n`--no-cursor-mdc`, `--no-cursor-rules`, `--no-aider`, `--no-cline`,\n`--no-roo`, `--no-continue`, `--no-windsurf`.\n\n### Validation & maintenance\n\n- **`anatomy validate [<path>] [--require] [--require-fresh] [--no-strict] [--json] [--quiet]`**\n  Validate a `.anatomy` (and a sibling `.anatomy-memory` if present).\n  **Strict by default**: source-cross-check warnings\n  (`unused-dependency-claim`, `literal-not-in-source`,\n  `source-cross-check-truncated`) are treated as errors — this catches Pass 2\n  fiction (e.g. listing deps no source imports). `--no-strict` keeps them as\n  warnings. `--require` fails if no file is found; `--require-fresh` fails if\n  `generated.commit` ≠ git HEAD; `--json` emits structured output.\n- **`anatomy explain <code>`** — print the documentation for any error or\n  warning code emitted by the validator.\n- **`anatomy migrate --to <version> [<path>] [--stdout]`** — migrate a\n  `.anatomy` to a newer format version; intermediate steps are chained\n  automatically (any version up to **v1.0**). Identity-preserving steps keep\n  a paired `.anatomy-memory` valid; lossy steps warn.\n- **`anatomy rehash [<path>] [--update-memory]`** — recompute the pillar\n  fingerprint from the identity IDs (byte-preserving otherwise).\n  `--update-memory` propagates the new fingerprint to a paired\n  `.anatomy-memory` header.\n- **`anatomy verify suggest [--repo <path>] [--refresh-registry]`** —\n  interactively propose `verify` clauses for `[[rules]]` lacking one\n  (test-mining → semgrep-rules registry → LLM fallback, each dry-run gated;\n  per-rule accept / edit / reject / skip). Requires a TTY.\n\n`verify` clause kinds: `glob_exists`, `glob_only`, `ast_pattern` (optional\n`@ast-grep/napi`), and (v0.13+) `semgrep` for pattern combinators / taint\nmode / non-JS-family languages (optional `semgrep` CLI on PATH).\n\n### Lived-experience memory\n\n- **`anatomy add <kind> <topic> [content] [--refs a,b] [--tags a,b] [--supersedes <id>]`**\n  Append a memory entry. Kinds: `gotcha | decision | convention | attempt |\n  milestone`. Content from arg, `-` (stdin), or `$EDITOR` if omitted.\n- **`anatomy memory list [--kind <k>] [--topic <s>] [--ref <s>] [--tag <t>] [--include-superseded] [--only-fresh]`**\n  Tabular list (superseded/deprecated hidden by default). Includes a `decay`\n  column: `fresh` (verified ≤30d), `aging` (30–180d), `stale` (>180d),\n  `untouched` (never verified).\n- **`anatomy memory grep \"<query>\"`** — substring match over topic + content.\n- **`anatomy memory search \"<query>\" [--kind <k>] [--tag <t>] [--ref <s>] [--limit <n>] [--include-superseded]`**\n  BM25F relevance ranking (topic ×3, tags ×2, content ×1) × decay. Default\n  limit 10.\n- **`anatomy memory show <id>`** — full detail + supersession chain.\n- **`anatomy memory stats`** — per-kind active/superseded/deprecated counts,\n  with v0.2 decay-bucket sub-counts.\n- **`anatomy memory deprecate <id> --reason <text>`** — mark obsolete with no\n  replacement.\n- **`anatomy memory verify <id>`** — confirm an entry is still relevant\n  (memory v0.2): records `last_verified_at` + `verified_by`; bumps a v0.1\n  file to `anatomy_memory_version = \"0.2\"` on first verify.\n- **`anatomy memory thanks <id>`** / **`anatomy memory credits`** — record\n  that an entry helped (idempotent per identity); show a contributor table.\n\n### Agent integration\n\n- **`anatomy hook [--root] [--max-tokens <n>] [--json]`** — emit markdown for\n  a [Claude Code](https://docs.claude.com/en/docs/claude-code) SessionStart\n  injection (default 1,200-token budget; prepends a staleness banner when out\n  of sync with HEAD). Wire it via your client's hook config — see\n  [`anatomy-consumer.plugin/`](../anatomy-consumer.plugin/).\n- **`anatomy show [<path>] [--prose] [--no-memory | --memory-only] [--memory-limit-<kind>=N]`**\n  Print a parsed `.anatomy`; `--prose` renders natural language (the hook\n  format) and appends the memory log if present. Default prose caps: 10\n  gotcha/decision, 5 attempt/milestone, uncapped conventions.\n- **`anatomy mcp`** — start an MCP stdio JSON-RPC server. Every response uses\n  a uniform staleness-aware envelope:\n  `{ anatomy_path, staleness, repo_fingerprint, data }`.\n\n  | Group | Tools |\n  |---|---|\n  | Section | `anatomy_brief` (primary — rules + memory + flows for a query), `anatomy_overview` (identity + tagline), `anatomy_structure`, `anatomy_environment`, `anatomy_tree` |\n  | Memory | `anatomy_memory_search`, `anatomy_memory_show`, `anatomy_memory_stats`, `anatomy_memory_reverify` |\n\n  (`anatomy_interface`, `anatomy_substance`, `anatomy_domain_model`, and\n  `anatomy_code_profile` were removed alongside their schema slots in\n  v0.8–v0.9.)\n\n  **Per-rule staleness.** When the envelope reports non-cosmetic staleness,\n  each `[[rules]]` entry's `verify` clause is re-run against the working tree\n  and the outcome attached as `staleness.rules`: `passing`, `failing` (with\n  file:line hits where the verifier supports it), `unverified` (no clause\n  authored), or `error` (verifier dependency missing or timed out). Pair with\n  `anatomy verify suggest` to author the clauses interactively, then surface\n  per-rule drift on every MCP read.\n\n- **`anatomy mcp --with-fff`** — opt-in flag that additionally spawns\n  [`fff-mcp`](https://github.com/dmtrKovalenko/fff) as a child MCP subprocess\n  and exposes every tool it advertises (as of fff 0.9.x: `find_files`,\n  `grep`, `multi_grep`) inside anatomy's MCP namespace. Anatomy is both an\n  MCP server to the agent and an MCP client to `fff` in the same process,\n  so the agent gets curated repo knowledge AND fast file search from one\n  endpoint. The bridge is name-agnostic — whatever the installed `fff-mcp`\n  binary advertises is what the agent sees.\n\n  - **Hard fail on missing binary.** If `fff` is not on `PATH` (or\n    `ANATOMY_FFF_BIN` points at a missing file), `anatomy mcp --with-fff`\n    exits 1 with an actionable error.\n  - **One-shot restart, then degrade.** A first child crash triggers a\n    transparent respawn. A second crash marks `fff` tools unavailable for\n    the rest of the session; anatomy's own tools keep serving.\n  - **Per-call timeout.** A forwarded call that doesn't return within\n    `ANATOMY_FFF_TIMEOUT_MS` (default 5000) returns `fff_timeout`.\n\n  | Env | Purpose | Default |\n  |---|---|---|\n  | `ANATOMY_FFF_BIN` | Override the path to the `fff-mcp` binary. | (resolve via `PATH`) |\n  | `ANATOMY_FFF_ARGS` | Space-split argv passed to the binary at spawn. fff ships as a dedicated `fff-mcp` server that takes no subcommand. | (none) |\n  | `ANATOMY_FFF_TIMEOUT_MS` | Per-`tools/call` timeout in milliseconds. | `5000` |\n\n  Without `--with-fff`, the behaviour of `anatomy mcp` is byte-identical to\n  earlier versions — no new dependencies are loaded, no discovery runs.\n\n### Telemetry\n\n- **`anatomy telemetry stats`** / **`anatomy telemetry clear`** — summarize\n  or wipe the local log.\n\n## AI generation (Pass 2 providers)\n\nPass 2 dispatches through a `Pass2Provider` interface. Three providers ship:\n\n| Provider | Auth | Use when |\n|---|---|---|\n| `claude-cli` | none (uses a local `claude` CLI / Claude Code session) | Default; you have Claude Code installed |\n| `anthropic-http` | `ANTHROPIC_API_KEY` | Anthropic API key, no Claude Code |\n| `openai-http` | `OPENAI_API_KEY` (+ optional `OPENAI_BASE_URL`) | OpenAI / vLLM / llama.cpp / OpenRouter / any OpenAI-compatible endpoint |\n\nAuto-detect order: `claude-cli` → `anthropic-http` → `openai-http`.\n`--provider <name>` overrides; `ANATOMY_PASS2_PROVIDER` sets a default.\n`ANATOMY_PASS2_API_KEY` is a generic fallback for both HTTP providers;\n`ANATOMY_PASS2_MODEL` overrides the per-provider default model.\n`--print-prompt` dumps the exact system + user prompt and exits without\ncalling a provider; `--providers` lists registered providers. The prompt\ncontract is published at\n[`spec/1.0/pass2-prompt-contract.md`](../spec/1.0/pass2-prompt-contract.md).\n\n**Third-party providers.** A `.anatomy-cli.toml` at the repo root can register\nadditional providers from npm:\n\n```toml\n[pass2]\nproviders = [\"anatomy-pass2-gemini\", \"@org/my-provider\"]\ndefault   = \"anatomy-pass2-gemini\"   # optional; overrides auto-detect\n```\n\nOr via `ANATOMY_PASS2_PROVIDERS=anatomy-pass2-gemini,@org/my-provider` (env\nwins over the file). Each entry is a package whose default export is a\n`Pass2Provider`-shaped object (see the contract §5). Naming convention:\n`anatomy-pass2-<vendor>`. Selection precedence: `--provider` >\n`ANATOMY_PASS2_PROVIDER` > `[pass2].default` > auto-detect.\n\n## Output renderers\n\n`generate` and `render` always emit **`AGENTS.md`** (token-budgeted; read by\n[AGENTS.md-aware](https://agents.md/) tools — Codex, Copilot, Cursor). Per-tool\nrule files are **opt-in** via the `[generate]` table in `.anatomy`:\n\n```toml\n[generate]\ncursor_mdc        = true   # .cursor/rules/anatomy.mdc\ncursor_rules      = true   # .cursorrules\naider_conventions = true   # CONVENTIONS.md\ncline_rules       = true   # .clinerules\nroo_rules         = true   # .roorules\ncontinue_rules    = true   # .continuerules\nwindsurf_rules    = true   # .windsurfrules\n\nrender_budget       = 1500 # token cap for renderers (default 1500)\nrender_memory_count = 10   # max memory entries surfaced (default 10)\n```\n\nAll renderers share one markdown body; only the path (and Cursor MDC's YAML\nfrontmatter) differs. Banner detection + `.bak` backups apply to all. CLI\n`--no-<tool>` flags override the config for a single invocation.\n\n## Exit codes\n\n- `0` — success (or no `.anatomy` found, unless `--require`).\n- `1` — validation failed, bad usage, or `render --check` detected drift.\n- `2` — refused to overwrite an existing `.anatomy` without `--force`.\n- `3` — internal invariant violation (e.g. a migration produced an invalid\n  file); please report.\n\n`validate --require` / `--require-fresh` and `render --check` are designed for\nCI gating.\n\n## Privacy\n\nTelemetry is **local-only**: hook fires and MCP-tool calls are recorded to\n`~/.anatomy/telemetry.jsonl` and never transmitted; file *contents* are never\nlogged. Disable all writes with `ANATOMY_TELEMETRY_DISABLE=1` (`\"0\"`,\n`\"false\"`, and empty string keep it enabled).\n\nOther environment knobs: `ANATOMY_HOOK_DISABLE` (silences `anatomy hook`),\n`ANATOMY_TELEMETRY_TAG` (tags each telemetry record),\n`ANATOMY_TELEMETRY_DIR` (overrides the storage directory),\n`ANATOMY_MEMORY_DECAY_MULTIPLIERS` (tunes memory-search decay weighting).\n\n## Programmatic surface\n\nFor tools building on top of the CLI:\n\n```ts\nimport { runPass1, renderToml } from \"@anatomytool/cli\";\nimport type { Pass1Result } from \"@anatomytool/cli\";\n```\n\n`runPass1` is the deterministic generator (manifest + README + walker →\n`Pass1Result`); `renderToml` emits a canonical TOML serialization with\nnormative section ordering preserved.\n\n## Related\n\n- The standard, schema, and conformance fixtures: [project README](../README.md)\n  and the normative [`spec/CURRENT.md`](../spec/CURRENT.md).\n- Validator library: [`@anatomytool/validate`](https://www.npmjs.com/package/@anatomytool/validate).\n- Design + implementation docs: [`docs/superpowers/`](../docs/superpowers/).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}