moo.md
saadshahd · saadshahd/moo.md
Plugin Claude Code này giúp người dùng giữ vai trò hiện diện trong các quy trình làm việc do AI điều khiển bằng cách đảm bảo việc ra quyết định của con người được tích hợp vào quá trình.
Luôn hiện diện với AI. Một plugin của Claude Code giúp bạn hiểu rõ những gì bạn chịu trách nhiệm.
Xem trước
Bạn có thể làm gì với nó
- Tích hợp các quyết định của con người vào các quy trình làm việc agentic phức tạp.
- Kiểm soát hành vi của agent bằng vòng lặp quyết định "hope" rõ ràng.
- Đảm bảo hiểu đầy đủ các hành động và đầu ra của agent.
Kiểm tra an toàn
Không thấy dấu hiệu rủi ro trong các file đã quét.
Quét tự động các file trong repo. Luôn xem lại code trước khi chạy.
Trích từ README
Why introduce friction? Because YOU the human end up being the world model. The agent is just your hands.
moo/hope doesn't build, and doesn't author your code, rules, or taste. It works alongside build tooling like superpowers.
One idea runs through every layer: never delegate a decision.
Installation (30-second setup)
Two ways in, two philosophies. The Claude Code plugin installs each layer as a managed bundle that updates when I ship — you subscribe rather than fork. skills.sh copies editable skill files into your project, on any agent, so you can make them your own. Pick one — installing both leaves you with every skill twice.
1. Get the skills
Claude Code
/plugin marketplace add saadshahd/moo.md
/plugin install hope@moo.md
hope is the decision loop, and the reason to be here. More layers ship from the same marketplace: hold@moo.md, comprehension at your own pace, sound@moo.md, code taste as installable rules, and hunch@moo.md, experiments that graduate or die.
Codex, Cursor, Copilot, and other agents
npx skills@latest add saadshahd/moo.md
Pick the skills you want and the agents to install them on — but take hope and hold whole if you take them at all: their skills call each other by name, and a missing one stops the skill that called it. sound and hunch have no such requirement.
They land as ordinary files you own — flat, and without the plugin prefix, so hope:intent arrives as intent and sound:review as review. Watch for collisions with skills you already have.
2. Run the loop
/hope:full <your seed>
Or run the stages directly — /hope:intent <your seed>, then /hope:shape <your intent>.
A loop
The loop is pure decision work. You drive it slowly, in your own context.
Every piece of work starts as a raw <seed>, the rough thing you fully typed. It is the one artifact that is fully yours.
/intent and /shape do not make the seed more honest. They make it explicit and specified. Each surfaces a decision as an interactive question, every choice previewed, a few at a time, and you answer. Every added detail stays yours because you chose it. /intent turns the <seed> into a confirmed statement of what you want. /shape turns that <work order> into a chosen approach before any code exists.
The outcome is short enough to carry comfortably outside the context window.
An anchor
freeze anchors the work to what is observed, not what you remember. When a stage depends on state that lives outside the repo — a service, a database, a queue, live logs — that state keeps moving, and memory of it goes stale the moment you look away.
freeze snaps the slice your work touches into one immutable value: every fact observed live or named as an open gap, never inferred. The stages decide against a fact, not a guess. It is the ground the other three stand on — and repo-local work skips it.
A mode
router is the line between deciding and doing.
You keep every decision. The session spawns agents and verifies their output, doing no work itself — only tactical, observable work fans out: implement, test, verify, audit, explore.
This is also what stops compaction from silently rewriting your context. The verbose doing never enters your main thread, so it can never quietly mutate what you decided.
Overview
| The trap | Layer | Guard |
|---|---|---|
| AI fills in your decisions | /hope:intent & /hope:shape | interactive questions, each choice previewed |
| compaction mutates & drifts your context | /hope:router | doing stays out, deciding stays in |
| stale or remembered external state | /hope:freeze | snapshot facts, never infer |
Reading
- The Engineer's Anxiety at the Penalty Kick — "Ownership without comprehension is just a signature."
- One Flew Over the Context Window — what the agent never carries between sessions.