[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71JSBRNMRPR5XXEEZEE8XWX":3,"skill-same:01M71JSBRNMRPR5XXEEZEE8XWX":122},{"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":26,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":53,"commitSha":54,"skillDirectory":5,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M71JSBRNMRPR5XXEEZEE8XWX","vue-testing-best-practices",null,"Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.","caezium\u002Fskills","caezium","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F113233555?v=4","01M71JB77ZPBAWEK009Y2W8BP7","Henry Zhang","01M71JB792NVXCWSYD27HQ0964",3,"MIT","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"testing","testing best practices","vue","best practices","vue testing best practices","e2e testing","js","patterns","use","utils","e2e","mocking","for","vitest","github","component","testing patterns","test","playwright","2026-11-10 10:12:30",false,"---\nname: vue-testing-best-practices\nversion: 1.0.0\nlicense: MIT\nauthor: github.com\u002Fvuejs-ai\ndescription: Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.\n---\n\nVue.js testing best practices, patterns, and common gotchas.\n\n### Testing\n- Setting up test infrastructure for Vue 3 projects → See [testing-vitest-recommended-for-vue](reference\u002Ftesting-vitest-recommended-for-vue.md)\n- Tests keep breaking when refactoring component internals → See [testing-component-blackbox-approach](reference\u002Ftesting-component-blackbox-approach.md)\n- Tests fail intermittently with race conditions → See [testing-async-await-flushpromises](reference\u002Ftesting-async-await-flushpromises.md)\n- Composables using lifecycle hooks or inject fail to test → See [testing-composables-helper-wrapper](reference\u002Ftesting-composables-helper-wrapper.md)\n- Getting \"injection Symbol(pinia) not found\" errors in tests → See [testing-pinia-store-setup](reference\u002Ftesting-pinia-store-setup.md)\n- Components with async setup won't render in tests → See [testing-suspense-async-components](reference\u002Ftesting-suspense-async-components.md)\n- Snapshot tests keep passing despite broken functionality → See [testing-no-snapshot-only](reference\u002Ftesting-no-snapshot-only.md)\n- Choosing end-to-end testing framework for Vue apps → See [testing-e2e-playwright-recommended](reference\u002Ftesting-e2e-playwright-recommended.md)\n- Tests need to verify computed styles or real DOM events → See [testing-browser-vs-node-runners](reference\u002Ftesting-browser-vs-node-runners.md)\n- Testing components created with defineAsyncComponent fails → See [async-component-testing](reference\u002Fasync-component-testing.md)\n- Teleported modal content can't be found in wrapper queries → See [teleport-testing-complexity](reference\u002Fteleport-testing-complexity.md)\n\n## Reference\n\n- [Vue.js Testing Guide](https:\u002F\u002Fvuejs.org\u002Fguide\u002Fscaling-up\u002Ftesting)\n- [Vue Test Utils](https:\u002F\u002Ftest-utils.vuejs.org\u002F)\n- [Vitest Documentation](https:\u002F\u002Fvitest.dev\u002F)\n- [Playwright Documentation](https:\u002F\u002Fplaywright.dev\u002F)\n","Vue.js testing best practices, patterns, and common gotchas.\n\n### Testing\n- Setting up test infrastructure for Vue 3 projects → See [testing-vitest-recommended-for-vue](reference\u002Ftesting-vitest-recommended-for-vue.md)\n- Tests keep breaking when refactoring component internals → See [testing-component-blackbox-approach](reference\u002Ftesting-component-blackbox-approach.md)\n- Tests fail intermittently with race conditions → See [testing-async-await-flushpromises](reference\u002Ftesting-async-await-flushpromises.md)\n- Composables using lifecycle hooks or inject fail to test → See [testing-composables-helper-wrapper](reference\u002Ftesting-composables-helper-wrapper.md)\n- Getting \"injection Symbol(pinia) not found\" errors in tests → See [testing-pinia-store-setup](reference\u002Ftesting-pinia-store-setup.md)\n- Components with async setup won't render in tests → See [testing-suspense-async-components](reference\u002Ftesting-suspense-async-components.md)\n- Snapshot tests keep passing despite broken functionality → See [testing-no-snapshot-only](reference\u002Ftesting-no-snapshot-only.md)\n- Choosing end-to-end testing framework for Vue apps → See [testing-e2e-playwright-recommended](reference\u002Ftesting-e2e-playwright-recommended.md)\n- Tests need to verify computed styles or real DOM events → See [testing-browser-vs-node-runners](reference\u002Ftesting-browser-vs-node-runners.md)\n- Testing components created with defineAsyncComponent fails → See [async-component-testing](reference\u002Fasync-component-testing.md)\n- Teleported modal content can't be found in wrapper queries → See [teleport-testing-complexity](reference\u002Fteleport-testing-complexity.md)\n\n## Reference\n\n- [Vue.js Testing Guide](https:\u002F\u002Fvuejs.org\u002Fguide\u002Fscaling-up\u002Ftesting)\n- [Vue Test Utils](https:\u002F\u002Ftest-utils.vuejs.org\u002F)\n- [Vitest Documentation](https:\u002F\u002Fvitest.dev\u002F)\n- [Playwright Documentation](https:\u002F\u002Fplaywright.dev\u002F)\n",{"name":5,"author":51,"license":15,"version":52,"description":7},"github.com\u002Fvuejs-ai","1.0.0","main","6ef866230c1ba3459fd08fc65141dfd37fffd41a",0,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills","https:\u002F\u002Fskills.henryzh.dev","https:\u002F\u002Fgithub.com\u002Fcaezium","henryzh.dev","quant, data science, full-stack, robotics.\r\nbuilding cool stuff","2026-08-24 19:21:44",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add caezium\u002Fskills --skill vue-testing-best-practices",{"tool":68,"command":69},"bunx","bunx skills add caezium\u002Fskills --skill vue-testing-best-practices",{"tool":71,"command":72},"pnpm","pnpm dlx skills add caezium\u002Fskills --skill vue-testing-best-practices","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002FSKILL.md",true,[76,82,86,90,94,98,102,106,110,114,118],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"reference\u002Fasync-component-testing.md","REFERENCE","参考文档",4896,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Fasync-component-testing.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"reference\u002Fteleport-testing-complexity.md",4136,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Fteleport-testing-complexity.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"reference\u002Ftesting-async-await-flushpromises.md",5254,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-async-await-flushpromises.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"reference\u002Ftesting-browser-vs-node-runners.md",5623,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-browser-vs-node-runners.md",{"path":95,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":97},"reference\u002Ftesting-component-blackbox-approach.md",4753,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-component-blackbox-approach.md",{"path":99,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":100,"sourceHtmlUrl":101},"reference\u002Ftesting-composables-helper-wrapper.md",6119,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-composables-helper-wrapper.md",{"path":103,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":104,"sourceHtmlUrl":105},"reference\u002Ftesting-e2e-playwright-recommended.md",6581,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-e2e-playwright-recommended.md",{"path":107,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":108,"sourceHtmlUrl":109},"reference\u002Ftesting-no-snapshot-only.md",6283,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-no-snapshot-only.md",{"path":111,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":112,"sourceHtmlUrl":113},"reference\u002Ftesting-pinia-store-setup.md",6249,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-pinia-store-setup.md",{"path":115,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":116,"sourceHtmlUrl":117},"reference\u002Ftesting-suspense-async-components.md",6448,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-suspense-async-components.md",{"path":119,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":120,"sourceHtmlUrl":121},"reference\u002Ftesting-vitest-recommended-for-vue.md",5039,"https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fvue-testing-best-practices\u002Freference\u002Ftesting-vitest-recommended-for-vue.md",[123,143,170,188,209,231],{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":137,"publishedAt":46},"01M71JT4RYCAS18RF6003YYR1D","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwriting-for-agents\u002FSKILL.md",[129,132],{"categoryNo":130,"categoryName":131,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[138,39,139,140,35,141,142],"writing for agents","writing","editing","documents","when",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":152,"publishedAt":46},"01M71JT0GES4AZ5ADH8EADNN1Z","wrangler","Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwrangler\u002FSKILL.md",[149],{"categoryNo":150,"categoryName":151,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[145,153,154,155,156,157,158,159,160,161,162,163,164,39,165,166,167,168,30,169],"cloudflare","d1","knowledge","workflows","cli","secrets","commands","syntax","cloudflare workers","r2","queues","running","containers","correct","load","workers","store",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":46},"01M71JSWX4R203M32K9A18AAW8","workers-best-practices","Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fworkers-best-practices\u002FSKILL.md",[],[177,168,30,178,179,180,39,153,181,155,182,145,139,167,142,183,184,185,186,187],"workers best practices","observability","reviews","promises","worker","new","code","common","streaming","state","anti-patterns",{"skillNo":189,"name":190,"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":46},"01M71JST6P88MXGT2MWDTPJGEG","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwizard\u002FSKILL.md",[],[190,164,195,39,196,197,198,199,35,200,142,201,202,203,204,205,206,207,208,158],"setting","up","ci","provisioning infrastructure","only","invoke","Bash","one","interactive","can","credentials","dashboard","generate","human",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":213,"sourceHtmlUrl":214,"categories":215,"keywords":216,"publishedAt":46},"01M71JSQ95S7BQ61DAPN95X2W4","why","Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Discovers available evidence sources, searches each relevant category, and returns a cited read on decisions and tradeoffs. Use how for runtime behavior.","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwhy\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fwhy\u002FSKILL.md",[],[211,217,218,219,220,39,221,222,35,223,224,225,226,227,228,229,230],"sources","thresholds","evidence","relevant","runtime","design","decisions","work","how","behavior","read","data","rationale","returns",{"skillNo":232,"name":233,"nameZh":6,"description":234,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":235,"categories":236,"keywords":240,"publishedAt":46},"01M71JSMHFVSH8HK8GXN6YAX6J","week-prep","Generate a briefing with calendar, tasks, and attention flags. Use for \"week prep\", \"briefing\", or \"what's on this week\".","https:\u002F\u002Fgithub.com\u002Fcaezium\u002Fskills\u002Fblob\u002Fmain\u002Fweek-prep\u002FSKILL.md",[237],{"categoryNo":238,"categoryName":239,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[241,242,243,244,245,39,246,247,248,249,35,201,250,251,252,207,253,227,254,255],"week prep","prep","deep","attention","get","search","messages","briefing","MCP","tasks","with","slack","calendar","flags","grep"]