[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71G109WR4J4PMBR94PV29TQ":3,"skill-same:01M71G109WR4J4PMBR94PV29TQ":72},{"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":50,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M71G109WR4J4PMBR94PV29TQ","author-rust-test",null,"ALWAYS invoke this skill when writing or fixing tests for Rust. NEVER write or fix Rust tests without this skill.","outcomeeng\u002Fplugins","outcomeeng","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F257335685?v=4","01M71FRVRF36XYR3HRSCGFHK2R","Outcome Engineering","01M71FRVS4BZG17DWANFJ7EPNY",1,"MIT","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Frust\u002Fskills\u002Fauthor-rust-test\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],"rust","author rust test","author","test","never","writing","when","invoke","for","cargo","llvm","tests","Bash","use","fix","just","tool","cargo test","cargo clippy","cargo check","2026-11-10 10:12:30",false,"---\nname: author-rust-test\ndescription: >-\n  ALWAYS invoke this skill when writing or fixing tests for Rust.\n  NEVER write or fix Rust tests without this skill.\nallowed-tools: Read, Glob, Grep, Write, Edit, {{! tool('use_skill') !}}, Bash(cargo test:*), Bash(cargo check:*), Bash(cargo clippy:*), Bash(cargo fmt --check:*), Bash(cargo llvm-cov:*), Bash(spx validation:*), Bash(just test:*), Bash(just check:*), Bash(just verify:*), Bash(just validate:*)\n---\n\n{!% require_skill 'rust:rust-code-standards' %!}\n\n{!% require_skill 'rust:rust-test-standards' %!}\n\n{!% require_skill 'product-tree:test' %!}\n\n\u003Cobjective>\nRust tests for what the `\u002Ftest` router selected, at the chosen level.\n\u003C\u002Fobjective>\n\n\u003Cprerequisites>\nThe `\u002Ftest` router, `\u002Frust-code-standards`, and `\u002Frust-test-standards` are pre-loaded above.\n\nBefore writing or revising tests, also check:\n\n1. `spx\u002Flocal\u002Frust.md` at the repository root, if present\n2. `spx\u002Flocal\u002Frust-tests.md` at the repository root, if present\n\n\u003C\u002Fprerequisites>\n\n\u003Cworkflow>\n1. Load the governing spec context before editing any co-located `spx\u002F...\u002Ftests\u002F` file.\n2. Map each assertion to the assertion type and level chosen by `\u002Ftest`.\n3. Apply the `\u002Ftest` source-contract-first gate: read the assertion, the existing or planned test, and the Rust code under test; state the production contract the evidence exercises.\n4. If the source does not expose the enum, constructor, trait boundary, parser entry point, registry, schema, or observable behavior the assertion needs, fix the source contract before writing test predicates.\n5. Use the `\u003Crouter_mapping>` and examples in `\u002Frust-test-standards` to choose the Rust implementation shape.\n6. Keep every predicate and assertion macro in the linked test function or callback. Permit `const`, `static`, `let`, framework fixture parameters, and property-generated parameters that only receive actual results, source contracts, generated values, harness observations, callback inputs, resource handles, or fixture paths; reject bindings that choose data, expectations, configuration, setup policy, generator domains, fixture contents, or verdict rules.\n7. Keep test infrastructure — harnesses, generators, and inert fixtures — in the canonical `\u003Cproduct>-testing` location prescribed by `\u002Frust-test-standards`. A repo-local overlay may route to a governing product spec or decision that explicitly amends this contract; the overlay does not redefine the location itself.\n8. Run the repository's Rust validation commands before reporting the tests complete.\n\n\u003C\u002Fworkflow>\n\n\u003Crouter_mapping>\nAfter running through `\u002Ftest`, use the canonical mapping in `\u002Frust-test-standards`:\n\n| Router Decision       | Rust implementation summary                                              |\n| --------------------- | ------------------------------------------------------------------------ |\n| Stage 2 -> Level 1    | pure functions, temp dirs, hand-written trait impls                      |\n| Stage 2 -> Level 2    | real binaries, local adapters, async runtimes, local services            |\n| Stage 2 -> Level 3    | remote APIs, deployed workflows, browser automation, shared environments |\n| Stage 3A              | direct pure-function tests                                               |\n| Stage 3B              | extracted pure function plus outer boundary evidence                     |\n| Stage 5 exceptions    | controlled implementations that preserve the real seam                   |\n| compile-time contract | compile-fail evidence                                                    |\n| universal invariant   | property-based evidence                                                  |\n\n\u003C\u002Frouter_mapping>\n\n\u003Creference_guides>\nAll Rust test examples are owned by `\u002Frust-test-standards`:\n\n- `\u002Frust-test-standards` `\u003Clevel_1_patterns>`\n- `\u002Frust-test-standards` `\u003Cproperty_and_compile_time_patterns>`\n- `\u002Frust-test-standards` `\u003Clevel_2_patterns>`\n- `\u002Frust-test-standards` `\u003Clevel_3_patterns>`\n- `\u002Frust-test-standards` `references\u002Flevel-1.md`\n- `\u002Frust-test-standards` `references\u002Flevel-2.md`\n- `\u002Frust-test-standards` `references\u002Flevel-3.md`\n\n\u003C\u002Freference_guides>\n\n\u003Csuccess_criteria>\nRust test work is complete when:\n\n- `\u002Ftest` chose the assertion type and target level first\n- the source-contract-first gate was applied before test predicates were written or repaired\n- `\u002Frust-code-standards` and `\u002Frust-test-standards` were loaded before test code was written\n- the test shape follows the canonical Rust test standard and repo-local overlays\n- executed test functions and callbacks own every predicate and assertion macro\n- test-file bindings introduce no case data, expectation, configuration, setup policy, generator domain, fixture content, or verdict rule\n- controlled implementations preserve coupling to the real seam\n- property claims use property-based testing\n- compile-time claims use compile-fail evidence\n- repository validation passes or any unavailable validation tool is reported explicitly\n\n\u003C\u002Fsuccess_criteria>\n","{!% require_skill 'rust:rust-code-standards' %!}\n\n{!% require_skill 'rust:rust-test-standards' %!}\n\n{!% require_skill 'product-tree:test' %!}\n\n\u003Cobjective>\nRust tests for what the `\u002Ftest` router selected, at the chosen level.\n\u003C\u002Fobjective>\n\n\u003Cprerequisites>\nThe `\u002Ftest` router, `\u002Frust-code-standards`, and `\u002Frust-test-standards` are pre-loaded above.\n\nBefore writing or revising tests, also check:\n\n1. `spx\u002Flocal\u002Frust.md` at the repository root, if present\n2. `spx\u002Flocal\u002Frust-tests.md` at the repository root, if present\n\n\u003C\u002Fprerequisites>\n\n\u003Cworkflow>\n1. Load the governing spec context before editing any co-located `spx\u002F...\u002Ftests\u002F` file.\n2. Map each assertion to the assertion type and level chosen by `\u002Ftest`.\n3. Apply the `\u002Ftest` source-contract-first gate: read the assertion, the existing or planned test, and the Rust code under test; state the production contract the evidence exercises.\n4. If the source does not expose the enum, constructor, trait boundary, parser entry point, registry, schema, or observable behavior the assertion needs, fix the source contract before writing test predicates.\n5. Use the `\u003Crouter_mapping>` and examples in `\u002Frust-test-standards` to choose the Rust implementation shape.\n6. Keep every predicate and assertion macro in the linked test function or callback. Permit `const`, `static`, `let`, framework fixture parameters, and property-generated parameters that only receive actual results, source contracts, generated values, harness observations, callback inputs, resource handles, or fixture paths; reject bindings that choose data, expectations, configuration, setup policy, generator domains, fixture contents, or verdict rules.\n7. Keep test infrastructure — harnesses, generators, and inert fixtures — in the canonical `\u003Cproduct>-testing` location prescribed by `\u002Frust-test-standards`. A repo-local overlay may route to a governing product spec or decision that explicitly amends this contract; the overlay does not redefine the location itself.\n8. Run the repository's Rust validation commands before reporting the tests complete.\n\n\u003C\u002Fworkflow>\n\n\u003Crouter_mapping>\nAfter running through `\u002Ftest`, use the canonical mapping in `\u002Frust-test-standards`:\n\n| Router Decision       | Rust implementation summary                                              |\n| --------------------- | ------------------------------------------------------------------------ |\n| Stage 2 -> Level 1    | pure functions, temp dirs, hand-written trait impls                      |\n| Stage 2 -> Level 2    | real binaries, local adapters, async runtimes, local services            |\n| Stage 2 -> Level 3    | remote APIs, deployed workflows, browser automation, shared environments |\n| Stage 3A              | direct pure-function tests                                               |\n| Stage 3B              | extracted pure function plus outer boundary evidence                     |\n| Stage 5 exceptions    | controlled implementations that preserve the real seam                   |\n| compile-time contract | compile-fail evidence                                                    |\n| universal invariant   | property-based evidence                                                  |\n\n\u003C\u002Frouter_mapping>\n\n\u003Creference_guides>\nAll Rust test examples are owned by `\u002Frust-test-standards`:\n\n- `\u002Frust-test-standards` `\u003Clevel_1_patterns>`\n- `\u002Frust-test-standards` `\u003Cproperty_and_compile_time_patterns>`\n- `\u002Frust-test-standards` `\u003Clevel_2_patterns>`\n- `\u002Frust-test-standards` `\u003Clevel_3_patterns>`\n- `\u002Frust-test-standards` `references\u002Flevel-1.md`\n- `\u002Frust-test-standards` `references\u002Flevel-2.md`\n- `\u002Frust-test-standards` `references\u002Flevel-3.md`\n\n\u003C\u002Freference_guides>\n\n\u003Csuccess_criteria>\nRust test work is complete when:\n\n- `\u002Ftest` chose the assertion type and target level first\n- the source-contract-first gate was applied before test predicates were written or repaired\n- `\u002Frust-code-standards` and `\u002Frust-test-standards` were loaded before test code was written\n- the test shape follows the canonical Rust test standard and repo-local overlays\n- executed test functions and callbacks own every predicate and assertion macro\n- test-file bindings introduce no case data, expectation, configuration, setup policy, generator domain, fixture content, or verdict rule\n- controlled implementations preserve coupling to the real seam\n- property claims use property-based testing\n- compile-time claims use compile-fail evidence\n- repository validation passes or any unavailable validation tool is reported explicitly\n\n\u003C\u002Fsuccess_criteria>\n",{"name":5,"description":7,"allowed-tools":49},"Read, Glob, Grep, Write, Edit, {{! tool('use_skill') !}}, Bash(cargo test:*), Bash(cargo check:*), Bash(cargo clippy:*), Bash(cargo fmt --check:*), Bash(cargo llvm-cov:*), Bash(spx validation:*), Bash(just test:*), Bash(just check:*), Bash(just verify:*), Bash(just validate:*)","main","978d51c51d68c99cffb2ba48f7cad9d2f07e5738","src\u002Fplugins\u002Frust\u002Fskills\u002Fauthor-rust-test","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins","https:\u002F\u002Fgithub.com\u002Foutcomeeng","https:\u002F\u002Foutcome.engineering","Spec-driven development for AI-assisted engineering","2026-11-12 11:34:11",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add outcomeeng\u002Fplugins --skill author-rust-test",{"tool":64,"command":65},"bunx","bunx skills add outcomeeng\u002Fplugins --skill author-rust-test",{"tool":67,"command":68},"pnpm","pnpm dlx skills add outcomeeng\u002Fplugins --skill author-rust-test","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Frust\u002Fskills\u002Fauthor-rust-test\u002FSKILL.md",true,[],[73,79,111,127,141,154],{"skillNo":74,"name":75,"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":76,"categories":77,"keywords":78,"publishedAt":44},"01M71G25RZTPQG9KJ00JCHC1F7","plugin","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Ftemplates\u002Fplugin\u002FSKILL.md",[],[75],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":93,"publishedAt":44},"01M71G23DCX3SV60H63HBBKQ6J","sanitize-powerpoint","ALWAYS invoke this skill when sanitizing, cleaning up, auditing, or aligning a PowerPoint (.pptx) deck — slide-master and layout structure, layout type attributes, stray fonts, non-theme colors, or layout naming. NEVER hand-edit pptx XML without this skill.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fwork\u002Fskills\u002Fsanitize-powerpoint\u002FSKILL.md",[85,88],{"categoryNo":86,"categoryName":87,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[94,95,96,97,98,99,100,28,101,102,103,104,105,106,107,108,109,110,31,30],"sanitize powerpoint","powerpoint","sanitize","fonts","type","cleaning","structure","attributes","theme","pptx","naming","layout","deck","up","edit","xml","master",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":44},"01M71G21PQKBCDECHGVYSKPJW5","draw-excalidraw","ALWAYS invoke this skill when creating Excalidraw diagrams, visualizing workflows, architectures, or concepts. NEVER generate Excalidraw JSON without this skill.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fwork\u002Fskills\u002Fdraw-excalidraw\u002FSKILL.md",[],[118,119,120,121,122,28,31,123,124,30,125,126],"draw excalidraw","excalidraw","draw","diagrams","architectures","generate","workflows","concepts","json",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":134,"publishedAt":44},"01M71G1ZMNGFD37RZYM620XM2C","typescript-test-standards","TypeScript test standards enforced across all skills. Loaded by other skills, not invoked directly.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Ftypescript\u002Fskills\u002Ftypescript-test-standards\u002FSKILL.md",[133],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[135,136,27,137,138,139,140],"typescript","typescript test standards","standards","false","read","across",{"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":150,"publishedAt":44},"01M71G1XBH0X1VCTR7269MDGSY","typescript-code-standards","TypeScript code standards enforced across all skills. Loaded by other skills, not invoked directly.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Ftypescript\u002Fskills\u002Ftypescript-code-standards\u002FSKILL.md",[147],{"categoryNo":148,"categoryName":149,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000030","开发工程师",[135,151,152,153,137,138,139,140],"code","typescript code standards","code standards",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":44},"01M71G1TQ3VN45SJ75DFMJDB9W","typescript-architecture-standards","TypeScript ADR conventions enforced across architect and auditor skills. Loaded by other skills, not invoked directly.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Ftypescript\u002Fskills\u002Ftypescript-architecture-standards\u002FSKILL.md",[],[161,137,162,163,135,164,165,140,139,166,138,167],"architecture standards","typescript architecture standards","architecture","adr","architect","auditor","conventions"]