[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C11FW3N1RJ0S64DFQAYB77":3,"skill-same:01M7C11FW3N1RJ0S64DFQAYB77":54},{"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},"01M7C11FW3N1RJ0S64DFQAYB77","fix-review",null,"Use when a review report already exists and its findings need working off — a CODEBASE-REVIEW.md, an inherited audit, or any list of defects someone else wrote that now has to become commits","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.codex-plugin\u002Fskills\u002Ffix-review\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: fix-review\ndescription: Use when a review report already exists and its findings need working off — a CODEBASE-REVIEW.md, an inherited audit, or any list of defects someone else wrote that now has to become commits\n---\n\n# Fixing A Code Review\n\n## Overview\n\n**The fixing is not the hard part. The record is.**\n\nMeasured, not assumed. Six baseline runs worked findings off a review report\nunder time, authority and exhaustion pressure combined. All six verified each\nfinding against current code before touching it, committed one finding per\ncommit, and refused to bundle. Their own reasoning was better than any rule\nworth writing: *\"a directory is a unit of filesystem layout, not a unit of\nchange\"*, and — on a finding whose cited line had vanished in a refactor —\n*\"the cited line changed is not the defect is gone; a refactor can carry a bug\nto a new line just as easily as delete it.\"*\n\nThen three of them wrote the outcome three different ways: `**Status:**`,\n`**Resolution:**`, `**Status: STALE**`. One updated the report's frontmatter and\ntwo did not. None recorded which commit fixed which finding. **A second run over\nany of those reports could not tell what had already been done**, which is the\none thing this skill exists to make possible.\n\nSo the contract below is the skill. The loop above it is a reminder, not a\nlecture.\n\n**REQUIRED BACKGROUND:** You MUST understand `tdd`. This\nskill assumes the red-green cycle rather than restating it.\n\n## The loop, per finding\n\nThe per-finding discipline is fixed; the dispatch model is not.\n\n### Subagent-driven flow (preferred)\n\nBucket findings by directory (see **Waves** below). Dispatch one subagent per\nbucket, each in its own git worktree, so they run concurrently without\nconflicting on the index. Every subagent follows the same red-green-commit\ncycle and stamps its own dispositions inside its worktree's copy of the report.\n\nWhen a subagent finishes its bucket, it pushes its worktree branch. The\ncoordinator merges each bucket branch in severity order, re-running `pnpm check`\nafter each merge. If a merge conflicts on a source file, the coordinator\nresolves it (the stamp commits never conflict because they touch disjoint\n`CR-###` blocks). If `pnpm check` fails after a merge, stop and fix forward\nbefore merging the next bucket.\n\nUse `sdd` for the dispatch mechanics. The subagent\nprompt includes: the bucket's finding IDs and their full text, the branch name,\nand the instruction to follow this skill's per-finding loop below.\n\n### Serial fallback\n\nWhen subagents or worktrees are unavailable — session policy, runtime limits, a\nharness without subagents — work findings one at a time on one branch, in\nseverity order.\n\n### Per-finding cycle (both flows)\n\n1. **Re-read the cited code.** The report is a snapshot; the tree has moved.\n2. **Decide whether the defect is still real** — and prove it, don't infer it.\n   A vanished line number is not a fix. Grep for the symbol. If a refactor\n   renamed the function, the defect moved with it.\n3. **Red.** A test that fails *because of this defect*. A compile or import\n   error is not red.\n4. **Green.** The smallest change that passes it.\n5. **Commit**, source and test together, one finding per commit:\n   `fix(review): CR-### — \u003Ctitle>`\n   Use `moe jig commit review-fix \u003CCR-ID> \u003Ctitle>` to commit staged changes\n   with the correct format. If `moe-jig` is not on PATH, format the commit\n   manually as `git commit -m \"fix(review): CR-### — \u003Ctitle>\"`.\n6. **Stamp the disposition** into the report, as its own commit, before\n   starting the next finding. Create the stamp commit with\n   `moe jig review stamp \u003CCR-ID> \u003Cfixing-sha>`. The command validates the\n   CR-ID format, confirms the fixing commit is on the current branch, and\n   produces the correctly formatted empty commit. If `moe-jig` is not on PATH,\n   create the stamp manually:\n   `git commit --allow-empty -m \"fix(review): CR-### — addressed by \u003Csha>\"`.\n\n**The stamp is always a separate commit, and it is always per finding.** It\nrecords the sha of the commit that fixed the finding, and no commit can contain\nits own sha — one GREEN run tried folding it in with `--amend` and produced a\nstamp citing a sha that no longer existed. Batching every stamp into one record\ncommit at the end is the other tempting answer and it is worse: a run\ninterrupted mid-batch leaves fixes committed with nothing mapping them to\nfindings, which is the unresumable state this skill exists to prevent. One\nstamp per finding means a crash loses at most one record.\n\nIf the tree is dirty when you finish a finding, you are not finished: commit it\nor `git checkout --` it.\n\n## The disposition contract\n\nEvery finding in `CODEBASE-REVIEW.md` gets these four lines appended to its\nblock. All four are REQUIRED, including on findings you did not fix — a finding\nwith no disposition is indistinguishable from one nobody reached.\n\n```markdown\n**Disposition:** fixed | stale | skipped | deferred\n**Commit:** `abc1234`          \u003C!-- or — when there is no commit -->\n**Resolved:** 2026-09-01\n**Note:** \u003Crequired unless fixed>\n```\n\n| Disposition | Means | Commit |\n|---|---|---|\n| `fixed` | red test written, fix applied, test green, committed | the sha |\n| `stale` | the defect is gone from the tree, and you proved it | `—`, and the Note names the superseding commit |\n| `skipped` | attempted, not applied — the fix broke tests, or the code drifted past recognition | `—`, and every touched file reverted |\n| `deferred` | not attempted — no test framework, documentation-only, environment blocked | `—`, nothing touched |\n\nDeferred and skipped findings do not end when this report does — the report\nends with the review cycle, but the finding still needs attention after it.\nPromote it to the durable backlog:\n\n```bash\nmoe jig backlog add \"\u003Cfinding title>\" --source code-review:\u003CCR-ID> --severity \u003Csev>\nmoe jig backlog defer \u003CBL-ID> --reason \u003Creason> --note \"\u003Cwhy>\" [--next \"\u003Cstep>\"]\n```\n\nRecord the returned `BL-####` in the disposition `Note`. The reason must be a\nrecognized deferral reason — `no-runtime`, `upstream-decision`, `depends-on`,\n`needs-human`, `external-service` for blocks; `budget`, `scope-split` for\ncarry-over, which also needs `--next`. An unrecognized reason files the item as\n`needs-triage` for a human — don't invent a reason to avoid that. If `moe-jig`\nis not on PATH, create the item by hand under `.moe\u002Fbacklog\u002F`.\n\nA `stale` finding still earns a record. It is the only one that produces no\ncommit, so dropping it silently leaves a report claiming eleven findings against\na log showing ten fixes, and the next reader cannot tell which.\n\nResolve [skills\u002Ffix-review\u002Fscripts\u002Fstamp-disposition.mjs](scripts\u002Fstamp-disposition.mjs)\nrelative to this loaded document and stamp with that script rather than by\nhand — it also updates the frontmatter counts, which is the half that gets\nforgotten:\n\n```bash\nnode \"\u003Cresolved-stamp-disposition.mjs>\" \\\n  --id CR-004 --disposition fixed --commit abc1234\n```\n\n## Waves\n\nBucket findings by the directory they touch and work the buckets in order of\ntheir worst severity. Findings in one file share context, so working them\ntogether is cheaper — but they still commit separately.\n\nRe-running this skill on a stamped report skips anything already `fixed` or\n`stale`, which is what makes an interrupted run safe to resume. That property\ndepends entirely on the contract above being complete.\n\n## When the report is wrong\n\nReports are written by a reviewer that could not run the code, and they are\nwrong often enough to plan for. In baseline testing every run that wrote a test\nfirst caught a finding whose stated reproduction did not reproduce.\n\nFix the code, not the report's description of the code — then correct the report\nin the same commit and say so in the Note. A finding whose repro is wrong is\nstill usually a real defect with a bad description; treat a failed reproduction\nas a reason to look harder before it is a reason to mark `stale`.\n\n## Session finalization — compacting fixed findings\n\nWhen every finding in the current session has a disposition, compact the report\nbefore the final commit. This keeps the document navigable as the fixed-issue\ncount grows across sessions — readers care about what is still open, not the\nfull prose of a defect that was resolved three sessions ago.\n\n**What compaction does:**\n\n1. Collect every finding whose disposition is `fixed` or `stale`.\n2. Replace each finding's full block (heading through disposition lines) with a\n   single summary line under the finding's severity section:\n   `- **CR-###:** \u003Ctitle> — \u003Cdisposition> (\u003Ccommit>)`\n3. Append the removed full blocks to a `## Resolved findings` section at the\n   bottom of the document, below `## Checked and found sound` if it exists.\n   Preserve severity ordering within that section.\n4. Refresh the frontmatter counts (the stamp script already does this; the\n   compaction commit updates the body only).\n\nResolve [skills\u002Ffix-review\u002Fscripts\u002Fcompact-resolved.mjs](scripts\u002Fcompact-resolved.mjs)\nrelative to this loaded document, then run compaction with:\n\n```bash\nnode \"\u003Cresolved-compact-resolved.mjs>\" \\\n  --file CODEBASE-REVIEW.md\n```\n\n**The compaction is its own commit:** `chore(review): compact resolved findings`.\nIt touches only the report, never source, so it cannot break the tree.\n\nFindings with disposition `skipped` or `deferred` stay in place — they still\nneed attention. `open` findings (no disposition) obviously stay. A re-run of\nthis skill skips the `## Resolved findings` section entirely and works only the\ninline findings that remain.\n\n## Red flags\n\n- A commit message naming two finding IDs\n- A finding marked `stale` because its line number moved\n- A disposition with no `Commit` line, on a finding that produced a commit\n- Frontmatter counts that disagree with the stamped dispositions\n- Starting the next finding with the tree dirty\n- A compaction that moved `skipped` or `deferred` findings to the resolved section\n- A deferred or skipped finding with no BL-#### in its Note\n","# Fixing A Code Review\n\n## Overview\n\n**The fixing is not the hard part. The record is.**\n\nMeasured, not assumed. Six baseline runs worked findings off a review report\nunder time, authority and exhaustion pressure combined. All six verified each\nfinding against current code before touching it, committed one finding per\ncommit, and refused to bundle. Their own reasoning was better than any rule\nworth writing: *\"a directory is a unit of filesystem layout, not a unit of\nchange\"*, and — on a finding whose cited line had vanished in a refactor —\n*\"the cited line changed is not the defect is gone; a refactor can carry a bug\nto a new line just as easily as delete it.\"*\n\nThen three of them wrote the outcome three different ways: `**Status:**`,\n`**Resolution:**`, `**Status: STALE**`. One updated the report's frontmatter and\ntwo did not. None recorded which commit fixed which finding. **A second run over\nany of those reports could not tell what had already been done**, which is the\none thing this skill exists to make possible.\n\nSo the contract below is the skill. The loop above it is a reminder, not a\nlecture.\n\n**REQUIRED BACKGROUND:** You MUST understand `tdd`. This\nskill assumes the red-green cycle rather than restating it.\n\n## The loop, per finding\n\nThe per-finding discipline is fixed; the dispatch model is not.\n\n### Subagent-driven flow (preferred)\n\nBucket findings by directory (see **Waves** below). Dispatch one subagent per\nbucket, each in its own git worktree, so they run concurrently without\nconflicting on the index. Every subagent follows the same red-green-commit\ncycle and stamps its own dispositions inside its worktree's copy of the report.\n\nWhen a subagent finishes its bucket, it pushes its worktree branch. The\ncoordinator merges each bucket branch in severity order, re-running `pnpm check`\nafter each merge. If a merge conflicts on a source file, the coordinator\nresolves it (the stamp commits never conflict because they touch disjoint\n`CR-###` blocks). If `pnpm check` fails after a merge, stop and fix forward\nbefore merging the next bucket.\n\nUse `sdd` for the dispatch mechanics. The subagent\nprompt includes: the bucket's finding IDs and their full text, the branch name,\nand the instruction to follow this skill's per-finding loop below.\n\n### Serial fallback\n\nWhen subagents or worktrees are unavailable — session policy, runtime limits, a\nharness without subagents — work findings one at a time on one branch, in\nseverity order.\n\n### Per-finding cycle (both flows)\n\n1. **Re-read the cited code.** The report is a snapshot; the tree has moved.\n2. **Decide whether the defect is still real** — and prove it, don't infer it.\n   A vanished line number is not a fix. Grep for the symbol. If a refactor\n   renamed the function, the defect moved with it.\n3. **Red.** A test that fails *because of this defect*. A compile or import\n   error is not red.\n4. **Green.** The smallest change that passes it.\n5. **Commit**, source and test together, one finding per commit:\n   `fix(review): CR-### — \u003Ctitle>`\n   Use `moe jig commit review-fix \u003CCR-ID> \u003Ctitle>` to commit staged changes\n   with the correct format. If `moe-jig` is not on PATH, format the commit\n   manually as `git commit -m \"fix(review): CR-### — \u003Ctitle>\"`.\n6. **Stamp the disposition** into the report, as its own commit, before\n   starting the next finding. Create the stamp commit with\n   `moe jig review stamp \u003CCR-ID> \u003Cfixing-sha>`. The command validates the\n   CR-ID format, confirms the fixing commit is on the current branch, and\n   produces the correctly formatted empty commit. If `moe-jig` is not on PATH,\n   create the stamp manually:\n   `git commit --allow-empty -m \"fix(review): CR-### — addressed by \u003Csha>\"`.\n\n**The stamp is always a separate commit, and it is always per finding.** It\nrecords the sha of the commit that fixed the finding, and no commit can contain\nits own sha — one GREEN run tried folding it in with `--amend` and produced a\nstamp citing a sha that no longer existed. Batching every stamp into one record\ncommit at the end is the other tempting answer and it is worse: a run\ninterrupted mid-batch leaves fixes committed with nothing mapping them to\nfindings, which is the unresumable state this skill exists to prevent. One\nstamp per finding means a crash loses at most one record.\n\nIf the tree is dirty when you finish a finding, you are not finished: commit it\nor `git checkout --` it.\n\n## The disposition contract\n\nEvery finding in `CODEBASE-REVIEW.md` gets these four lines appended to its\nblock. All four are REQUIRED, including on findings you did not fix — a finding\nwith no disposition is indistinguishable from one nobody reached.\n\n```markdown\n**Disposition:** fixed | stale | skipped | deferred\n**Commit:** `abc1234`          \u003C!-- or — when there is no commit -->\n**Resolved:** 2026-09-01\n**Note:** \u003Crequired unless fixed>\n```\n\n| Disposition | Means | Commit |\n|---|---|---|\n| `fixed` | red test written, fix applied, test green, committed | the sha |\n| `stale` | the defect is gone from the tree, and you proved it | `—`, and the Note names the superseding commit |\n| `skipped` | attempted, not applied — the fix broke tests, or the code drifted past recognition | `—`, and every touched file reverted |\n| `deferred` | not attempted — no test framework, documentation-only, environment blocked | `—`, nothing touched |\n\nDeferred and skipped findings do not end when this report does — the report\nends with the review cycle, but the finding still needs attention after it.\nPromote it to the durable backlog:\n\n```bash\nmoe jig backlog add \"\u003Cfinding title>\" --source code-review:\u003CCR-ID> --severity \u003Csev>\nmoe jig backlog defer \u003CBL-ID> --reason \u003Creason> --note \"\u003Cwhy>\" [--next \"\u003Cstep>\"]\n```\n\nRecord the returned `BL-####` in the disposition `Note`. The reason must be a\nrecognized deferral reason — `no-runtime`, `upstream-decision`, `depends-on`,\n`needs-human`, `external-service` for blocks; `budget`, `scope-split` for\ncarry-over, which also needs `--next`. An unrecognized reason files the item as\n`needs-triage` for a human — don't invent a reason to avoid that. If `moe-jig`\nis not on PATH, create the item by hand under `.moe\u002Fbacklog\u002F`.\n\nA `stale` finding still earns a record. It is the only one that produces no\ncommit, so dropping it silently leaves a report claiming eleven findings against\na log showing ten fixes, and the next reader cannot tell which.\n\nResolve [skills\u002Ffix-review\u002Fscripts\u002Fstamp-disposition.mjs](scripts\u002Fstamp-disposition.mjs)\nrelative to this loaded document and stamp with that script rather than by\nhand — it also updates the frontmatter counts, which is the half that gets\nforgotten:\n\n```bash\nnode \"\u003Cresolved-stamp-disposition.mjs>\" \\\n  --id CR-004 --disposition fixed --commit abc1234\n```\n\n## Waves\n\nBucket findings by the directory they touch and work the buckets in order of\ntheir worst severity. Findings in one file share context, so working them\ntogether is cheaper — but they still commit separately.\n\nRe-running this skill on a stamped report skips anything already `fixed` or\n`stale`, which is what makes an interrupted run safe to resume. That property\ndepends entirely on the contract above being complete.\n\n## When the report is wrong\n\nReports are written by a reviewer that could not run the code, and they are\nwrong often enough to plan for. In baseline testing every run that wrote a test\nfirst caught a finding whose stated reproduction did not reproduce.\n\nFix the code, not the report's description of the code — then correct the report\nin the same commit and say so in the Note. A finding whose repro is wrong is\nstill usually a real defect with a bad description; treat a failed reproduction\nas a reason to look harder before it is a reason to mark `stale`.\n\n## Session finalization — compacting fixed findings\n\nWhen every finding in the current session has a disposition, compact the report\nbefore the final commit. This keeps the document navigable as the fixed-issue\ncount grows across sessions — readers care about what is still open, not the\nfull prose of a defect that was resolved three sessions ago.\n\n**What compaction does:**\n\n1. Collect every finding whose disposition is `fixed` or `stale`.\n2. Replace each finding's full block (heading through disposition lines) with a\n   single summary line under the finding's severity section:\n   `- **CR-###:** \u003Ctitle> — \u003Cdisposition> (\u003Ccommit>)`\n3. Append the removed full blocks to a `## Resolved findings` section at the\n   bottom of the document, below `## Checked and found sound` if it exists.\n   Preserve severity ordering within that section.\n4. Refresh the frontmatter counts (the stamp script already does this; the\n   compaction commit updates the body only).\n\nResolve [skills\u002Ffix-review\u002Fscripts\u002Fcompact-resolved.mjs](scripts\u002Fcompact-resolved.mjs)\nrelative to this loaded document, then run compaction with:\n\n```bash\nnode \"\u003Cresolved-compact-resolved.mjs>\" \\\n  --file CODEBASE-REVIEW.md\n```\n\n**The compaction is its own commit:** `chore(review): compact resolved findings`.\nIt touches only the report, never source, so it cannot break the tree.\n\nFindings with disposition `skipped` or `deferred` stay in place — they still\nneed attention. `open` findings (no disposition) obviously stay. A re-run of\nthis skill skips the `## Resolved findings` section entirely and works only the\ninline findings that remain.\n\n## Red flags\n\n- A commit message naming two finding IDs\n- A finding marked `stale` because its line number moved\n- A disposition with no `Commit` line, on a finding that produced a commit\n- Frontmatter counts that disagree with the stamped dispositions\n- Starting the next finding with the tree dirty\n- A compaction that moved `skipped` or `deferred` findings to the resolved section\n- A deferred or skipped finding with no BL-#### in its Note\n",{"name":5,"description":7},"main","728894f3f85fbd4e788f015ddfd72bb6155d5dd5","plugins\u002Fmoe\u002F.codex-plugin\u002Fskills\u002Ffix-review",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 fix-review",{"tool":36,"command":37},"bunx","bunx skills add zak-keown\u002Fmoe --skill fix-review",{"tool":39,"command":40},"pnpm","pnpm dlx skills add zak-keown\u002Fmoe --skill fix-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002F.codex-plugin\u002Fskills\u002Ffix-review\u002FSKILL.md",true,[44,50],{"path":45,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":48,"sourceHtmlUrl":49},"scripts\u002Fcompact-resolved.mjs","SCRIPT","脚本",5850,"https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002F.codex-plugin\u002Fskills\u002Ffix-review\u002Fscripts\u002Fcompact-resolved.mjs",{"path":51,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":52,"sourceHtmlUrl":53},"scripts\u002Fstamp-disposition.mjs",5456,"https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002F.codex-plugin\u002Fskills\u002Ffix-review\u002Fscripts\u002Fstamp-disposition.mjs",[55,62,69,76,83,90],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"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":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"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":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"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":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"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":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":18},"01M7C1YD87SCNEJ2C9B8HFR2NQ","verify-completion","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","https:\u002F\u002Fgithub.com\u002Fzak-keown\u002Fmoe\u002Fblob\u002Fmain\u002Fplugins\u002Fmoe\u002Fskills\u002Fverify-completion\u002FSKILL.md",[],[],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"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",[],[]]