pr-lens
Review code 100X faster. Lens draws every PR as animated architecture and data-flow walkthroughs, inside the pull request itself. Use it as a GitHub App, GitHub Action, CLI, or a Skill for your coding agent
Make your coding agent abide by all your project rules
$ npx -y skills add coldteadotai/abide --agent claude-code
Repo: coldteadotai/abide
What's inside
npx @coldtea/abide login # pick a key type, paste it once
npx @coldtea/abide init # hooks into every agent on this machine
Then start claude, codex, opencode or pi as usual. That is the whole setup.
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.
https://github.com/user-attachments/assets/2d45f6b0-c889-474c-ab4a-8d019fdc7140
Abide enforces exactly those rules. On every edit (or turn) it asks Jev, 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.
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.
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.
npx @coldtea/abide login, pick which kind of key it is and where it lives, and paste it. It goes to ~/.abide/.env for every repo on the machine, or to .env.local in this repo, owner-only either way. A .env you already have at the repo root works too.npx @coldtea/abide init in your repo..abide/rubric.json and tells you what it found.Abide: This edit appears to break a rule from this repository's instructions.
- Rule "api-validation-uses-yup" from ~/.codex/AGENTS.md line 65: "When writing API endpoints, do NOT write input validations manually. Use Yup (with clear validation messages) + early return in the API handler". Scored 0.86 in apps/web/src/pages/api/logout.ts.
Repair apps/web/src/pages/api/logout.ts now, then continue with the task.
The agent repairs it before moving on. No human in the loop.
| Agent | Install | Where it lands |
|---|---|---|
| Claude Code | npx @coldtea/abide init claude | ~/.claude/settings.json |
| Codex | npx @coldtea/abide init codex | ~/.codex/hooks.json |
| OpenCode | npx @coldtea/abide init opencode | ~/.config/opencode/plugins/abide.js |
| Pi | npx @coldtea/abide init pi | ~/.pi/agent/extensions/abide.js |
init with no name installs into every agent it finds. Add --project to install into the repo instead, so teammates get it with the checkout.
CLAUDE_CONFIG_DIR, when set, replaces ~/.claude for Claude Code's settings file, its global CLAUDE.md and abide replay claude, as it does for Claude Code itself.
Codex only: start codex, type /hooks, and accept the four abide entries. Codex asks this once for any new hook. Codex edits through apply_patch; abide reads the patch and judges every file in it.
OpenCode only: there are no hook processes, so abide runs as a plugin. Same checks, same messages: an edit that breaks a rule gets the repair request appended to its tool result, and a turn that ends with one gets a single follow-up message.
Run abide init pi and restart Pi, or use /reload in an existing session. Add --project to install into .pi/extensions/abide.js; Pi must trust the project before loading it. PI_CODING_AGENT_DIR selects a different user-level agent directory.
Tested with Pi 0.99.1. The extension uses the same checker, key lookup, and rubric as the other agents. It checks local edits and complete activity diffs, including shell changes, and can request one final repair continuation. abide replay pi checks recorded Pi edit/write tools on the active persisted branch. Installation, limitations, and live verification.
abide audit src/
Every file is judged as if it had just been written. You get a table by rule and a list by file. On 33 API routes of a real Next.js app: 12 seconds, about a cent.
| Command | What it does |
|---|---|
abide login | store your TypeSafe or Vercel AI Gateway key, for you or this repo |
abide init [agent] | install the hooks (claude, codex, opencode, pi, or every one found) |
abide audit [paths] | judge existing files, report by rule and by file |
abide check [paths] | check uncommitted changes the way the hooks would |
abide report | your rules, what fired, what never fires |
abide replay <agent> | judge this repo's past sessions in any supported agent |
abide compile | compile the rubric now instead of at the next session |
abide calibrate | score every rule against your recent git history |
abide tune | rewrite the rules that never fire |
abide bench | latency and spend, measured on your machine |
abide uninstall [agent] | remove the hooks |
report, check, audit, bench and calibrate take --json.
compile and tune use Claude Code by default, or Pi when Claude is unavailable. Choose explicitly with abide compile --agent pi or abide tune --agent pi; add --global to tune global rules. An explicitly selected agent never falls back to another. If neither is available, Abide prints the prompt for you to paste into an agent session. --print prints the prompt without starting an agent.
Pi runs with --print --no-session, using its configured model and authentication. It does not save a session or override project trust: trust the repo in Pi first if compilation needs project settings or extensions. Claude Code uses its saved login without inheriting ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN from your shell.
.abide/rubric.json is a committed, readable file. Every verdict names a rule in it, and every rule quotes the line of your instruction file it came from. A wrong verdict is a rule you can rewrite.
edit after each edit, turn once at the end against the whole diff. "Did this add more than was asked" has no answer after edit 1 of 12.scope of globs, so an API route and a stylesheet get different questions.calibrate finds those against twenty real hunks from your history and switches them off. tune has the agent rewrite them."manual": true. Session start then never reports it stale or asks the agent to recompile it, and abide compile leaves it alone. List its instruction files in sources as usual, since abide rubric validate still checks every rule against them.Put .abideignore at the repository root to skip files for every rule, even if Git tracks them:
# Generated files
**/_generated/**
**/*.generated.ts
next-env.d.ts
Each line is a repo-relative picomatch glob, including dotfiles. Blank lines and lines starting with # are skipped. This is glob syntax, not full .gitignore syntax: ! does not re-include files, and directory patterns need /** to match their contents. Abide skips invalid patterns and ignores missing, unreadable, non-regular, or larger-than-64-KiB ignore files. Secret files and .abide/ stay excluded.
zeroDataRetention: true, which asks the Vercel AI Gateway to route only to providers under a zero-retention agreement..env.local and .env at the repo root, then ~/.abide/.env. Never a flag, never logged. Set AI_GATEWAY_API_KEY instead of a TypeSafe key to go through your Vercel AI Gateway.TYPESAFE_AI_BASE_URL alongside your TypeSafe key. It is read from the same places as the key, never written or logged, and applies only to the direct call, not the gateway.Review code 100X faster. Lens draws every PR as animated architecture and data-flow walkthroughs, inside the pull request itself. Use it as a GitHub App, GitHub Action, CLI, or a Skill for your coding agent
FAQ
abide is a Claude Code plugin with 1 hand-picked skill for code review work, indexed on Flowy. Install it with the command on its page. It includes abide-compile. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it