[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71SVJBHTBRZY810VRKT3WK0":3,"skill-same:01M71SVJBHTBRZY810VRKT3WK0":380},{"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":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M71SVJBHTBRZY810VRKT3WK0","vercel-react-best-practices",null,"React and Next.js performance optimization guidelines from Vercel Engineering","HigorAlves\u002Forc","HigorAlves","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11262976?v=4","01M71S79EZEMHZ8PQSV0XQJHYY","Higor Alves","01M71S79FKKTCHCN1EDR8DSTWQ",7,"MIT","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"react best practices","vercel react best practices","vercel","best practices","react","engineering","performance optimization","Next.js","use","guidelines","Optimization","for","data","refactoring","next","data fetching","components","when","writing","performance","2026-11-10 13:02:02",false,"---\nname: vercel-react-best-practices\ndescription: React and Next.js performance optimization guidelines from Vercel Engineering\nwhen_to_use: Use when writing, reviewing, or refactoring React\u002FNext.js components, data fetching, or bundles for performance.\nlicense: MIT\nmetadata:\n  author: vercel\n  version: \"1.0.0\"\n---\n\n# Vercel React Best Practices\n\nComprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 70 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing new React components or Next.js pages\n- Implementing data fetching (client or server-side)\n- Reviewing code for performance issues\n- Refactoring existing React\u002FNext.js code\n- Optimizing bundle size or load times\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Eliminating Waterfalls | CRITICAL | `async-` |\n| 2 | Bundle Size Optimization | CRITICAL | `bundle-` |\n| 3 | Server-Side Performance | HIGH | `server-` |\n| 4 | Client-Side Data Fetching | MEDIUM-HIGH | `client-` |\n| 5 | Re-render Optimization | MEDIUM | `rerender-` |\n| 6 | Rendering Performance | MEDIUM | `rendering-` |\n| 7 | JavaScript Performance | LOW-MEDIUM | `js-` |\n| 8 | Advanced Patterns | LOW | `advanced-` |\n\n## Quick Reference\n\nEvery rule id with a one-line summary, by category: [RULE-INDEX.md](references\u002FRULE-INDEX.md). Read it to pick the rules that apply to the code at hand; each id names its file under `rules\u002F`.\n\n## How to Use\n\nRead individual rule files for detailed explanations and code examples:\n\n```\nrules\u002Fasync-parallel.md\nrules\u002Fbundle-barrel-imports.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect code example with explanation\n- Correct code example with explanation\n- Additional context and references\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n","# Vercel React Best Practices\n\nComprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 70 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing new React components or Next.js pages\n- Implementing data fetching (client or server-side)\n- Reviewing code for performance issues\n- Refactoring existing React\u002FNext.js code\n- Optimizing bundle size or load times\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Eliminating Waterfalls | CRITICAL | `async-` |\n| 2 | Bundle Size Optimization | CRITICAL | `bundle-` |\n| 3 | Server-Side Performance | HIGH | `server-` |\n| 4 | Client-Side Data Fetching | MEDIUM-HIGH | `client-` |\n| 5 | Re-render Optimization | MEDIUM | `rerender-` |\n| 6 | Rendering Performance | MEDIUM | `rendering-` |\n| 7 | JavaScript Performance | LOW-MEDIUM | `js-` |\n| 8 | Advanced Patterns | LOW | `advanced-` |\n\n## Quick Reference\n\nEvery rule id with a one-line summary, by category: [RULE-INDEX.md](references\u002FRULE-INDEX.md). Read it to pick the rules that apply to the code at hand; each id names its file under `rules\u002F`.\n\n## How to Use\n\nRead individual rule files for detailed explanations and code examples:\n\n```\nrules\u002Fasync-parallel.md\nrules\u002Fbundle-barrel-imports.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect code example with explanation\n- Correct code example with explanation\n- Additional context and references\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n",{"name":5,"license":15,"metadata":49,"description":7,"when_to_use":51},{"author":26,"version":50},"1.0.0","Use when writing, reviewing, or refactoring React\u002FNext.js components, data fetching, or bundles for performance.","main","7522fd7266944e30052204c2f6df287d8b5516be","orc\u002Fskills\u002Fvercel-react-best-practices",0,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc","https:\u002F\u002Forc.novacstack.com\u002F","https:\u002F\u002Fgithub.com\u002FHigorAlves","higoralves.dev","Software Engineering","2026-11-07 07:26:38",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add HigorAlves\u002Forc --skill vercel-react-best-practices",{"tool":68,"command":69},"bunx","bunx skills add HigorAlves\u002Forc --skill vercel-react-best-practices",{"tool":71,"command":72},"pnpm","pnpm dlx skills add HigorAlves\u002Forc --skill vercel-react-best-practices","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002FSKILL.md",true,[76,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,233,237,241,245,249,253,257,261,265,269,273,277,281,285,289,293,297,301,305,309,313,317,321,325,329,333,337,341,345,349,353,357,361,365,369,372,376],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"AGENTS.md","REFERENCE","参考文档",108261,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002FAGENTS.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"metadata.json",921,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Fmetadata.json",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"README.md",3360,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002FREADME.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002FRULE-INDEX.md",5539,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Freferences\u002FRULE-INDEX.md",{"path":95,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":97},"rules\u002F_sections.md",1554,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002F_sections.md",{"path":99,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":100,"sourceHtmlUrl":101},"rules\u002F_template.md",631,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002F_template.md",{"path":103,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":104,"sourceHtmlUrl":105},"rules\u002Fadvanced-effect-event-deps.md",1802,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fadvanced-effect-event-deps.md",{"path":107,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":108,"sourceHtmlUrl":109},"rules\u002Fadvanced-event-handler-refs.md",1483,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fadvanced-event-handler-refs.md",{"path":111,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":112,"sourceHtmlUrl":113},"rules\u002Fadvanced-init-once.md",958,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fadvanced-init-once.md",{"path":115,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":116,"sourceHtmlUrl":117},"rules\u002Fadvanced-use-latest.md",1072,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fadvanced-use-latest.md",{"path":119,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":120,"sourceHtmlUrl":121},"rules\u002Fasync-api-routes.md",1125,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-api-routes.md",{"path":123,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":124,"sourceHtmlUrl":125},"rules\u002Fasync-cheap-condition-before-await.md",1220,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-cheap-condition-before-await.md",{"path":127,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":128,"sourceHtmlUrl":129},"rules\u002Fasync-defer-await.md",2208,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-defer-await.md",{"path":131,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":132,"sourceHtmlUrl":133},"rules\u002Fasync-dependencies.md",1293,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-dependencies.md",{"path":135,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":136,"sourceHtmlUrl":137},"rules\u002Fasync-parallel.md",654,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-parallel.md",{"path":139,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":140,"sourceHtmlUrl":141},"rules\u002Fasync-suspense-boundaries.md",2510,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-suspense-boundaries.md",{"path":143,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":144,"sourceHtmlUrl":145},"rules\u002Fbundle-analyzable-paths.md",2382,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-analyzable-paths.md",{"path":147,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":148,"sourceHtmlUrl":149},"rules\u002Fbundle-barrel-imports.md",2795,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-barrel-imports.md",{"path":151,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":152,"sourceHtmlUrl":153},"rules\u002Fbundle-conditional.md",949,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-conditional.md",{"path":155,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":156,"sourceHtmlUrl":157},"rules\u002Fbundle-defer-third-party.md",920,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-defer-third-party.md",{"path":159,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":160,"sourceHtmlUrl":161},"rules\u002Fbundle-dynamic-imports.md",791,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-dynamic-imports.md",{"path":163,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":164,"sourceHtmlUrl":165},"rules\u002Fbundle-preload.md",1149,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-preload.md",{"path":167,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":168,"sourceHtmlUrl":169},"rules\u002Fclient-event-listeners.md",1969,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fclient-event-listeners.md",{"path":171,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":172,"sourceHtmlUrl":173},"rules\u002Fclient-localstorage-schema.md",1950,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fclient-localstorage-schema.md",{"path":175,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":176,"sourceHtmlUrl":177},"rules\u002Fclient-passive-event-listeners.md",1644,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fclient-passive-event-listeners.md",{"path":179,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":180,"sourceHtmlUrl":181},"rules\u002Fclient-swr-dedup.md",1159,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fclient-swr-dedup.md",{"path":183,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":184,"sourceHtmlUrl":185},"rules\u002Fjs-batch-dom-css.md",3266,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-batch-dom-css.md",{"path":187,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":188,"sourceHtmlUrl":189},"rules\u002Fjs-cache-function-results.md",1949,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-cache-function-results.md",{"path":191,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":192,"sourceHtmlUrl":193},"rules\u002Fjs-cache-property-access.md",532,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-cache-property-access.md",{"path":195,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":196,"sourceHtmlUrl":197},"rules\u002Fjs-cache-storage.md",1651,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-cache-storage.md",{"path":199,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":200,"sourceHtmlUrl":201},"rules\u002Fjs-combine-iterations.md",753,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-combine-iterations.md",{"path":203,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":204,"sourceHtmlUrl":205},"rules\u002Fjs-early-exit.md",1133,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-early-exit.md",{"path":207,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":208,"sourceHtmlUrl":209},"rules\u002Fjs-flatmap-filter.md",1411,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-flatmap-filter.md",{"path":211,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":212,"sourceHtmlUrl":213},"rules\u002Fjs-hoist-regexp.md",1028,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-hoist-regexp.md",{"path":215,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":216,"sourceHtmlUrl":217},"rules\u002Fjs-index-maps.md",837,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-index-maps.md",{"path":219,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":220,"sourceHtmlUrl":221},"rules\u002Fjs-length-check-first.md",1747,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-length-check-first.md",{"path":223,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":224,"sourceHtmlUrl":225},"rules\u002Fjs-min-max-loop.md",2290,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-min-max-loop.md",{"path":227,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":228,"sourceHtmlUrl":229},"rules\u002Fjs-request-idle-callback.md",2647,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-request-idle-callback.md",{"path":231,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":192,"sourceHtmlUrl":232},"rules\u002Fjs-set-map-lookups.md","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-set-map-lookups.md",{"path":234,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":235,"sourceHtmlUrl":236},"rules\u002Fjs-tosorted-immutable.md",1782,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-tosorted-immutable.md",{"path":238,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":239,"sourceHtmlUrl":240},"rules\u002Frendering-activity.md",564,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-activity.md",{"path":242,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":243,"sourceHtmlUrl":244},"rules\u002Frendering-animate-svg-wrapper.md",1185,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-animate-svg-wrapper.md",{"path":246,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":247,"sourceHtmlUrl":248},"rules\u002Frendering-conditional-render.md",980,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-conditional-render.md",{"path":250,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":251,"sourceHtmlUrl":252},"rules\u002Frendering-content-visibility.md",815,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-content-visibility.md",{"path":254,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":255,"sourceHtmlUrl":256},"rules\u002Frendering-hoist-jsx.md",1039,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-hoist-jsx.md",{"path":258,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":259,"sourceHtmlUrl":260},"rules\u002Frendering-hydration-no-flicker.md",2308,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-hydration-no-flicker.md",{"path":262,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":263,"sourceHtmlUrl":264},"rules\u002Frendering-hydration-suppress-warning.md",872,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-hydration-suppress-warning.md",{"path":266,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":267,"sourceHtmlUrl":268},"rules\u002Frendering-resource-hints.md",2549,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-resource-hints.md",{"path":270,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":271,"sourceHtmlUrl":272},"rules\u002Frendering-script-defer-async.md",1868,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-script-defer-async.md",{"path":274,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":275,"sourceHtmlUrl":276},"rules\u002Frendering-svg-precision.md",588,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-svg-precision.md",{"path":278,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":279,"sourceHtmlUrl":280},"rules\u002Frendering-usetransition-loading.md",2074,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-usetransition-loading.md",{"path":282,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":283,"sourceHtmlUrl":284},"rules\u002Frerender-defer-reads.md",973,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-defer-reads.md",{"path":286,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":287,"sourceHtmlUrl":288},"rules\u002Frerender-dependencies.md",824,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-dependencies.md",{"path":290,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":291,"sourceHtmlUrl":292},"rules\u002Frerender-derived-state-no-effect.md",1201,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-derived-state-no-effect.md",{"path":294,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":295,"sourceHtmlUrl":296},"rules\u002Frerender-derived-state.md",728,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-derived-state.md",{"path":298,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":299,"sourceHtmlUrl":300},"rules\u002Frerender-functional-setstate.md",2968,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-functional-setstate.md",{"path":302,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":303,"sourceHtmlUrl":304},"rules\u002Frerender-lazy-state-init.md",2016,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-lazy-state-init.md",{"path":306,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":307,"sourceHtmlUrl":308},"rules\u002Frerender-memo-with-default-value.md",1173,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-memo-with-default-value.md",{"path":310,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":311,"sourceHtmlUrl":312},"rules\u002Frerender-memo.md",1148,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-memo.md",{"path":314,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":315,"sourceHtmlUrl":316},"rules\u002Frerender-move-effect-to-event.md",1268,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-move-effect-to-event.md",{"path":318,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":319,"sourceHtmlUrl":320},"rules\u002Frerender-no-inline-components.md",2135,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-no-inline-components.md",{"path":322,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":323,"sourceHtmlUrl":324},"rules\u002Frerender-simple-expression-in-memo.md",1018,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-simple-expression-in-memo.md",{"path":326,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":327,"sourceHtmlUrl":328},"rules\u002Frerender-split-combined-hooks.md",1844,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-split-combined-hooks.md",{"path":330,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":331,"sourceHtmlUrl":332},"rules\u002Frerender-transitions.md",1055,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-transitions.md",{"path":334,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":335,"sourceHtmlUrl":336},"rules\u002Frerender-use-deferred-value.md",1846,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-use-deferred-value.md",{"path":338,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":339,"sourceHtmlUrl":340},"rules\u002Frerender-use-ref-transient-values.md",1742,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-use-ref-transient-values.md",{"path":342,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":343,"sourceHtmlUrl":344},"rules\u002Fserver-after-nonblocking.md",2012,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-after-nonblocking.md",{"path":346,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":347,"sourceHtmlUrl":348},"rules\u002Fserver-auth-actions.md",2649,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-auth-actions.md",{"path":350,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":351,"sourceHtmlUrl":352},"rules\u002Fserver-cache-lru.md",1353,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-cache-lru.md",{"path":354,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":355,"sourceHtmlUrl":356},"rules\u002Fserver-cache-react.md",2228,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-cache-react.md",{"path":358,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":359,"sourceHtmlUrl":360},"rules\u002Fserver-dedup-props.md",2060,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-dedup-props.md",{"path":362,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":363,"sourceHtmlUrl":364},"rules\u002Fserver-hoist-static-io.md",4423,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-hoist-static-io.md",{"path":366,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":367,"sourceHtmlUrl":368},"rules\u002Fserver-no-shared-module-state.md",1766,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-no-shared-module-state.md",{"path":370,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":371},"rules\u002Fserver-parallel-fetching.md","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-parallel-fetching.md",{"path":373,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":374,"sourceHtmlUrl":375},"rules\u002Fserver-parallel-nested-fetching.md",992,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-parallel-nested-fetching.md",{"path":377,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":378,"sourceHtmlUrl":379},"rules\u002Fserver-serialization.md",996,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-serialization.md",[381,415,441,462,484,504],{"skillNo":382,"name":383,"nameZh":6,"description":384,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":385,"categories":386,"keywords":398,"publishedAt":44},"01M71SW40F9TAAEDKBYYBCM814","writing-plans","Write a comprehensive implementation plan of bite-sized TDD tasks that an engineer with zero codebase context could execute — exact files, code, tests, and verification steps","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[387,390,395],{"categoryNo":388,"categoryName":389,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":391,"categoryName":392,"taxonomyType":393,"taxonomyTypeDesc":394},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":396,"categoryName":397,"taxonomyType":393,"taxonomyTypeDesc":394},"01JBSEEDCAT000000000000036","内容创作者",[42,399,400,401,402,403,404,41,405,406,407,408,409,410,411,412,413,35,414,32],"writing plans","plans","engineer","superpowers","implementation plan","files","you","code","tasks","verification","plan","write","steps","context","ZeRO","tests",{"skillNo":416,"name":417,"nameZh":6,"description":418,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":419,"categories":420,"keywords":426,"publishedAt":44},"01M71SW15KHE4MHJW9NEXV65X2","writing-for-agents","orc's doctrine layer for writing any document an agent consumes — skills, AGENTS.md\u002FCLAUDE.md, reference docs","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[421,422,425],{"categoryNo":388,"categoryName":389,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":423,"categoryName":424,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":396,"categoryName":397,"taxonomyType":393,"taxonomyTypeDesc":394},[427,42,35,428,41,429,430,431,432,433,434,435,32,436,437,438,439,440],"writing for agents","matt pocock","inline","tuning","a skill","layer","doctrine","push","editing","document","github","https","reference","docs",{"skillNo":442,"name":443,"nameZh":6,"description":444,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":445,"categories":446,"keywords":448,"publishedAt":44},"01M71SVYQKXT743HHHWGHT3G13","workspace-mode","Use when cwd is a parent dir holding multiple sibling git repos — defines repo auto-detection, --repos\u002F--repo\u002F--all-repos\u002F--this-repo precedence, per-repo dispatch, and linked-PR mechanics.","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fworkspace-mode\u002FSKILL.md",[447],{"categoryNo":423,"categoryName":424,"taxonomyType":21,"taxonomyTypeDesc":22},[449,450,451,452,453,41,454,455,456,457,32,458,459,460,461],"workspace mode","mode","workspace","mechanics","auto","repos","git","pr","repo","dispatch","auto-detection","detection","parent",{"skillNo":463,"name":464,"nameZh":6,"description":465,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":466,"categories":467,"keywords":469,"publishedAt":44},"01M71SVVP3BXS06G9395P2K0RH","wizard","Generate an interactive bash wizard walking a human through work only they can perform — credentials, secrets, one-off migrations","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwizard\u002FSKILL.md",[468],{"categoryNo":423,"categoryName":424,"taxonomyType":21,"taxonomyTypeDesc":22},[464,470,471,472,473,428,41,474,475,476,477,478,479,411,480,481,35,32,482,483],"condition","never","provisioning infrastructure","only","Bash","work","credentials","generate","human","secrets","infrastructure","do","one","interactive",{"skillNo":485,"name":486,"nameZh":6,"description":487,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":488,"categories":489,"keywords":490,"publishedAt":44},"01M71SVT4AR6NKAM5B077E7QSJ","wait-what","Stop and re-pitch — the last message did not land; say it again simply, in the project's own vocabulary.","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[491,492,493,494,495,428,496,497,498,499,437,438,500,501,502,503],"wait what","wait","project","re","true","pitch","last","say","message","land","it","stop","vocabulary",{"skillNo":505,"name":506,"nameZh":6,"description":507,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":508,"categories":509,"keywords":514,"publishedAt":44},"01M71SVQVYRA9QBQ6G8MWR8G6F","vitest","Vitest fast unit testing framework powered by Vite with Jest-compatible API","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvitest\u002FSKILL.md",[510,513],{"categoryNo":511,"categoryName":512,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":391,"categoryName":392,"taxonomyType":393,"taxonomyTypeDesc":394},[506,515,516,517,518,519,42,41,520,521,522,523,524,525,526,527,528,529,414,530],"coverage","unit","testing","testing framework","generated","api","jest","2026","at","scripts","unit testing","antfu","framework","vite","mocking","dev"]