[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CDJ1HVHQGT94PZQRG36FHC":3,"skill-same:01M6CDJ1HVHQGT94PZQRG36FHC":140},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":46,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6CDJ1HVHQGT94PZQRG36FHC","cw-gates",null,"Use before claiming any Codewhale change is done, green, or ready to land: the focused-to-broad verification ladder, the budget checks CI enforces, and the rules for what counts as a passing test.","codewhale-hq\u002FCodewhale","codewhale-hq","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F326694313?v=4","01M6CDD9D70AD3631SMRJ7REW4","Codewhale","01M6CDD9H0VAXYCB2NGGPZC16K",41176,"MIT","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fcw-gates\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"gates","cw gates","ready","for","ladder","as","green","done","codewhale","test","use","Rules","Budget","ci","land","verification","change","2026-11-10 10:12:30",false,"---\nname: cw-gates\ndescription: \"Use before claiming any Codewhale change is done, green, or ready to land: the focused-to-broad verification ladder, the budget checks CI enforces, and the rules for what counts as a passing test.\"\n---\n\n# cw-gates\n\nPick the smallest evidence that answers the actual risk, then quote the real\noutput. This repo has been burned twice by the alternative: an exit code\nmistaken for a pass, and a harness whose scoring line silently reported\nunevaluated rows as green. Assertions without command output are not evidence.\n\nStage 3 of the loop: [cw-orient](..\u002Fcw-orient\u002FSKILL.md) →\n[cw-slice](..\u002Fcw-slice\u002FSKILL.md) → **gates** →\n[cw-dogfood](..\u002Fcw-dogfood\u002FSKILL.md) → [cw-land](..\u002Fcw-land\u002FSKILL.md) →\n[cw-handoff](..\u002Fcw-handoff\u002FSKILL.md).\n\n## When to use\n\n- Before saying \"done\", \"green\", \"passing\", \"fixed\", or \"ready to land\".\n- Before a dogfood build — never install an ungated binary.\n- When asked to \"run the gates\" or to prove a change is safe.\n\nFor release work, follow `docs\u002FRELEASE_CHECKLIST.md`; it adds the\nversion-drift gate and the exhaustive release validation on top of this ladder,\nand [cw-dogfood](..\u002Fcw-dogfood\u002FSKILL.md) owns the manual TUI QA targets.\n\n## Workflow\n\nClimb only as far as the risk requires. Say where you stopped and what you\nskipped.\n\nNative Rust builds go through `scripts\u002Fdev-test.sh` or `scripts\u002Fdev-cargo.sh`,\nwhich take the machine's build slot (`scripts\u002Fbuild-lock.py`; at most two\nnative builds per machine). Raw `cargo` bypasses the lock.\n\n### Rung 1 — always, and cheap\n\n```bash\ncargo fmt --all -- --check\ngit diff --check\n```\n\n### Rung 2 — the area that owns the change\n\n`scripts\u002Fdev-test.sh` maps an area or a source path to the fastest correct\ninvocation, and applies the isolated build-dir topology\n(`docs\u002FBUILD_PERFORMANCE.md`):\n\n```bash\nscripts\u002Fdev-test.sh --list\nscripts\u002Fdev-test.sh crates\u002Fcommand-contract\u002Fsrc\u002Felapsed.rs      # path → area + filter\nscripts\u002Fdev-test.sh tui tools::                    # area + filter\nscripts\u002Fdev-test.sh config\n```\n\nIt uses `cargo nextest run` when nextest is on PATH (`.config\u002Fnextest.toml`);\n`CODEWHALE_DEV_NEXTEST=0` forces libtest. For the TUI crate, `--lib` and\n`--tests` are disjoint — choose the target that owns the behavior rather than\nrunning both by reflex.\n\n`scripts\u002Fdev-cargo.sh test --no-run` answers a compile question without executing unrelated\ncases. `cargo test --doc` covers doc examples, and is only worth running when\nthose examples changed.\n\nCI builds with `-D warnings`, so a deleted last caller (an unused import, a\nvariant or helper nothing constructs) is a red `main` even though a plain\nbuild only warns. After removing or rewiring a call site, check the library\nthe way CI does before you push:\n\n```bash\nRUSTFLAGS=\"-D warnings\" scripts\u002Fdev-cargo.sh check -p \u003Ccrate> --lib --locked\n```\n\nChanging `RUSTFLAGS` rebuilds every dependency, so keep that value for the\nwhole session. The test-only half of an unused item is invisible to this\ncheck; use `--tests` as well when you touched helpers that tests still call.\n\n### Rung 3 — the budgets and drift checks CI enforces\n\nRun the ones your change can move. Each fails the build in CI:\n\n```bash\npython3 scripts\u002Fcheck-dead-code-budget.py          # #[allow(dead_code)] ceiling\npython3 scripts\u002Fcheck-runtime-contract-budget.py\npython3 scripts\u002Fcheck-persistence-backlog-budget.py\npython3 scripts\u002Fcheck-provider-registry.py         # provider registry drift\npython3 scripts\u002Fcheck-command-crate-boundaries.py  # command-contract boundary\npython3 scripts\u002Fcheck-command-migration-manifest.py\npython3 scripts\u002Fcheck-tui-locale-parity.py         # touched crates\u002Flocalization\u002Flocales\u002F\nsh scripts\u002Fcheck-tui-product-vocabulary.sh\npython3 scripts\u002Fcheck-readme-translations.py       # touched README*.md\n.\u002Fscripts\u002Frelease\u002Fcheck-versions.sh                # touched a version anywhere\n```\n\nThe dead-code budget may go **down** freely; raising it needs a reviewer to be\ntold why. Lock in a win with `python3 scripts\u002Fcheck-dead-code-budget.py --update`.\n\n### Rung 4 — cross-cutting or release risk only\n\n```bash\nscripts\u002Fdev-cargo.sh clippy --workspace --all-targets --all-features --locked -- \\\n  -D warnings \\\n  -A clippy::uninlined_format_args \\\n  -A clippy::too_many_arguments \\\n  -A clippy::unnecessary_map_or\nscripts\u002Fdev-cargo.sh nextest run --workspace --all-features --locked --profile ci\nscripts\u002Fdev-cargo.sh test --workspace --all-features --locked --doc\ngit diff --exit-code -- Cargo.lock                 # lockfile drift guard\n```\n\n`--all-targets` matters: without it, clippy never lints test code. (CI runs\nthe all-targets form since the v0.9.10 gate incident; run the same form\nlocally so there is no weaker subset.)\n\n### Rung 5 — website, when `web\u002F` changed\n\n```bash\nnpm test && npm run check:web\n```\n\n## Claiming a test passed\n\n`AGENTS.md` (\"Claiming a test passed\") owns the rules: quote the real count\nline with `N > 0` for the tests that cover the change, prefer a regression\ntest that fails without the fix, and audit hand-rolled scorers. Two additions\nfor gate runs:\n\n- Check the count **per filter group**. A green run where one required filter\n  matched zero tests is a miss, not a pass.\n- A focused rerun of a failing test distinguishes flake from regression in\n  seconds. Do that before calling anything a flake, and root-cause anything that\n  fails outside a known-flaky name — check for unisolated config-path reads or\n  global timeout knobs first.\n\n## Red flags \u002F don't\n\n- Don't say \"tests pass\" without the count line. Don't say \"CI will catch it\".\n- Don't run the full workspace suite as ritual for a leaf change, and don't\n  re-run an unchanged suite to feel more confident.\n- Don't weaken a safety or data-integrity behavior to make a gate go green.\n- Don't call a failure a flake without a focused rerun and a named cause.\n- Don't skip the budget checks because they are \"not really tests\" — they are\n  required CI contexts, and they encode migrations this repo has already paid for.\n- Don't report a green gate as permission. A passing sweep is readiness\n  evidence; landing, tagging, and publishing need their own approval.\n\n## Output\n\nA checklist: each command, pass\u002Ffail, and the salient line (test counts, budget\nnumbers, the `check-versions.sh` verdict). Name explicitly what you did **not**\nrun and why. If a step could not run in this environment, say so rather than\nimplying coverage you do not have.\n","# cw-gates\n\nPick the smallest evidence that answers the actual risk, then quote the real\noutput. This repo has been burned twice by the alternative: an exit code\nmistaken for a pass, and a harness whose scoring line silently reported\nunevaluated rows as green. Assertions without command output are not evidence.\n\nStage 3 of the loop: [cw-orient](..\u002Fcw-orient\u002FSKILL.md) →\n[cw-slice](..\u002Fcw-slice\u002FSKILL.md) → **gates** →\n[cw-dogfood](..\u002Fcw-dogfood\u002FSKILL.md) → [cw-land](..\u002Fcw-land\u002FSKILL.md) →\n[cw-handoff](..\u002Fcw-handoff\u002FSKILL.md).\n\n## When to use\n\n- Before saying \"done\", \"green\", \"passing\", \"fixed\", or \"ready to land\".\n- Before a dogfood build — never install an ungated binary.\n- When asked to \"run the gates\" or to prove a change is safe.\n\nFor release work, follow `docs\u002FRELEASE_CHECKLIST.md`; it adds the\nversion-drift gate and the exhaustive release validation on top of this ladder,\nand [cw-dogfood](..\u002Fcw-dogfood\u002FSKILL.md) owns the manual TUI QA targets.\n\n## Workflow\n\nClimb only as far as the risk requires. Say where you stopped and what you\nskipped.\n\nNative Rust builds go through `scripts\u002Fdev-test.sh` or `scripts\u002Fdev-cargo.sh`,\nwhich take the machine's build slot (`scripts\u002Fbuild-lock.py`; at most two\nnative builds per machine). Raw `cargo` bypasses the lock.\n\n### Rung 1 — always, and cheap\n\n```bash\ncargo fmt --all -- --check\ngit diff --check\n```\n\n### Rung 2 — the area that owns the change\n\n`scripts\u002Fdev-test.sh` maps an area or a source path to the fastest correct\ninvocation, and applies the isolated build-dir topology\n(`docs\u002FBUILD_PERFORMANCE.md`):\n\n```bash\nscripts\u002Fdev-test.sh --list\nscripts\u002Fdev-test.sh crates\u002Fcommand-contract\u002Fsrc\u002Felapsed.rs      # path → area + filter\nscripts\u002Fdev-test.sh tui tools::                    # area + filter\nscripts\u002Fdev-test.sh config\n```\n\nIt uses `cargo nextest run` when nextest is on PATH (`.config\u002Fnextest.toml`);\n`CODEWHALE_DEV_NEXTEST=0` forces libtest. For the TUI crate, `--lib` and\n`--tests` are disjoint — choose the target that owns the behavior rather than\nrunning both by reflex.\n\n`scripts\u002Fdev-cargo.sh test --no-run` answers a compile question without executing unrelated\ncases. `cargo test --doc` covers doc examples, and is only worth running when\nthose examples changed.\n\nCI builds with `-D warnings`, so a deleted last caller (an unused import, a\nvariant or helper nothing constructs) is a red `main` even though a plain\nbuild only warns. After removing or rewiring a call site, check the library\nthe way CI does before you push:\n\n```bash\nRUSTFLAGS=\"-D warnings\" scripts\u002Fdev-cargo.sh check -p \u003Ccrate> --lib --locked\n```\n\nChanging `RUSTFLAGS` rebuilds every dependency, so keep that value for the\nwhole session. The test-only half of an unused item is invisible to this\ncheck; use `--tests` as well when you touched helpers that tests still call.\n\n### Rung 3 — the budgets and drift checks CI enforces\n\nRun the ones your change can move. Each fails the build in CI:\n\n```bash\npython3 scripts\u002Fcheck-dead-code-budget.py          # #[allow(dead_code)] ceiling\npython3 scripts\u002Fcheck-runtime-contract-budget.py\npython3 scripts\u002Fcheck-persistence-backlog-budget.py\npython3 scripts\u002Fcheck-provider-registry.py         # provider registry drift\npython3 scripts\u002Fcheck-command-crate-boundaries.py  # command-contract boundary\npython3 scripts\u002Fcheck-command-migration-manifest.py\npython3 scripts\u002Fcheck-tui-locale-parity.py         # touched crates\u002Flocalization\u002Flocales\u002F\nsh scripts\u002Fcheck-tui-product-vocabulary.sh\npython3 scripts\u002Fcheck-readme-translations.py       # touched README*.md\n.\u002Fscripts\u002Frelease\u002Fcheck-versions.sh                # touched a version anywhere\n```\n\nThe dead-code budget may go **down** freely; raising it needs a reviewer to be\ntold why. Lock in a win with `python3 scripts\u002Fcheck-dead-code-budget.py --update`.\n\n### Rung 4 — cross-cutting or release risk only\n\n```bash\nscripts\u002Fdev-cargo.sh clippy --workspace --all-targets --all-features --locked -- \\\n  -D warnings \\\n  -A clippy::uninlined_format_args \\\n  -A clippy::too_many_arguments \\\n  -A clippy::unnecessary_map_or\nscripts\u002Fdev-cargo.sh nextest run --workspace --all-features --locked --profile ci\nscripts\u002Fdev-cargo.sh test --workspace --all-features --locked --doc\ngit diff --exit-code -- Cargo.lock                 # lockfile drift guard\n```\n\n`--all-targets` matters: without it, clippy never lints test code. (CI runs\nthe all-targets form since the v0.9.10 gate incident; run the same form\nlocally so there is no weaker subset.)\n\n### Rung 5 — website, when `web\u002F` changed\n\n```bash\nnpm test && npm run check:web\n```\n\n## Claiming a test passed\n\n`AGENTS.md` (\"Claiming a test passed\") owns the rules: quote the real count\nline with `N > 0` for the tests that cover the change, prefer a regression\ntest that fails without the fix, and audit hand-rolled scorers. Two additions\nfor gate runs:\n\n- Check the count **per filter group**. A green run where one required filter\n  matched zero tests is a miss, not a pass.\n- A focused rerun of a failing test distinguishes flake from regression in\n  seconds. Do that before calling anything a flake, and root-cause anything that\n  fails outside a known-flaky name — check for unisolated config-path reads or\n  global timeout knobs first.\n\n## Red flags \u002F don't\n\n- Don't say \"tests pass\" without the count line. Don't say \"CI will catch it\".\n- Don't run the full workspace suite as ritual for a leaf change, and don't\n  re-run an unchanged suite to feel more confident.\n- Don't weaken a safety or data-integrity behavior to make a gate go green.\n- Don't call a failure a flake without a focused rerun and a named cause.\n- Don't skip the budget checks because they are \"not really tests\" — they are\n  required CI contexts, and they encode migrations this repo has already paid for.\n- Don't report a green gate as permission. A passing sweep is readiness\n  evidence; landing, tagging, and publishing need their own approval.\n\n## Output\n\nA checklist: each command, pass\u002Ffail, and the salient line (test counts, budget\nnumbers, the `check-versions.sh` verdict). Name explicitly what you did **not**\nrun and why. If a step could not run in this environment, say so rather than\nimplying coverage you do not have.\n",{"name":5,"description":7},"main","654aa776d6bcb98292d4c7c5841fed871e1ba5bd","docs\u002Fskills\u002Fcw-gates",3571,"https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale","https:\u002F\u002Fcodewhale.net\u002F","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq","https:\u002F\u002Fcodewhale.net","Open-source coding agent for your terminal. Works with the model provider you choose.","2026-11-12 02:35:28",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add codewhale-hq\u002FCodewhale --skill cw-gates",{"tool":57,"command":58},"bunx","bunx skills add codewhale-hq\u002FCodewhale --skill cw-gates",{"tool":60,"command":61},"pnpm","pnpm dlx skills add codewhale-hq\u002FCodewhale --skill cw-gates","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fcw-gates\u002FSKILL.md",true,[65,71,75,79,83,87,91,95,99,103,107,112,116,120,124,128,132,136],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"bashjails.md","REFERENCE","参考文档",16044,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fbashjails.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"ctfd-navigation.md",14795,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fctfd-navigation.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"cyberchef-cheatsheet.md",2422,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fcyberchef-cheatsheet.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"dns.md",9698,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fdns.md",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"encodings-advanced.md",23548,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fencodings-advanced.md",{"path":88,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":89,"sourceHtmlUrl":90},"encodings.md",19236,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fencodings.md",{"path":92,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":93,"sourceHtmlUrl":94},"games-and-vms-2.md",10488,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fgames-and-vms-2.md",{"path":96,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":97,"sourceHtmlUrl":98},"games-and-vms-3.md",32416,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fgames-and-vms-3.md",{"path":100,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":101,"sourceHtmlUrl":102},"games-and-vms-4.md",11570,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fgames-and-vms-4.md",{"path":104,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":105,"sourceHtmlUrl":106},"games-and-vms.md",21199,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fgames-and-vms.md",{"path":108,"resourceType":108,"resourceTypeDesc":109,"sizeBytes":110,"sourceHtmlUrl":111},"LICENSE","许可证",1140,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002FLICENSE",{"path":113,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":114,"sourceHtmlUrl":115},"linux-privesc.md",18452,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Flinux-privesc.md",{"path":117,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":118,"sourceHtmlUrl":119},"pyjails.md",43496,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fpyjails.md",{"path":121,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":122,"sourceHtmlUrl":123},"quick-reference.md",26698,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Fquick-reference.md",{"path":125,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":126,"sourceHtmlUrl":127},"references\u002Fplatform-decisions.md",855,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Freferences\u002Fplatform-decisions.md",{"path":129,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":130,"sourceHtmlUrl":131},"rf-sdr.md",3994,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002Frf-sdr.md",{"path":133,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":134,"sourceHtmlUrl":135},"SOURCE.md",358,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002FSOURCE.md",{"path":137,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":138,"sourceHtmlUrl":139},"TRUST.auto.yaml",2174,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Fcristallin2006-ctf-misc\u002FTRUST.auto.yaml",[141,168,196,216,229,236],{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":36},"01M6CDJRMPR8FX1WVFP94PGDMD","gh-find-prs","Survey the open Codewhale PR and issue queue read-only: fetch each item, check it against current code, and produce one coverage and disposition matrix with cited evidence and credit owed.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-find-prs\u002FSKILL.md",[],[148,149,150,151,152,153,154,155,27,156,157,158,159,160,161,162,163,164,165,166,167],"find","gh find prs","gh","prs","produce","with","read-only","matrix","queue","issue","read","check","code","only","open","survey","pr","evidence","fetch","coverage",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":179,"publishedAt":36},"01M6CDJP0ZYMQNA6AN028X7A96","gh-file-issue","Use when filing a new Codewhale GitHub issue: turn a bug or idea into a well-formed, actionable issue with repro, acceptance criteria, labels, and milestone.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-file-issue\u002FSKILL.md",[174],{"categoryNo":175,"categoryName":176,"taxonomyType":177,"taxonomyTypeDesc":178},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[180,150,181,182,157,183,184,185,186,187,188,189,190,27,191,192,193,153,194,195,29],"file issue","file","gh file issue","milestone","idea","filing","when","new","labels","acceptance","actionable","bug","github issue","github","acceptance criteria","repro",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":200,"categories":201,"keywords":203,"publishedAt":36},"01M6CDJJZB0G4XHWWBD12S990C","gh-close-issues","Close resolved Codewhale issues only after verifying the landed behavior: Refs #N per landing, Fixes #N only when the reporter's scenario was reproduced, closure at the release step or on the reporter's confirmation, always with a crediting comment.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-close-issues\u002FSKILL.md",[202],{"categoryNo":175,"categoryName":176,"taxonomyType":177,"taxonomyTypeDesc":178},[204,205,206,150,207,208,209,210,153,186,211,212,27,213,214,161,215],"gh close issues","close","issues","at","release","reporter","scenario","closure","fixes","behavior","confirmation","landing",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":223,"publishedAt":36},"01M6CDJGR688JJVTG0A1ETBJGQ","gh-assign-issues","Use to assign GitHub issues to a milestone and\u002For owners in bulk, verifying each.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fgh-assign-issues\u002FSKILL.md",[222],{"categoryNo":175,"categoryName":176,"taxonomyType":177,"taxonomyTypeDesc":178},[224,150,206,225,29,193,183,226,227,228],"gh assign issues","assign","bulk","github issues","owners",{"skillNo":230,"name":231,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":232,"categories":233,"keywords":235,"publishedAt":36},"01M6CDJEBMKBAGTBG18N5YJNSE","feedback","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Ffeedback\u002FSKILL.md",[234],{"categoryNo":175,"categoryName":176,"taxonomyType":177,"taxonomyTypeDesc":178},[231],{"skillNo":237,"name":238,"nameZh":6,"description":239,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":240,"categories":241,"keywords":243,"publishedAt":36},"01M6CDJBRQ86PP9XNXQMRB1CGX","cw-slice","Use before writing code for any Codewhale feature, upgrade, or refactor: find the existing owner of the behavior, bound the change to one reviewable slice, and fix the evidence bar before you start.","https:\u002F\u002Fgithub.com\u002Fcodewhale-hq\u002FCodewhale\u002Fblob\u002Fmain\u002Fdocs\u002Fskills\u002Fcw-slice\u002FSKILL.md",[242],{"categoryNo":175,"categoryName":176,"taxonomyType":177,"taxonomyTypeDesc":178},[244,245,246,247,248,249,250,22,251,27,252,213,148,35,160,29,253,254,165],"slice","cw slice","start","bar","you","Existing","upgrade","feature","refactor","writing","fix"]