Agent skill

Honey

by Green-PT in Green-PT/honey-for-devs

Write less code and say less about it. An agent skill from Green-PT/honey-for-devs.

MITAuto-check passedAI & LLM Engineering

Install Honey

skills CLI
$ npx skills add Green-PT/honey-for-devs --skill honey -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Green-PT/honey-for-devs honey --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Green-PT/honey-for-devs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/honey .claude/skills/honey && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
honey
GitHub stars
313
Token cost
~3.5k tokens
SKILL.md length
1,851 words
Files
2
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Write less code and say less about it. An agent skill from Green-PT/honey-for-devs.

  • Works in 3 steps: Less code — most code needn't exist. The… → Less prose — most words around code are… → Denser agent-to-agent messages — when…
  • Explaining code
  • SKILL.md covers Intensity, Lever 1 — minimum code that…, Lever 2 — say less about it and Lever 3 — compress…, plus 3 more sections
  • Calls npx, git and pytest

What it does

Honey is an agent skill from Green-PT/honey-for-devs. 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…

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `cline-rule.md`).

It sits in AI & LLM Engineering, covering LLM cost and token optimization and Refactoring. The repository describes itself as: Honey (I Shrunk the AI) by GreenPT: a cross-tool coding skill that cuts AI coding-agent token usage and LLM API costs — write less code, less prose, and denser agent-to-agent… The licence is MIT.

When your agent uses it

  • Explaining code
  • Any response where output volume drives token cost — even if the user never says minimal

Example prompts

  • “minimal”
  • “concise”
  • “/honey”

Requirements

  • Node.js

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Less code — most code needn't exist. The cheapest line is the one never written.
  2. Less prose — most words around code are filler. The reader wants the answer.
  3. Denser agent-to-agent messages — when the reader is another agent, use the

What it can do on your machine

Read from SKILL.md and the folder at commit 9169fc5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx
    • git
    • pytest
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Honey loads about 3.5k tokens when it runs. Until then it costs about 136 tokens; SKILL.md has 1,851 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~136
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Green-PT/honey-for-devs at commit 9169fc5, republished under its MIT licence (© Green-PT). 1,851 words, ~3,458 tokens.

Download SKILL.mdSave it as .claude/skills/honey/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
honey
description
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.
argument-hint
[lite|full|ultra|off]
license
MIT

Honey (I Shrunk the AI)

Three levers cut what an LLM emits. Volume is cost; most volume is waste.

  1. Less code — most code needn't exist. The cheapest line is the one never written.
  2. Less prose — most words around code are filler. The reader wants the answer.
  3. Denser agent-to-agent messages — when the reader is another agent, use the most token-efficient wire format it parses losslessly.

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.)

Intensity

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.

ModeTriggerProse
lite"explain", "how/why", "should I", design/tradeoff Qskeep — the explanation is the deliverable
full"write/add/fix/implement/build", or unsureterse, fragments over paragraphs
ultra"just/quick/one-liner", trivialanswer-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.

Lever 1 — minimum code that needs to exist

Understand the problem before you climb — read the task and the code it touches, trace the real flow end to end, then pick a rung. A small diff in the wrong place isn't lazy, it's a second bug.

Then walk the ladder; stop at the first rung that works:

  1. Needs to exist? Best move is no code — config, an existing call site, or deleting the need. Say so instead of building.
  2. Already in this repo? Search before you write: the helper, util, validator, or pattern is often already here. Reusing it is the cheapest rung there is — zero new lines, and it stays consistent with the codebase.
  3. Stdlib — don't hand-roll itertools/pathlib/collections/datetime.
  4. Language native — operator/comprehension/idiom over a helper; dict lookup over an if-ladder.
  5. Installed dependency — use what the project has; don't add one for four lines, don't reimplement one you already have.
  6. One line before a block.
  7. Minimum block — no speculative params, no "might need it later" branches, no single-caller abstraction.

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.

Fix the cause, not the symptom — it's also the smaller diff. A bug report names a symptom. Grep the callers of the function you're about to touch: one guard in the shared function is fewer lines than one guard per call site, and it fixes the sibling callers the ticket didn't mention. Patching only the named path leaves the bug alive and the diff bigger.

Mark deliberate shortcuts. A simplification with a known ceiling (global lock, O(n²) scan, naive heuristic) gets a honey: comment naming the ceiling and the trigger to revisit — honey: O(n²), fine under ~1k rows; index if it grows. Without a trigger, "later" means never. honey-debt harvests these into a ledger.

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.

Never cut (lazy ≠ broken)

Minimal code missing its safety-critical parts isn't minimal — it's unfinished. Never simplify away:

  • Input validation at trust boundaries (user input, network, files, env).
  • Error handling that prevents data loss or corruption.
  • Security — auth checks, escaping, secrets handling.
  • Accessibility basics — labels, roles, keyboard paths.
  • Visual/UX design when the deliverable is user-facing — for landing pages, marketing sites, and UI components, polish (layout depth, hero composition, motion, responsive richness, on-brand visual hierarchy) is the requirement, not "speculative." Markup that looks unfinished isn't minimal. The ladder still trims structure (no dead markup, no unused framework), never how it looks.
  • Anything the user explicitly asked for.

