[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C20ZB88RJXN96RAD9YYQH4":3,"skill-same:01M6C20ZB88RJXN96RAD9YYQH4":373},{"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":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M6C20ZB88RJXN96RAD9YYQH4","vercel-react-best-practices",null,"React performance optimization guidelines from Vercel Engineering. Use when writing, reviewing, or refactoring React UI (Ahentic sidebar under src\u002Fadmin\u002Fjs\u002Fsidebar\u002F), data fetching, bundle size, re-renders, or load-time improvements. Prefer React client rules; skip Next.js\u002FRSC-only guidance in this WordPress plugin.","gambitph\u002FCimo","gambitph","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3227089?v=4","01M6C1ZD8129MTRC23K53VJ45E","Gambit Technologies","01M6C1ZDCJPEHP3CKCWNG7HDVV",2,"MIT","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\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],"vercel","react","vercel react best practices","best practices","react best practices","Optimization","use","Rules","bundle size","performance optimization","src","react ui","refactoring","Next.js","writing","admin","guidelines","plugin","performance","wordpress","2026-11-10 10:12:30",false,"---\nname: vercel-react-best-practices\ndescription: React performance optimization guidelines from Vercel Engineering. Use when writing, reviewing, or refactoring React UI (Ahentic sidebar under src\u002Fadmin\u002Fjs\u002Fsidebar\u002F), data fetching, bundle size, re-renders, or load-time improvements. Prefer React client rules; skip Next.js\u002FRSC-only guidance in this WordPress plugin.\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## Ahentic \u002F WordPress scope\n\nThis repo is a WordPress plugin, not a Next.js app:\n\n- UI uses `@wordpress\u002Felement` (React) and plain `.js` (JSX via wp-scripts) — not TypeScript, not the Next.js App Router.\n- Prefer rules under `rerender-`, `rendering-`, `js-`, `bundle-`, `client-`, and applicable `async-` categories.\n- Do **not** apply Next.js \u002F RSC \u002F server-actions guidance (`next\u002Fdynamic`, `React.cache`, server components, `after()`, App Router data fetching, etc.) unless the user explicitly asks about Next.js.\n- Defer to Ahentic project rules for WordPress packages, theming tokens, and sidebar architecture.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing or reviewing Ahentic React sidebar components\n- Implementing client-side data fetching\n- Reviewing code for performance issues\n- Refactoring React UI for fewer re-renders or smaller bundles\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\n### 1. Eliminating Waterfalls (CRITICAL)\n\n- `async-cheap-condition-before-await` - Check cheap sync conditions before awaiting flags or remote values\n- `async-defer-await` - Move await into branches where actually used\n- `async-parallel` - Use Promise.all() for independent operations\n- `async-dependencies` - Use better-all for partial dependencies\n- `async-api-routes` - Start promises early, await late in API routes\n- `async-suspense-boundaries` - Use Suspense to stream content\n\n### 2. Bundle Size Optimization (CRITICAL)\n\n- `bundle-barrel-imports` - Import directly, avoid barrel files\n- `bundle-analyzable-paths` - Prefer statically analyzable import and file-system paths to avoid broad bundles and traces\n- `bundle-dynamic-imports` - Use next\u002Fdynamic for heavy components\n- `bundle-defer-third-party` - Load analytics\u002Flogging after hydration\n- `bundle-conditional` - Load modules only when feature is activated\n- `bundle-preload` - Preload on hover\u002Ffocus for perceived speed\n\n### 3. Server-Side Performance (HIGH)\n\n- `server-auth-actions` - Authenticate server actions like API routes\n- `server-cache-react` - Use React.cache() for per-request deduplication\n- `server-cache-lru` - Use LRU cache for cross-request caching\n- `server-dedup-props` - Avoid duplicate serialization in RSC props\n- `server-hoist-static-io` - Hoist static I\u002FO (fonts, logos) to module level\n- `server-no-shared-module-state` - Avoid module-level mutable request state in RSC\u002FSSR\n- `server-serialization` - Minimize data passed to client components\n- `server-parallel-fetching` - Restructure components to parallelize fetches\n- `server-parallel-nested-fetching` - Chain nested fetches per item in Promise.all\n- `server-after-nonblocking` - Use after() for non-blocking operations\n\n### 4. Client-Side Data Fetching (MEDIUM-HIGH)\n\n- `client-swr-dedup` - Use SWR for automatic request deduplication\n- `client-event-listeners` - Deduplicate global event listeners\n- `client-passive-event-listeners` - Use passive listeners for scroll\n- `client-localstorage-schema` - Version and minimize localStorage data\n\n### 5. Re-render Optimization (MEDIUM)\n\n- `rerender-defer-reads` - Don't subscribe to state only used in callbacks\n- `rerender-memo` - Extract expensive work into memoized components\n- `rerender-memo-with-default-value` - Hoist default non-primitive props\n- `rerender-dependencies` - Use primitive dependencies in effects\n- `rerender-derived-state` - Subscribe to derived booleans, not raw values\n- `rerender-derived-state-no-effect` - Derive state during render, not effects\n- `rerender-functional-setstate` - Use functional setState for stable callbacks\n- `rerender-lazy-state-init` - Pass function to useState for expensive values\n- `rerender-simple-expression-in-memo` - Avoid memo for simple primitives\n- `rerender-split-combined-hooks` - Split hooks with independent dependencies\n- `rerender-move-effect-to-event` - Put interaction logic in event handlers\n- `rerender-transitions` - Use startTransition for non-urgent updates\n- `rerender-use-deferred-value` - Defer expensive renders to keep input responsive\n- `rerender-use-ref-transient-values` - Use refs for transient frequent values\n- `rerender-no-inline-components` - Don't define components inside components\n\n### 6. Rendering Performance (MEDIUM)\n\n- `rendering-animate-svg-wrapper` - Animate div wrapper, not SVG element\n- `rendering-content-visibility` - Use content-visibility for long lists\n- `rendering-hoist-jsx` - Extract static JSX outside components\n- `rendering-svg-precision` - Reduce SVG coordinate precision\n- `rendering-hydration-no-flicker` - Use inline script for client-only data\n- `rendering-hydration-suppress-warning` - Suppress expected mismatches\n- `rendering-activity` - Use Activity component for show\u002Fhide\n- `rendering-conditional-render` - Use ternary, not && for conditionals\n- `rendering-usetransition-loading` - Prefer useTransition for loading state\n- `rendering-resource-hints` - Use React DOM resource hints for preloading\n- `rendering-script-defer-async` - Use defer or async on script tags\n\n### 7. JavaScript Performance (LOW-MEDIUM)\n\n- `js-batch-dom-css` - Group CSS changes via classes or cssText\n- `js-index-maps` - Build Map for repeated lookups\n- `js-cache-property-access` - Cache object properties in loops\n- `js-cache-function-results` - Cache function results in module-level Map\n- `js-cache-storage` - Cache localStorage\u002FsessionStorage reads\n- `js-combine-iterations` - Combine multiple filter\u002Fmap into one loop\n- `js-length-check-first` - Check array length before expensive comparison\n- `js-early-exit` - Return early from functions\n- `js-hoist-regexp` - Hoist RegExp creation outside loops\n- `js-min-max-loop` - Use loop for min\u002Fmax instead of sort\n- `js-set-map-lookups` - Use Set\u002FMap for O(1) lookups\n- `js-tosorted-immutable` - Use toSorted() for immutability\n- `js-flatmap-filter` - Use flatMap to map and filter in one pass\n- `js-request-idle-callback` - Defer non-critical work to browser idle time\n\n### 8. Advanced Patterns (LOW)\n\n- `advanced-effect-event-deps` - Don't put `useEffectEvent` results in effect deps\n- `advanced-event-handler-refs` - Store event handlers in refs\n- `advanced-init-once` - Initialize app once per app load\n- `advanced-use-latest` - useLatest for stable callback refs\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## Ahentic \u002F WordPress scope\n\nThis repo is a WordPress plugin, not a Next.js app:\n\n- UI uses `@wordpress\u002Felement` (React) and plain `.js` (JSX via wp-scripts) — not TypeScript, not the Next.js App Router.\n- Prefer rules under `rerender-`, `rendering-`, `js-`, `bundle-`, `client-`, and applicable `async-` categories.\n- Do **not** apply Next.js \u002F RSC \u002F server-actions guidance (`next\u002Fdynamic`, `React.cache`, server components, `after()`, App Router data fetching, etc.) unless the user explicitly asks about Next.js.\n- Defer to Ahentic project rules for WordPress packages, theming tokens, and sidebar architecture.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing or reviewing Ahentic React sidebar components\n- Implementing client-side data fetching\n- Reviewing code for performance issues\n- Refactoring React UI for fewer re-renders or smaller bundles\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\n### 1. Eliminating Waterfalls (CRITICAL)\n\n- `async-cheap-condition-before-await` - Check cheap sync conditions before awaiting flags or remote values\n- `async-defer-await` - Move await into branches where actually used\n- `async-parallel` - Use Promise.all() for independent operations\n- `async-dependencies` - Use better-all for partial dependencies\n- `async-api-routes` - Start promises early, await late in API routes\n- `async-suspense-boundaries` - Use Suspense to stream content\n\n### 2. Bundle Size Optimization (CRITICAL)\n\n- `bundle-barrel-imports` - Import directly, avoid barrel files\n- `bundle-analyzable-paths` - Prefer statically analyzable import and file-system paths to avoid broad bundles and traces\n- `bundle-dynamic-imports` - Use next\u002Fdynamic for heavy components\n- `bundle-defer-third-party` - Load analytics\u002Flogging after hydration\n- `bundle-conditional` - Load modules only when feature is activated\n- `bundle-preload` - Preload on hover\u002Ffocus for perceived speed\n\n### 3. Server-Side Performance (HIGH)\n\n- `server-auth-actions` - Authenticate server actions like API routes\n- `server-cache-react` - Use React.cache() for per-request deduplication\n- `server-cache-lru` - Use LRU cache for cross-request caching\n- `server-dedup-props` - Avoid duplicate serialization in RSC props\n- `server-hoist-static-io` - Hoist static I\u002FO (fonts, logos) to module level\n- `server-no-shared-module-state` - Avoid module-level mutable request state in RSC\u002FSSR\n- `server-serialization` - Minimize data passed to client components\n- `server-parallel-fetching` - Restructure components to parallelize fetches\n- `server-parallel-nested-fetching` - Chain nested fetches per item in Promise.all\n- `server-after-nonblocking` - Use after() for non-blocking operations\n\n### 4. Client-Side Data Fetching (MEDIUM-HIGH)\n\n- `client-swr-dedup` - Use SWR for automatic request deduplication\n- `client-event-listeners` - Deduplicate global event listeners\n- `client-passive-event-listeners` - Use passive listeners for scroll\n- `client-localstorage-schema` - Version and minimize localStorage data\n\n### 5. Re-render Optimization (MEDIUM)\n\n- `rerender-defer-reads` - Don't subscribe to state only used in callbacks\n- `rerender-memo` - Extract expensive work into memoized components\n- `rerender-memo-with-default-value` - Hoist default non-primitive props\n- `rerender-dependencies` - Use primitive dependencies in effects\n- `rerender-derived-state` - Subscribe to derived booleans, not raw values\n- `rerender-derived-state-no-effect` - Derive state during render, not effects\n- `rerender-functional-setstate` - Use functional setState for stable callbacks\n- `rerender-lazy-state-init` - Pass function to useState for expensive values\n- `rerender-simple-expression-in-memo` - Avoid memo for simple primitives\n- `rerender-split-combined-hooks` - Split hooks with independent dependencies\n- `rerender-move-effect-to-event` - Put interaction logic in event handlers\n- `rerender-transitions` - Use startTransition for non-urgent updates\n- `rerender-use-deferred-value` - Defer expensive renders to keep input responsive\n- `rerender-use-ref-transient-values` - Use refs for transient frequent values\n- `rerender-no-inline-components` - Don't define components inside components\n\n### 6. Rendering Performance (MEDIUM)\n\n- `rendering-animate-svg-wrapper` - Animate div wrapper, not SVG element\n- `rendering-content-visibility` - Use content-visibility for long lists\n- `rendering-hoist-jsx` - Extract static JSX outside components\n- `rendering-svg-precision` - Reduce SVG coordinate precision\n- `rendering-hydration-no-flicker` - Use inline script for client-only data\n- `rendering-hydration-suppress-warning` - Suppress expected mismatches\n- `rendering-activity` - Use Activity component for show\u002Fhide\n- `rendering-conditional-render` - Use ternary, not && for conditionals\n- `rendering-usetransition-loading` - Prefer useTransition for loading state\n- `rendering-resource-hints` - Use React DOM resource hints for preloading\n- `rendering-script-defer-async` - Use defer or async on script tags\n\n### 7. JavaScript Performance (LOW-MEDIUM)\n\n- `js-batch-dom-css` - Group CSS changes via classes or cssText\n- `js-index-maps` - Build Map for repeated lookups\n- `js-cache-property-access` - Cache object properties in loops\n- `js-cache-function-results` - Cache function results in module-level Map\n- `js-cache-storage` - Cache localStorage\u002FsessionStorage reads\n- `js-combine-iterations` - Combine multiple filter\u002Fmap into one loop\n- `js-length-check-first` - Check array length before expensive comparison\n- `js-early-exit` - Return early from functions\n- `js-hoist-regexp` - Hoist RegExp creation outside loops\n- `js-min-max-loop` - Use loop for min\u002Fmax instead of sort\n- `js-set-map-lookups` - Use Set\u002FMap for O(1) lookups\n- `js-tosorted-immutable` - Use toSorted() for immutability\n- `js-flatmap-filter` - Use flatMap to map and filter in one pass\n- `js-request-idle-callback` - Defer non-critical work to browser idle time\n\n### 8. Advanced Patterns (LOW)\n\n- `advanced-effect-event-deps` - Don't put `useEffectEvent` results in effect deps\n- `advanced-event-handler-refs` - Store event handlers in refs\n- `advanced-init-once` - Initialize app once per app load\n- `advanced-use-latest` - useLatest for stable callback refs\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},{"author":24,"version":50},"1.0.0","develop","647b3a86ad96843d26f677d200372b67b7336254",".cursor\u002Fskills\u002Fvercel-react-best-practices",0,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo","https:\u002F\u002Fgithub.com\u002Fgambitph","https:\u002F\u002Fwpstackable.com","2026-10-15 14:34:26",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add gambitph\u002FCimo --skill vercel-react-best-practices",{"tool":65,"command":66},"bunx","bunx skills add gambitph\u002FCimo --skill vercel-react-best-practices",{"tool":68,"command":69},"pnpm","pnpm dlx skills add gambitph\u002FCimo --skill vercel-react-best-practices","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002FSKILL.md",true,[73,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294,298,302,306,310,314,318,322,326,330,334,338,342,346,350,354,358,362,365,369],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"AGENTS.md","REFERENCE","参考文档",108261,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002FAGENTS.md",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"metadata.json",921,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Fmetadata.json",{"path":84,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":85,"sourceHtmlUrl":86},"README.md",3360,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002FREADME.md",{"path":88,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":90},"rules\u002F_sections.md",1554,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002F_sections.md",{"path":92,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":93,"sourceHtmlUrl":94},"rules\u002F_template.md",631,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002F_template.md",{"path":96,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":97,"sourceHtmlUrl":98},"rules\u002Fadvanced-effect-event-deps.md",1802,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fadvanced-effect-event-deps.md",{"path":100,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":101,"sourceHtmlUrl":102},"rules\u002Fadvanced-event-handler-refs.md",1483,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fadvanced-event-handler-refs.md",{"path":104,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":105,"sourceHtmlUrl":106},"rules\u002Fadvanced-init-once.md",958,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fadvanced-init-once.md",{"path":108,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":109,"sourceHtmlUrl":110},"rules\u002Fadvanced-use-latest.md",1072,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fadvanced-use-latest.md",{"path":112,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":113,"sourceHtmlUrl":114},"rules\u002Fasync-api-routes.md",1125,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-api-routes.md",{"path":116,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":117,"sourceHtmlUrl":118},"rules\u002Fasync-cheap-condition-before-await.md",1220,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-cheap-condition-before-await.md",{"path":120,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":121,"sourceHtmlUrl":122},"rules\u002Fasync-defer-await.md",2208,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-defer-await.md",{"path":124,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":125,"sourceHtmlUrl":126},"rules\u002Fasync-dependencies.md",1293,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-dependencies.md",{"path":128,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":129,"sourceHtmlUrl":130},"rules\u002Fasync-parallel.md",654,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-parallel.md",{"path":132,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":133,"sourceHtmlUrl":134},"rules\u002Fasync-suspense-boundaries.md",2510,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fasync-suspense-boundaries.md",{"path":136,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":137,"sourceHtmlUrl":138},"rules\u002Fbundle-analyzable-paths.md",2382,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-analyzable-paths.md",{"path":140,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":141,"sourceHtmlUrl":142},"rules\u002Fbundle-barrel-imports.md",2795,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-barrel-imports.md",{"path":144,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":145,"sourceHtmlUrl":146},"rules\u002Fbundle-conditional.md",949,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-conditional.md",{"path":148,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":149,"sourceHtmlUrl":150},"rules\u002Fbundle-defer-third-party.md",920,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-defer-third-party.md",{"path":152,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":153,"sourceHtmlUrl":154},"rules\u002Fbundle-dynamic-imports.md",791,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-dynamic-imports.md",{"path":156,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":157,"sourceHtmlUrl":158},"rules\u002Fbundle-preload.md",1149,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fbundle-preload.md",{"path":160,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":161,"sourceHtmlUrl":162},"rules\u002Fclient-event-listeners.md",1969,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fclient-event-listeners.md",{"path":164,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":165,"sourceHtmlUrl":166},"rules\u002Fclient-localstorage-schema.md",1950,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fclient-localstorage-schema.md",{"path":168,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":169,"sourceHtmlUrl":170},"rules\u002Fclient-passive-event-listeners.md",1644,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fclient-passive-event-listeners.md",{"path":172,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":173,"sourceHtmlUrl":174},"rules\u002Fclient-swr-dedup.md",1159,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fclient-swr-dedup.md",{"path":176,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":177,"sourceHtmlUrl":178},"rules\u002Fjs-batch-dom-css.md",3266,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-batch-dom-css.md",{"path":180,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":181,"sourceHtmlUrl":182},"rules\u002Fjs-cache-function-results.md",1949,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-cache-function-results.md",{"path":184,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":185,"sourceHtmlUrl":186},"rules\u002Fjs-cache-property-access.md",532,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-cache-property-access.md",{"path":188,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":189,"sourceHtmlUrl":190},"rules\u002Fjs-cache-storage.md",1651,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-cache-storage.md",{"path":192,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":193,"sourceHtmlUrl":194},"rules\u002Fjs-combine-iterations.md",753,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-combine-iterations.md",{"path":196,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":197,"sourceHtmlUrl":198},"rules\u002Fjs-early-exit.md",1133,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-early-exit.md",{"path":200,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":201,"sourceHtmlUrl":202},"rules\u002Fjs-flatmap-filter.md",1411,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-flatmap-filter.md",{"path":204,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":205,"sourceHtmlUrl":206},"rules\u002Fjs-hoist-regexp.md",1028,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-hoist-regexp.md",{"path":208,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":209,"sourceHtmlUrl":210},"rules\u002Fjs-index-maps.md",837,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-index-maps.md",{"path":212,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":213,"sourceHtmlUrl":214},"rules\u002Fjs-length-check-first.md",1747,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-length-check-first.md",{"path":216,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":217,"sourceHtmlUrl":218},"rules\u002Fjs-min-max-loop.md",2290,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-min-max-loop.md",{"path":220,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":221,"sourceHtmlUrl":222},"rules\u002Fjs-request-idle-callback.md",2647,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-request-idle-callback.md",{"path":224,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":185,"sourceHtmlUrl":225},"rules\u002Fjs-set-map-lookups.md","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-set-map-lookups.md",{"path":227,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":228,"sourceHtmlUrl":229},"rules\u002Fjs-tosorted-immutable.md",1782,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fjs-tosorted-immutable.md",{"path":231,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":232,"sourceHtmlUrl":233},"rules\u002Frendering-activity.md",564,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-activity.md",{"path":235,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":236,"sourceHtmlUrl":237},"rules\u002Frendering-animate-svg-wrapper.md",1185,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-animate-svg-wrapper.md",{"path":239,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":240,"sourceHtmlUrl":241},"rules\u002Frendering-conditional-render.md",980,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-conditional-render.md",{"path":243,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":244,"sourceHtmlUrl":245},"rules\u002Frendering-content-visibility.md",815,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-content-visibility.md",{"path":247,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":248,"sourceHtmlUrl":249},"rules\u002Frendering-hoist-jsx.md",1039,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-hoist-jsx.md",{"path":251,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":252,"sourceHtmlUrl":253},"rules\u002Frendering-hydration-no-flicker.md",2308,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-hydration-no-flicker.md",{"path":255,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":256,"sourceHtmlUrl":257},"rules\u002Frendering-hydration-suppress-warning.md",872,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-hydration-suppress-warning.md",{"path":259,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":260,"sourceHtmlUrl":261},"rules\u002Frendering-resource-hints.md",2549,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-resource-hints.md",{"path":263,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":264,"sourceHtmlUrl":265},"rules\u002Frendering-script-defer-async.md",1868,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-script-defer-async.md",{"path":267,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":268,"sourceHtmlUrl":269},"rules\u002Frendering-svg-precision.md",588,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-svg-precision.md",{"path":271,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":272,"sourceHtmlUrl":273},"rules\u002Frendering-usetransition-loading.md",2074,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frendering-usetransition-loading.md",{"path":275,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":276,"sourceHtmlUrl":277},"rules\u002Frerender-defer-reads.md",973,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-defer-reads.md",{"path":279,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":280,"sourceHtmlUrl":281},"rules\u002Frerender-dependencies.md",824,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-dependencies.md",{"path":283,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":284,"sourceHtmlUrl":285},"rules\u002Frerender-derived-state-no-effect.md",1201,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-derived-state-no-effect.md",{"path":287,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":288,"sourceHtmlUrl":289},"rules\u002Frerender-derived-state.md",728,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-derived-state.md",{"path":291,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":292,"sourceHtmlUrl":293},"rules\u002Frerender-functional-setstate.md",2968,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-functional-setstate.md",{"path":295,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":296,"sourceHtmlUrl":297},"rules\u002Frerender-lazy-state-init.md",2016,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-lazy-state-init.md",{"path":299,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":300,"sourceHtmlUrl":301},"rules\u002Frerender-memo-with-default-value.md",1173,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-memo-with-default-value.md",{"path":303,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":304,"sourceHtmlUrl":305},"rules\u002Frerender-memo.md",1148,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-memo.md",{"path":307,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":308,"sourceHtmlUrl":309},"rules\u002Frerender-move-effect-to-event.md",1268,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-move-effect-to-event.md",{"path":311,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":312,"sourceHtmlUrl":313},"rules\u002Frerender-no-inline-components.md",2135,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-no-inline-components.md",{"path":315,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":316,"sourceHtmlUrl":317},"rules\u002Frerender-simple-expression-in-memo.md",1018,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-simple-expression-in-memo.md",{"path":319,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":320,"sourceHtmlUrl":321},"rules\u002Frerender-split-combined-hooks.md",1844,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-split-combined-hooks.md",{"path":323,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":324,"sourceHtmlUrl":325},"rules\u002Frerender-transitions.md",1055,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-transitions.md",{"path":327,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":328,"sourceHtmlUrl":329},"rules\u002Frerender-use-deferred-value.md",1846,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-use-deferred-value.md",{"path":331,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":332,"sourceHtmlUrl":333},"rules\u002Frerender-use-ref-transient-values.md",1742,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Frerender-use-ref-transient-values.md",{"path":335,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":336,"sourceHtmlUrl":337},"rules\u002Fserver-after-nonblocking.md",2012,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-after-nonblocking.md",{"path":339,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":340,"sourceHtmlUrl":341},"rules\u002Fserver-auth-actions.md",2649,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-auth-actions.md",{"path":343,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":344,"sourceHtmlUrl":345},"rules\u002Fserver-cache-lru.md",1353,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-cache-lru.md",{"path":347,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":348,"sourceHtmlUrl":349},"rules\u002Fserver-cache-react.md",2228,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-cache-react.md",{"path":351,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":352,"sourceHtmlUrl":353},"rules\u002Fserver-dedup-props.md",2060,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-dedup-props.md",{"path":355,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":356,"sourceHtmlUrl":357},"rules\u002Fserver-hoist-static-io.md",4423,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-hoist-static-io.md",{"path":359,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":360,"sourceHtmlUrl":361},"rules\u002Fserver-no-shared-module-state.md",1766,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-no-shared-module-state.md",{"path":363,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":364},"rules\u002Fserver-parallel-fetching.md","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-parallel-fetching.md",{"path":366,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":367,"sourceHtmlUrl":368},"rules\u002Fserver-parallel-nested-fetching.md",992,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-parallel-nested-fetching.md",{"path":370,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":371,"sourceHtmlUrl":372},"rules\u002Fserver-serialization.md",996,"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fvercel-react-best-practices\u002Frules\u002Fserver-serialization.md",[374,393,422,439,457,475],{"skillNo":375,"name":376,"nameZh":6,"description":377,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":378,"licenseFileUrl":6,"sourceHtmlUrl":379,"categories":380,"keywords":389,"publishedAt":44},"01M6C22DH5PD92NQAX0Y2X0YA6","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","GPL-2.0","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[381,384],{"categoryNo":382,"categoryName":383,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":385,"categoryName":386,"taxonomyType":387,"taxonomyTypeDesc":388},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[38,390,391,392,30],"writing for agents","documents","editing",{"skillNo":394,"name":395,"nameZh":6,"description":396,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":378,"licenseFileUrl":6,"sourceHtmlUrl":397,"categories":398,"keywords":405,"publishedAt":44},"01M6C22APBD07T1MBH301FJKA6","wp-rest-api","Use when building, extending, or debugging WordPress REST API endpoints\u002Froutes: register_rest_route, WP_REST_Controller\u002Fcontroller classes, schema\u002Fargument validation, permission_callback\u002Fauthentication, response shaping, register_rest_field\u002Fregister_meta, or exposing CPTs\u002Ftaxonomies via show_in_rest.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-rest-api\u002FSKILL.md",[399,402],{"categoryNo":400,"categoryName":401,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":403,"categoryName":404,"taxonomyType":387,"taxonomyTypeDesc":388},"01JBSEEDCAT000000000000030","开发工程师",[406,407,408,409,410,411,412,413,414,30,415,416,417,418,419,43,420,421],"REST","api","wp rest api","debugging","php","Bash","filesystem","node","controller","Meta","validation","authentication","shaping","workflows","cli","schema",{"skillNo":423,"name":424,"nameZh":6,"description":425,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":378,"licenseFileUrl":6,"sourceHtmlUrl":426,"categories":427,"keywords":428,"publishedAt":44},"01M6C228355FYPDSH157J7962Z","wp-project-triage","Use when you need a deterministic inspection of a WordPress repository (plugin\u002Ftheme\u002Fblock theme\u002FWP core\u002FGutenberg\u002Ffull site) including tooling\u002Ftests\u002Fversion hints, and a structured JSON report to guide workflows and guardrails.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-project-triage\u002FSKILL.md",[],[429,430,431,432,410,411,433,434,412,435,436,41,419,43,420,437,30,438,413],"triage","wp project triage","site","json","Guardrails","repository","report","core","version","guide",{"skillNo":440,"name":441,"nameZh":6,"description":442,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":378,"licenseFileUrl":6,"sourceHtmlUrl":443,"categories":444,"keywords":448,"publishedAt":44},"01M6C225595ZG6MPCRGKA7FSNZ","wp-plugin-directory-guidelines","Use when reviewing WordPress plugins for GPL compliance, checking license headers or compatibility, evaluating upsell\u002Ffreemium\u002Ftrialware patterns, validating plugin naming or trademark rules, checking plugin slugs, understanding why a plugin was rejected from WordPress.org, or answering any question about the 18 WordPress.org Plugin Directory guidelines — even if the user doesn't mention 'guidelines' explicitly.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-plugin-directory-guidelines\u002FSKILL.md",[445],{"categoryNo":446,"categoryName":447,"taxonomyType":387,"taxonomyTypeDesc":388},"01JBSEEDCAT000000000000037","律师与法务",[449,40,41,450,410,451,452,31,453,454,455,456,43,30],"wp plugin directory guidelines","directory","user","question","why","compliance","plugins","license",{"skillNo":458,"name":459,"nameZh":6,"description":460,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":378,"licenseFileUrl":6,"sourceHtmlUrl":461,"categories":462,"keywords":464,"publishedAt":44},"01M6C221V1PYQWWN2CVKSDDHC9","wp-plugin-development","Use when developing WordPress plugins: architecture and hooks, activation\u002Fdeactivation\u002Funinstall, admin UI and Settings API, data storage, cron\u002Ftasks, security (nonces\u002Fcapabilities\u002Fsanitization\u002Fescaping), and release packaging.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-plugin-development\u002FSKILL.md",[463],{"categoryNo":400,"categoryName":401,"taxonomyType":21,"taxonomyTypeDesc":22},[41,465,466,467,43,420,468,419,469,30,470,413,412,411,407,39,471,472,473,474],"wp plugin development","development","storage","uninstall","packaging","settings","capabilities","release","tasks","architecture",{"skillNo":476,"name":477,"nameZh":6,"description":478,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":378,"licenseFileUrl":6,"sourceHtmlUrl":479,"categories":480,"keywords":485,"publishedAt":44},"01M6C21YFXNYHM5B9ZN6JGCAJW","wp-performance","Use when investigating or improving WordPress performance (backend-only agent): profiling and measurement (WP-CLI profile\u002Fdoctor, Server-Timing, Query Monitor via REST headers), database\u002Fquery optimization, autoloaded options, object caching, cron, HTTP API calls, and safe verification.","https:\u002F\u002Fgithub.com\u002Fgambitph\u002FCimo\u002Fblob\u002Fdevelop\u002F.cursor\u002Fskills\u002Fwp-performance\u002FSKILL.md",[481,482],{"categoryNo":400,"categoryName":401,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":483,"categoryName":484,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[486,42,407,487,30,488,489,410,490,406,29,491,492,493,494,495,496,43,497,420],"wp performance","backend","profile","profiling","cron","server","database","verification","doctor","monitor","http","safe"]