Aisance reads your diff, asks one sharp question about it, and holds the merge until you can answer. Keep shipping fast — actually understand the AI-written code you ship.
Velocity feels great — right up until the day nobody on the team can explain how the thing actually works. That gap has a name: tech debt. And it compounds with every PR you wave through.
No dashboards to babysit. Aisance lives in the one place your code already passes through.
Aisance hands the diff — and what it knows about your skill level — to its agent.
trigger: pull_requestA 60-second tutorial on one real idea in your change, then a single question. The merge check turns red.
check: aisance — requiredPass and the check goes green. Miss it and the explanation shows you exactly what you skipped.
status: unblockedGenerated for an actual pull request — a security fix that swapped innerHTML for safe DOM calls.
The risky pattern was assigning runtime strings to innerHTML — values from extension messages, server responses, caught errors. If any of that text contains HTML, the browser parses it as markup instead of showing it as text.
The fix separates text from structure: textContent for data, createElement for markup you control.
setStatusText("Pairing failed: " + err.message) safer than the old innerHTML assignment?textContent shows err.message as literal text; innerHTML would parse any HTML in it as DOM.textContent validates that the value came from a trusted server first.innerHTML is only risky with database values, not browser errors.Aisance keeps a memory of what you know. It targets your blind spots and aims each lesson one level past where you are — so the gate is never busywork, and never the same twice.
One YAML file. Your next pull request comes with a lesson — and the merge button waits until you have earned it.
Get started →