[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C1DAYQR2FTDNR38CFPD8TY":3,"skill-same:01M7C1DAYQR2FTDNR38CFPD8TY":50},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":26,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":29,"install":30,"resources":43},"01M7C1DAYQR2FTDNR38CFPD8TY","verify-completion",null,"Use when about to claim work is complete, fixed, or passing, before committing or creating MRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","zak-keown\u002Fmoe","zak-keown","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F320717241?v=4","01M7BZFXME0NW6TQX0H7AZM2KS","01M7BZFXN32VR0JN5AATRD53H4",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002F.kimi-plugin\u002Fskills\u002Fverify-completion\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: verify-completion\ndescription: Use when about to claim work is complete, fixed, or passing, before committing or creating MRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always\n---\n\n# Verification Before Completion\n\n## Overview\n\n**Core principle:** Evidence before claims, always.\n\n**Violating the letter of this rule is violating the spirit of this rule.**\n\n## The Iron Law\n\n```\nNO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE\n```\n\nIf you haven't run the verification command in this message, you cannot claim it passes.\n\n## The Gate Function\n\n```\nBEFORE claiming any status or expressing satisfaction:\n\n1. IDENTIFY: What command proves this claim?\n2. RUN: Execute the FULL command (fresh, complete)\n3. READ: Full output, check exit code, count failures\n4. VERIFY: Does output confirm the claim?\n   - If NO: State actual status with evidence\n   - If YES: State claim WITH evidence\n5. ONLY THEN: Make the claim\n\nSkip any step = lying, not verifying\n```\n\n## Common Failures\n\n| Claim | Requires | Not Sufficient |\n|-------|----------|----------------|\n| Tests pass | Test command output: 0 failures | Previous run, \"should pass\" |\n| Linter clean | Linter output: 0 errors | Partial check, extrapolation |\n| Build succeeds | Build command: exit 0 | Linter passing, logs look good |\n| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |\n| Regression test works | Red-green cycle verified | Test passes once |\n| Agent completed | VCS diff shows changes | Agent reports \"success\" |\n| Requirements met | Line-by-line checklist | Tests passing |\n\n## Goal-Backward Verification\n\nThe gate function above stops the most common failure — claiming without\nrunning the command. It does not stop the next-most-common one: running\nthe wrong command. A test-suite pass is evidence for \"these tests pass\",\nnot for \"the user's stated goal is met\", and confusing the two is how a\ngreen suite still ships a broken feature.\n\nWork backward from what the user asked for:\n\n1. **Restate the goal in a single testable sentence.** If the user said\n   \"make the export button work\", the sentence is not \"the button click\n   handler runs\" — it is \"clicking Export downloads a file with today's\n   data\".\n2. **Name the observation that would prove that sentence true.** Not a\n   proxy. Not \"the network call fires\". The end-to-end artifact the user\n   would look at: a downloaded CSV with today's rows, a rendered page, a\n   deployed URL returning 200.\n3. **Choose a verification command that produces THAT observation.** A\n   unit test is evidence for a unit; the goal-observation is what needs a\n   command of its own — a manual click, a curl, an end-to-end run, a\n   screenshot.\n4. **Only then run the local sanity checks.** Tests, lint, build. They\n   are necessary and insufficient: they catch regressions in the pieces,\n   but a green suite over the wrong pieces is silent.\n\nVerification is not permission to manufacture a clean slate. Inspect the\ntarget before acting. If an existing file, process, or remote object could make\nthe observation ambiguous, use an isolated destination or ask before changing\nit; never delete or overwrite user-owned state merely to make the verification\ncommand easier to interpret.\n\nThe failure to catch: every step of the plan passed its own tests, no\nstep's evidence was the goal, and the finished stack does not do the\nthing. Fixture: [tests\u002Fgoal-backward-scenario.md](tests\u002Fgoal-backward-scenario.md).\n\n| Local-check evidence | Goal-backward evidence |\n|---|---|\n| \"The 34 unit tests pass\" | \"I clicked Export and a CSV with today's 12 rows downloaded\" |\n| \"The build exits 0\" | \"The deployed URL returns 200 and renders the new field\" |\n| \"The migration ran\" | \"SELECT on the new column returns the expected shape\" |\n| \"The API test passes\" | \"The UI that calls that API shows the new value\" |\n\nBoth belong in the evidence you cite. The local checks catch regressions;\nthe goal-backward observation catches the wrong-thing-passing-its-tests\nfailure mode a green suite cannot see.\n\n## Red Flags - STOP\n\n- Using \"should\", \"probably\", \"seems to\"\n- Expressing satisfaction before verification (\"Great!\", \"Perfect!\", \"Done!\", etc.)\n- About to commit\u002Fpush\u002FMR without verification\n- Trusting agent success reports\n- Relying on partial verification\n- Thinking \"just this once\"\n- Tired and wanting work over\n- **ANY wording implying success without having run verification**\n\n## Rationalization Prevention\n\n| Excuse | Reality |\n|--------|---------|\n| \"Should work now\" | RUN the verification |\n| \"I'm confident\" | Confidence ≠ evidence |\n| \"Just this once\" | No exceptions |\n| \"Linter passed\" | Linter ≠ compiler |\n| \"Agent said success\" | Verify independently |\n| \"I'm tired\" | Exhaustion ≠ excuse |\n| \"Partial check is enough\" | Partial proves nothing |\n| \"Different words so rule doesn't apply\" | Spirit over letter |\n\n## Key Patterns\n\n**Tests:**\n```\n✅ [Run test command] [See: 34\u002F34 pass] \"All tests pass\"\n❌ \"Should pass now\" \u002F \"Looks correct\"\n```\n\n**Regression tests (TDD Red-Green):**\n```\n✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)\n❌ \"I've written a regression test\" (without red-green verification)\n```\n\n**Build:**\n```\n✅ [Run build] [See: exit 0] \"Build passes\"\n❌ \"Linter passed\" (linter doesn't check compilation)\n```\n\n**Requirements:**\n```\n✅ Re-read plan → Create checklist → Verify each → Report gaps or completion\n❌ \"Tests pass, phase complete\"\n```\n\n**Agent delegation:**\n```\n✅ Agent reports success → Check VCS diff → Verify changes → Report actual state\n❌ Trust agent report\n```\n\n## When To Apply\n\n**ALWAYS before:**\n- ANY variation of success\u002Fcompletion claims\n- ANY expression of satisfaction\n- ANY positive statement about work state\n- Committing, MR creation, task completion\n- Moving to next task\n- Delegating to agents\n\n**Rule applies to:**\n- Exact phrases\n- Paraphrases and synonyms\n- Implications of success\n- ANY communication suggesting completion\u002Fcorrectness\n\n## How this is watched\n\nThe `moe-completion-evidence` Stop hook (default-on) reads the transcript\nwindow **for this turn only** — bounded by the last human-user entry, not a\n`type:\"user\"` tool-result row — and writes an audit record to\n`~\u002F.config\u002Fmoe\u002Fcore\u002Faudit\u002F\u003Cproject-key>\u002F` (never the worktree; a session's\nevidence can run into the tens of megabytes). If it sees a completion-claim\nphrase in this turn's assistant text with no verification command in this\nturn's tool_uses, the record carries a warning and stderr says so. The hook\nnever blocks a stop; it makes the silence falsifiable. Set\n`MOE_EVIDENCE_DISABLED=1` to opt out.\n","# Verification Before Completion\n\n## Overview\n\n**Core principle:** Evidence before claims, always.\n\n**Violating the letter of this rule is violating the spirit of this rule.**\n\n## The Iron Law\n\n```\nNO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE\n```\n\nIf you haven't run the verification command in this message, you cannot claim it passes.\n\n## The Gate Function\n\n```\nBEFORE claiming any status or expressing satisfaction:\n\n1. IDENTIFY: What command proves this claim?\n2. RUN: Execute the FULL command (fresh, complete)\n3. READ: Full output, check exit code, count failures\n4. VERIFY: Does output confirm the claim?\n   - If NO: State actual status with evidence\n   - If YES: State claim WITH evidence\n5. ONLY THEN: Make the claim\n\nSkip any step = lying, not verifying\n```\n\n## Common Failures\n\n| Claim | Requires | Not Sufficient |\n|-------|----------|----------------|\n| Tests pass | Test command output: 0 failures | Previous run, \"should pass\" |\n| Linter clean | Linter output: 0 errors | Partial check, extrapolation |\n| Build succeeds | Build command: exit 0 | Linter passing, logs look good |\n| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |\n| Regression test works | Red-green cycle verified | Test passes once |\n| Agent completed | VCS diff shows changes | Agent reports \"success\" |\n| Requirements met | Line-by-line checklist | Tests passing |\n\n## Goal-Backward Verification\n\nThe gate function above stops the most common failure — claiming without\nrunning the command. It does not stop the next-most-common one: running\nthe wrong command. A test-suite pass is evidence for \"these tests pass\",\nnot for \"the user's stated goal is met\", and confusing the two is how a\ngreen suite still ships a broken feature.\n\nWork backward from what the user asked for:\n\n1. **Restate the goal in a single testable sentence.** If the user said\n   \"make the export button work\", the sentence is not \"the button click\n   handler runs\" — it is \"clicking Export downloads a file with today's\n   data\".\n2. **Name the observation that would prove that sentence true.** Not a\n   proxy. Not \"the network call fires\". The end-to-end artifact the user\n   would look at: a downloaded CSV with today's rows, a rendered page, a\n   deployed URL returning 200.\n3. **Choose a verification command that produces THAT observation.** A\n   unit test is evidence for a unit; the goal-observation is what needs a\n   command of its own — a manual click, a curl, an end-to-end run, a\n   screenshot.\n4. **Only then run the local sanity checks.** Tests, lint, build. They\n   are necessary and insufficient: they catch regressions in the pieces,\n   but a green suite over the wrong pieces is silent.\n\nVerification is not permission to manufacture a clean slate. Inspect the\ntarget before acting. If an existing file, process, or remote object could make\nthe observation ambiguous, use an isolated destination or ask before changing\nit; never delete or overwrite user-owned state merely to make the verification\ncommand easier to interpret.\n\nThe failure to catch: every step of the plan passed its own tests, no\nstep's evidence was the goal, and the finished stack does not do the\nthing. Fixture: [tests\u002Fgoal-backward-scenario.md](tests\u002Fgoal-backward-scenario.md).\n\n| Local-check evidence | Goal-backward evidence |\n|---|---|\n| \"The 34 unit tests pass\" | \"I clicked Export and a CSV with today's 12 rows downloaded\" |\n| \"The build exits 0\" | \"The deployed URL returns 200 and renders the new field\" |\n| \"The migration ran\" | \"SELECT on the new column returns the expected shape\" |\n| \"The API test passes\" | \"The UI that calls that API shows the new value\" |\n\nBoth belong in the evidence you cite. The local checks catch regressions;\nthe goal-backward observation catches the wrong-thing-passing-its-tests\nfailure mode a green suite cannot see.\n\n## Red Flags - STOP\n\n- Using \"should\", \"probably\", \"seems to\"\n- Expressing satisfaction before verification (\"Great!\", \"Perfect!\", \"Done!\", etc.)\n- About to commit\u002Fpush\u002FMR without verification\n- Trusting agent success reports\n- Relying on partial verification\n- Thinking \"just this once\"\n- Tired and wanting work over\n- **ANY wording implying success without having run verification**\n\n## Rationalization Prevention\n\n| Excuse | Reality |\n|--------|---------|\n| \"Should work now\" | RUN the verification |\n| \"I'm confident\" | Confidence ≠ evidence |\n| \"Just this once\" | No exceptions |\n| \"Linter passed\" | Linter ≠ compiler |\n| \"Agent said success\" | Verify independently |\n| \"I'm tired\" | Exhaustion ≠ excuse |\n| \"Partial check is enough\" | Partial proves nothing |\n| \"Different words so rule doesn't apply\" | Spirit over letter |\n\n## Key Patterns\n\n**Tests:**\n```\n✅ [Run test command] [See: 34\u002F34 pass] \"All tests pass\"\n❌ \"Should pass now\" \u002F \"Looks correct\"\n```\n\n**Regression tests (TDD Red-Green):**\n```\n✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)\n❌ \"I've written a regression test\" (without red-green verification)\n```\n\n**Build:**\n```\n✅ [Run build] [See: exit 0] \"Build passes\"\n❌ \"Linter passed\" (linter doesn't check compilation)\n```\n\n**Requirements:**\n```\n✅ Re-read plan → Create checklist → Verify each → Report gaps or completion\n❌ \"Tests pass, phase complete\"\n```\n\n**Agent delegation:**\n```\n✅ Agent reports success → Check VCS diff → Verify changes → Report actual state\n❌ Trust agent report\n```\n\n## When To Apply\n\n**ALWAYS before:**\n- ANY variation of success\u002Fcompletion claims\n- ANY expression of satisfaction\n- ANY positive statement about work state\n- Committing, MR creation, task completion\n- Moving to next task\n- Delegating to agents\n\n**Rule applies to:**\n- Exact phrases\n- Paraphrases and synonyms\n- Implications of success\n- ANY communication suggesting completion\u002Fcorrectness\n\n## How this is watched\n\nThe `moe-completion-evidence` Stop hook (default-on) reads the transcript\nwindow **for this turn only** — bounded by the last human-user entry, not a\n`type:\"user\"` tool-result row — and writes an audit record to\n`~\u002F.config\u002Fmoe\u002Fcore\u002Faudit\u002F\u003Cproject-key>\u002F` (never the worktree; a session's\nevidence can run into the tens of megabytes). If it sees a completion-claim\nphrase in this turn's assistant text with no verification command in this\nturn's tool_uses, the record carries a warning and stderr says so. The hook\nnever blocks a stop; it makes the silence falsifiable. Set\n`MOE_EVIDENCE_DISABLED=1` to opt out.\n",{"name":5,"description":7},"main","728894f3f85fbd4e788f015ddfd72bb6155d5dd5","plugins\u002Fmoe\u002F.kimi-plugin\u002Fskills\u002Fverify-completion",1,"https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe","https:\u002F\u002Fgithub.com\u002Fzak-keown","2026-09-05 06:29:06",{"source":8,"skillName":5,"commands":31,"prompt":41,"zipAvailable":42},[32,35,38],{"tool":33,"command":34},"npx","npx skills add zak-keown\u002Fmoe --skill verify-completion",{"tool":36,"command":37},"bunx","bunx skills add zak-keown\u002Fmoe --skill verify-completion",{"tool":39,"command":40},"pnpm","pnpm dlx skills add zak-keown\u002Fmoe --skill verify-completion","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002F.kimi-plugin\u002Fskills\u002Fverify-completion\u002FSKILL.md",true,[44],{"path":45,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":48,"sourceHtmlUrl":49},"tests\u002Fgoal-backward-scenario.md","REFERENCE","参考文档",3397,"https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002F.kimi-plugin\u002Fskills\u002Fverify-completion\u002Ftests\u002Fgoal-backward-scenario.md",[51,58,65,72,79,84],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":18},"01M7C1Z5362Y8NVRZ69HWP0ZD0","write-skill","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002Fskills\u002Fwrite-skill\u002FSKILL.md",[],[],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":18},"01M7C1YZ9966WK9R6ZRPCGWF3G","write-plan","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002Fskills\u002Fwrite-plan\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":18},"01M7C1YMR4SJD7BPBBPXZCVGVH","write-clearly","Apply Strunk's timeless writing rules to ANY prose humans will read—documentation, commit messages, error messages, explanations, reports, or UI text. Makes your writing clearer, stronger, and more professional.","https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002Fskills\u002Fwrite-clearly\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":18},"01M7C1YH9805YSM0N20VQAVSXF","windows-vm","Create, manage, or connect to a headless Windows 11 VM running in Docker with SSH access. Use when the user wants to spin up, stop, restart, or SSH into a Windows VM.","https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002Fskills\u002Fwindows-vm\u002FSKILL.md",[],[],{"skillNo":80,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":18},"01M7C1YD87SCNEJ2C9B8HFR2NQ","https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002Fskills\u002Fverify-completion\u002FSKILL.md",[],[],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":18},"01M7C1YARDEHT0TJ9BRG30ZCF4","using-moe","Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions","https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002Fskills\u002Fusing-moe\u002FSKILL.md",[],[]]