[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6E2HYZP31MV26DSR4M58XT8":3,"skill-same:01M6E2HYZP31MV26DSR4M58XT8":65},{"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":22,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":13,"repositoryHtmlUrl":37,"repositoryHomepageUrl":38,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6E2HYZP31MV26DSR4M58XT8","optimizetests",null,"Optimize OpenClaw slow tests, imports, misplaced coverage, and CI wall time without dropping coverage.","7dvq6yrkgs-stack\u002Fplaywright","7dvq6yrkgs-stack","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F251638143?v=4","01M6E061J2AMGWYZ6TK7Y8NM74","01M6E061PQCQJGQMPBERMCFN5G",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Foptimizetests\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[5,23,24,25,26,27,28],"openclaw","ci","coverage","optimize","time","tests","2026-11-10 10:12:30",false,"---\nname: optimizetests\ndescription: Optimize OpenClaw slow tests, imports, misplaced coverage, and CI wall time without dropping coverage.\n---\n\n# Optimize Tests\n\nGoal: real OpenClaw test\u002Fruntime speedups with coverage intact. Do not add shards,\nskip assertions, weaken gates, or tune runner flags as the main fix.\n\n## Runbook\n\n1. Read `docs\u002Fhelp\u002Ftesting.md`, `docs\u002Fci.md`, and the scoped `AGENTS.md` files\n   for any subtree you will edit.\n2. Establish evidence before edits:\n   - Full ranking: `pnpm test:perf:groups --full-suite --allow-failures --output .artifacts\u002Ftest-perf\u002F\u003Cname>.json`\n   - Targeted file: `timeout 240 \u002Fusr\u002Fbin\u002Ftime -l pnpm test \u003Cfile> --maxWorkers=1 --reporter=verbose`\n   - Import suspicion: add `OPENCLAW_VITEST_IMPORT_DURATIONS=1 OPENCLAW_VITEST_PRINT_IMPORT_BREAKDOWN=1`\n3. Attack highest-return hotspots first:\n   - broad barrels or `importActual()` in hot tests\n   - per-test `vi.resetModules()` plus fresh imports\n   - expensive gateway\u002Fserver\u002Fclient setup where reset\u002Freuse proves same behavior\n   - core tests asserting extension-owned behavior\n   - duplicated fixture construction or contract assertions\n4. Prefer production-quality fixes:\n   - narrow runtime seams over broad mocks\n   - pure helpers for static parsing\u002Fmetadata\n   - injected deps over module resets\n   - extension-owned tests for bundled plugin\u002Fprovider\u002Fchannel behavior\n5. After each change, rerun the same benchmark and the proving test lane. Record\n   before\u002Fafter wall time, Vitest duration, and max RSS when available.\n6. Run `pnpm check:changed`; run broader gates (`pnpm check`, `pnpm test`,\n   `pnpm build`) when touched surfaces require them.\n7. Commit scoped changes with `scripts\u002Fcommitter \"\u003Cconventional message>\" \u003Cpaths...>`.\n   Push when requested. If CI is red, inspect with `gh run list\u002Fview`, fix, push,\n   repeat until current CI is green or a blocker is proven unrelated.\n\n## Output\n\nEnd with the pushed commit(s), before\u002Fafter timings, gates run, current CI state,\nand any remaining tail lanes that need separate optimization.\n","# Optimize Tests\n\nGoal: real OpenClaw test\u002Fruntime speedups with coverage intact. Do not add shards,\nskip assertions, weaken gates, or tune runner flags as the main fix.\n\n## Runbook\n\n1. Read `docs\u002Fhelp\u002Ftesting.md`, `docs\u002Fci.md`, and the scoped `AGENTS.md` files\n   for any subtree you will edit.\n2. Establish evidence before edits:\n   - Full ranking: `pnpm test:perf:groups --full-suite --allow-failures --output .artifacts\u002Ftest-perf\u002F\u003Cname>.json`\n   - Targeted file: `timeout 240 \u002Fusr\u002Fbin\u002Ftime -l pnpm test \u003Cfile> --maxWorkers=1 --reporter=verbose`\n   - Import suspicion: add `OPENCLAW_VITEST_IMPORT_DURATIONS=1 OPENCLAW_VITEST_PRINT_IMPORT_BREAKDOWN=1`\n3. Attack highest-return hotspots first:\n   - broad barrels or `importActual()` in hot tests\n   - per-test `vi.resetModules()` plus fresh imports\n   - expensive gateway\u002Fserver\u002Fclient setup where reset\u002Freuse proves same behavior\n   - core tests asserting extension-owned behavior\n   - duplicated fixture construction or contract assertions\n4. Prefer production-quality fixes:\n   - narrow runtime seams over broad mocks\n   - pure helpers for static parsing\u002Fmetadata\n   - injected deps over module resets\n   - extension-owned tests for bundled plugin\u002Fprovider\u002Fchannel behavior\n5. After each change, rerun the same benchmark and the proving test lane. Record\n   before\u002Fafter wall time, Vitest duration, and max RSS when available.\n6. Run `pnpm check:changed`; run broader gates (`pnpm check`, `pnpm test`,\n   `pnpm build`) when touched surfaces require them.\n7. Commit scoped changes with `scripts\u002Fcommitter \"\u003Cconventional message>\" \u003Cpaths...>`.\n   Push when requested. If CI is red, inspect with `gh run list\u002Fview`, fix, push,\n   repeat until current CI is green or a blocker is proven unrelated.\n\n## Output\n\nEnd with the pushed commit(s), before\u002Fafter timings, gates run, current CI state,\nand any remaining tail lanes that need separate optimization.\n",{"name":5,"description":7},"main","a2e3284ed4488780397ee2f78217366e11470dfb","skills\u002Foptimizetests","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright","https:\u002F\u002Fplaywright.dev","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack","2026-04-25 06:04:45",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add 7dvq6yrkgs-stack\u002Fplaywright --skill optimizetests",{"tool":47,"command":48},"bunx","bunx skills add 7dvq6yrkgs-stack\u002Fplaywright --skill optimizetests",{"tool":50,"command":51},"pnpm","pnpm dlx skills add 7dvq6yrkgs-stack\u002Fplaywright --skill optimizetests","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Foptimizetests\u002FSKILL.md",true,[55,61],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},".skillfish.json","REFERENCE","参考文档",227,"https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Foptimizetests\u002F.skillfish.json",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"agents\u002Fopenai.yaml",409,"https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Foptimizetests\u002Fagents\u002Fopenai.yaml",[66,96,106,116,131,146],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":84,"publishedAt":29},"01M6E3XK4PRPMQHM7Y98FQPTY1","zyte-api-automation","Automate Zyte API tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzyte-api-automation\u002FSKILL.md",[72,73,76,79],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":74,"categoryName":75,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":77,"categoryName":78,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[85,86,87,88,89,90,91,92,93,94,95],"zyte api automation","api","automation","MCP","tasks","search","Tools","first","automate","composio","via",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":104,"publishedAt":29},"01M6E3XFX6QSTR1QR59NFXJTMA","zylvie-automation","Automate Zylvie tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzylvie-automation\u002FSKILL.md",[102,103],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":77,"categoryName":78,"taxonomyType":20,"taxonomyTypeDesc":21},[105,87,93,88,89,90,91,92,94,95],"zylvie automation",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":114,"publishedAt":29},"01M6E3XCX2GDYYCHN58ZJHT37M","zoominfo-automation","Automate Zoominfo tasks via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzoominfo-automation\u002FSKILL.md",[112,113],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":77,"categoryName":78,"taxonomyType":20,"taxonomyTypeDesc":21},[115,87,90,91,92,93,94,95,89,88],"zoominfo automation",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":124,"publishedAt":29},"01M6E3X9WJ2T73216WQHHTB9BD","zoho_mail-automation","Automate Zoho Mail tasks via Rube MCP (Composio): email sending, folders, labels, and mailbox management. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzoho_mail-automation\u002FSKILL.md",[122,123],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":77,"categoryName":78,"taxonomyType":20,"taxonomyTypeDesc":21},[125,126,127,87,88,89,90,128,91,92,93,129,94,130,95],"mail","zoho mail automation","zoho","email","management","mailbox",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":142,"publishedAt":29},"01M6E3X719W648XZBW1EC6JQ64","zoho_invoice-automation","Automate Zoho Invoice tasks via Rube MCP (Composio): invoices, estimates, expenses, clients, and payment tracking. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzoho_invoice-automation\u002FSKILL.md",[137,138,139],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":77,"categoryName":78,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":140,"categoryName":141,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000040","财务",[143,127,87,89,90,91,92,93,144,145,94,95,88],"zoho invoice automation","tracking","payment",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":154,"publishedAt":29},"01M6E3X28JYTC3QTK32AQF7BYB","zoho_inventory-automation","Automate Zoho Inventory tasks via Rube MCP (Composio): items, orders, warehouses, shipments, and stock management. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002F7dvq6yrkgs-stack\u002Fplaywright\u002Fblob\u002Fmain\u002Fskills\u002Fzoho_inventory-automation\u002FSKILL.md",[152,153],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":77,"categoryName":78,"taxonomyType":20,"taxonomyTypeDesc":21},[87,155,127,156,92,93,91,90,89,88,94,95,157,158,129],"inventory","zoho inventory automation","stock","orders"]