[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F6P8G3EBF4PAGGASCXZAVH":3,"skill-same:01M6F6P8G3EBF4PAGGASCXZAVH":89},{"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":34,"publishedAt":55,"linkOnly":56,"markdownContent":57,"markdownBody":58,"frontMatter":59,"refName":66,"commitSha":67,"skillDirectory":68,"forksCount":69,"repositoryHtmlUrl":70,"repositoryHomepageUrl":71,"ownerHtmlUrl":72,"ownerBlogUrl":6,"ownerDescription":73,"updatedAt":74,"install":75,"resources":88},"01M6F6P8G3EBF4PAGGASCXZAVH","algolia-deploy-integration",null,"Deploy Algolia-powered apps to Vercel, Fly.io, and Cloud Run with proper\nAPI key management and InstantSearch frontend integration.\nTrigger: \"deploy algolia\", \"algolia Vercel\", \"algolia production deploy\",\n\"algolia Cloud Run\", \"algolia Fly.io\", \"algolia InstantSearch\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Falgolia-deploy-integration\u002FSKILL.md",[18,23,26,29],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":30,"categoryName":31,"taxonomyType":32,"taxonomyTypeDesc":33},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],"deploy","algolia deploy integration","algolia","integration","search","code","saas","api","fly","Bash","read","write","edit","vercel","io","trigger","apps","key management","run","frontend","2026-11-10 10:12:30",false,"---\nname: algolia-deploy-integration\ndescription: |\n  Deploy Algolia-powered apps to Vercel, Fly.io, and Cloud Run with proper\n  API key management and InstantSearch frontend integration.\n  Trigger: \"deploy algolia\", \"algolia Vercel\", \"algolia production deploy\",\n  \"algolia Cloud Run\", \"algolia Fly.io\", \"algolia InstantSearch\".\nallowed-tools: Read, Write, Edit, Bash(vercel:*), Bash(fly:*), Bash(gcloud:*), Bash(npm:*)\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, search, algolia]\ncompatible-with: claude-code\n---\n\n# Algolia Deploy Integration\n\n## Overview\n\nDeploy Algolia-powered applications to production platforms with proper API key separation (Admin on backend, Search-Only on frontend) and InstantSearch widget integration.\n\n## Prerequisites\n\n- Algolia App ID + Admin key (backend) + Search-Only key (frontend)\n- Platform CLI installed (vercel, fly, or gcloud)\n- `algoliasearch` v5 for backend, `react-instantsearch` or `instantsearch.js` for frontend\n\n## Instructions\n\n### Step 1: Backend API Key Configuration\n\n#### Vercel\n\n```bash\n# Environment variables in Vercel\nvercel env add ALGOLIA_APP_ID production       # Your Application ID\nvercel env add ALGOLIA_ADMIN_KEY production     # Admin key (server-side only)\nvercel env add ALGOLIA_SEARCH_KEY production    # Search-only key (can be public)\n\n# For client-side access (Next.js convention)\nvercel env add NEXT_PUBLIC_ALGOLIA_APP_ID production\nvercel env add NEXT_PUBLIC_ALGOLIA_SEARCH_KEY production\n```\n\n#### Fly.io\n\n```bash\nfly secrets set \\\n  ALGOLIA_APP_ID=YourApplicationID \\\n  ALGOLIA_ADMIN_KEY=your_admin_key \\\n  ALGOLIA_SEARCH_KEY=your_search_key\n```\n\n#### Google Cloud Run\n\n```bash\n# Store in Secret Manager\necho -n \"your_admin_key\" | gcloud secrets create algolia-admin-key --data-file=-\necho -n \"your_search_key\" | gcloud secrets create algolia-search-key --data-file=-\n\n# Deploy with secrets mounted as env vars\ngcloud run deploy search-service \\\n  --image gcr.io\u002F$PROJECT_ID\u002Fsearch-service \\\n  --set-secrets=ALGOLIA_ADMIN_KEY=algolia-admin-key:latest,ALGOLIA_SEARCH_KEY=algolia-search-key:latest \\\n  --region us-central1\n```\n\n### Step 2: Backend Search API (Next.js API Route)\n\n```typescript\n\u002F\u002F app\u002Fapi\u002Fsearch\u002Froute.ts\nimport { algoliasearch } from 'algoliasearch';\nimport { NextRequest, NextResponse } from 'next\u002Fserver';\n\nconst client = algoliasearch(\n  process.env.ALGOLIA_APP_ID!,\n  process.env.ALGOLIA_ADMIN_KEY!\n);\n\nexport async function GET(request: NextRequest) {\n  const query = request.nextUrl.searchParams.get('q') || '';\n  const page = parseInt(request.nextUrl.searchParams.get('page') || '0');\n\n  const { hits, nbHits, nbPages } = await client.searchSingleIndex({\n    indexName: 'products',\n    searchParams: {\n      query,\n      hitsPerPage: 20,\n      page,\n      attributesToRetrieve: ['name', 'price', 'image_url', 'category'],\n      attributesToHighlight: ['name'],\n    },\n  });\n\n  return NextResponse.json({ hits, totalHits: nbHits, totalPages: nbPages, page });\n}\n```\n\n### Step 3: Frontend with InstantSearch (React)\n\n```bash\nnpm install react-instantsearch algoliasearch\n```\n\n```tsx\n\u002F\u002F components\u002FAlgoliaSearch.tsx\nimport { liteClient } from 'algoliasearch\u002Flite';\nimport {\n  InstantSearch,\n  SearchBox,\n  Hits,\n  RefinementList,\n  Pagination,\n  Highlight,\n} from 'react-instantsearch';\n\nconst searchClient = liteClient(\n  process.env.NEXT_PUBLIC_ALGOLIA_APP_ID!,\n  process.env.NEXT_PUBLIC_ALGOLIA_SEARCH_KEY!\n);\n\nfunction Hit({ hit }: { hit: any }) {\n  return (\n    \u003Carticle>\n      \u003Ch3>\u003CHighlight attribute=\"name\" hit={hit} \u002F>\u003C\u002Fh3>\n      \u003Cp>${hit.price}\u003C\u002Fp>\n      \u003Cp>{hit.category}\u003C\u002Fp>\n    \u003C\u002Farticle>\n  );\n}\n\nexport default function AlgoliaSearch() {\n  return (\n    \u003CInstantSearch searchClient={searchClient} indexName=\"products\">\n      \u003CSearchBox placeholder=\"Search products...\" \u002F>\n      \u003Cdiv style={{ display: 'flex', gap: '2rem' }}>\n        \u003Caside>\n          \u003Ch4>Category\u003C\u002Fh4>\n          \u003CRefinementList attribute=\"category\" \u002F>\n          \u003Ch4>Brand\u003C\u002Fh4>\n          \u003CRefinementList attribute=\"brand\" searchable \u002F>\n        \u003C\u002Faside>\n        \u003Cmain>\n          \u003CHits hitComponent={Hit} \u002F>\n          \u003CPagination \u002F>\n        \u003C\u002Fmain>\n      \u003C\u002Fdiv>\n    \u003C\u002FInstantSearch>\n  );\n}\n```\n\n### Step 4: Frontend with Vanilla InstantSearch.js\n\n```bash\nnpm install instantsearch.js algoliasearch\n```\n\n```typescript\nimport instantsearch from 'instantsearch.js';\nimport { searchBox, hits, refinementList, pagination } from 'instantsearch.js\u002Fes\u002Fwidgets';\nimport { liteClient } from 'algoliasearch\u002Flite';\n\nconst searchClient = liteClient('YourAppID', 'YourSearchOnlyKey');\n\nconst search = instantsearch({\n  indexName: 'products',\n  searchClient,\n});\n\nsearch.addWidgets([\n  searchBox({ container: '#searchbox' }),\n  hits({\n    container: '#hits',\n    templates: {\n      item: (hit, { html, components }) => html`\n        \u003Carticle>\n          \u003Ch3>${components.Highlight({ hit, attribute: 'name' })}\u003C\u002Fh3>\n          \u003Cp>$${hit.price}\u003C\u002Fp>\n        \u003C\u002Farticle>\n      `,\n    },\n  }),\n  refinementList({ container: '#category-filter', attribute: 'category' }),\n  pagination({ container: '#pagination' }),\n]);\n\nsearch.start();\n```\n\n### Step 5: Health Check Endpoint\n\n```typescript\n\u002F\u002F app\u002Fapi\u002Fhealth\u002Froute.ts\nimport { algoliasearch } from 'algoliasearch';\n\nconst client = algoliasearch(process.env.ALGOLIA_APP_ID!, process.env.ALGOLIA_ADMIN_KEY!);\n\nexport async function GET() {\n  const start = Date.now();\n  try {\n    const { items } = await client.listIndices();\n    return Response.json({\n      status: 'healthy',\n      algolia: {\n        connected: true,\n        latencyMs: Date.now() - start,\n        indexCount: items.length,\n      },\n    });\n  } catch (error) {\n    return Response.json({\n      status: 'degraded',\n      algolia: { connected: false, error: String(error) },\n    }, { status: 503 });\n  }\n}\n```\n\n## Error Handling\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| `NEXT_PUBLIC_` var undefined | Not set in Vercel env | Add with `vercel env add` |\n| InstantSearch shows no results | Wrong Search-Only key | Verify key ACL includes `search` |\n| Backend write fails on Vercel | Using search key for indexing | Use `ALGOLIA_ADMIN_KEY` (non-public) |\n| Cold start timeout | Large client init | Use lite client where possible |\n\n## Resources\n\n- [InstantSearch.js](https:\u002F\u002Fwww.algolia.com\u002Fdoc\u002Fguides\u002Fbuilding-search-ui\u002Fwhat-is-instantsearch\u002Fjs\u002F)\n- [React InstantSearch](https:\u002F\u002Fwww.algolia.com\u002Fdoc\u002Fguides\u002Fbuilding-search-ui\u002Fwhat-is-instantsearch\u002Freact\u002F)\n- [Vercel Environment Variables](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fenvironment-variables)\n\n## Next Steps\n\nFor event tracking and analytics, see `algolia-webhooks-events`.\n\n","# Algolia Deploy Integration\n\n## Overview\n\nDeploy Algolia-powered applications to production platforms with proper API key separation (Admin on backend, Search-Only on frontend) and InstantSearch widget integration.\n\n## Prerequisites\n\n- Algolia App ID + Admin key (backend) + Search-Only key (frontend)\n- Platform CLI installed (vercel, fly, or gcloud)\n- `algoliasearch` v5 for backend, `react-instantsearch` or `instantsearch.js` for frontend\n\n## Instructions\n\n### Step 1: Backend API Key Configuration\n\n#### Vercel\n\n```bash\n# Environment variables in Vercel\nvercel env add ALGOLIA_APP_ID production       # Your Application ID\nvercel env add ALGOLIA_ADMIN_KEY production     # Admin key (server-side only)\nvercel env add ALGOLIA_SEARCH_KEY production    # Search-only key (can be public)\n\n# For client-side access (Next.js convention)\nvercel env add NEXT_PUBLIC_ALGOLIA_APP_ID production\nvercel env add NEXT_PUBLIC_ALGOLIA_SEARCH_KEY production\n```\n\n#### Fly.io\n\n```bash\nfly secrets set \\\n  ALGOLIA_APP_ID=YourApplicationID \\\n  ALGOLIA_ADMIN_KEY=your_admin_key \\\n  ALGOLIA_SEARCH_KEY=your_search_key\n```\n\n#### Google Cloud Run\n\n```bash\n# Store in Secret Manager\necho -n \"your_admin_key\" | gcloud secrets create algolia-admin-key --data-file=-\necho -n \"your_search_key\" | gcloud secrets create algolia-search-key --data-file=-\n\n# Deploy with secrets mounted as env vars\ngcloud run deploy search-service \\\n  --image gcr.io\u002F$PROJECT_ID\u002Fsearch-service \\\n  --set-secrets=ALGOLIA_ADMIN_KEY=algolia-admin-key:latest,ALGOLIA_SEARCH_KEY=algolia-search-key:latest \\\n  --region us-central1\n```\n\n### Step 2: Backend Search API (Next.js API Route)\n\n```typescript\n\u002F\u002F app\u002Fapi\u002Fsearch\u002Froute.ts\nimport { algoliasearch } from 'algoliasearch';\nimport { NextRequest, NextResponse } from 'next\u002Fserver';\n\nconst client = algoliasearch(\n  process.env.ALGOLIA_APP_ID!,\n  process.env.ALGOLIA_ADMIN_KEY!\n);\n\nexport async function GET(request: NextRequest) {\n  const query = request.nextUrl.searchParams.get('q') || '';\n  const page = parseInt(request.nextUrl.searchParams.get('page') || '0');\n\n  const { hits, nbHits, nbPages } = await client.searchSingleIndex({\n    indexName: 'products',\n    searchParams: {\n      query,\n      hitsPerPage: 20,\n      page,\n      attributesToRetrieve: ['name', 'price', 'image_url', 'category'],\n      attributesToHighlight: ['name'],\n    },\n  });\n\n  return NextResponse.json({ hits, totalHits: nbHits, totalPages: nbPages, page });\n}\n```\n\n### Step 3: Frontend with InstantSearch (React)\n\n```bash\nnpm install react-instantsearch algoliasearch\n```\n\n```tsx\n\u002F\u002F components\u002FAlgoliaSearch.tsx\nimport { liteClient } from 'algoliasearch\u002Flite';\nimport {\n  InstantSearch,\n  SearchBox,\n  Hits,\n  RefinementList,\n  Pagination,\n  Highlight,\n} from 'react-instantsearch';\n\nconst searchClient = liteClient(\n  process.env.NEXT_PUBLIC_ALGOLIA_APP_ID!,\n  process.env.NEXT_PUBLIC_ALGOLIA_SEARCH_KEY!\n);\n\nfunction Hit({ hit }: { hit: any }) {\n  return (\n    \u003Carticle>\n      \u003Ch3>\u003CHighlight attribute=\"name\" hit={hit} \u002F>\u003C\u002Fh3>\n      \u003Cp>${hit.price}\u003C\u002Fp>\n      \u003Cp>{hit.category}\u003C\u002Fp>\n    \u003C\u002Farticle>\n  );\n}\n\nexport default function AlgoliaSearch() {\n  return (\n    \u003CInstantSearch searchClient={searchClient} indexName=\"products\">\n      \u003CSearchBox placeholder=\"Search products...\" \u002F>\n      \u003Cdiv style={{ display: 'flex', gap: '2rem' }}>\n        \u003Caside>\n          \u003Ch4>Category\u003C\u002Fh4>\n          \u003CRefinementList attribute=\"category\" \u002F>\n          \u003Ch4>Brand\u003C\u002Fh4>\n          \u003CRefinementList attribute=\"brand\" searchable \u002F>\n        \u003C\u002Faside>\n        \u003Cmain>\n          \u003CHits hitComponent={Hit} \u002F>\n          \u003CPagination \u002F>\n        \u003C\u002Fmain>\n      \u003C\u002Fdiv>\n    \u003C\u002FInstantSearch>\n  );\n}\n```\n\n### Step 4: Frontend with Vanilla InstantSearch.js\n\n```bash\nnpm install instantsearch.js algoliasearch\n```\n\n```typescript\nimport instantsearch from 'instantsearch.js';\nimport { searchBox, hits, refinementList, pagination } from 'instantsearch.js\u002Fes\u002Fwidgets';\nimport { liteClient } from 'algoliasearch\u002Flite';\n\nconst searchClient = liteClient('YourAppID', 'YourSearchOnlyKey');\n\nconst search = instantsearch({\n  indexName: 'products',\n  searchClient,\n});\n\nsearch.addWidgets([\n  searchBox({ container: '#searchbox' }),\n  hits({\n    container: '#hits',\n    templates: {\n      item: (hit, { html, components }) => html`\n        \u003Carticle>\n          \u003Ch3>${components.Highlight({ hit, attribute: 'name' })}\u003C\u002Fh3>\n          \u003Cp>$${hit.price}\u003C\u002Fp>\n        \u003C\u002Farticle>\n      `,\n    },\n  }),\n  refinementList({ container: '#category-filter', attribute: 'category' }),\n  pagination({ container: '#pagination' }),\n]);\n\nsearch.start();\n```\n\n### Step 5: Health Check Endpoint\n\n```typescript\n\u002F\u002F app\u002Fapi\u002Fhealth\u002Froute.ts\nimport { algoliasearch } from 'algoliasearch';\n\nconst client = algoliasearch(process.env.ALGOLIA_APP_ID!, process.env.ALGOLIA_ADMIN_KEY!);\n\nexport async function GET() {\n  const start = Date.now();\n  try {\n    const { items } = await client.listIndices();\n    return Response.json({\n      status: 'healthy',\n      algolia: {\n        connected: true,\n        latencyMs: Date.now() - start,\n        indexCount: items.length,\n      },\n    });\n  } catch (error) {\n    return Response.json({\n      status: 'degraded',\n      algolia: { connected: false, error: String(error) },\n    }, { status: 503 });\n  }\n}\n```\n\n## Error Handling\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| `NEXT_PUBLIC_` var undefined | Not set in Vercel env | Add with `vercel env add` |\n| InstantSearch shows no results | Wrong Search-Only key | Verify key ACL includes `search` |\n| Backend write fails on Vercel | Using search key for indexing | Use `ALGOLIA_ADMIN_KEY` (non-public) |\n| Cold start timeout | Large client init | Use lite client where possible |\n\n## Resources\n\n- [InstantSearch.js](https:\u002F\u002Fwww.algolia.com\u002Fdoc\u002Fguides\u002Fbuilding-search-ui\u002Fwhat-is-instantsearch\u002Fjs\u002F)\n- [React InstantSearch](https:\u002F\u002Fwww.algolia.com\u002Fdoc\u002Fguides\u002Fbuilding-search-ui\u002Fwhat-is-instantsearch\u002Freact\u002F)\n- [Vercel Environment Variables](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fenvironment-variables)\n\n## Next Steps\n\nFor event tracking and analytics, see `algolia-webhooks-events`.\n\n",{"name":5,"tags":60,"author":61,"license":15,"version":62,"description":63,"allowed-tools":64,"compatible-with":65},[41,39,37],"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Deploy Algolia-powered apps to Vercel, Fly.io, and Cloud Run with proper\nAPI key management and InstantSearch frontend integration.\nTrigger: \"deploy algolia\", \"algolia Vercel\", \"algolia production deploy\",\n\"algolia Cloud Run\", \"algolia Fly.io\", \"algolia InstantSearch\".\n","Read, Write, Edit, Bash(vercel:*), Bash(fly:*), Bash(gcloud:*), Bash(npm:*)","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Falgolia-deploy-integration",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":76,"prompt":86,"zipAvailable":87},[77,80,83],{"tool":78,"command":79},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill algolia-deploy-integration",{"tool":81,"command":82},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill algolia-deploy-integration",{"tool":84,"command":85},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill algolia-deploy-integration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Falgolia-deploy-integration\u002FSKILL.md",true,[],[90,102,112,120,126,133],{"skillNo":91,"name":92,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":98,"publishedAt":55},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[95],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[99,100,101],"model","model hierarchy","model hierarchy skill",{"skillNo":103,"name":104,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":108,"publishedAt":55},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[107],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},[109,110,111],"MCP","zoom","zoom mcp",{"skillNo":113,"name":114,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":55},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[118,119,51,110],"sdk","zoom apps sdk",{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":55},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[122],{"skillNo":127,"name":128,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":55},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[131],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},[128],{"skillNo":134,"name":135,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":55},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[135]]