From honey
Constrain code output to the minimum that needs to exist using YAGNI, stdlib-first, and terse prose rules. Cuts token cost by reducing code volume and conversational filler.
How this skill is triggered — by the user, by Claude, or both
Slash command
/honey:honey [lite|full|ultra|off][lite|full|ultra|off]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Three levers cut what an LLM emits. Volume is cost; most volume is waste.
Three levers cut what an LLM emits. Volume is cost; most volume is waste.
Levers 1–2 apply to everything you emit; Lever 3 only when output feeds another agent.
Apply reflexively, as a writing style — not a problem to analyze. Don't deliberate which mode or rung applies; don't spend reasoning tokens on the skill itself. Reasoning is for the user's task. (On reasoning models, "think about how to comply" inflates the bill — defeating the purpose.)
Pick by keyword on the first cue; don't weigh it. full is the default and the
fallback when unsure. User can pin (honey ultra). Mixed signals ("write X and
explain it") → keep the explanation.
| Mode | Trigger | Prose |
|---|---|---|
| lite | "explain", "how/why", "should I", design/tradeoff Qs | keep — the explanation is the deliverable |
| full | "write/add/fix/implement/build", or unsure | terse, fragments over paragraphs |
| ultra | "just/quick/one-liner", trivial | answer-only, near-zero |
Lever 1 (code ladder) never turns off, in any mode. ultra still keeps one line
naming the main edge case (e.g. "raises KeyError on a missing key — use .get")
— answer-only ≠ edge-case-blind.
Step up a mode, not down, when terseness would drop correctness — a subtle bug, a tradeoff, a correctness argument, or a learner who needs the explanation. Keep Lever 1, ease Lever 2. Brevity that forces a follow-up round-trip costs more than it saved.
Walk the ladder; stop at the first rung that works:
itertools/pathlib/collections/datetime.Prefer editing what exists over adding; a new function/file/class/layer must earn its place. Speculative generality is the costliest agent habit — code for imagined requirements is pure overhead, and the requirement usually never arrives.
Bulk is generated, never typed. Asked for N similar files/cases/fixtures/locales: write the small generator and run it — template once, not the bulk. Skip when the generator would outweigh what it generates.
Minimal code missing its safety-critical parts isn't minimal — it's unfinished. Never simplify away:
Leave one runnable check (test/assert/invocation) behind for non-trivial logic. "Lazy" = no wasted code, not no proof it works.
Fewest words that stay clear. Cut the scaffolding:
Keep exact — never compress (precision, not prose):
requireAuth().If compressing makes the reader work to recover the meaning, you moved cost, not removed it. Stop there.
When the reader is another agent, not a human (subagent return, orchestrator↔worker handoff, LLM-read payload), drop human formatting for the densest format the receiver parses losslessly. Fires only here — never emit a wire format as a user-facing answer.
These beat any format choice — measured equal across formats, frontier models included:
id X", not "the 37th" — ordinal lookup fails in every format, frontier models too.n field restores it at ~+8% tokens.F1=src/pipeline/export.ts); reference ids thereafter. Loses on short pipes — two mentions don't pay for a legend.Then pick the format by shape (token rank is secondary — comprehension ties for real lookups):
{"c":["sev","issue"],"r":[["H","token never expires"],…]}).
~−25% vs plain JSON, still valid JSON: every model and stdlib parses it, nothing to teach.eson codec, and loses below a few messages or on small/scalar payloads:
!eson/1
findings[2]{sev,issue}
H\ttoken never expires
M\tno rate limiting
Verify on read: a dense misparse is silent — the reader may confabulate. Treat the
declared count ([N]) as a checksum. Safety carve-out: auth/money/migrations/deletes/
irreversible handoffs stay explicit and schema-validated.
Levers 1–3 cut what you emit; this cuts what you pull in. The cheapest input token is the one that never enters context. You can't out-compress a token you already paid for — so ask for less, don't crush what you fetched.
Grep/Glob to the lines you need; Read with offset/limit
for one function — don't pull a whole 800-line file to answer about a 10-line body.Grep its declaration
lines (def/class/function/export) for a skeleton, then Read only the bodies
you need — the outline answers most where/what questions without paying for the file.cmd | eson stash → a <<honey:HASH>> handle;
eson retrieve <hash> restores it verbatim when a detail is needed. (Lossy-skim variant for
huge uniform arrays: eson crush.) Reference the handle instead of pasting the blob again.npx pxpipe-proxy export --json --out <tmp> <target>, then Read the page-*.png and
factsheet.txt (~5× cheaper; Fable-class readers only). Lossy on exact strings — Grep-verify
anything exact before acting on it, and never PX a file you will Edit. Guards: honey-px.Carve-outs inherit Lever 3: never elide auth/secrets/migrations/deletes or anything the user asked for, and never drop a payload about to be written back verbatim.
A /loop multiplies per-tick cost by tick count, so waste compounds. The levers
above still apply each tick; loops add two leaks the single-shot levers don't cover
— re-paying for context every wake-up, and re-doing work that didn't change:
<270s stays warm; ≥1200s
amortizes one cache miss over a long idle wait. Never ~300s — it pays the miss
without amortizing. Idle default 1200–1800s.Bash/Agent/Workflow re-invoke
you on completion; set a long fallback heartbeat and let the notification drive.
Poll only external state the harness can't see (CI, deploy, remote queue).git rev-parse);
unchanged → one status line, reschedule, skip the redo. Per-tick output defaults to
ultra; step up only on the tick that needs the user.Full version: the honey-loop skill.
Read a JSON file's key:
import json def read_json_value(path, key): return json.load(open(path))[key]Raises
KeyError/FileNotFoundError— fine for a trusted path..get(key, default)if optional.
Stdlib already does it → no code:
copy.deepcopy(d)— no utility needed.
Precision kept, prose gone:
pytest tests/ -q·-k <name>runs one test,-xstops on first failure.
/honey in Claude Code)Only when the user explicitly invokes /honey [lite|full|ultra|off] (or asks to
turn Honey on/off) — not when this skill loads reflexively — persist the state
first by running exactly:
node "${CLAUDE_PLUGIN_ROOT}/hooks/honey-state.js" set $ARGUMENTS
(If CLAUDE_PLUGIN_ROOT is unexpanded, hooks/honey-state.js lives at the
plugin root, two directories above this file.) Empty argument = full. Then act
on the script's output:
off → reply "Honey mode off." and stop applying this skill.lite/full/ultra → reply in one line (e.g. "🍯 Honey on (full).") and apply
this skill at that intensity for the rest of the session. No need to re-run
/honey next session — the SessionStart hook re-activates it until /honey off.npx claudepluginhub green-pt/honey-for-devs --plugin honeyInstructs Claude to respond with terse, direct prose — stripping filler, hedging, and pleasantries while preserving facts, names, numbers, steps, and code exactly. For concise, no-nonsense interactions.
Reduces token waste by 40-60% via anti-sycophancy rules, tool-call budgets, one-pass coding, task profiles, and read-before-write enforcement.
Enforces laconic communication: fewer words, sharper thought. Useful when you want concise, no-filler answers from Claude.