[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DBM3PP4RR2YVYM2BC84BZH":3,"skill-same:01M6DBM3PP4RR2YVYM2BC84BZH":85},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6DBM3PP4RR2YVYM2BC84BZH","mutation-check",null,"Use at the verify boundary to empirically test test-STRENGTH, not just coverage - given a changed Python source file and the command that runs its tests, it applies a small mutation set to the function(s) under test and asserts each mutation makes at least one test go RED. A mutation the suite leaves green (\"survived\") is a Goodhart-green gap. Use as a gate after coverage; Python-only.","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmutation-check\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"mutation check","mutation","check","coverage","gap","as","tests","green","gate","only","use","go","command","just","verify","boundary","SET","file","test","python","2026-11-10 10:12:30",false,"---\nname: mutation-check\ndescription: Use at the verify boundary to empirically test test-STRENGTH, not just coverage - given a changed Python source file and the command that runs its tests, it applies a small mutation set to the function(s) under test and asserts each mutation makes at least one test go RED. A mutation the suite leaves green (\"survived\") is a Goodhart-green gap. Use as a gate after coverage; Python-only.\n---\n\n# mutation-check — the execution-grounded test-strength gate\n\n## Overview\n\nCoverage and a green `pytest` prove the tests *execute* the code; they say nothing\nabout whether the tests *assert its behaviour*. bFinder found **17.5%** of expected\nbehaviours untested even at >90% line+mutation coverage — the classic Goodhart-green\ngap (see `docs\u002Fagentic-perfection\u002FAGENTIC-REPAIR-RELIABILITY.md`, gem C3).\n\nThis is a **tool run on demand**, not a Stop hook. It mutates the function under\ntest, re-runs the affected tests, and reports which mutations **survived** (all\ntests still green ⇒ that behaviour is unasserted). It anchors to an external signal\nthe implementer can't fake: *does a real test process exit non-zero when the code is\nprovably broken?*\n\n## When to reach for it\n\n- At the verify\u002Fcommit boundary of a change, after coverage is already green, to\n  confirm the new tests actually *catch* regressions — not just touch the lines.\n- When a suite looks suspiciously green (\"100% coverage, all pass\") and you want a\n  cheap, empirical strength check before trusting it.\n\nDo **not** use it to find bugs in the source (it grades the *tests*), on non-Python\nfiles, or as an always-on hook (it spawns one test run per mutation).\n\n## Usage\n\n```\npython mutation_check.py [options] SOURCE -- TEST COMMAND...\n```\n\nEverything after `--` is the test command, run verbatim (no shell). Prefer\n`python -m pytest` so it resolves without relying on PATH\u002FPATHEXT.\n\n```bash\n# Gate a change: mutate the whole file, run its tests, fail if any mutation survives\npython mutation_check.py src\u002Fcalc.py -- python -m pytest tests\u002Ftest_calc.py -q\n\n# Scope to one function (repeat --function for more); cap the run cost\npython mutation_check.py src\u002Fcalc.py --function is_adult --max-mutations 10 \\\n    -- python -m pytest tests\u002Ftest_calc.py::test_is_adult -q\n\n# Just enumerate the mutation sites (no test run)\npython mutation_check.py src\u002Fcalc.py --list\n\n# Run the tests from a specific directory (so imports resolve)\npython mutation_check.py src\u002Fcalc.py --cwd src -- python -m pytest -q\n```\n\nOptions: `--function\u002F-f NAME` (repeatable), `--max-mutations N` (0 = unlimited,\ndefault 20), `--timeout SEC` (per test run, default 300), `--cwd DIR`, `--list`.\n\n## Mutation set (small on purpose)\n\n| kind | change |\n|------|--------|\n| boolean-flip | `True` ↔ `False` |\n| comparison-swap | `==`→`!=`, `\u003C`→`>=`, `\u003C=`→`>`, `>`→`\u003C=`, `>=`→`\u003C` (negation\u002Fboundary) |\n| arithmetic-swap | `+`↔`-`, `*`↔`\u002F` |\n| return-value | `return X` → `return None` |\n| boundary | numeric literal `n` → `n + 1` (off-by-one probe) |\n\n## Exit codes (so it can gate)\n\n- `0` — every mutation KILLED; tests assert behaviour at every mutated site.\n- `1` — at least one mutation SURVIVED; a Goodhart-green gap to fix.\n- `2` — operational error, could not assess (unparseable source, no mutable sites,\n  **red baseline**, or the plain AST round-trip changed behaviour). Fail-safe: it\n  never reports a false green when it couldn't actually run the check.\n\n## Safety\n\nThe real source file is mutated in place (so the tests import the mutated module),\nbut the original bytes are captured up front, a temp backup is written, the file is\nrestored after **every** run and again in a `finally`, and byte-identity is verified\nat the end (repaired from the backup if it ever drifts). The file is left exactly as\nfound even on exception or Ctrl-C. Stdlib only; requires Python 3.9+ (`ast.unparse`).\n\n## Common mistakes\n\n- **Reading a survivor as a source bug.** A survivor means the *test* is weak at\n  that site — strengthen the assertion, don't \"fix\" the code.\n- **Red baseline.** If the suite is already failing, exit 2 fires; fix the tests\n  first — mutation results are meaningless against a red baseline.\n- **PATH resolution.** Use `python -m pytest`, not a bare `pytest`, and pass\n  forward-slash paths so the command runs the same on Windows and POSIX.\n- **Import scope.** If tests can't import the module under test, set `--cwd` to the\n  directory pytest should run from.\n","# mutation-check — the execution-grounded test-strength gate\n\n## Overview\n\nCoverage and a green `pytest` prove the tests *execute* the code; they say nothing\nabout whether the tests *assert its behaviour*. bFinder found **17.5%** of expected\nbehaviours untested even at >90% line+mutation coverage — the classic Goodhart-green\ngap (see `docs\u002Fagentic-perfection\u002FAGENTIC-REPAIR-RELIABILITY.md`, gem C3).\n\nThis is a **tool run on demand**, not a Stop hook. It mutates the function under\ntest, re-runs the affected tests, and reports which mutations **survived** (all\ntests still green ⇒ that behaviour is unasserted). It anchors to an external signal\nthe implementer can't fake: *does a real test process exit non-zero when the code is\nprovably broken?*\n\n## When to reach for it\n\n- At the verify\u002Fcommit boundary of a change, after coverage is already green, to\n  confirm the new tests actually *catch* regressions — not just touch the lines.\n- When a suite looks suspiciously green (\"100% coverage, all pass\") and you want a\n  cheap, empirical strength check before trusting it.\n\nDo **not** use it to find bugs in the source (it grades the *tests*), on non-Python\nfiles, or as an always-on hook (it spawns one test run per mutation).\n\n## Usage\n\n```\npython mutation_check.py [options] SOURCE -- TEST COMMAND...\n```\n\nEverything after `--` is the test command, run verbatim (no shell). Prefer\n`python -m pytest` so it resolves without relying on PATH\u002FPATHEXT.\n\n```bash\n# Gate a change: mutate the whole file, run its tests, fail if any mutation survives\npython mutation_check.py src\u002Fcalc.py -- python -m pytest tests\u002Ftest_calc.py -q\n\n# Scope to one function (repeat --function for more); cap the run cost\npython mutation_check.py src\u002Fcalc.py --function is_adult --max-mutations 10 \\\n    -- python -m pytest tests\u002Ftest_calc.py::test_is_adult -q\n\n# Just enumerate the mutation sites (no test run)\npython mutation_check.py src\u002Fcalc.py --list\n\n# Run the tests from a specific directory (so imports resolve)\npython mutation_check.py src\u002Fcalc.py --cwd src -- python -m pytest -q\n```\n\nOptions: `--function\u002F-f NAME` (repeatable), `--max-mutations N` (0 = unlimited,\ndefault 20), `--timeout SEC` (per test run, default 300), `--cwd DIR`, `--list`.\n\n## Mutation set (small on purpose)\n\n| kind | change |\n|------|--------|\n| boolean-flip | `True` ↔ `False` |\n| comparison-swap | `==`→`!=`, `\u003C`→`>=`, `\u003C=`→`>`, `>`→`\u003C=`, `>=`→`\u003C` (negation\u002Fboundary) |\n| arithmetic-swap | `+`↔`-`, `*`↔`\u002F` |\n| return-value | `return X` → `return None` |\n| boundary | numeric literal `n` → `n + 1` (off-by-one probe) |\n\n## Exit codes (so it can gate)\n\n- `0` — every mutation KILLED; tests assert behaviour at every mutated site.\n- `1` — at least one mutation SURVIVED; a Goodhart-green gap to fix.\n- `2` — operational error, could not assess (unparseable source, no mutable sites,\n  **red baseline**, or the plain AST round-trip changed behaviour). Fail-safe: it\n  never reports a false green when it couldn't actually run the check.\n\n## Safety\n\nThe real source file is mutated in place (so the tests import the mutated module),\nbut the original bytes are captured up front, a temp backup is written, the file is\nrestored after **every** run and again in a `finally`, and byte-identity is verified\nat the end (repaired from the backup if it ever drifts). The file is left exactly as\nfound even on exception or Ctrl-C. Stdlib only; requires Python 3.9+ (`ast.unparse`).\n\n## Common mistakes\n\n- **Reading a survivor as a source bug.** A survivor means the *test* is weak at\n  that site — strengthen the assertion, don't \"fix\" the code.\n- **Red baseline.** If the suite is already failing, exit 2 fires; fix the tests\n  first — mutation results are meaningless against a red baseline.\n- **PATH resolution.** Use `python -m pytest`, not a bare `pytest`, and pass\n  forward-slash paths so the command runs the same on Windows and POSIX.\n- **Import scope.** If tests can't import the module under test, set `--cwd` to the\n  directory pytest should run from.\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Fskills\u002Fmutation-check","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill mutation-check",{"tool":61,"command":62},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill mutation-check",{"tool":64,"command":65},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill mutation-check","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmutation-check\u002FSKILL.md",true,[69,75,81],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"mutation_check.py","SCRIPT","脚本",20425,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmutation-check\u002Fmutation_check.py",{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"README.md","REFERENCE","参考文档",4438,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmutation-check\u002FREADME.md",{"path":82,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":83,"sourceHtmlUrl":84},"test_mutation_check.py",14399,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmutation-check\u002Ftest_mutation_check.py",[86,106,135,159,173,189],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":44},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[93,94,95,96,97,98,99,100,101,34,102,103,104,105,41],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":115,"publishedAt":44},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[116,117,118,119,120,121,122,123,124,125,126,127,128,129,34,130,131,132,133,134],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":145,"publishedAt":44},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[141,144],{"categoryNo":142,"categoryName":143,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[146,147,148,149,150,151,152,153,26,154,117,155,156,157,158],"review","visual","visual review","pages","web","false","iteration","take","slides","ui","screenshot","playwright","screenshots",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":44},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[161,166,167,168,169,170,171,172],"setup","report","project","installation","project setup","issues","state",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":180,"publishedAt":44},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[179],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},[175,181,98,182,183,184,34,185,186,187,188],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":190,"name":166,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":194,"publishedAt":44},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[166,168,132,195,170,196],"files","interactive"]