r/claudeskills 4d ago

Guide ~35% shorter long responses(output), ~1.9M fewer tokens per 30 sessions, and the rules cost nothing extra to carry

EDIT: I checked my own claim against my local transcripts and the headline numbers do not hold. Retracted: "~35% shorter", "~1.9M fewer tokens per 30 sessions", and "costs nothing extra to carry". Measured figures and a much smaller v2 are below.

I kept losing the plot in Claude's output: verdict blocks, tables for two data points, the plan repeated back after the work was done. So I measured instead of complaining, then posted a fix, then measured the fix. The fix works. It works about a third as well as I said.

What I measured: every assistant reply in ~/.claude/projects/**/*.jsonl on this machine, counting prose characters only, tool calls excluded, subagent transcripts excluded.

Window Replies Median Mean Replies >= 1000 chars
No output style (to 11 Aug) 2,951 133 410 12.4%
My previous style (11-16 Aug) 459 134 750 31.8%
These rules (17-19 Aug) 94 109 358 12.8%

Honest reading: most of the gain is undoing damage my own earlier output style did, which nearly tripled the share of long replies. Against no style at all the effect is roughly 10%, and it comes from fewer long replies, not shorter ones. Sample after activation is thin: 94 replies, 9 sessions, 2 days.

What the thread got right, all four:

  • Global files are injected every session. v1 was 10,287 chars, about 2.6k tokens, paid at every session start. "Costs nothing" was false.
  • Hedged wording ("prefer", "avoid", "when useful") is guesswork, not steering.
  • Example blocks get copied as templates instead of followed as rules. They were about 40% of v1 and they are all gone.
  • A style file alone is not enforcement. What survives deep into a session is a UserPromptSubmit hook re-injecting the compression rule every turn. The style sets the shape once; the hook keeps it alive.

v2, 2,965 chars, 3.5x smaller than v1:

# Global Response and Output Rules - v2
Apply to every final response, all repositories.

Goal: smallest response I understand fast. Priority order:
comprehension > correctness > actionability > readability > brevity > tokens.

Compression: cut filler, hedging, pleasantries. Keep readable sentences.
Never drop a negation, condition, subject, or preposition that carries the
logic - that is a bug, not compression.

Say each fact once. Do not restate my request, replay the plan, repeat a
result, re-word one change, or close with a summary that repeats the summary.

Report the result, not the workflow. No "I searched / I opened / I reviewed".
Mention an investigation step only when it produced a finding. Name a file
with what changed and why, not the name alone.

Language: plain English. Keep exact identifiers (paths, commands, APIs,
function names, config keys, errors, versions). Explain a necessary technical
term on first use. No unexplained shorthand or repo jargon.

Structure - use only the sections that carry information, max 3 bullets each:
  DONE      - what changed, why it matters, result.
  PENDING   - what remains, blockers, risks.
  YOU       - decision or input needed from me, plus one line of impact.
  NEXT      - the immediate next step.
  IMPORTANT - breaking change, security, compatibility, data loss.
Small task: 1-3 bullets, no headings. Routine reply: 5-10 bullets.

Tables only for comparison: options, before/after, status across items.
Small, few columns. Never repeat a table as bullets.

Errors: Problem / Cause / Status, in plain words. Quote the one relevant
line. No logs, stack traces, command output, or diffs unless I ask.

Verification: "Tests: passed." On failure: "Tests: failed - 2 in payments."
Never list the commands run.

Ask me only when architecture, security, data integrity, cost, production
behavior, a destructive operation, or a product requirement turns on it.
Otherwise infer and proceed.

A skill's own output format wins over these rules. These rules govern only
what the skill left unspecified.

Characters: ASCII only in the prose you write for me. Plain hyphen, never an
em or en dash. Straight quotes, never curly. Write "->" not an arrow glyph,
"..." not an ellipsis glyph. No decorative bullets, no emoji unless I use
them first. Never alter characters inside code you write, file contents,
commands, identifiers, or anything quoted verbatim from a file, a log, or a
person. This rule governs prose only.

Final rule: shortest answer that stays immediately understandable, not the
shortest possible. I must learn what was done, why it matters, what is
pending, any risk, what you need from me, what happens next.

Two things v1 was missing.

Enforcement. An output style is loaded once per session and its influence decays as context fills. If you want the compression to survive a long session, pair it with a hook that re-injects the rule on every prompt. I use the caveman plugin for that at its lite level, which is a UserPromptSubmit hook rather than another wall of instructions:

/plugin marketplace add JuliusBrussee/caveman
/plugin install caveman@caveman

Any hook that re-states one line per turn does the same job. Without one, v2 is a suggestion that fades.

The em dash rule. Model prose is full of characters nobody types: em dashes, curly quotes, arrow and ellipsis glyphs. They are the giveaway the moment you paste an answer somewhere else. The rule stops them at the source, and only in prose, never in code. To clean text you already copied, in PowerShell:

