[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KEMBE1E5QYFF2FS4ASMNFR":3,"skill-same:01M6KEMBE1E5QYFF2FS4ASMNFR":130},{"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":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":57,"install":58,"resources":71},"01M6KEMBE1E5QYFF2FS4ASMNFR","building-native-ui",null,"Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.","RyouMon\u002FMyReader","RyouMon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42371625?v=4","01M6KEHCYA36Q3V1K41QV59W7E","Wen","01M6KEHD28Z5MHEK56872145JX",2,"MIT","https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"building native ui","ui","native","components","guide","router","styling","navigation","expo","patterns","apps","complete","expo router","with","for","animations","2026-11-10 10:12:30",false,"---\nname: auth0-automation\ndescription: \"Automate Auth0 tasks via Rube MCP (Composio). Always search tools first for current schemas.\"\nrequires:\n  mcp: [rube]\n---\n\n# Auth0 Automation via Rube MCP\n\nAutomate Auth0 operations through Composio's Auth0 toolkit via Rube MCP.\n\n**Toolkit docs**: [composio.dev\u002Ftoolkits\u002Fauth0](https:\u002F\u002Fcomposio.dev\u002Ftoolkits\u002Fauth0)\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Auth0 connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `auth0`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `auth0`\n3. If connection is not ACTIVE, follow the returned auth link to complete setup\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Tool Discovery\n\nAlways discover available tools before executing workflows:\n\n```\nRUBE_SEARCH_TOOLS\nqueries: [{use_case: \"Auth0 operations\", known_fields: \"\"}]\nsession: {generate_id: true}\n```\n\nThis returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.\n\n## Core Workflow Pattern\n\n### Step 1: Discover Available Tools\n\n```\nRUBE_SEARCH_TOOLS\nqueries: [{use_case: \"your specific Auth0 task\"}]\nsession: {id: \"existing_session_id\"}\n```\n\n### Step 2: Check Connection\n\n```\nRUBE_MANAGE_CONNECTIONS\ntoolkits: [\"auth0\"]\nsession_id: \"your_session_id\"\n```\n\n### Step 3: Execute Tools\n\n```\nRUBE_MULTI_EXECUTE_TOOL\ntools: [{\n  tool_slug: \"TOOL_SLUG_FROM_SEARCH\",\n  arguments: {\u002F* schema-compliant args from search results *\u002F}\n}]\nmemory: {}\nsession_id: \"your_session_id\"\n```\n\n## Known Pitfalls\n\n- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`\n- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools\n- **Schema compliance**: Use exact field names and types from the search results\n- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)\n- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows\n- **Pagination**: Check responses for pagination tokens and continue fetching until complete\n\n## Quick Reference\n\n| Operation | Approach |\n|-----------|----------|\n| Find tools | `RUBE_SEARCH_TOOLS` with Auth0-specific use case |\n| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `auth0` |\n| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |\n| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |\n| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |\n\n---\n*Powered by [Composio](https:\u002F\u002Fcomposio.dev)*\n","# Auth0 Automation via Rube MCP\n\nAutomate Auth0 operations through Composio's Auth0 toolkit via Rube MCP.\n\n**Toolkit docs**: [composio.dev\u002Ftoolkits\u002Fauth0](https:\u002F\u002Fcomposio.dev\u002Ftoolkits\u002Fauth0)\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Auth0 connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `auth0`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `auth0`\n3. If connection is not ACTIVE, follow the returned auth link to complete setup\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Tool Discovery\n\nAlways discover available tools before executing workflows:\n\n```\nRUBE_SEARCH_TOOLS\nqueries: [{use_case: \"Auth0 operations\", known_fields: \"\"}]\nsession: {generate_id: true}\n```\n\nThis returns available tool slugs, input schemas, recommended execution plans, and known pitfalls.\n\n## Core Workflow Pattern\n\n### Step 1: Discover Available Tools\n\n```\nRUBE_SEARCH_TOOLS\nqueries: [{use_case: \"your specific Auth0 task\"}]\nsession: {id: \"existing_session_id\"}\n```\n\n### Step 2: Check Connection\n\n```\nRUBE_MANAGE_CONNECTIONS\ntoolkits: [\"auth0\"]\nsession_id: \"your_session_id\"\n```\n\n### Step 3: Execute Tools\n\n```\nRUBE_MULTI_EXECUTE_TOOL\ntools: [{\n  tool_slug: \"TOOL_SLUG_FROM_SEARCH\",\n  arguments: {\u002F* schema-compliant args from search results *\u002F}\n}]\nmemory: {}\nsession_id: \"your_session_id\"\n```\n\n## Known Pitfalls\n\n- **Always search first**: Tool schemas change. Never hardcode tool slugs or arguments without calling `RUBE_SEARCH_TOOLS`\n- **Check connection**: Verify `RUBE_MANAGE_CONNECTIONS` shows ACTIVE status before executing tools\n- **Schema compliance**: Use exact field names and types from the search results\n- **Memory parameter**: Always include `memory` in `RUBE_MULTI_EXECUTE_TOOL` calls, even if empty (`{}`)\n- **Session reuse**: Reuse session IDs within a workflow. Generate new ones for new workflows\n- **Pagination**: Check responses for pagination tokens and continue fetching until complete\n\n## Quick Reference\n\n| Operation | Approach |\n|-----------|----------|\n| Find tools | `RUBE_SEARCH_TOOLS` with Auth0-specific use case |\n| Connect | `RUBE_MANAGE_CONNECTIONS` with toolkit `auth0` |\n| Execute | `RUBE_MULTI_EXECUTE_TOOL` with discovered tool slugs |\n| Bulk ops | `RUBE_REMOTE_WORKBENCH` with `run_composio_tool()` |\n| Full schema | `RUBE_GET_TOOL_SCHEMAS` for tools with `schemaRef` |\n\n---\n*Powered by [Composio](https:\u002F\u002Fcomposio.dev)*\n",{"name":45,"requires":46,"description":49},"auth0-automation",{"mcp":47},[48],"rube","Automate Auth0 tasks via Rube MCP (Composio). Always search tools first for current schemas.","main","4180cbf3e82c49da08cab01820d0c559313b3761",".agents\u002Fskills\u002Fbuilding-native-ui",0,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader","https:\u002F\u002Fryoumon.github.io\u002Fprojects\u002Fmyreader\u002F","https:\u002F\u002Fgithub.com\u002FRyouMon","2026-11-10 02:18:46",{"source":8,"skillName":45,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add RyouMon\u002FMyReader --skill auth0-automation",{"tool":64,"command":65},"bunx","bunx skills add RyouMon\u002FMyReader --skill auth0-automation",{"tool":67,"command":68},"pnpm","pnpm dlx skills add RyouMon\u002FMyReader --skill auth0-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002FSKILL.md",true,[72,78,82,86,90,94,98,102,106,110,114,118,122,126],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fanimations.md","REFERENCE","参考文档",4747,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fanimations.md",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fcontrols.md",5055,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fcontrols.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fform-sheet.md",6320,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fform-sheet.md",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fgradients.md",2717,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fgradients.md",{"path":91,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Ficons.md",4771,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Ficons.md",{"path":95,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fmedia.md",6196,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fmedia.md",{"path":99,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Froute-structure.md",5106,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Froute-structure.md",{"path":103,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fsearch.md",5193,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fsearch.md",{"path":107,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Fstorage.md",2935,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fstorage.md",{"path":111,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":112,"sourceHtmlUrl":113},"references\u002Ftabs.md",13308,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Ftabs.md",{"path":115,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":116,"sourceHtmlUrl":117},"references\u002Ftoolbar-and-headers.md",8061,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Ftoolbar-and-headers.md",{"path":119,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":120,"sourceHtmlUrl":121},"references\u002Fvisual-effects.md",4335,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fvisual-effects.md",{"path":123,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":124,"sourceHtmlUrl":125},"references\u002Fwebgpu-three.md",14466,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fwebgpu-three.md",{"path":127,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":128,"sourceHtmlUrl":129},"references\u002Fzoom-transitions.md",4848,"https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbuilding-native-ui\u002Freferences\u002Fzoom-transitions.md",[131,169,191,214,236,253],{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":135,"licenseFileUrl":136,"sourceHtmlUrl":137,"categories":138,"keywords":148,"publishedAt":40},"01M6KEPBH08HMQVRGJQDG02AVP","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ffrontend-design\u002FSKILL.md",[139,144,147],{"categoryNo":140,"categoryName":141,"taxonomyType":142,"taxonomyTypeDesc":143},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":145,"categoryName":146,"taxonomyType":142,"taxonomyTypeDesc":143},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[149,150,151,152,153,27,154,155,156,157,158,159,160,161,162,163,164,165,166,37,167,168],"frontend","design","frontend design","css","web","react","react components","create","code","artifacts","examples","applications","landing","use","ui design","pages","aesthetics","web ui","generic","when",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":176,"publishedAt":40},"01M6KES6YTRMFMAGCCMFW26AN9","cross-platform-ui-spec","Apply the shared MyReader design workflow to desktop or mobile UI changes in Cursor.","https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fcross-platform-ui-spec\u002FSKILL.md",[175],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[177,178,25,179,180,181,150,182,183,184,185,186,187,188,189,190],"spec","cross platform","platform","platform ui","cross platform ui spec","workflow","desktop","cursor","mobile","shared","mobile ui","changes","apply","myreader design",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":198,"publishedAt":40},"01M6KES2HFY9HGF5T9GDAGSFRE","zustand-state-management","Zustand v5 store patterns, TypeScript create\u003CT>()() usage, persist\u002Fdevtools middleware, hydration pitfalls, slices, and migration notes. Use when implementing or reviewing global client state with Zustand in React apps.","https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fzustand-state-management\u002FSKILL.md",[197],{"categoryNo":140,"categoryName":141,"taxonomyType":142,"taxonomyTypeDesc":143},[199,200,201,202,203,204,205,154,206,156,207,162,33,34,208,209,210,211,212,213,168],"state management","state","zustand","management","zustand state","zustand state management","typescript","notes","devtools","store","middleware","pitfalls","usage","persist","implementing",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":221,"publishedAt":40},"01M6KERW3JC43BAGMFNA1FYVQ5","vercel-react-view-transitions","Guide for implementing smooth, native-feeling animations using React's View Transition API (`\u003CViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter\u002Fexit of components, animate list reorder, implement directional (forward\u002Fback) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions view transitions, `startViewTransition`, `ViewTransition`, transition types, or asks about animating between UI states in React without third-party animation libraries.","https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvercel-react-view-transitions\u002FSKILL.md",[220],{"categoryNo":140,"categoryName":141,"taxonomyType":142,"taxonomyTypeDesc":143},[154,222,223,224,225,226,152,27,227,228,156,229,230,231,232,186,233,234,235,213,168],"view","vercel","vercel react view transitions","react view transitions","transitions","component","libraries","api","Animation","back","route","element","types","states",{"skillNo":237,"name":238,"nameZh":6,"description":239,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":240,"categories":241,"keywords":243,"publishedAt":40},"01M6KERK6M3QARTY9GGVWH49XQ","vercel-react-native-skills","React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.","https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvercel-react-native-skills\u002FSKILL.md",[242],{"categoryNo":140,"categoryName":141,"taxonomyType":142,"taxonomyTypeDesc":143},[154,244,245,223,246,26,247,27,248,249,162,250,185,32,179,251,252,34,213,38,39,168],"vercel react native skills","react native","react native skills","performance","tasks","list","modules","triggers","mobile performance",{"skillNo":254,"name":255,"nameZh":6,"description":256,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":257,"categories":258,"keywords":260,"publishedAt":40},"01M6KER8AQ7EJB3W68GTRZKHA3","vercel-react-best-practices","React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React\u002FNext.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.","https:\u002F\u002Fgithub.com\u002FRyouMon\u002FMyReader\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvercel-react-best-practices\u002FSKILL.md",[259],{"categoryNo":140,"categoryName":141,"taxonomyType":142,"taxonomyTypeDesc":143},[154,261,262,263,223,264,247,27,155,265,248,157,266,267,268,33,269,164,251,270,168],"vercel react best practices","best practices","react best practices","writing","guidelines","Optimization","data","refactoring","next","data fetching"]