Undercut for Cline
Undercut is a free, MIT-licensed policy file that Cline discovers the same way it discovers any other skill — cheap tier first, escalate only on evidence, never on a vibe. Cline is a bring-your-own-model VS Code extension, wired up to whichever provider or API key you configure; the rubric doesn't care which one that is, only whether the unit of work is mechanically verifiable.
How this maps onto Cline
Cline (formerly Claude Dev) ships a documented Skills feature built around the same SKILL.md layout Undercut ships in: a folder named for the skill, containing a required SKILL.md with YAML frontmatter (name matching the directory, a description that tells Cline when to activate it) plus an optional body of instructions. Cline looks for project-level skills in .cline/skills/ (its own recommended path), and also reads .clinerules/skills/ and .claude/skills/ for compatibility with skills already installed for other tools — plus ~/.cline/skills/ for skills you want available in every project. When a request matches a skill's description, Cline's use_skill tool loads the full SKILL.md body on demand; you can also invoke a skill explicitly as a slash command. That's the exact shape Undercut ships in — no adapter needed. Separately, Cline also reads a workspace .clinerules/ directory of plain instruction files (and auto-detects AGENTS.md, .cursorrules, and .windsurfrules) for general repo conventions that aren't skill-shaped — that mechanism is unrelated to where the Undercut skill itself lives.
Undercut's tier names — cheap, standard, frontier, apex — are generic on purpose, and that matters more for Cline than for a single-vendor tool. Cline isn't built on one company's model family; it's a bring-your-own-key extension that talks to Anthropic, OpenAI, Google, local and open-weight models, and others, all through the same interface. models.md gives a rule of thumb rather than one fixed mapping for exactly that reason: cheap resolves to the smallest/fastest model you've configured in Cline, standard to your default work model, frontier to the highest-reasoning model on your roster, and apex to a single batched tie-break call on whichever model you'd trust most with the hardest 1% of the work.
Nothing about this sits between Cline and whichever model backend you've configured. It's a policy file Cline's Skills tool reads at dispatch time — no proxy, no network hop, nothing to route around if you remove the skill directory.
Install for Cline
This is the same generic skills CLI referenced on the main site. We haven't independently verified which of Cline's recognized skill directories it targets — if it writes to .claude/skills/, that's one of Cline's documented compatibility paths and needs no change; if you're unsure, use Option 2 below and place it under Cline's own recommended .cline/skills/ directly.
Clone or download undercutsh/firstpass, then copy skills/firstpass/ into .cline/skills/firstpass/ at your project root (or ~/.cline/skills/firstpass/ to make it available in every project). Cline also reads .claude/skills/ and .clinerules/skills/, so it works dropped in either of those instead.
testing/README.md and the raw JSON in testing/results/node src/main.js --mockZero lock-in. It's a policy Cline's Skills tool reads — delete the directory 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 (Cline scores the flags itself — measured robust to getting them wrong, see above), and doesn't promise a dollar figure for your workload. It also doesn't pick a model for you — on a bring-your-own-key host like Cline, resolving each tier to a concrete model is still a choice you make in Cline's own model settings. The exact skill-directory precedence and use_skill activation behavior described above come from Cline's published docs; we haven't independently re-tested every path and edge case end-to-end ourselves. 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 token bill, one session at a time, on whatever Cline is currently doing with mechanical work.