Leave one runnable check (test/assert/invocation) behind for non-trivial logic. "Lazy" = no wasted code, not no proof it works.

Lever 2 — say less about it

Fewest words that stay clear. Cut the scaffolding:

  • Drop wind-up/wind-down — no "Great question!", no "hope this helps!", no restating the prompt, no announcing what you're about to do.
  • Drop hedging — "use X", not "you might possibly consider perhaps X". State real uncertainty once, briefly.
  • Fragments and lists over paragraphs when they carry the same info faster.
  • Don't narrate readable code — explain the why and the non-obvious, skip the what.
  • Answer first; context only if load-bearing.

Keep exact — never compress (precision, not prose):

  • Code blocks — verbatim, runnable; never "..." shorthand the user must expand.
  • Identifiers, paths, commands, versions, error messages — exact. "the auth middleware" ≠ requireAuth().
  • Anything to copy, paste, or run.

Don't abbreviate prose words, at any intensity. cfg / impl / req / res / fn / auth / env cost the same number of tokens as config / implementation / request / response / function / authentication / environment — measured, one token each, on both the Claude and o200k tokenizers. Same for → versus a comma. You pay nothing and charge the reader to decode. Terseness comes from dropping words, never from shortening them. Well-known acronyms already in the domain (API, HTTP, DB, URL) are fine; inventing new ones is not.

If compressing makes the reader work to recover the meaning, you moved cost, not removed it. Stop there.

Lever 3 — compress agent-to-agent messages

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:

  • Compact, never pretty. Minified over indented JSON — pretty-printing is ~+55% tokens for nothing.
  • Address records by stable key, never by position. "the finding with id X", not "the 37th" — ordinal lookup fails in every format, frontier models too.
  • Aggregate in code, never make the model count rows. "how many match X" scores ~0% even on frontier models. Same class: sort, dedupe, diff, date math — any deterministic transform runs in the program; pass the model the result.
  • Number rows only if positional access is unavoidable — an explicit n field restores it at ~+8% tokens.
  • Long pipes: legend once, ids after. Paths/names recurring across a multi-message pipe get short ids in a one-time legend (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):

  • Default → compressed JSON. Minified; for a uniform record array go columnar — keys once, then value rows ({"c":["sev","issue"],"r":[["H","token never expires"],…]}). ~−25% vs plain JSON, still valid JSON: every model and stdlib parses it, nothing to teach.
  • Opt-in → ESON (spec + primer), only for high-volume, cached, record-array-heavy pipes you own end-to-end. Buys a further ~6–10%, but costs a ~120-token format primer plus the bundled 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.

