Undercut for Void
Undercut is a free, MIT-licensed routing policy you fold into .voidrules — the single root-level file Void's own GitHub issue history documents it reading, the same shape as the old .cursorrules convention Cursor itself has since deprecated. Cheap tier first, escalate only on evidence, never on a vibe.
How this maps onto Void
Void is an open-source VS Code fork, and its confirmed context mechanism is a single .voidrules file at the project root — the same one-file-of-plain-text shape as Cursor's original .cursorrules, which Cursor itself later replaced with directory-based Project Rules. We could not find current, maintainer-published documentation spelling out exactly how .voidrules is spliced into a request; what we found instead is a Void GitHub issue (voideditor/void#585) from a user reporting that an overly long .voidrules file could make the model stop responding or burn excess tokens, and a separate feature request (voideditor/void#643) proposing a modern, directory-based rules system closer to Cursor's or Windsurf's. That proposal was never shipped.
There is no confirmed SKILL.md or Agent Skills discovery mechanism in Void — nothing like the .claude/skills/, .cursor/skills/, or .gemini/skills/ directories other companion pages on this site install into. Undercut still ships as a SKILL.md file (that's the canonical, versioned copy in the repo), but for Void the practical install is folding that file's text into the one place Void is documented to read: the root .voidrules file. Given the token-bloat report above, keep it short if you're already running a large .voidrules.
Undercut's tier names — cheap, standard, frontier, apex — stay generic on purpose. Void is a bring-your-own-key editor wired to whichever provider you configure, so models.md gives a rule of thumb rather than one fixed mapping: cheap resolves to the smallest/fastest model on your roster, standard to your default work model, frontier to the highest-reasoning model you've configured, apex to a single batched tie-break call. Nothing here sits between Void and your model backend — it's plain text Void reads into context, no proxy, no network hop, nothing to route around if you remove it.
Install for Void
Run this from the repo root. This puts the routing policy in the one file Void is documented to read.
Prefer not to pipe a download straight into a file? Open skills/firstpass/SKILL.md on GitHub, copy its body, and paste it into .voidrules at your project root yourself (create the file if it doesn't exist yet).
No npx skills add path. skills.sh doesn't list Void as a supported install target — and even setting that aside, the skills CLI writes into a skills/-style directory built for tools with a documented Skills-discovery mechanism (Claude Code, Cursor, Cline, Gemini CLI, and similar). We found no evidence Void reads any such directory — its confirmed mechanism is the single .voidrules file above. Use Option 1 or 2 instead.
testing/README.md and the raw JSON in testing/results/node src/main.js --mock.voidrules back to you before trusting it on real workZero lock-in. It's plain text in a rules file — delete the 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 (whatever's behind Void scores the flags itself, and that path is unmeasured for Void specifically — see below), and doesn't promise a dollar figure for your workload. This page describes a policy, not a guarantee: nothing here proves Void will route correctly on your workload, only that the same rubric is verifiable and reproducible against the mock harness linked above.
Void-specific: Void's own GitHub repository was archived and its README marks the project deprecated and no longer accepting contributions, so treat everything above as a description of the last documented behavior, not an actively maintained integration — future Void releases, if any, aren't something we can test against. We could not confirm a native SKILL.md or Agent Skills discovery mechanism in Void the way other companion pages on this site can for their tools; the .voidrules mechanism described above comes from a maintainer-facing GitHub issue thread, not a published spec, and a directory-based rules system that would have superseded it (#643) was proposed but never shipped. A separate report (#585) says an overly long .voidrules file can degrade responses or burn tokens — keep the pasted policy text short if you hit that. We have not run Void ourselves to confirm any of this end-to-end; verify against your own build before relying on it. 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 — wherever Void is still running for you — is the token bill, one session at a time, on mechanical work.