From mbscode
Guides the verify-and-close flow. Use when work is done and you're ready to complete a task, or when the TaskCompleted hook blocked you.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mbscode:completingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Self-check your work against the verifier's 8 steps, invoke the completion-verifier agent, fix any findings, then close the task. The hook blocks completion until the agent passes.
Self-check your work against the verifier's 8 steps, invoke the completion-verifier agent, fix any findings, then close the task. The hook blocks completion until the agent passes.
When NOT to use:
Don't waste an agent invocation on known gaps. The verifier runs 8 steps. Steps 1-2 are internal (metadata parsing). Steps 3-8 check your work. Check them yourself first:
Read acceptance in your task metadata. For each criterion, can you point to the exact file and line that implements it? If not, it will fail.
Read doc_targets. Open each doc. Does it reflect what you actually built? Not "does it exist" — does the content match your changes?
Check rules.md for "When X changes, update Y" rules. Did X change? Is Y updated?
For each source file in owned_paths — does a test file exist? Does it test the new behavior, not just old behavior?
Skip this check if your task only touches config, docs, or markdown files.
Scan your code for surface issues:
console.log, debugger, print("DEBUG") → removecatch (e) {} with no explanation → handle or comment why// TODO: add validation for something in your acceptance criteria → do it nowThis is the most common rejection reason. The verifier checks three dimensions:
Simplicity — read each function/class you wrote:
Cleanliness — scan for structural dirt:
if (retries > 3), setTimeout(cb, 86400000) → name them: MAX_RETRIES, MS_PER_DAYExtensibility — check for future pain:
Balance: Don't over-engineer for extensibility. 2 cases don't need a registry. A utility used once doesn't need dependency injection. Only fix this if the complexity is already there.
If anything fails in these checks, fix it before calling the agent. A 2-minute self-check saves a 5-minute failed verification cycle.
"Verify task <task_id> for completion."
The agent reads your actual files — acceptance criteria against source code, docs against changes, test files against new behavior, standing rules against project state.
Pass → proceed. Fail → fix findings, invoke again.
After the agent passes:
// .mbscode/tasks/<id>.json
{ "verified": true }
Then mark the task complete. The hook checks verified: true + acceptance non-empty → allows completion.
When the agent returns findings:
❌ Task blocked:
- [ACCEPTANCE] "Rejects expired tokens" — no expiry check in auth.ts:22
- [DOCS] docs/API.md missing POST /auth/verify endpoint
- [TESTS] src/services/token.ts has no test file
- [STRUCTURE] src/routes/users.ts:createUser() — 87 lines, mixes validation,
hashing, DB insert, email sending. Split by concern.
- [STRUCTURE] src/config.ts:12 — hardcoded "mongodb://localhost:27017",
should be environment variable or config parameter
- [QUALITY] src/utils/retry.ts:8 — magic number `if (attempts > 3)`,
use named constant MAX_RETRY_ATTEMPTS
Don't argue with findings. Fix them or adjust your criteria.
The verifier checks what YOU defined. If it rejects something unfairly:
override: { reason: "..." } to metadata. See recovery skill.Before marking the task complete:
verified: true set in task metadataacceptance is non-empty| Excuse | Reality |
|---|---|
| "Agent is too strict" | It checks what YOU defined. Wrong criteria? Update them. |
| "I'll fix docs next task" | Verifier checks now. Fix now. |
| "Agent keeps failing, I'll override" | Fix the issues. Override is for genuine exceptions. |
| "Self-check is a waste of time" | A 30-second self-check saves a multi-minute failed verification. |
| "I already know it passes" | Then the agent will confirm in seconds. Invoke it anyway. |
| "Just this once without verification" | The hook will block you. There is no "just this once." |
| "The structure is fine, it works" | Working code and clean code are different things. The verifier checks both. |
| "Refactoring the function is out of scope" | If YOU wrote the 80-line god function in this task, splitting it IS in scope. |
| "It's just one magic number" | Name it. 10 seconds now saves confusion for every future reader. |
verified: true without invoking the agentProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub mbstools/mbscode --plugin mbscode