Compaction levels
a dial, not a switch
Smoower.Minified is a dial. You choose how far to push token savings against how readable the code stays on disk. The Claude Code skill asks which level before it generates; planned tooling (a VS Code virtual view + a names.map) restores full readability at the deeper levels. At every level the contract — routes, status codes, JSON/DB values — is unchanged; only the in-code handle moves.
Short handles for framework ceremony
The smoower short handles plus the optional [Crud<>] generator — [HG], :Ctl, Tr, .w/.s/.nt, .ok1(). 100% ordinary C#. Reaches the framework ceremony (roughly 18–35% on a controller) and stays completely readable in any editor.
Short domain names, contract pinned
Short domain identifiers, with the long form pinned once in [JPN]/[Col]/global using and recorded in a names.map. Reaches the business-logic and contract floor, and the saving compounds as the codebase grows: the long name is paid once at the declaration, the short name everywhere it is referenced.
Whitespace packed
Everything from L2 with newlines and indentation removed — the densest form. Authored and read through the planned pack/expand tooling, which round-trips it back to fully formatted C# on the way in.
The ladder, side by side
| Level | What it adds | Reaches | Readable on disk? |
|---|---|---|---|
| L1 — Aliases | smoower short handles + optional [Crud<>] generator | framework ceremony (~18–35% on a controller) | yes |
| L2 — Mapped | short domain names, long form pinned in [JPN]/[Col]/global using + a names.map | the business-logic / contract floor; compounds with codebase size | with tooling |
| L3 — Max | whitespace packed — every newline + indentation removed | everything | tooling view |
Measured on a real API
On a real task-management API (samples/TodoApi) the ladder measured traditional → smoower → packed at 5,049 → 4,121 (~18%) → 3,785 (~25%) Claude tokens. Short-naming the hot domain vocabulary (L2) keeps paying as the codebase grows (see bench/FINDINGS.md §4–6).