Not an agentic reviewer
Reviewers hunt for anything that might be wrong. IntentLint enforces a finite rule set your team already chose. Agents read those rules before they write. CI checks the result after.
Rules, not another reviewer
Your codebase has important rules no ordinary linter can understand. IntentLint finds them, records them in your repository, gives them to coding agents, and quietly checks every pull request.
Free 1,000 evaluations to start.
.intentlint.ymlReviewers hunt for anything that might be wrong. IntentLint enforces a finite rule set your team already chose. Agents read those rules before they write. CI checks the result after.
Payments in integer cents. Migrations that survive a rolling deploy. The authorization boundary nobody is allowed to skip. Write the invariant once. It lives in the repository, not in a senior engineer’s head.
It costs pennies to check a pull request against your written rules. Checks usually finish in a few seconds, so engineers and coding agents get the answer while the change is still open.
Install the GitHub App. IntentLint reads the repository and proposes the rules already hiding in docs, reviews, and code. You pick a few. It opens the pull request. No blank config screen.
Ordinary linters parse syntax. They cannot tell that a new endpoint skipped your policy layer, or that a worker would charge a customer twice on retry. Prose can.
High-confidence violations land as one check. Engineers see a named rule, the evidence, and the smallest fix. Clean pull requests get silence, not a thread of suggestions.
The gap
Linters can enforce syntax. They cannot understand that a migration must survive a rolling deployment, that a payment must be safe to retry, or that a new endpoint must use your authorization boundary.
IntentLint evaluates the meaning of a change against the rules unique to your system.
Onboarding
Important engineering knowledge is scattered across documentation, review comments, architecture decisions, and senior engineers’ memories.
IntentLint examines the repository and proposes rules specific enough to enforce. Review the evidence, keep the useful ones, choose warn or fail, and let IntentLint open the configuration pull request.
.intentlint.yml pull request. Quiet enforcement starts.One rulebook
Rules live in .intentlint.yml. Coding agents read them before making changes. Developers inspect them in code review. IntentLint independently evaluates them in CI.
No separate prompt library. No reviewer-specific configuration. No knowledge trapped in one tool. The agent that writes the code is not the thing that certifies it.
version: 1
rules:
- id: jobs/retry-safe-side-effects
description: >
Background jobs that cause external
side effects must be safe to retry
without duplicating irreversible work.
action: fail
scope:
include:
- internal/jobs/**
Quiet by default
IntentLint does not summarize every pull request or fill it with suggestions. The GitHub Check is the interface. Detail shows up only when someone needs to act.
- id: jobs/idempotent-workers
description: >
Background workers that make external
side effects must be idempotent.
def perform(order_id):
order = Order.find(order_id)
payment_provider.capture(order.card)
order.update!(charged: true)
This worker charges the card before the local record is marked. A retry after a successful capture can charge the customer twice.
Record the charge first, or make the provider call idempotent, so a retry does not duplicate the payment.
Category
AI reviewers search broadly for potential problems. IntentLint checks the specific invariants your team has chosen. Use a reviewer for suggestions. Use IntentLint for rules that must be remembered.
Trust
A semantic check is only useful if developers trust it. IntentLint tracks reliability per rule, stays quiet when it is unsure, separates infrastructure failures from policy failures, and recommends disabling or rewriting rules that generate noise.
Review
When the same note shows up in review again, capture it once. IntentLint helps turn durable feedback into a named rule, so the next developer and the next agent know the constraint before the pull request exists.
Write them once. Give them to every agent. Enforce them on every pull request.