Show full SKILL.md (599 more words)Show less
Lever 3b — request less input

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.

  • Locate before reading. 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.
  • Outline first, bodies on demand. Unfamiliar big file: 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.
  • Don't re-read or re-paste what's already in context — reference it. The harness already tracks file state; re-Reading an unchanged file just re-pays for it.
  • Offload bulk you must keep but mostly skim. 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.
  • Subagents: aggregate before returning — N matching rows + the count, not all rows. Their return is itself a Lever-3 handoff: columnar/minified.
  • ultra only — image-rendered reads (PX). At ultra intensity, read big dense read-only bulk (≥~6k chars you'll skim but never edit or byte-copy) as PNG pages: 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.

Loops — cost compounds per tick

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:

  • Pace to the prompt cache (5-min TTL). Interval <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.
  • Don't poll harness-tracked work. Background 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).
  • Short-circuit no-change ticks. Cheap check first (hash/timestamp/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.
  • Define done, then stop — omit the reschedule when the exit condition is met.

Full version: the honey-loop skill.

Examples

Read a JSON file's key:

python
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, -x stops on first failure.

<!-- claude-code-only -->

Toggling (/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 -e "require('module').runMain(process.argv[1]=process.argv[1].split(String.fromCharCode(92)).join('/'))" "${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.

© Green-PT, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/honey of Green-PT/honey-for-devs.

  • SKILL.md
  • cline-rule.md

Open the folder on GitHubat commit 9169fc5

Compare with similar skills

Honey next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Honey compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Honey this skillGreen-PT/honey-for-devs313—~3.5kAutomated safety check: PassMIT
Agents Best PracticesDenisSergeevitch/agents-best-practices2.4k—~7.4kAutomated safety check: PassMIT
Repo MapAnastasiyaW/codex-claude-code-config154—~1.5kAutomated safety check: PassMIT
Hivemindalirezarezvani/claude-skills28k—~2.4kAutomated safety check: PassApache-2.0
Spk Practice Bulk Editspec-kitty/spec-kitty1.7k—~558Automated safety check: PassMIT
Manor Coding Guardrailsmanor-os/manor-ai162—~816Automated safety check: PassMIT

Similar skills

  • Agents Best Practices

    DenisSergeevitch/agents-best-practices

    A skill your agent uses when designing, generating an MVP blueprint for, auditing, troubleshooting, refactoring, or explaining an agentic harness for any domain.

    2.4k GitHub stars~7.4k tokensUpdated 5 days ago
    AI & LLM EngineeringAuto-check passed
  • Repo Map

    AnastasiyaW/codex-claude-code-config

    Ranked symbol map of a codebase within a token budget — a compact "what matters in this repo" before reading files.

    154 GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Hivemind

    alirezarezvani/claude-skills

    Orchestrate free opencode workers from Claude Code to cut token costs.

    28k GitHub stars~2.4k tokensUpdated 1 mo ago
    AI & LLM EngineeringAuto-check passed
  • Spk Practice Bulk Edit

    spec-kitty/spec-kitty

    Recognize bulk-edit missions and drive the occurrence-classification guardrail on the user's behalf before modifying many matching instances.

    1.7k GitHub stars~558 tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Manor Coding Guardrails

    manor-os/manor-ai

    A skill your agent uses when writing, reviewing, or refactoring Manor code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.

    162 GitHub stars~816 tokensUpdated 1 mo ago
    AI & LLM EngineeringAuto-check passed
  • Optimizing Prompts

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill optimizes prompts for large language models (llms) to reduce token usage, lower costs, and improve performance.

    2.8k GitHub stars~1k tokensUpdated today
    AI & LLM EngineeringAuto-check passed

More from Green-PT/honey-for-devs

All 14 skills in this repo
  • Honey Ccr

    Green-PT/honey-for-devs

    Compress-Cache-Retrieve for huge, repetitive array tool output (logs, scan results, time series, event streams) before it enters context.

    313 GitHub stars~674 tokensUpdated 1 mo ago
    Auto-check passed
  • Honey Eco

    Green-PT/honey-for-devs

    Report this session's output tokens and CO₂ by running the repo's committed EcoLogits port, plus the modelled CO₂/$ saved vs a no-Honey baseline — always labelled with the bench stamp it came from.

    313 GitHub stars~608 tokensUpdated 1 mo ago
    Auto-check passed
  • Honey Gain

    Green-PT/honey-for-devs

    Show Honey's benchmark scoreboard — the committed quality and token results per task tier (code, user-facing, agent-to-agent) from bench/.

    313 GitHub stars~661 tokensUpdated 1 mo ago
    Auto-check passed
  • Honey Px

    Green-PT/honey-for-devs

    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%…

    313 GitHub stars~701 tokensUpdated 1 mo ago
    Auto-check passed
  • Honey Superpowers

    Green-PT/honey-for-devs

    Stack Honey onto Superpowers-style workflows (subagent-driven-development, dispatching-parallel-agents, executing-plans) and any orchestration that dispatches fresh subagents.

    313 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check passed
  • Honey Debt

    Green-PT/honey-for-devs

    Harvest every honey: comment in the codebase into a debt ledger, so the deliberate shortcuts Lever 1 leaves behind get tracked instead of rotting into "later means never".

    313 GitHub stars~483 tokensUpdated 1 mo ago
    Auto-check passed

Questions about Honey

What does Honey do?

Write less code and say less about it. An agent skill from Green-PT/honey-for-devs. Honey is an agent skill from Green-PT/honey-for-devs. Write less code and say less about it.

When should I use Honey?

Honey fits situations like: explaining code; any response where output volume drives token cost — even if the user never says minimal.

How do I install Honey in Claude Code?

Run `npx skills add Green-PT/honey-for-devs --skill honey -a claude-code`. Or copy the skill folder (skills/honey in Green-PT/honey-for-devs) into .claude/skills/honey in your project. Claude Code loads it when a task matches its description.

How do I install Honey in Codex?

Run `npx skills add Green-PT/honey-for-devs --skill honey -a codex`. Or copy the skill folder (skills/honey in Green-PT/honey-for-devs) into .agents/skills/honey in your project. Codex loads it when a task matches its description.

Can I use Honey in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Green-PT/honey-for-devs --skill honey -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/honey, .gemini/skills/honey, .github/skills/honey and .opencode/skills/honey in your project.

What does Honey need to run?

Going by SKILL.md and its folder, Honey needs the command-line tools its instructions call (npx, git, pytest and node). Our summary lists: Node.js.

Does Honey access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Honey safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Honey use?

Honey is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Honey use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Honey?

Skills that share tags, products or a category with Honey: Agents Best Practices (DenisSergeevitch/agents-best-practices, 2.4k stars), Repo Map (AnastasiyaW/codex-claude-code-config, 154 stars), Hivemind (alirezarezvani/claude-skills, 28k stars) and Spk Practice Bulk Edit (spec-kitty/spec-kitty, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Honey?

Green-PT (a GitHub organization) maintains it in Green-PT/honey-for-devs, which has 313 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on September 7, 2026.

Source: Green-PT/honey-for-devs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.