[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6QQEZQMS1YVXA4J12CCKJTR":3,"skill-same:01M6QQEZQMS1YVXA4J12CCKJTR":53},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":13,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6QQEZQMS1YVXA4J12CCKJTR","frontend-react-stack",null,"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\u002Ftemplate\u002F.github\u002Fskills\u002Ffrontend-react-stack\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[23,24,25,26,27],"frontend","react","stack","frontend react","frontend react stack","2026-11-10 10:12:30",false,"# Frontend React Stack Skill\n\n## Scope\n\nApply this skill for all frontend changes under `frontend\u002F`.\n\n## Technology Stack\n\n| Concern | Technology | Version |\n|---------|-----------|---------|\n| **Build** | Vite | 6+ |\n| **Language** | TypeScript | strict mode |\n| **UI Framework** | React | 19 |\n| **UI Components** | shadcn\u002Fui | Radix primitives + Tailwind CSS v4 |\n| **Routing** | React Router | v7 (`react-router`) |\n| **Forms** | React Hook Form + Zod | v7 + `@hookform\u002Fresolvers` |\n| **Server State** | TanStack Query | v5 |\n| **Client State** | Zustand | v5 |\n| **Data Tables** | TanStack Table | v8 |\n| **Styling** | Tailwind CSS | v4 (oklch tokens + `@theme inline`) |\n| **Icons** | Lucide React | latest |\n| **Toast** | Sonner | via shadcn `sonner` component |\n| **Linting** | Biome | latest |\n| **Testing** | Vitest + RTL + Playwright | latest |\n| **Package Manager** | bun | latest |\n| **Component Workshop** | Storybook + addon-mcp | latest |\n\n## Non-goals\n\n- Do NOT introduce Lit web components, Vue, Angular, or other front frameworks\n- Do NOT introduce alternative routing systems unless explicitly requested\n- Do NOT introduce TanStack Form (`@tanstack\u002Freact-form`) — use React Hook Form\n  as the only form library\n- Do NOT bypass shadcn primitives for shared controls without documented reason\n- Do NOT use Jinja2 templates for frontend views\n\n## Project Architecture\n\n```text\nfrontend\u002Fsrc\u002F\n├── application\u002F         # TanStack Query hooks + Zustand stores\n├── domain\u002F              # Models, Zod schemas, utility types\n├── infrastructure\u002F      # API client, config (runtime, env, registry)\n├── lib\u002F                 # Shared utilities (cn(), form helpers)\n├── presentation\u002F        # UI layer\n│   ├── components\u002Fui\u002F   # shadcn\u002Fui primitives (button, card, dialog, ...)\n│   ├── components\u002F      # Domain components (citation, layout)\n│   ├── features\u002F        # Feature modules (case-detail, cases, modals)\n│   ├── pages\u002F           # Route page components\n│   └── providers\u002F       # React context providers (theme)\n├── router\u002F              # React Router route definitions\n└── styles\u002F              # Tailwind CSS + shadcn theme tokens\n```\n\n## Quality Gates\n\n- TypeScript strict mode must remain clean\n- All existing tests must remain green\n- Add targeted tests for new behaviors\n- Use stable selectors and deterministic mocks for e2e tests\n- Keep component composition consistent with shadcn patterns\n\n## Storybook Agentic Baseline\n\n- Keep stories focused to a single intent\u002Fuse case.\n- Include concise component and story descriptions for manifest quality.\n- Add interaction tests (`play`) for critical UX behavior.\n- Curate low-signal stories\u002Fdocs with `!manifest` tags when needed.\n- Keep preview-level providers\u002Fmocks centralized for deterministic stories.\n",{},"main","f726ce2f2bb4e3bcc2f56c066598f4acd910c5ee","template\u002F.github\u002Fskills\u002Ffrontend-react-stack","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":7,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add lfr-ai\u002Fcopier-fullstack-template --skill frontend-react-stack",{"tool":45,"command":46},"bunx","bunx skills add lfr-ai\u002Fcopier-fullstack-template --skill frontend-react-stack",{"tool":48,"command":49},"pnpm","pnpm dlx skills add lfr-ai\u002Fcopier-fullstack-template --skill frontend-react-stack","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Ffrontend-react-stack\u002FSKILL.md",true,[],[54,82,94,100,117,123],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":66,"publishedAt":28},"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",[60,61],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":62,"categoryName":63,"taxonomyType":64,"taxonomyTypeDesc":65},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[67,68,69,70,23,71,72,73,74,75,76,77,78,79,80,81],"ui ux","ui ux frontend","ui","ux","storybook","frontend ux","interaction","layout","responsive","mdx","tsx","standards","quality","accessibility","css",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":90,"publishedAt":28},"01M6QQGS7N3ENQZR2Y5JBRYDHD","testing-conventions","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Ftesting-conventions\u002FSKILL.md",[87],{"categoryNo":88,"categoryName":89,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",[91,92,93],"conventions","testing conventions","testing",{"skillNo":95,"name":96,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":28},"01M6QQGQKA9Q6A147WXMS7QPGX","tdd","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Ftdd\u002FSKILL.md",[],[96],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":107,"publishedAt":28},"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",[106],{"categoryNo":62,"categoryName":63,"taxonomyType":64,"taxonomyTypeDesc":65},[108,69,109,110,77,111,112,113,114,91,115,116],"shadcn ui","shadcn","component","Composition","src","composition patterns","presentation","patterns","ui component",{"skillNo":118,"name":119,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":28},"01M6QQG3WMMB8X8C4T8PR7WBV4","sdd","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Fsdd\u002FSKILL.md",[],[119],{"skillNo":124,"name":125,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":28},"01M6QQG241NAC5PQFXFD01NR16","quality-gate","https:\u002F\u002Fgithub.com\u002Flfr-ai\u002Fcopier-fullstack-template\u002Fblob\u002Fmain\u002Ftemplate\u002F.github\u002Fskills\u002Fquality-gate\u002FSKILL.md",[],[129,79,130],"quality gate","gate"]