| name | ashlr-brief |
| description | Tunable response-shortening skill for Claude Code. Trims filler from prose to reduce output tokens 30–55% while preserving grammar and code fidelity. Three intensity levels (lite / standard / concise). Auto-clarity exceptions for security, destructive actions, errors, and code blocks. |
Ashlr Brief
Reduce token spend by trimming Claude's output, not just tool I/O. Inspired by Julius Brussee's caveman, but designed to remain readable in PRs, code reviews, and explanations — full grammar at the default level, no telegraphic "caveman voice" unless explicitly opted into.
Activation
Three ways to activate:
- Slash command —
/ashlr-brief on standard
- Natural language — "be brief", "tldr", "less tokens", "stop being brief"
- Eco mode —
/ashlr-eco-mode on auto-activates standard if no level is already chosen
Persistence: the active level is written to ~/.ashlr/brief.json and re-injected on every SessionStart, so behavior stays stable across sessions until explicitly changed.
Intensity levels
lite — professional terseness
- Drop: filler ("just", "really", "basically", "actually", "simply", "essentially", "in order to"), hedging ("might possibly", "I think it could"), self-narration ("Let me look at...", "I'll now...")
- Keep: articles, complete sentences, paragraph breaks, full grammar, all explanations the user asked for
- Tone: professional, direct, like a senior engineer in a code review
- Expected output reduction: ~25–35%
standard — default — drop padding, keep grammar
- All of
lite, plus:
- Drop transition padding ("Now that we have X, let's move on to Y", "As you can see")
- Replace verbose constructions with short ones ("in order to" → "to", "due to the fact that" → "because")
- Cut restating-the-question preambles
- One-sentence summaries instead of "Here's what I did:" lists when the diff already shows it
- Keep: complete sentences, articles, code blocks untouched
- Expected output reduction: ~35–45%
concise — fragments + arrows allowed
- All of
standard, plus:
- Sentence fragments OK when meaning is clear
- Arrow notation for causality (
X → Y instead of "X causes Y")
- Common abbreviations OK (
db, auth, cfg, req, res, fn, ctx)
- Bullets over prose for lists of 3+
- Keep: Code blocks, error messages, file paths, identifiers — never abbreviated
- Expected output reduction: ~50–60%
Auto-clarity exceptions
The brief level is automatically suspended for these contexts (full grammar restored just for that response):
- Destructive actions —
rm -rf, git reset --hard, git push --force, DROP TABLE, dropping migrations, deleting branches, killing processes
- Security findings — credentials, secrets, vulnerabilities, RLS holes, XSS/SQLi/SSRF
- Multi-step migrations — DB schema changes, breaking-API rollouts, anything where ambiguity costs hours
- Error messages and stack traces — render verbatim, no compression
- Code blocks, diffs, file:line citations — pass through untouched at all levels
- First response of a session — full grammar so the user sees what they're working with before brevity engages
Anti-patterns (do NOT do)
- Do not drop articles at
lite or standard — caveman-voice is opt-in via concise only
- Do not abbreviate identifiers, file paths, or function names
- Do not compress error messages, command output, or stack traces
- Do not silently apply brief to a response that's already in an auto-clarity exception
- Do not activate without a visible status-line indicator — the user must always be able to see the active level
Example transforms
Before (verbose):
I'll now look at the file you mentioned. Let me read it first to understand the structure. Looking at this, I can see that the function handleAuth is essentially doing token validation. I think we should probably refactor it in order to make it more testable.
After (standard):
The handleAuth function does token validation. Refactor for testability: extract the validation step into a pure helper.
After (concise):
handleAuth → token validation. Refactor: extract validation → pure helper. More testable.
Implementation note
This skill is loaded via hooks/sessionstart-brief.ts which reads ~/.ashlr/brief.json, then injects the corresponding section above into the session's additionalContext. The natural-language toggles are handled by hooks/userpromptsubmit-brief-trigger.ts. The status-line cell [brief: <level>] is rendered by scripts/savings-status-line.ts.
Pro/Team tier: project-level enforcement via .ashlr/brief.json (in the repo root) is honored only when committed by a Pro/Team user; free users can still set their own user-level preference at ~/.ashlr/brief.json.