Oct 22, 2026

Stop Your Coding Agent's Busywork With stop-that-shit

stop-that-shit pairs a judgment Skill with a runtime Guard that together curb scope creep, unread checksums, intent violations, and task thrashing in AI coding agents — with documented install paths for Claude Code, Codex, OpenCode, Hermes Agent CLI, Pi, and Oh My Pi.

#tutorial#agent-tools#best-practices

You ask your agent to export a file and it adds a SHA-256 checksum nobody reads, "just in case." You ask for a review; it finds a bug and starts editing. The 3k-star lennney/stop-that-shit repository — its README is Chinese-first, with English and Korean twins — ships a Skill plus a Guard to curb exactly that: unnecessary defenses and scope creep in AI coding agents, across Codex, Claude Code, OpenCode, Hermes Agent CLI, and Pi.

Why This Skill Matters

The README names four behaviors and calls them SHIT: Scope creep (a fix expands into an unrelated refactor), Hashing and hypothetical hardening (an unread checksum or a compatibility layer for an imagined future), Intent violation (you said read-only review; the files changed anyway), and Task thrashing (reading, testing, and reviewing restart with no change or new question). The counterweight is stated just as plainly: meet the task's responsibilities in full — if that requires more files, a migration, or cross-component tests, complete them.

The two halves split the work. The Skill guides engineering judgment through a five-step order (what must be delivered, can existing tools do it, what concrete gap remains, what does this defense do, is the result verified). The Guard checks explicit boundaries before supported tool calls. The README's before/after example differs by one line:

await writeFile("report.csv", csv);
await writeFile("report.csv.sha256", createHash("sha256").update(csv).digest("hex"));

With nothing downstream reading the digest, the STS rule leaves await writeFile("report.csv", csv); — and the README immediately adds the other side: if the release process reads the checksum and rejects mismatches, keep it and set hash=allow.

Installation

The README documents install paths for six hosts; most require Node.js 18 or newer (Pi 0.84.4 itself requires 22.19 or newer). For Claude Code, download and extract the 0.2.5 source, then run from the checkout root:

claude plugin validate .
claude plugin marketplace add ./
claude plugin install stop-that-shit@stop-that-shit

Restart Claude Code or run /reload-plugins. Codex users get a two-command path, codex plugin marketplace add lennney/stop-that-shit --ref 0.2.5 followed by codex plugin add stop-that-shit@stop-that-shit — the README notes --ref pins the install to a version tag instead of mutable main, and asks you to inspect the packaged Hook list under /hooks before trusting the commands. OpenCode 1.18.18 or newer installs it globally with opencode plugin github:lennney/stop-that-shit -g, which installs the Guard only; the bundled Skill and the optional /sts alias are not registered automatically. For guidance without runtime enforcement, the README's INSTALL.md covers a Skill-only install.

Real Workflow: A Review That Stays Read-Only

Start the first non-empty line of your message with one directive, outside quotes and code blocks, and put the task after --. In Codex or any host-neutral prompt:

$stop-that-shit review -- Review this diff. Report findings; do not edit.

In the Claude Code plugin the same directive is /stop-that-shit:stop-that-shit review -- ...; the Pi Skill uses /skill:stop-that-shit. The directive table has six rows: review (review and report findings), answer, monitor (keep checking and reporting), change (permit changes needed to complete the task), watch (observe actions without blocking), and status / runtime (inspect the current state and local records).

With the Guard armed, the README's table says what happens by default: a write during review, answer, or monitor stops; adding a dependency asks (deps=allow permits it); launching a subagent stops above the agents=N budget; a recognized hash operation stops (hash=allow permits it); a write outside files= stops. Parameters tighten the boundary when the task calls for it — lock change files=src/config.cjs|test/config.test.cjs, change deps=allow, change hash=allow, change agents=1. The README's own caution: if you do not yet know every affected file, trace the call path before setting files=.

Tips

  • Installation starts in OBSERVING / unconfirmed; an explicit review, answer, monitor, or change sets the Guard to ARMED. watch always observes without blocking. That is the FAQ's answer to "I installed it. Why is nothing blocked yet?"
  • The Guard does not decide that a cache, retry, or migration is unnecessary from its name — it checks authority; the task determines the purpose.
  • The repository publishes 18 Bad/Good decision cases covering read-only review, affected callers, shipped-data migrations, release checksums, and file, dependency, and subagent boundaries; EVIDENCE.md records tests and historical Codex / GPT-5.6 runs, including results with no difference.
  • An optional second Skill, Stop That Shit Slop (STSS), trims defensive padding from prose — rewrite is the default mode, audit reports findings and the smallest proposed fix. It installs alone, without a Hook, via npx skills add ./skills/stss --global from the repository root.
  • Runtime events do not store code or conversation text, per the FAQ; session state keeps explicit paths, correlation IDs, and directive errors — inspect it before sharing plugin data.

When Not to Use This

A Skill-only install has no runtime enforcement; if you want the stop stamp, install the Guard for your host. And the stamp is a denial, not proof: the FAQ says permission_deny_returned means the Guard returned a denial, the host's final action needs separate observation (the Runtime records hostEffect: unobserved), and security isolation stays with the host sandbox. If your agent is already disciplined and the problem is a missing spec rather than extra work, a boundary Guard will not write the spec for you.


See the leaderboard for more skills.