Undercut for Lovable
Undercut is a free, MIT-licensed verification rubric you install as a Lovable workspace Skill (or append to a project's AGENTS.md) — classify the work, verify before you trust it, escalate only on evidence, never on a vibe. Lovable is upfront that it doesn't expose a model picker to you and routes model selection itself through an internal control plane; this rubric doesn't reach in and override that (see the honest caveat below) — what it gives Lovable's agent is an explicit, versioned discipline for how it classifies and verifies its own work, the same discipline the same-named skill already gives Claude Code, Cursor, and every other client on this site.
Lovable's own team has publicly argued against exposing a model picker: its control plane assigns different parts of a build to different models on its own, dynamically, and that routing isn't a lever any prompt or skill file can pull. This rubric can't force Lovable onto a cheaper model the way it can for Claude Code or Cursor — see how this maps onto Lovable before you install it expecting the same lever.
How this maps onto Lovable
Lovable's documented Skills feature is a close, deliberate cousin of the open SKILL.md standard this repo already targets. Per Lovable's own Skills docs, a workspace owner or admin can import a skill straight from a public GitHub URL — either the whole repo, or a subdirectory path in the form github.com/owner/repo/tree/<branch>/path/to/skill, provided that path "contains SKILL.md directly." Undercut's skill folder already sits at exactly that shape (skills/firstpass/SKILL.md, front matter with a name and description), so the subdirectory URL below points straight at it with nothing to rewrite. Once imported, "every custom workspace skill has Automatic use enabled by default" — Lovable applies it when a request matches the description, or you invoke it manually as /firstpass.
Separately, Lovable's own Knowledge docs confirm that "instruction files such as AGENTS.md or CLAUDE.md" in a project's connected GitHub repo also guide the agent, and that a "root-level AGENTS.md" is "always read by the Lovable agent regardless of session length." That path needs the project's repo connected via Lovable's two-way GitHub sync, which is a paid-plan feature in practice — the Skills import above has no such gate documented, which is why it's Option 1 below.
Here's the part worth being blunt about. Undercut's tier names — cheap, standard, frontier, apex — work everywhere else on this site because the agent reading them can itself choose which model handles a delegated unit of work. Lovable's own engineering blog is explicit that it deliberately does not expose that choice to you or to prompt text: a proprietary control plane "can assign different parts of the build to different models" on its own, dynamically, "watching the work" rather than taking a fixed instruction up front. We have not found, and don't expect to find, a documented way for a Skill or an AGENTS.md line to steer that control plane's model choice. So on Lovable, install this for what it can confirm doing — give the agent a versioned rubric for classifying ambiguity and blast-radius, checking its own output before claiming it's done, and escalating only on a failed check or a flagged uncertainty — not for the cost-routing lever this same file pulls on Claude Code or Cursor. Whether that verification discipline also happens to influence Lovable's own internal routing is unverified either way; we're not claiming it does.
Nothing here sits between Lovable and its backend. It's a markdown file Lovable's own infrastructure hosts and reads — no proxy, no network hop Undercut controls, nothing to route around if you delete the skill.
Install for Lovable
In Lovable, go to Workspace settings > Skills > Import from GitHub and paste the subdirectory URL below. Lovable downloads it, validates the SKILL.md, and adds firstpass to every project in the workspace with Automatic use already on.
If the project's repo is connected via Lovable's two-way GitHub sync, a root-level AGENTS.md is always read regardless of session length — useful for one project specifically, or if you're not a workspace owner/admin and can't add a workspace Skill yourself.
What's still unverified: skills.sh lists no Lovable install target, so the generic npx skills add undercutsh/firstpass referenced on the main site has no confirmed Lovable path — use Option 1 above, taken directly from Lovable's own Skills docs. And as covered above: we have found no documented way for a Skill or AGENTS.md line to influence which model Lovable's control plane picks for a given part of the build — treat the cost-routing story elsewhere on this site as not applicable here until Lovable documents otherwise.
testing/README.md and the raw JSON in testing/results/node src/main.js --mock/firstpass before starting mechanical workZero lock-in. It's markdown text Lovable reads — remove the skill or the AGENTS.md block and you're back to status quo.
How it works
The Undercut Rubric · v1This is a named, versioned spec — not internal logic we could quietly change. When the rubric changes (a new flag, a different cap), the version number moves and the changelog says why.
Every unit of work gets scored against six flags, then assigned the cheapest tier that can plausibly handle it. It only moves up a tier when something objective proves it needs to — a failed check, a measured disagreement, an explicit uncertainty flag. It never moves up on a guess, and it never moves back down mid-task.
0 flags → cheap · 1–2 → standard · 3+ or any ownership/judgment call → frontier. Apex only when you can write one sentence stating why the marginal intelligence pays for the cost.
Cheap-to-verify ⇒ cheap-to-generate. If output can be checked mechanically, it starts at the lowest tier regardless of how hard it looks — verification catches failure. Only unverifiable work needs to start high.
The next tier up gets only the failed or uncertain items, plus verification notes. It resolves the residue — it never redoes the batch.
Never de-escalate mid-task. Max one retry per tier. Anything still unresolved goes to a single batched apex tie-break call. One hard file in a 700-file job doesn't drag the other 699 up a tier.
unit of work
|
6-flag rubric
|
+---+----+
| 0 flags|--> cheap
| 1-2 |--> standard
| 3+/own |--> frontier
+---+----+
| fail x2 / disagree / uncertain
v
escalate +1 tier
(residue only)
|
still unresolved?
v
single batched
apex tie-break
Why it holds up
Even when the rubric flags are scored imperfectly, the escalator still routes work to the right tier almost every time — because a wrong flag only ever costs one extra cheap attempt, never a wrong answer or a big bill.
A stock dispatcher model reproduces the rubric flags imperfectly — Haiku hits 90% agreement, Sonnet 93%. The weakest flag (format-strict) is only 60%. None of that matters: under the shipped policy, both dispatchers still route 100% of units to the correct tier. A wrong flag changes the ladder cap, never the base tier — worst case, one extra cheap attempt.
Every rule is a property of the unit of work — verifiable, ambiguous, blast-radius — never a specific model's known weakness. Vendor cards go stale as models change; work properties don't. It's also hard-won — a format-strict rule that worked on Anthropic backfired on Gemini, which is exactly why the rubric no longer encodes per-vendor behavior.
Honest limits
Not a proxy, not a gateway, doesn't auto-flag in production, and doesn't promise a dollar figure for your workload. It also doesn't prove your number until you run it — every figure here is an observation from our tasks and our graders, not a guarantee about yours. And on Lovable specifically: it does not, and cannot, override which model Lovable's own control plane picks for a given part of your build — Lovable has said publicly it keeps that decision internal and dynamic, and we've found no documented way for a Skill or AGENTS.md file to change it. The measured cost-routing numbers in the benchmarks above come from clients where the agent itself chooses the model per unit of work; treat that part of the pitch as not applicable to Lovable until its docs say otherwise. Full list of general limits, with the finance/procurement note and the paid-tier disclosure, is on the main page.
Nothing about this page expires. What does keep happening is the review burden, one build at a time, on whatever Lovable is currently shipping without a second check.