Skip to content

Dragoon0x/terse

terse

⚠️ EDUCATIONAL & EXPERIMENTAL PROJECT. DYOR. terse is released for educational and experimental purposes only. no warranty. not professional advice. not affiliated with Anthropic. always verify compressed output before acting on it — especially in security, legal, medical, financial, or compliance contexts. read DISCLAIMER.md and NOTICE.md before using. by using terse you accept those terms.

token compression for Claude. ten modes, five levels, measured honestly.

58–78% output-token reduction on the published corpus. all numbers reproducible with one python command.

claude often replies with preamble, hedging, and sign-offs that don't add information.
terse is a claude code skill that cuts that — with engineering, not vibes.

why this exists

the caveman skill had a good idea: claude wastes tokens on filler. but it shipped as one rule in one file with an unverified claim. terse takes the same idea and builds the actual system:

caveman terse
skill format .skill file directory + SKILL.md (current spec)
modes 1 10
aggressiveness levels 1 5
preservation rules informal 6-category engineered list
anti-patterns hard-stops for security, legal, teaching
benchmarks "75%" claim 20 prompts × 10 modes, measured
trigger phrases ~5 60+ with auto-activation

10 modes × 5 levels = 50 compression profiles. pick one that matches your context.

install

# clone into your personal skills directory
git clone https://github.com/Dragoon0x/terse ~/.claude/skills/terse

# or curl the tarball
mkdir -p ~/.claude/skills/terse && \
  curl -sL https://github.com/Dragoon0x/terse/archive/main.tar.gz \
  | tar -xz --strip-components=1 -C ~/.claude/skills/terse

once installed, claude auto-loads terse when you say things like be terse, caveman mode, save tokens, /terse, or complain about long responses.

the 10 modes

mode vibe measured reduction
spartan clean, readable, military-direct 62.0%
caveman drop articles, pleasantries, soft verbs 75.1%
telegraph short. sentences. stop. 71.9%
tweet 280-char paragraph budget 73.3%
headline news-wire, noun-first 72.9%
bullet every statement a bullet 58.6%
schema JSON/YAML-shaped responses 68.5%
zen one idea per line, blank space between 77.5%
engineer answer first, reasoning on request 75.7%
dense max information per token, expert-to-expert 76.4%

see benchmarks/report.md for the full data including preservation pass rates and per-category breakdowns. see modes/ for the full rule set per mode.

the 5 levels

levels compose with any mode. they control how far the mode is pushed.

level name effect
1 trim cut preamble and sign-offs only
2 snip + hedges, pleasantries, filler
3 cut + tighter sentences, active voice
4 strip + drop articles and soft verbs
5 bare + telegraphic, edge of readability

say more to climb a level. say less to drop. levels persist across turns until you say normal mode.

preservation rules

compression without preservation is just data loss. these categories pass through every mode and every level unchanged:

  • code blocks and inline code (every character inside backticks)
  • identifiers (function names, class names, variable names, API names)
  • shell commands, flags, file paths, URLs
  • numbers, versions, constants, big-O
  • user-quoted text and error messages
  • safety caveats that change correctness

the benchmark runner enforces these programmatically. full rules in references/preservation-rules.md.

before and after

normal claude (76 words, ~80 tokens):
"Great question! The reason your React component is re-rendering is likely
because you're creating a new object reference on each render cycle. When
you pass an inline object as a prop, React's shallow comparison sees it as
a different object every time, which triggers a re-render. I'd recommend
using useMemo to memoize the object."

terse · caveman mode (19 words, ~22 tokens):
"New object ref each render. Inline object prop = new ref = re-render.
Wrap in `useMemo`."

same answer, 72% fewer tokens.

when NOT to use

terse has a hard-stop list. in these contexts, it refuses to compress or warns before doing so:

  • security audits and incident response
  • legal, medical, or financial advice
  • teaching fundamentals to a beginner
  • post-mortems
  • customer-facing writing

full list in references/anti-patterns.md.

benchmark

one command:

cd benchmarks
python runner.py

reads corpus.json, writes results.json, regenerates report.md. stdlib only. corpus.json is human-reviewable (20 prompts × 11 responses each = 220 total strings, all human-authored).

the token estimator uses the published ~4-chars-per-token heuristic for english under cl100k_base, averaged with a words-to-tokens estimator. calibration error is ~5% on responses over 40 words. install tiktoken and run python scripts/measure.py --tiktoken <file> for exact counts.

full methodology and honest limitations in benchmarks/methodology.md.

repo layout

terse/
├── SKILL.md                  # the skill Claude reads
├── modes/                    # 10 compression modes
├── levels/                   # 5 aggressiveness levels
├── references/               # preservation rules, anti-patterns, domain rules
├── benchmarks/               # corpus, runner, results, methodology
├── scripts/                  # measure.py — token estimator
├── examples/                 # worked examples per context
└── docs/                     # landing page (github pages)

examples

  • examples/code-review.md — using terse for pr review
  • examples/debugging.md — using terse for bug hunts
  • examples/daily-work.md — terse for standups and status updates
  • examples/deep-work.md — when NOT to use terse

contributing

PRs welcome. four kinds of contributions are especially appreciated:

  1. new modes. one file in modes/, following the existing template (rules, example, when-not-to-use, typical reduction). add corresponding compressed versions to corpus.json and re-run the benchmark.
  2. larger corpus. more prompts per category, or new categories. keep corpus.json human-readable.
  3. true tiktoken calibration data. if you run the benchmark with tiktoken installed, PR the calibration numbers.
  4. preservation rules. edge cases we missed.

license

MIT. see LICENSE for the full terms including warranty disclaimer and liability limitation.

disclaimer

educational and experimental use only. no warranty, no fitness for any purpose, no professional advice.

terse is an experimental, open-source project released under MIT. it is not audited, certified, or validated for any commercial, regulated, or mission-critical use. outputs are AI-generated and may contain errors. compressed responses can lose nuance that matters in specific contexts — you are responsible for verifying every output before acting on it.

do your own research. do not use terse for:

  • security audits, incident response, or vulnerability disclosure
  • legal, medical, financial, tax, or compliance advice
  • safety-critical, life-critical, or regulated systems
  • anything where a missing caveat could cause harm

for the full terms, including the warranty disclaimer, liability limitation, trademark notices, and non-affiliation statement, read:

  • DISCLAIMER.md — full experimental/educational terms
  • NOTICE.md — trademark acknowledgments and third-party attributions
  • SECURITY.md — scope, threat model, and reporting
  • LICENSE — MIT license (warranty disclaimer binding)

not affiliated with Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic, PBC. references are nominative only.

credits

inspired by @JuliusBrussee/caveman — tribute, then engineer. the original's meme energy was the spark; terse is what happens when you take the idea seriously.

built by Dragoon0x. contributions welcome under MIT.

About

claude code skill that compresses claude's responses 58-78% with engineered preservation rules. 10 modes, 5 levels, 101 tests, measured benchmarks. experimental and educational, dyor.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors