[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BEZ98RRZP6PXQQC2P6DY4":3,"skill-same:01M69BEZ98RRZP6PXQQC2P6DY4":77},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M69BEZ98RRZP6PXQQC2P6DY4","writing-tests",null,"Apply this repository's test policy when you add or change tests. Test public\nbehavior through public APIs and test utilities. Keep tests deterministic,\nfast, and independent of real I\u002FO. Use unit tests for implementation details\nthat public APIs cannot exercise.","microsoft\u002Foxidizer","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BEMNHKBRBACCRVHR2HSM5",192,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Foxidizer\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fwriting-tests\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"writing tests","tests","writing","use","when","apply","for","you","unit","keep","deterministic","implementation","behavior","exercise","repository","fast","unit tests","change","test","policy","2026-11-10 10:12:30",false,"---\nname: writing-tests\ndescription: |\n  Apply this repository's test policy when you add or change tests. Test public\n  behavior through public APIs and test utilities. Keep tests deterministic,\n  fast, and independent of real I\u002FO. Use unit tests for implementation details\n  that public APIs cannot exercise.\n---\n\n# Writing tests\n\nThis skill is the repository guide for developer agents that write tests.\nReview agents use the stricter rules in\n`.github\u002Fskills\u002Fcode-review\u002Ftest-review.md`.\n\n## Test behavior through public APIs\n\nTest public behavior and API contracts through the public API. Put these tests\nunder `crates\u002F\u003Ccrate>\u002Ftests\u002F`.\n\nUse test utilities to control collaborators and state. A public integration\ntest does not need real network, process, filesystem, or clock I\u002FO.\n\nWhen a test needs more control, expose test-only public APIs behind a\nnon-default `test-util` feature. Enable this feature in the integration test\nand use these APIs to inject fakes, clocks, scripted I\u002FO, or other controlled\ndependencies. Do not add test-only APIs to the default public surface.\n\nUse unit tests for implementation details that a supported public API cannot\nexercise. Keep these tests close to the implementation.\n\n## Keep tests deterministic and fast\n\nControl all inputs and dependencies. Do not depend on test order, host state,\nwall-clock time, random values, external services, or developer credentials.\n\nPrefer these workspace tools:\n\n- Use `fakeable` to create controlled fakes and mocks.\n- Use `future_assert` to test future behavior without starting a runtime.\n- Use a frozen `tick` clock and advance time explicitly.\n- Use `insta` snapshots for exact string and structured output.\n\nTarget less than one second for each test, excluding compilation. Prefer\nin-memory values and injected collaborators.\n\n## Preserve behavior tests during implementation changes\n\nIf a refactor or performance change preserves public behavior, do not rewrite\nexisting integration tests to match internal implementation details. Add tests\nwhen the change needs more coverage.\n\nIf a change intentionally alters public behavior, update the affected tests.\nDescribe the contract and test changes clearly in the pull request.\n\nDo not weaken assertions, skip tests, or delete coverage to make a change pass.\n","# Writing tests\n\nThis skill is the repository guide for developer agents that write tests.\nReview agents use the stricter rules in\n`.github\u002Fskills\u002Fcode-review\u002Ftest-review.md`.\n\n## Test behavior through public APIs\n\nTest public behavior and API contracts through the public API. Put these tests\nunder `crates\u002F\u003Ccrate>\u002Ftests\u002F`.\n\nUse test utilities to control collaborators and state. A public integration\ntest does not need real network, process, filesystem, or clock I\u002FO.\n\nWhen a test needs more control, expose test-only public APIs behind a\nnon-default `test-util` feature. Enable this feature in the integration test\nand use these APIs to inject fakes, clocks, scripted I\u002FO, or other controlled\ndependencies. Do not add test-only APIs to the default public surface.\n\nUse unit tests for implementation details that a supported public API cannot\nexercise. Keep these tests close to the implementation.\n\n## Keep tests deterministic and fast\n\nControl all inputs and dependencies. Do not depend on test order, host state,\nwall-clock time, random values, external services, or developer credentials.\n\nPrefer these workspace tools:\n\n- Use `fakeable` to create controlled fakes and mocks.\n- Use `future_assert` to test future behavior without starting a runtime.\n- Use a frozen `tick` clock and advance time explicitly.\n- Use `insta` snapshots for exact string and structured output.\n\nTarget less than one second for each test, excluding compilation. Prefer\nin-memory values and injected collaborators.\n\n## Preserve behavior tests during implementation changes\n\nIf a refactor or performance change preserves public behavior, do not rewrite\nexisting integration tests to match internal implementation details. Add tests\nwhen the change needs more coverage.\n\nIf a change intentionally alters public behavior, update the affected tests.\nDescribe the contract and test changes clearly in the pull request.\n\nDo not weaken assertions, skip tests, or delete coverage to make a change pass.\n",{"name":5,"description":7},"main","10543a66105d3362f8abe1a481da6e43b5a6103f",".github\u002Fskills\u002Fwriting-tests",31,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Foxidizer","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-13 02:47:25",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add microsoft\u002Foxidizer --skill writing-tests",{"tool":69,"command":70},"bunx","bunx skills add microsoft\u002Foxidizer --skill writing-tests",{"tool":72,"command":73},"pnpm","pnpm dlx skills add microsoft\u002Foxidizer --skill writing-tests","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Foxidizer\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fwriting-tests\u002FSKILL.md",true,[],[78,115,141],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":82,"sourceHtmlUrl":83,"categories":84,"keywords":88,"publishedAt":49},"01M69BEW24CXMMC18T53BASRGK","simple-english","Write or rewrite text in plain, layman-readable English in the spirit of\nASD-STE100 Simplified Technical English: short sentences, active voice,\nsimple tenses, one word one meaning, condition before command, every\ntechnical term defined at first use, no AI slop. Default mode is Plain.\nStrict mode applies full STE vocabulary compliance when the user names\nSTE, ASD-STE100, or compliance. Use for documentation, READMEs, runbooks,\nprocedures, error messages, release notes, incident reports, API guides,\nand explanations for readers outside the field. Also use when the user\nsays \"STE\", \"Simplified Technical English\", \"ASD-STE100\", \"plain English\",\n\"layman's terms\", \"explain it simply\", \"no jargon\", \"de-slop\", \"make this\nreadable\", \"write for non-native readers\", or asks for docs that translate\nwell. The same rules govern the reply: answer first, prose only.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Foxidizer\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsimple-english\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Foxidizer\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsimple-english\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",[89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,33,113,114],"simple english","english","simple","codex","translate","code","docs","gemini","github","cli","release notes","notes","documentation","error","condition","slop","incident","messages","mode","default","short","runbooks","2025","only","meaning","api",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":127,"publishedAt":49},"01M69BESNQBE9TW392C3N7Q1TD","code-review","Review guidance for pull requests in this repository. Use when reviewing a pull request, to keep comments on evidence you can see rather than on predicted build outcomes, remembered API signatures, or assumed conventions.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Foxidizer\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fcode-review\u002FSKILL.md",[121,124],{"categoryNo":122,"categoryName":123,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":125,"categoryName":126,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师",[128,129,94,130,131,132,133,134,135,136,137,35,138,32,33,36,38,114,139,140],"review","code review","build","request","comments","requests","pull requests","pull request","pull","evidence","signatures","can","outcomes",{"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":49},"01M69BEQSP9VZNJ9V8WM0GX35Y","cargo-anvil-adoption","Complete cargo-anvil adoption in an existing Rust repository after the first cargo anvil run. Use when generated Anvil files coexist with legacy CI, recipes, scripts, tool configuration, or validation failures.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Foxidizer\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fcargo-anvil-adoption\u002FSKILL.md",[],[148,149,150,151,43,152,153,154,155,156,157,158,32,159,160,33,161,162,163,164],"anvil","cargo","adoption","cargo anvil adoption","run","rust","complete","tool","ci","files","generated","Existing","Legacy","with","first","scripts","validation"]