Unfuck Claude banner
dogekiller21 dogekiller21

Unfuck Claude

Development community

Description

Comments are bad for agents. Let them read code, not your docstrings

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

unfucked

Code describes itself. A comment is a defect budget, not documentation.

One marketplace, two plugins:

plugin what it adds install when
unfucked /unfucked:unfucked loads the comment rules into the session; /unfucked:unfuck-comments fixes an existing codebase you want the rules on demand and a fixer
unfucked-extended a hook injects the rules into every session and subagent; another hook checks every Edit / Write and hands violations back to the agent as an error you want the agent unable to forget

They are independent. `unfucked-extended` carries its own copy of the rules, so it works without the base plugin; install both to also have the fixer.

Install

claude plugin marketplace add dogekiller21/unfuck-claude
claude plugin install unfucked@unfucked
claude plugin install unfucked-extended@unfucked

Or from inside a session: `/plugin marketplace add dogekiller21/unfuck-claude`, then `/plugin install unfucked@unfucked` and `/plugin install unfucked-extended@unfucked`. Restart the session; hooks load on start.

The marketplace is named `unfucked` in its manifest, hence `@unfucked` even though the repo is `unfuck-claude`.

Off: `claude plugin disable unfucked-extended`.

Commands

`/unfucked:unfucked` — prints the rules into context. With `unfucked-extended` installed this happens automatically; run it by hand only to re-assert the rules late in a long session.

`/unfucked:unfuck-comments [paths] [instructions]` — the fixer. No arguments: uncommitted work, or the whole repo if there is none. Paths, globs, or a git range: exactly those. Free text is an instruction for that run ("keep the TODOs"). Reports one line per file.

What the hook checks

Mechanical rules only. Semantic ones (a comment that restates the name, a docstring that repeats the signature) stay with the agent, which has the rules in context.

check example that fails
history `# now we don't close the con