Stop your coding agent narrating every line back to you

chl03ks1 pts0 comments

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...

code claude shut session comments item

Related Articles