Install
/plugin marketplace add raiyanyahya/justsaydoneInstall command taken from the project's README or registry entry. Always review code before running it.
README excerpt
Read full README on GitHub →justsaydone
A mode for Claude Code that does the work and replies with one word.
No "Here's what I changed." No "Let me know if you need anything else." No recap of
the diff you're about to read anyway. You asked for a thing, the thing happened, done.
The idea
We ❤️ Claude Code and it is a great engineer but a chatty coworker. Most of that chatter — the opening "I'll start by…", the running narration, the closing paragraph that re-summarizes the diff — restates what your diff, your test output, and your own prompt already told you. It costs output tokens, and it costs you the seconds spent reading past it.
justsaydone is a mode you flip on on purpose — for a focused session, or for a
whole project — when your workflow is already:
type task → glance at the diff → move on.
Claude still plans, edits, runs, and verifies exactly as it always does. It just stops narrating. The work is the message.
Before / after
| Without justsaydone | With justsaydone |
|---|---|
"I've created fizzbuzz.py. It loops from 1 to 30 and prints Fizz for multiples of 3, Buzz for multiples of 5, and FizzBuzz for both. Let me know if you'd like tests!" |
done |
"Fixed the off-by-one in average() — it was dividing by len(nums) - 1 instead of len(nums), which skewed the mean. Want me to add input validation too?" |
done |
Install
/plugin marketplace add raiyanyahya/justsaydone
/plugin install justsaydone@justsaydone
That's the whole setup. The mode turns on automatically the moment the plugin is
enabled — there's no /config step. Run /clear or start a new session for it to take
effect.
The escape hatch
Terse by default, verbose on demand. Any time you actually want the recap, just ask —
if your message contains explain, summarize, why, what did you change, or details, Claude gives a full normal answer for that one turn, then
snaps back to terse mode:
> fix the auth bug
done
> explain what you changed
The token check in middleware/auth.ts:42 compared the *decoded* expiry against
seconds instead of milliseconds, so every token read as expired. I switched it to
Date.now() and added the missing early-return. …
> add a test for it
done
Benchmarks
Real numbers, not marketing. The suite in benchmark/ runs actual
headless Claude Code sessions twice each — with and without the plugin — across five
task types, then scores them. Reproduce it yourself with one command (see below).
On the tasks this mode is built for — the do-work-and-report loop — a full sign-off paragraph collapses to a single word: ~90–95% fewer words in the reply.
Latest run (claude -p, Sonnet, 2 runs per arm):
| Task | Reply words →(what the mode controls) | Total session tokens |
|---|---|---|
| Fix a bug | 22 → 1 · −95% | −29% |
| Create a file | 12 → 1 · −91% | +5% (noise, see below) |
| Impossible task (missing file) | 58 → 22 · −63% | −12% |
| Explain code (a question) | 62 → 34 · −45% | −13% |
explain escape hatch |
46 → 26 · −42% | −30% |
| Blended average | 199 → 84 · −58% | −19% |
How to read this honestly:
Similar plugs
CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies
Bash is all you need - A nano claude code–like 「agent harness」, built from 0 to 1
Documented system prompts from Anthropic - Claude Fable 5.1, Opus 5.5, Claude Design, Claude Code. OpenAI - ChatGPT GPT-6-Astra, Codex. Google - Gemini 3.8 Flash, 3.1 Pro,…
Wrap Antigravity, ChatGPT Codex, Claude Code, Grok Build, Muse Code, Devin as an OpenAI/Gemini/Claude/Codex compatible API service, allowing you to enjoy the free Gemini…