justsaydone

skill
Guvenlik Denetimi
Basarisiz
Health Gecti
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 14 GitHub stars
Code Basarisiz
  • rm -rf — Recursive force deletion command in benchmark/run.sh
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Up to 95% shorter replies with Claude Code. Save output token spend.

README.md

justsaydone

Built for Claude Code
CI
Replies up to 95% shorter
License: MIT

A mode for Claude Code that does the work and replies with one word.

Demo: two tasks each answered with just 'done', then 'why?' gets a full explanation

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:

  • On build tasks the mode is decisive: ~90–95% shorter replies. That's the loop you
    spend most of a session in, so that's the range you actually feel.
  • The 58% "blended average" is deliberately conservative. It weights the two verbose
    scenarios — the explain escape hatch and the "explain code" question — equally with
    the work tasks, even though those are supposed to stay long and a real session has far
    more work turns than questions. Read it as a floor, not the typical case.
  • Total session tokens move less, and that's expected. Most of a coding turn's output
    is the code itself, streamed as tool arguments — which this mode deliberately never
    touches. On a pure file-creation task with almost no prose to cut, that code-writing
    dominates and is just run-to-run noise — which is why the create row can even land
    slightly above baseline (+5% here). The savings are real and grow with how prose-heavy
    your turns are; they are not a headline "cut your bill in half" claim, because that
    wouldn't be true.
  • Questions still get real answers. explain and the escape hatch stay complete —
    they're tighter, not truncated.

It never lies to save words

The one rule that overrides brevity: Claude only says done when the work actually
succeeded and was verified.
If something failed, was blocked, or couldn't be checked,
it says so in one line instead — a false done is the worst possible output. In the
benchmark, the impossible-task run correctly reported the missing file every time and
never once claimed success.

Situation What you get
Task done & verified done
Task failed / blocked one line saying what broke or what's needed — never done
You asked a question the shortest complete answer
You said explain / why a full, normal response, just this once

Reproduce the benchmark

No special access needed — just the claude CLI, jq, and python3:

git clone https://github.com/raiyanyahya/justsaydone
bash justsaydone/benchmark/run.sh        # runs the A/B sessions, then scores them

run.sh spins up the same task in throwaway directories with and without the plugin;
report.py prints the table above and asserts the behavior —
that done appears only on real success, that questions get answered, that the escape
hatch fires, and that the actual code still gets written correctly. It exits non-zero if
any check fails, so it doubles as a regression test.

What it actually is

A single output style shipped as a
plugin with force-for-plugin: true. That flag is what makes it apply automatically on
install. It sets keep-coding-instructions: true, so every one of Claude Code's
built-in engineering instructions stays intact
— scoping, verification, comment style,
all of it. The plugin adds terseness to how Claude talks; it changes nothing about how
Claude codes.

justsaydone/
├── .claude-plugin/
│   ├── plugin.json          # manifest
│   └── marketplace.json     # the repo is its own marketplace
├── output-styles/
│   └── justsaydone.md       # the mode itself
└── benchmark/
    ├── run.sh               # A/B session runner
    └── report.py            # scorer + behavior assertions

Turn it off

/plugin

Disable justsaydone, then /clear. Chatty Claude returns.

License

MIT © Raiyan Yahya

Yorumlar (0)

Sonuc bulunamadi