[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"readme:abide":3},"\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fcoldteadotai\u002Fabide\u002FHEAD\u002Fdocs\u002Fimages\u002Fabide.png\" width=\"220\" alt=\"Abide, the officer who reads every edit\" \u002F>\n\u003C\u002Fp>\u003Ch1>Abide\u003C\u002Fh1>\u003Cp align=\"center\">\n  \u003Cem>Coding agents break your rules from the very first edit. Abide catches every one and makes your agent fix it\u003C\u002Fem>\n\u003C\u002Fp>\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fworks%20with-Claude%20Code%20%C2%B7%20Codex%20%C2%B7%20OpenCode%20%C2%B7%20Pi-111111?style=flat-square\" alt=\"Works with Claude Code, Codex, OpenCode and Pi\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-111111?style=flat-square\" alt=\"MIT license\" \u002F>\n\u003C\u002Fp>\u003Cp align=\"center\">\n  \u003Cstrong>1 in 13 turns break a rule no linter can catch · abide does  · 300 ms per check · a tenth of a cent per turn\u003C\u002Fstrong>\u003Cbr \u002F>\n  \u003Csub>Measured by replaying 93 real Claude Code sessions (1,256 edits, 147 turns) in two repos against their own AGENTS.md, for 22 cents. Jev flagged 39 edits and 15 turns; an independent reviewer confirmed 10 and 11. The turn-level catches (single-use abstractions, oversized files, duplicated logic) held up 11 times in 15. Method, per-rule table and what was wrong: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcoldteadotai\u002Fabide\u002Fblob\u002FHEAD\u002Fbenchmarks\u002Freplay\u002FREADME.md\" rel=\"nofollow ugc noopener\">benchmarks\u002Freplay\u003C\u002Fa>.\u003C\u002Fsub>\n\u003C\u002Fp>\u003Chr \u002F>\n\u003Cpre>\u003Ccode>npx @coldtea\u002Fabide login    # pick a key type, paste it once\nnpx @coldtea\u002Fabide init     # hooks into every agent on this machine\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then start \u003Ccode>claude\u003C\u002Fcode>, \u003Ccode>codex\u003C\u002Fcode>, \u003Ccode>opencode\u003C\u002Fcode> or \u003Ccode>pi\u003C\u002Fcode> as usual. That is the whole setup.\u003C\u002Fp>\n\u003Ch2>What it does\u003C\u002Fh2>\n\u003Cp>Your AGENTS.md, CLAUDE.md and the rest of your project instructions are full of rules no linter can check. \"Never let a raw error reach a user.\" \"Don't create premature abstractions.\" Nothing can script those, so nothing enforces them. In 93 real sessions, the agent broke one on 1 turn in 13, from the first edit on.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F2d45f6b0-c889-474c-ab4a-8d019fdc7140\" rel=\"nofollow ugc noopener\">https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F2d45f6b0-c889-474c-ab4a-8d019fdc7140\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Abide enforces exactly those rules. On every edit (or turn) it asks \u003Ca href=\"https:\u002F\u002Ftypesafe.ai\" rel=\"nofollow ugc noopener\">Jev\u003C\u002Fa>, TypeSafe's decision model, one question per rule and gets a probability back. Jev sees the rule and the diff, never the conversation, so edit 200 is checked like edit 1. Break a rule and the agent is told which one and fixes it in the same turn.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fcoldteadotai\u002Fabide\u002FHEAD\u002Fdocs\u002Fimages\u002Fblock.svg\" alt=\"A rule caught and repaired inside a coding session\" \u002F>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>One call per edit, about 300 ms, a few thousandths of a cent.\u003C\u002Fli>\n\u003Cli>Rules a linter could check are handed to your linter instead.\u003C\u002Fli>\n\u003Cli>No built-in rules. No instruction files, nothing to enforce.\u003C\u002Fli>\n\u003Cli>Your key, your data. Nothing here talks to a server of ours.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Not previously possible\u003C\u002Fh2>\n\u003Cp>Checking every edit or turn against every rule was never worth doing (economically and latency-wise) with an ordinary LLM. A check is about 2,500 tokens. At typical model prices that is a cent or more, and a few seconds, per edit, and the answer comes back as prose you then have to parse and cannot fully trust. Two hundred edits a day made it a non-starter.\u003C\u002Fp>\n\u003Cp>Jev changes the arithmetic. It is a decision model, so it answers a typed question with a calibrated probability and nothing else. There is no free text, so there is nothing to make up. It is up to 100x cheaper than a typical LLM and answers in about 300 ms. That is what makes it reasonable to check every edit, every time.\u003C\u002Fp>\n\u003Ch2>Three minutes to the first catch\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Get a TypeSafe API key at \u003Ca href=\"https:\u002F\u002Ftypesafe.ai\" rel=\"nofollow ugc noopener\">typesafe.ai\u003C\u002Fa>, or use a Vercel AI Gateway key you already have.\u003C\u002Fli>\n\u003Cli>Run \u003Ccode>npx @coldtea\u002Fabide login\u003C\u002Fcode>, pick which kind of key it is and where it lives, and paste it. It goes to \u003Ccode>~\u002F.abide\u002F.env\u003C\u002Fcode> for every repo on the machine, or to \u003Ccode>.env.local\u003C\u002Fcode> in this repo, owner-only either way. A \u003Ccode>.env\u003C\u002Fcode> you already have at the repo root works too.\u003C\u002Fli>\n\u003Cli>Run \u003Ccode>npx @coldtea\u002Fabide init\u003C\u002Fcode> in your repo.\u003C\u002Fli>\n\u003Cli>Start your agent. Its first turn compiles your rules into \u003Ccode>.abide\u002Frubric.json\u003C\u002Fcode> and tells you what it found.\u003C\u002Fli>\n\u003Cli>Ask for something your rules forbid. An AGENTS.md that says \"use Yup, never validate by hand\" produces this the moment the agent writes a manual guard:\u003C\u002Fli>\n\u003C\u002Fol>\n",1791678831757]