Claude Modsunofficial directory

Automation·terminal · desktop·MIT

hope

Judges each turn's edits for slop; accept, edit or reject every finding.

moo.md cover for hope: the project name over an orange square, a green circle and a blue triangle
Cover image from the moo.md repository, MIT license

hope’s mod is the slop hook: after a turn in which Claude edits files, it has those files judged and lists what the judge flags above the prompt, one finding at a time, for you to accept, edit or reject. Nothing goes back to Claude unless you send it yourself.

hope is the main plugin of moo.md, Saad Shahd’s set of skills for keeping the decisions with you when an agent does the work. Most of it is skills: /hope:intent and /hope:shape turn a rough request into a confirmed goal and a chosen approach through interactive questions, /hope:freeze snapshots outside state, and /hope:router sends the doing to subagents. This page covers the hook.

What it does

  • A slop N button appears above the prompt when the judge has flagged something in the files the last turn edited.
  • The pane it opens shows one finding at a time: file and line, what is wrong, the rule it breaks and, when the judge suggests one, the fix as a diff. The row above the prompt becomes slop 1 of N with accept, edit and reject.
  • Accept writes the suggested diff straight into the file, with no turn and no tokens. If those lines are gone or appear in several places, a toast says so and the finding stays. A finding without a diff goes on a list for Claude.
  • Edit opens a field for what Claude should do instead. Your note goes on Claude’s list and wins over the judge’s diff.
  • Reject drops the finding, and the same rule on the same file stays quiet afterwards. An accepted or edited one shows again if it comes back.

After the last decision the pane closes. If anything is on Claude’s list, the prompt box gets Fix the slop findings for you to finish and send, and that message carries the findings with their location, diff and your notes. Esc closes the pane and keeps the undecided findings for later.

Install

Needs Claude Code 2.1.287 or later and git.

claude plugin marketplace add saadshahd/moo.md
claude plugin install [email protected]

Work as usual: the button shows up after a turn that edited tracked files and left findings. The README’s other route, npx skills@latest add saadshahd/moo.md, copies the skill files only, without the hook, and the author says to pick one route because both leave every skill installed twice.

How it works

At the end of each main-session turn, the mod reads the transcript since its last check and collects the files that successful Edit, Write, MultiEdit and NotebookEdit calls touched. It runs git status on each and keeps only files git tracks: untracked and ignored files are skipped, including a file Claude has just created and you have not added yet, and so is anything outside a repository.

The list goes to hooks/judge.sh, a script shipped with the plugin, run from the project root with a 10-minute limit. The turn does not wait for it. The script starts a separate claude -p session, so every turn that edits tracked files costs a full model run on your account. That session reads each touched file and explores the rest of the repo with Grep, Glob and Read, and judges only against the preferences in your project’s CLAUDE.md and TASTE.md files: hope ships no rules of its own, so a project without written preferences gets few or no findings. The judge runs with --permission-mode bypassPermissions and no tool allowlist, with all hooks off; only its prompt keeps it to reading and reporting. A judge failure, such as claude missing from PATH, shows as a toast, once per distinct error.

On prompt.submit the mod checks only whether your prompt starts with the fix stem, and then attaches the findings to that one message. Findings and decisions live in the mod’s state inside Claude Code. The hook module itself makes no network calls; the judge’s model requests go through Claude Code like any session.

Limitations

  • Only the main session’s transcript is read, so files a subagent edits, including the work /hope:router sends out, are not judged.
  • The author documents no Claude Code surface for the hook. The code skips the edit button where Claude Code draws no text field.

Similar Claude Mods

The whole directory →