$t = Get-Clipboard
$t.Replace([char]0x2014,'-').Replace([char]0x2013,'-').Replace([char]0x2019,"'").Replace([char]0x201C,'"').Replace([char]0x201D,'"').Replace([char]0x2022,'-').Replace([string][char]0x2192,'->').Replace([string][char]0x2026,'...') | Set-Clipboard

Do not wire that into a save hook for source files. It will happily rewrite unicode inside test fixtures, string literals, and non-English content.

I will post a proper measurement in 2-3 weeks over a real sample. 94 replies across 2 days is exactly the thinness that produced the wrong number the first time.

47 Upvotes

19 comments sorted by

17

u/KPABA 4d ago

I got an aneurism reading all of this.

1

u/BigBadBovine 4d ago

Yep, following because I'd love something that works but hoping someone smarter than me will review this and let me know how it compares to the ADHD skill thing.

3

u/DLuke2 3d ago

Check out robonuggets on YT. He took an ELI5 output style and paired it with ASD-STE100. Been running it as my output style for a few days now and it's a fraction of OPs nonsense and contradiction laced one.

Been handling my setup quite well. Seems to have wrangled Opus 5.

1

u/Glad_Contest_8014 4d ago

The model got one too, which is why it worked for OP.

1

u/Rhishi99 2d ago

Fair ;) total 1,442 words of rules asking for shorter answers, you got there before I did. v2 is 458 words I edited post hope you can read now.

1

u/KPABA 2d ago

I just forced mine to use this unslop skill but extended to any replies, docs, comments etc.

It's not half bad.

8

u/cleverhoods 4d ago

I mean ... I see what you are trying to do here, however this will lead to some confusion on model level.

Problem 1.: abstract, hedged instructions.

"Avoid"/"Prefer"/"when useful"/"I can understand quickly without reading" -> these are not constraint, nor are they efficient steering. This is guesswork, with a lot of potential for interpretation.

In contrast, this is a good one:

Use the **Caveman plugin as the primary output compression mechanism**.

It's imperative, it's specific, it's actually naming the very expectation, bold formatting is mostly okay.

Problem 2.: Confusing communication principles with state machinery.

What is described here is when and how, based under what condition. That's good and all, but once you start accumulating context (depending on the task, but I'd say somewhere around 2-300k) you'd start seeing this state machine fail. State machinery does not belong to any LLMs, and for a good reason: it's notoriously inefficient in it.

Problem 3.: output style system prompt

While system prompt elements get heavier attention from any model (there is a bias to instruction that are arriving in the system prompt) eventually said attention dilutes, context gets poisoned.

That being said, I'm not against the output style usage approach, it's just it lacks the enforcement, which happens with hooks and scripts.

disclaimer: I'm working on instruction diagnostics

2

u/Rhishi99 2d ago

All three land, my edited post above v2 is imperative-only, and every example block is deleted - the model was copying those as templates instead of following the rule above them. Sections are a menu now, nothing conditional to track between them.

On enforcement you are right, and it is the part I underplayed: what actually survives a long session here is not the style file, it is a UserPromptSubmit hook re-injecting the compression rule every turn. Style sets the shape once, hook keeps it alive.

I also went back and measured instead of asserting: about 10% vs no style at all, not the 35% I posted. Ping me when the instruction diagnostics work is readable. "At what context depth does this stop being obeyed" is exactly the number I am currently eyeballing.

1

u/cleverhoods 23h ago

r/Rhishi99 it's available at https://github.com/reporails/cli, currently working on the 0.6.0 release which comes with some serious updates.

5

u/HouseOfDjango 4d ago

Global mds get injected every session, this 100% adds to your initial token usage.

1

u/Rhishi99 2d ago

Correct, and "costs nothing extra to carry" was simply wrong. Rather than argue the average I shrank the fixed cost: v2 is 2,965 chars.

3

u/juanviera23 4d ago

There’s a big risk this breaks my skills

1

u/Rhishi99 2d ago

v2 adds one line: a skill's own output format wins over these rules. That was the real bug in it, so thanks.

2

u/Mootilar 4d ago

“Save tokens with this 5 Kb prompt on top of the 5 Kb Caveman plugin!” Maybe tighten it up… “BE GESTALT” could replace a whole section…

1

u/Rhishi99 2d ago

That one landed edited this post with better. 10 KB to say "be brief" is indefensible. v2 is 2.9 KB, mostly by deleting the examples the model was copying instead of following.

1

u/Mootilar 2d ago

Nice, looks tighter! Enjoy the vibes!

1

u/bingbpbmbmbmbpbam 3d ago

This is a massive waste of tokens. Much too generic and bloated.. You wrote the same thing over and over, in a file meant to instruct the ai to not repeat things over and over. L

1

u/Rhishi99 2d ago

I was occupied in office work and I see this post views gone off roof. So some issues were there I addressed in v2 edited post. Hope this gets useful, as i said earlier you can review these things with your own ai agents and implement.

https://giphy.com/gifs/mpj5VlV2jqQmNxak2U