Automation·terminal · desktop·MIT
hope
Judges each turn's edits for slop; accept, edit or reject every finding.

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 Nbutton 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 Nwith 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:routersends 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
typesafe-mod
TypeSafe's Jev scores the agent's this-or-that questions, or answers them for you.
Human in the loop
Claude assigns you what only you can do. Tasks wait in a pane until you answer.
loop-detective
Opens a case when the same Bash command keeps failing the same way, with the evidence.
effortless
Picks the effort for every prompt and shows how long the prompt cache stays warm.
Popular Claude Mods
The whole directory →claude-skins
Fifteen transcript skins: timed tool rows, diff, table and chart cards, a usage band.
Habblaud
A pixel-art office where each Claude Code agent shows, live, what it is doing.
pii-guard
Reversible Taiwanese PII redaction for tool results, prompts and writes, all on loopback.
worktree-map
Every git worktree of the repo with its path, HEAD, branch and lock state, in a pane.





