The AI refactored a shared util and quietly broke checkout totals. Tests passed.
With StetThe change is blocked, because checkout totals are locked.
free · open source · runs locally
Stet is a guardrail layer between your AI coding tools and your repo. It locks the features that already work and checks every change your AI makes.
integrates with
your ai tools
Locks
5 still work
Scope
task: CSV export
Caught
VAT maths broke
your project
what it looks like
Each feature that works is locked with a command that proves it. After the AI is done, stet check runs them all and shows exactly what broke, before it ships.
locked · still works
locked · still works
AI changed the rounding. Caught before it shipped.
expected 10 · got 9.99
locked · still works
locked · still works
locked · still works
what's new
v0.6.0 · 14 Nov 2026
stet study "reconciliation" maps the routes, files, flow diagram, tests and gaps into a living doc your team and your AI both use.
Repo study →v0.5.0 · 14 Nov 2026
Snapshot locks save an export, a route list or mapped data as the approved output. If the AI changes it, stet check shows exactly what moved.
Snapshot locks →a week with AI
I'm Shamaz, a CTO. I use AI to write most of my code. Here's what a normal week looks like.
The AI refactored a shared util and quietly broke checkout totals. Tests passed.
With StetThe change is blocked, because checkout totals are locked.
New chat, and I re-uploaded my src folder and re-explained why we chose Postgres over Firebase.
With StetEvery tool reads the latest repo and the decision log.
Asked for a profile page fix; the AI also "tidied" billing.
With StetThe scope guard flags edits outside the task before merge.
what it looks like
Everything an agent needs to know lives in one AGENTS.md file, versioned in your repo.
# AGENTS.md · orders-service## What we're buildingB2B ordering for 40 retail accounts. Stripe for payments.## Out of scopeAdmin UI, mobile apps, multi-currency invoicing.## Never do- No new database tables without a decision entry- No API keys in client code- Do not rename public API fields## Decisions- Postgres over Firebase · Nov 2025 · SQL reporting- Stripe webhooks only, no polling · Sep 2025## Locked behaviours- GET /api/orders returns `total` (checkout reads it)- Prices are integer cents, never floats- Invoice rounding: 2dp, half-up
Every choice, its reason and the files it touches, kept where the next session reads it.
Checkout reads it and breaks silently when the field moves.src/api/orders.ts
Stops spam accounts before billing exists.src/auth/signup.ts
Polling double-charged two test accounts.src/billing/webhooks.ts
Needs SQL reporting per account.db/schema.sql
The scope guard names the file the agent touched outside the task, so you can revert it before merge.
@@ src/pages/Settings.jsx- export function Settings() {+ export function Settings({ user }) {return <ProfileForm user={user} />;@@ billing/invoice.ts- const rate = 0.20;+ const rate = 0.19;
1 file outside this task: billing/invoice.ts. Revert it, or restate the task before merging.
free template
Plain markdown you paste into your repo. It works with Claude Code, Cursor, Codex and any tool that reads AGENTS.md — no account, no lock-in.
roadmap
Now
Stet layer
Guardrails on the tools you already use.
Next
Handoff pack
One click hands the project over properly.
Later
Stet Studio
The cockpit for building with AI.
try it now
Free and open source. Run it in any project folder; it detects your stack and writes your AI rulebook.