GitHub - chl03ks/shut-up-and-code: Load-bearing comments only. Stops Claude Code narrating your code back to you in comments. · GitHub
/" data-turbo-transient="true" />
Skip to content
Type / to search
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
chl03ks
shut-up-and-code
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>3 Commits<br>3 Commits
.claude-plugin
.claude-plugin
hooks
hooks
skills/shut-up-and-code
skills/shut-up-and-code
.gitignore
.gitignore
INSTALL.md
INSTALL.md
LICENSE
LICENSE
README.md
README.md
View all files
Repository files navigation
shut-up-and-code
Load-bearing comments only. A Claude Code plugin that stops the agent narrating your code back to you.
Claude comments reflexively. Most of what it writes restates the line below it, and a rule in CLAUDE.md doesn't reliably stop it. This ships that rule as a skill instead — as something Claude can load on its own, or that gets injected at the top of every session.
The difference
Before:
// Function to calculate the total price<br>function calculateTotal(items: Item[], taxRate: number): number {<br>// Initialize the sum<br>let sum = 0;<br>// Loop through all the items<br>for (const item of items) {<br>// Add the item price to the sum<br>sum += item.price;<br>// Apply the tax rate and return<br>return sum * (1 + taxRate);
After:
function calculateTotal(items: Item[], taxRate: number): number {<br>let sum = 0;<br>for (const item of items) {<br>sum += item.price;<br>return sum * (1 + taxRate);
Nothing was lost. That's the point.
Install
claude
Then, in the session:
/plugin marketplace add chl03ks/shut-up-and-code<br>/plugin install shut-up-and-code@shut-up-and-code
Two ways to use it
1. Call it. Type the skill name in any session:
/shut-up-and-code
It applies from there until the session ends. Claude will also reach for it on its own when it's about to write code.
2. Always-on. Create the flag file once, and the ruleset is injected at the start of every session — on startup, resume, clear, and compact:
touch ~/.claude/.shut-up-and-code-always
You'll know it's live because the session opens with:
SHUT UP AND CODE ACTIVE (always-on).
Turning it off
Scope<br>How
This session<br>Say normal comments
Always-on, permanently<br>rm ~/.claude/.shut-up-and-code-always
Uninstall<br>/plugin uninstall shut-up-and-code@shut-up-and-code
What it actually enforces
The default is no comment. A comment ships only if it's load-bearing — delete it, and a competent reader loses something the code cannot tell them. In practice, four kinds survive:
Why, not what — a decision, tradeoff, or constraint the code can't express. // Retry 3x — the upstream 502s on cold start.
A landmine — something that looks safe to change and isn't. // Set the auth header before reading the body.
A pointer out of the file — a ticket, RFC, spec section, or upstream bug that explains the code's shape.
A toolchain annotation — // eslint-disable-next-line, # type: ignore, pragmas, codegen markers.
It also redirects the urge elsewhere: rename the variable, extract the function, write the test, put it in the commit message, or just say it in the chat reply. And it leaves comments in code you're only passing through alone — the rule governs what Claude writes, not a licence to strip your codebase.
Full ruleset: skills/shut-up-and-code/SKILL.md.
Why a skill and not a CLAUDE.md line
Verbose commenting is the model's default, and defaults beat instructions. People report CLAUDE.md rules, memory entries, and hooks all failing to suppress it (claude-code#65961). A skill lands as a loaded document at a point where the model is deciding how to write, which holds better than a line competing for attention with the rest of your config.
If you want the root-cause fix as well, some report that Opus gets a shorter system prompt than Sonnet, with the anti-verbosity rules trimmed out. Forcing the long one is one line in ~/.claude/settings.json:
{ "env": { "CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT": "0" } }
That's a community finding, not documented behaviour. The two stack.
Prior art
The always-on mechanism is lifted from i-have-adhd by Ayoub G., which does the same thing for response style rather than code. Same shape: a skill, a flag file, a SessionStart hook.
License
MIT
About<br>Load-bearing comments only. Stops Claude Code narrating your code back to you in comments.<br>Topics<br>ai-codingclaude-codeclaude-code-plugincode-commentsdeveloper-tools<br>Resources<br>Readme<br>MIT license<br>Activity<br>Stars<br>6 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report...