[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6QQAYHT28YYDFKWF2D8RZ51":3,"skill-same:01M6QQAYHT28YYDFKWF2D8RZ51":61},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":14,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6QQAYHT28YYDFKWF2D8RZ51","playwright",null,"End-to-end testing with Playwright for user journeys and accessibility","lfr-ai\u002Fcopier-fullstack-template","lfr-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F233346551?v=4","01M6QPWTJWTSJV1TQTTY8ZPBYJ","Laurits Fromberg","01M6QPWTQ47BZGA4TH17H14N80",0,"MIT","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fplaywright\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33],"testing","accessibility","e2e","user","tsx","tests","end","user journeys","with","for","2026-11-10 10:12:30",false,"---\nname: playwright\ndescription: End-to-end testing with Playwright for user journeys and accessibility\napplyTo: \"tests\u002Fe2e\u002F**\u002F*.{ts,tsx}\"\n---\n\n# Playwright E2E Testing Skill\n\n## Purpose\n\nWrite and maintain end-to-end tests that verify critical user journeys,\naccessibility compliance, and cross-browser behavior using Playwright.\n\n## Locator Priority\n\nUse accessible locators in this order:\n\n1. `page.getByRole()` — semantic role + accessible name\n2. `page.getByLabel()` — form controls by label\n3. `page.getByText()` — visible text content\n4. `page.getByPlaceholder()` — input placeholders\n5. `page.getByTestId()` — last resort for complex selectors\n\n## Best Practices\n\n- Test critical user journeys, not individual components.\n- Configure retries for CI (`retries: 2`).\n- Capture screenshots on failure.\n- Never hard-code sleeps\u002Ftimeouts; rely on Playwright auto-waiting.\n- Run against production build when possible.\n\n## Running Tests\n\n```bash\ntask test:e2e\ntask test:e2e:headed\ntask test:e2e:install\n```\n","# Playwright E2E Testing Skill\n\n## Purpose\n\nWrite and maintain end-to-end tests that verify critical user journeys,\naccessibility compliance, and cross-browser behavior using Playwright.\n\n## Locator Priority\n\nUse accessible locators in this order:\n\n1. `page.getByRole()` — semantic role + accessible name\n2. `page.getByLabel()` — form controls by label\n3. `page.getByText()` — visible text content\n4. `page.getByPlaceholder()` — input placeholders\n5. `page.getByTestId()` — last resort for complex selectors\n\n## Best Practices\n\n- Test critical user journeys, not individual components.\n- Configure retries for CI (`retries: 2`).\n- Capture screenshots on failure.\n- Never hard-code sleeps\u002Ftimeouts; rely on Playwright auto-waiting.\n- Run against production build when possible.\n\n## Running Tests\n\n```bash\ntask test:e2e\ntask test:e2e:headed\ntask test:e2e:install\n```\n",{"name":5,"applyTo":39,"description":7},"tests\u002Fe2e\u002F**\u002F*.{ts,tsx}","main","f726ce2f2bb4e3bcc2f56c066598f4acd910c5ee",".github\u002Fskills\u002Fplaywright","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template","https:\u002F\u002Fgithub.com\u002Flfr-ai","Optimizing for elegance","2026-07-20 12:19:48",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add lfr-ai\u002Fcopier-fullstack-template --skill playwright",{"tool":53,"command":54},"bunx","bunx skills add lfr-ai\u002Fcopier-fullstack-template --skill playwright",{"tool":56,"command":57},"pnpm","pnpm dlx skills add lfr-ai\u002Fcopier-fullstack-template --skill playwright","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fplaywright\u002FSKILL.md",true,[],[62,91,100,106,123,129],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":76,"publishedAt":34},"01M6QQGVYW8BZ3W165A5YMJ1PF","ui-ux-frontend","Frontend UX, accessibility, responsive layout, and Storybook interaction quality standards.","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Fui-ux-frontend\u002FSKILL.md",[68,71],{"categoryNo":69,"categoryName":70,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":72,"categoryName":73,"taxonomyType":74,"taxonomyTypeDesc":75},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[77,78,79,80,81,82,83,84,85,86,87,28,88,89,25,90],"ui ux","ui ux frontend","ui","ux","frontend","storybook","frontend ux","interaction","layout","responsive","mdx","standards","quality","css",{"skillNo":92,"name":93,"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":94,"categories":95,"keywords":97,"publishedAt":34},"01M6QQGS7N3ENQZR2Y5JBRYDHD","testing-conventions","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Ftesting-conventions\u002FSKILL.md",[96],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[98,99,24],"conventions","testing conventions",{"skillNo":101,"name":102,"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":103,"categories":104,"keywords":105,"publishedAt":34},"01M6QQGQKA9Q6A147WXMS7QPGX","tdd","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Ftdd\u002FSKILL.md",[],[102],{"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":113,"publishedAt":34},"01M6QQG5AZPRWSR6SSCCDDPAM3","shadcn-ui","shadcn\u002Fui component conventions and composition patterns","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Fshadcn-ui\u002FSKILL.md",[112],{"categoryNo":72,"categoryName":73,"taxonomyType":74,"taxonomyTypeDesc":75},[114,79,115,116,28,117,118,119,120,98,121,122],"shadcn ui","shadcn","component","Composition","src","composition patterns","presentation","patterns","ui component",{"skillNo":124,"name":125,"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":126,"categories":127,"keywords":128,"publishedAt":34},"01M6QQG3WMMB8X8C4T8PR7WBV4","sdd","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Fsdd\u002FSKILL.md",[],[125],{"skillNo":130,"name":131,"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":132,"categories":133,"keywords":134,"publishedAt":34},"01M6QQG241NAC5PQFXFD01NR16","quality-gate","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Fquality-gate\u002FSKILL.md",[],[135,89,136],"quality gate","gate"]