/necessary-work
Gate every candidate action against one test: would deleting it leave the requested outcome unmet or unproven? Use when work is about to grow past the ask with an extra check, artifact, abstraction, retry, threshold, or follow-up, when deciding whether the task is already done,
$ npx -y skills add OutlineDriven/odin-claude-plugin --skill necessary-work --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/necessary-work
Context preview
The summary Claude sees to decide when to auto-load this skill.
Gate every candidate action against one test: would deleting it leave the requested outcome unmet or unproven? Use when work is about to grow past the ask with an extra check, artifact, abstraction, retry, threshold, or follow-up, when deciding whether the task is already done,
SKILL.md
necessary-work.SKILL.mdname: necessary-work
description: 'Gate every candidate action against one test: would deleting it leave the requested outcome unmet or unproven? Use when work is about to grow past the ask with an extra check, artifact, abstraction, retry, threshold, or follow-up, when deciding whether the task is already done, or when the user says minimum, only what is needed, or stop when it works. Applies to coding, research, planning, debugging, review, and writing alike.'
Necessary Work
Do only the work that satisfies and proves the requested outcome.
Kernel
For every candidate action `c`:
delete(c) => outcome unmet or unproven ? do_minimum(c) + prove(c) : reject(c)
- Define the requested outcome and the minimum proof before acting.
- Nothing is necessary merely because it is useful, conventional, safer, cleaner, or more thorough.
- Add no constraint, process, artifact, abstraction, check, or follow-up without a source of necessity.
- Prefer the smallest sufficient implementation.
- Once the outcome is proven, stop.
- If ambiguity cannot be resolved, bind the smallest interpretation consistent with stated intent and report it.
Do this
1. Define the contract: the requested outcome plus the minimum evidence that proves it. 2. Treat every possible piece of work as a candidate, never as automatically necessary. 3. Admit a candidate only when removing it would leave the contract unmet or unproven. 4. Execute the smallest reliable action that closes that gap. 5. Stop the moment the contract is proven.
A source of necessity is one of four: the request, the environment, authoritative policy, or measured evidence. Limits, thresholds, retries, budgets, abstractions, artifacts, and process come from one of those four or they do not come at all.
Report
- **Outcome** - what was requested, and that it now holds.
- **Evidence** - what proves it.
- **Rejected** - candidates the kernel dropped, and any ambiguity left unresolved.
Speculative follow-up work is not part of the report.
Verify
- [ ] The contract was written down before work started: outcome plus minimum proof.
- [ ] Every admitted action fails the delete test, so removing it would leave the contract unmet or unproven.
- [ ] Work stopped at the proof, with no useful-but-unrequested additions.
Read more
name: necessary-work description: 'Gate every candidate action against one test: would deleting it leave the requested outcome unmet or unproven? Use when work is about to grow past the ask with an extra check, artifact, abstraction, retry, threshold, or follow-up, when deciding whether the task is already done, or when the user says minimum, only what is needed, or stop when it works. Applies to coding, research, planning, debugging, review, and writing alike.'
Necessary Work
Do only the work that satisfies and proves the requested outcome.
Kernel
For every candidate action `c`:
delete(c) => outcome unmet or unproven ? do_minimum(c) + prove(c) : reject(c)
- Define the requested outcome and the minimum proof before acting.
- Nothing is necessary merely because it is useful, conventional, safer, cleaner, or more thorough.
- Add no constraint, process, artifact, abstraction, check, or follow-up without a source of necessity.
- Prefer the smallest sufficient implementation.
- Once the outcome is proven, stop.
- If ambiguity cannot be resolved, bind the smallest interpretation consistent with stated intent and report it.
Do this
1. Define the contract: the requested outcome plus the minimum evidence that proves it. 2. Treat every possible piece of work as a candidate, never as automatically necessary. 3. Admit a candidate only when removing it would leave the contract unmet or unproven. 4. Execute the smallest reliable action that closes that gap. 5. Stop the moment the contract is proven.
A source of necessity is one of four: the request, the environment, authoritative policy, or measured evidence. Limits, thresholds, retries, budgets, abstractions, artifacts, and process come from one of those four or they do not come at all.
Report
- **Outcome** - what was requested, and that it now holds.
- **Evidence** - what proves it.
- **Rejected** - candidates the kernel dropped, and any ambiguity left unresolved.
Speculative follow-up work is not part of the report.
Verify
- [ ] The contract was written down before work started: outcome plus minimum proof.
- [ ] Every admitted action fails the delete test, so removing it would leave the contract unmet or unproven.
- [ ] Work stopped at the proof, with no useful-but-unrequested additions.
Formerly known as the ODIN Claude Plugin. The repo URL stays the same; the brand has matured.
Repo: OutlineDriven/odin-claude-plugin
Other skills on odin.
- /ai-collab-protocols
Surface in-task AI collaboration protocols one tactic at a time, replacing ambiguous references with durable, recoverable handles.
Open skill - /askme
Explore intent with Verbalized Sampling before planning. Use when the task is ambiguous, you need maximum clarifying questions, or you want collaborative or adversarial mode via `/askme`.
Open skill - /ast-grep
Run code analysis and refactoring with ast-grep. Use when doing AST-based modifications, structural search, linting across code shape, or replacing regex-fragile transformations.
Open skill - /atomic-issues-prs
Publish a change-set as atomic GitHub issues or PRs. Use when the user says "atomic PRs" or wants one issue/PR per logical change.
Open skill - /audit-project
Run an iterative multi-agent code audit until critical and high findings are resolved. Use when the user says "audit my code", "find all the bugs", "deep code audit", "iterative review", or "review until clean".
Open skill - /autolearn
Compound a solved problem into a durable in-repo learning doc. Use when a verified non-trivial fix lands, the user says "compound this", "document this fix", or "remember this". This is the automatic-capture entry point; for an explicitly requested one-off write-up, use compound.
Open skill

