{
  "markdown": "# Boffin\n\n**Boffin (npm: `boffinit`) is a staff-engineer control layer for AI coding\nagents: it feeds the agent the architectural constraints for the exact file it\nis editing and makes it verify the result -- [DuckDB case study](examples/before-after-cpp.md):\na guided refactor landed at `+17 / -17` lines with 2,104 assertions passing.**\n\nYou ask for a 15-line fix; the agent comes back with a 500-line renovation.\nBoffin gives the agent the architectural constraints that apply to the file it\nis about to touch, then makes it verify the result.\n\nIt is not another `AGENTS.md` and not a prompt pack. Those formats usually ship\none static instructions block for the whole repository; Boffin routes only the\nconstraints relevant to the current edit. Powered by **ParselFire Core**.\n\n```sh\nnpx boffinit cursor\n```\n\n<p align=\"center\">\n  <img src=\"assets/boffin-hero.png\" alt=\"Boffin, a staff-engineer control layer for AI coding agents, reviewing an AI-generated diff before a load-bearing wall is removed\" width=\"800\">\n</p>\n\n## What Boffin is not\n\n- Not a static repo-wide rules file (`AGENTS.md`-style one block for everything)\n- Not a prompt pack or system-prompt trick\n- Not a linter or CI gate -- it acts before and after the edit\n- Not a speed tool -- the frame is review-safety\n\n## What Boffin does\n\n- Selects the constraints relevant to the edit in front of the agent\n- Requires verification proportional to the change\n- Ships for Cursor, Claude Code, Codex, and OpenCode from one npm package\n- Delivers signed portable packs powered by ParselFire Core\n\n## How it differs (honest comparison)\n\n| | Static rules file (`AGENTS.md`) | Boffin |\n|---|---|---|\n| Delivery | Usually one static block for the whole repo | Constraints routed to the current edit |\n| Verification | None required by the format | Required, proportional to the change |\n| Evidence | Usually none | Recorded case studies with numbers |\n\n## Proof, not promises\n\nThe public case studies record these guided refactors on real open-source code:\n\n- **[DuckDB](examples/before-after-cpp.md):** `+17 / -17`; 2,104 assertions\n  across 8 test files passed; distinct continuation and recovery paths were\n  preserved.\n- **[FastAPI](examples/before-after-python.md):** `+16 / -33`; 49 tests passed;\n  no public API change.\n- **[LangChain](examples/before-after-python.md):** the sync/async boundary was\n  preserved; 4 tests passed.\n\nThese are reproducible case studies, not a controlled A/B benchmark.\n\n## Install\n\nBoffin requires Node.js 18 or newer.\n\n### Cursor\n\nRun from your project:\n\n```sh\nnpx boffinit cursor\n```\n\n### Claude Code\n\nRun these inside Claude Code:\n\n```text\n/plugin marketplace add MicSm/boffin\n/plugin install boffin@boffin\n```\n\n### Codex\n\nRun these from a terminal:\n\n```sh\ncodex plugin marketplace add MicSm/boffin\ncodex plugin add boffin@boffin\n```\n\nCodex does not trust plugin hooks automatically. Run `/hooks` once inside Codex\nto review and trust Boffin's hooks; until then the plugin's skills work but the\nautomatic per-session activation stays off.\n\n### OpenCode\n\nRun from your project:\n\n```sh\nnpx boffinit opencode\n```\n\nThen open the project in OpenCode. Always-on guidance lands via\n`opencode.json` -> `.boffin/AGENTS.md`. On demand: `/boffin`,\n`/boffin-review`, or the `boffin` / `boffin-review` skills.\n\nInstall details, commands, and troubleshooting:\n**[OpenCode delivery](docs/opencode.md)**.\n\nWant the machinery? Read **[how ParselFire Core works](docs/engine.md)**.\n\n## What Boffin is fussy about\n\nSimilar code is not always the same code. Boffin gives the agent a reason to\nstop before it merges a real special case, blurs a sync/async boundary, moves\nstate away from its owner, or turns a focused task into a tour of the codebase.\n\n- For a focused change, it keeps the requested scope small and asks for the\n  narrowest check that proves the edit.\n- For an open-ended refactor or review, it requires a read-only audit first,\n  followed by one verified finding at a time.\n- When cleanup conflicts with an earlier correctness rule, correctness wins.\n\nThe point is not to make the agent timid. It is to make the expensive details\nexplicit before they become an interesting afternoon.\n\n## FAQ\n\n### How is Boffin different from AGENTS.md?\n\n`AGENTS.md` is usually one static instructions file for the whole repository.\nBoffin routes only the architectural constraints relevant to the file the agent\nis about to edit, then requires a check proportional to the change.\n\n### Where do the constraints come from?\n\nEvery rule ships in this repository as readable, versioned markdown under\n[`packs/`](packs/), and the packs are GPG-signed. Nothing is hidden at install\ntime: open any pack and read every rule before trusting it. At edit time Boffin\nselects which of those rules apply to the file being touched. See\n**[how ParselFire Core works](docs/engine.md)** for the routing map.\n\n### Why does my coding agent turn small fixes into huge rewrites?\n\nYou ask for a small fix; the agent comes back with a renovation. Boffin\ninjects the load-bearing constraints for the current file before the edit and\nforces verification afterward.\n\n### What do `lite`, `full`, and `max` change?\n\nThey tune cleanup ambition, not correctness:\n\n- `lite` keeps cleanup pressure low and favors the smallest useful change.\n- `full` is the balanced default.\n- `max` applies the strongest cleanup pressure when the task justifies it.\n\nOn plugin hosts, select a profile with `/boffin lite`, `/boffin full`, or\n`/boffin max`. There is no `off` profile.\n\n### Do profiles change the safety floor?\n\nNo. Every profile keeps the same early correctness stages and rejection rules,\nincluding trust-boundary validation, data-loss prevention, security, and\naccessibility requirements.\n\n### What are `boffin:` comments in generated code?\n\n`boffin:` marks are machine-readable audit tokens: they let you grep/harvest\nwhich invariants held and which were refused across a codebase. Nothing is\nsent anywhere; the payload is the invariant itself. Disable with one line:\ncreate an empty `.boffin-trace-off` file at the repository root.\n\n### Is Boffin a command sandbox or security tool?\n\nNo. Boffin does not isolate processes, filter shell commands, or restrict\nfilesystem or network access. It guides architectural decisions in generated\ncode. Use command sandboxes and security controls for their own job; Boffin has\na different job.\n\n### How do I uninstall the Cursor or OpenCode integration?\n\n```sh\nnpx boffinit cursor uninstall\nnpx boffinit opencode uninstall\n```\n\nEach uninstaller removes that host's managed files only. Shared\n`.boffin/packs` and `.boffin/VERSION` stay if the other host is still\ninstalled. Unrelated project files are left alone.\n\n### Does Boffin replace tests or code review?\n\nNo. It tells the agent which contracts deserve attention and requires external\nchecks, but your repository's tests and review process remain authoritative.\n\n## Other hosts\n\nPortable adapters cover hosts that read `AGENTS.md`, `CLAUDE.md`, workspace\nrules, or repository instructions. See\n**[host delivery and adapters](docs/engine.md#host-delivery-and-adapters)** for\nthe technical map.\n\n## Project\n\n- Repository: <https://github.com/MicSm/boffin>\n- Engine documentation: [ParselFire Core](docs/engine.md)\n- Evidence: [Python](examples/before-after-python.md) and\n  [C++](examples/before-after-cpp.md)\n- Contributions: [CONTRIBUTING.md](CONTRIBUTING.md)\n\nBoffin is available under the [MIT License](LICENSE). See [credits](CREDITS).\n\n```sh\nnpx boffinit cursor\n```\n",
  "bytes": 7512,
  "sha": "3908dc2c0456c565fada26efd523c7a48622f61d928a0b5a7b483bb36b7f383b",
  "repo_slug": "micsm/boffin",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_micsm_boffin_5e6731f0/readme"
}