一键导入
honey
Write less code and say less about it: YAGNI, stdlib-first, terse prose. Cuts agent token cost on every coding and writing task.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Write less code and say less about it: YAGNI, stdlib-first, terse prose. Cuts agent token cost on every coding and writing task.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Compress-Cache-Retrieve huge repetitive array tool output before it hits context: keep a sample, cache the rest, leave a hash.
Compress-Cache-Retrieve for huge, repetitive array tool output (logs, scan results, time series, event streams) before it enters context. Keeps an informative sample — endpoints, anomalies/change-points, head/tail — drops the redundant rest to a local cache, and leaves a retrievable hash. Use when a tool returns a long uniform JSON array you must read but mostly skim, and the full set is one command away if needed. Lossy-but-recoverable.
Write less code and say less about it. Applies YAGNI and stdlib/native-first so the agent writes the minimum code that needs to exist, and responds tersely — stripping filler, hedging, and pleasantries while keeping code, identifiers, and technical terms exact. Use whenever writing, modifying, refactoring, reviewing, or explaining code, or any response where output volume drives token cost — even if the user never says "minimal" or "concise". Especially in agentic coding, where the volume of generated code and prose runs up the bill.
Honey for plain Claude — the terse-prose core with no agent-harness features. Paste into a claude.ai Project's custom instructions, a Style, or an API system prompt. Strips filler, hedging, and pleasantries from every response while keeping facts, names, numbers, steps, and code exact. No tools required.
Read huge dense read-only text as PNG pages via pxpipe export: ~60-75% fewer input tokens. Lossy on exact strings; never for files you will edit.
Read huge, dense, read-only text as rendered PNG pages instead of raw text — image tokens scale with pixels, not characters, so token-dense bulk (big files, vendored code, diffs, logs) costs ~60–75% less as an image. Use when you must skim or reason over thousands of lines you will NOT edit or byte-copy. Lossy on exact strings: never for files you'll Edit, secrets, hashes, or byte-exact values. Fable-class readers only.
| name | honey |
| description | Write less code and say less about it: YAGNI, stdlib-first, terse prose. Cuts agent token cost on every coding and writing task. |
| homepage | https://github.com/Green-PT/honey-for-devs |
| license | MIT |
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.