[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F76D4R2ANN2A0011R59HAZ":3,"skill-same:01M6F76D4R2ANN2A0011R59HAZ":74},{"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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6F76D4R2ANN2A0011R59HAZ","apollo-multi-env-setup",null,"Configure Apollo.io multi-environment setup.\nUse when setting up development, staging, and production environments,\nor managing multiple Apollo configurations.\nTrigger with phrases like \"apollo environments\", \"apollo staging\",\n\"apollo dev prod\", \"apollo multi-tenant\", \"apollo env config\".","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\u002Fapollo-multi-env-setup\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"setup","multi","env setup","env","apollo multi env setup","apollo","edit","apollo-multi","io","multi-environment","up","openclaw","write","read","configure","Bash","kubectl","code","development","config","2026-11-10 10:12:30",false,"---\nname: apollo-multi-env-setup\ndescription: |\n  Configure Apollo.io multi-environment setup.\n  Use when setting up development, staging, and production environments,\n  or managing multiple Apollo configurations.\n  Trigger with phrases like \"apollo environments\", \"apollo staging\",\n  \"apollo dev prod\", \"apollo multi-tenant\", \"apollo env config\".\nallowed-tools: Read, Write, Edit, Bash(kubectl:*), Bash(curl:*)\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, apollo, apollo-multi]\n\n---\n# Apollo Multi-Environment Setup\n\n## Overview\nConfigure Apollo.io for development, staging, and production with isolated API keys, environment-specific rate limits, feature gating, and Kubernetes-native secret management. Apollo provides sandbox tokens for testing that return dummy data without consuming credits.\n\n## Prerequisites\n- Separate Apollo API keys per environment (or sandbox tokens for dev)\n- Node.js 18+\n\n## Instructions\n\n### Step 1: Environment Configuration Schema\n```typescript\n\u002F\u002F src\u002Fconfig\u002Fapollo-config.ts\nimport { z } from 'zod';\n\nconst EnvironmentSchema = z.enum(['development', 'staging', 'production']);\n\nconst ApolloEnvConfig = z.object({\n  environment: EnvironmentSchema,\n  apiKey: z.string().min(10),\n  baseUrl: z.string().url().default('https:\u002F\u002Fapi.apollo.io\u002Fapi\u002Fv1'),\n  isSandbox: z.boolean().default(false),\n  rateLimit: z.object({\n    maxPerMinute: z.number().min(1),\n    concurrency: z.number().min(1).max(20),\n  }),\n  features: z.object({\n    enrichment: z.boolean(),\n    sequences: z.boolean(),\n    deals: z.boolean(),\n    bulkEnrichment: z.boolean(),\n  }),\n  credits: z.object({\n    dailyBudget: z.number(),\n    alertThreshold: z.number(),  \u002F\u002F percentage\n  }),\n  logging: z.object({\n    level: z.enum(['debug', 'info', 'warn', 'error']),\n    redactPII: z.boolean(),\n  }),\n});\n\ntype ApolloEnvConfig = z.infer\u003Ctypeof ApolloEnvConfig>;\n```\n\n### Step 2: Per-Environment Configs\n```typescript\nconst configs: Record\u003Cstring, ApolloEnvConfig> = {\n  development: {\n    environment: 'development',\n    apiKey: process.env.APOLLO_SANDBOX_KEY ?? process.env.APOLLO_API_KEY_DEV!,\n    baseUrl: 'https:\u002F\u002Fapi.apollo.io\u002Fapi\u002Fv1',\n    isSandbox: true,\n    rateLimit: { maxPerMinute: 20, concurrency: 2 },\n    features: { enrichment: true, sequences: false, deals: false, bulkEnrichment: false },\n    credits: { dailyBudget: 10, alertThreshold: 80 },\n    logging: { level: 'debug', redactPII: false },\n  },\n  staging: {\n    environment: 'staging',\n    apiKey: process.env.APOLLO_API_KEY_STAGING!,\n    baseUrl: 'https:\u002F\u002Fapi.apollo.io\u002Fapi\u002Fv1',\n    isSandbox: false,\n    rateLimit: { maxPerMinute: 50, concurrency: 5 },\n    features: { enrichment: true, sequences: true, deals: true, bulkEnrichment: true },\n    credits: { dailyBudget: 50, alertThreshold: 70 },\n    logging: { level: 'info', redactPII: true },\n  },\n  production: {\n    environment: 'production',\n    apiKey: process.env.APOLLO_API_KEY_PROD!,\n    baseUrl: 'https:\u002F\u002Fapi.apollo.io\u002Fapi\u002Fv1',\n    isSandbox: false,\n    rateLimit: { maxPerMinute: 100, concurrency: 10 },\n    features: { enrichment: true, sequences: true, deals: true, bulkEnrichment: true },\n    credits: { dailyBudget: 500, alertThreshold: 90 },\n    logging: { level: 'warn', redactPII: true },\n  },\n};\n```\n\n### Step 3: Environment-Aware Client Factory\n```typescript\n\u002F\u002F src\u002Fconfig\u002Fclient-factory.ts\nimport axios, { AxiosInstance } from 'axios';\n\nexport function createEnvClient(config: ApolloEnvConfig): AxiosInstance {\n  const validated = ApolloEnvConfig.parse(config);\n\n  const client = axios.create({\n    baseURL: validated.baseUrl,\n    headers: { 'Content-Type': 'application\u002Fjson', 'x-api-key': validated.apiKey },\n    timeout: validated.environment === 'development' ? 30_000 : 15_000,\n  });\n\n  \u002F\u002F Feature gate: block disabled endpoints\n  client.interceptors.request.use((req) => {\n    if (req.url?.includes('\u002Fpeople\u002Fmatch') && !validated.features.enrichment)\n      throw new Error(`Enrichment disabled in ${validated.environment}`);\n    if (req.url?.includes('\u002Femailer_campaigns') && !validated.features.sequences)\n      throw new Error(`Sequences disabled in ${validated.environment}`);\n    if (req.url?.includes('\u002Fopportunities') && !validated.features.deals)\n      throw new Error(`Deals disabled in ${validated.environment}`);\n    if (req.url?.includes('\u002Fpeople\u002Fbulk_match') && !validated.features.bulkEnrichment)\n      throw new Error(`Bulk enrichment disabled in ${validated.environment}`);\n    return req;\n  });\n\n  \u002F\u002F Debug logging in dev\n  if (validated.logging.level === 'debug') {\n    client.interceptors.request.use((req) => {\n      console.log(`[${validated.environment}] ${req.method?.toUpperCase()} ${req.url}`);\n      return req;\n    });\n  }\n\n  return client;\n}\n\nexport function getClient(): AxiosInstance {\n  const env = process.env.NODE_ENV ?? 'development';\n  return createEnvClient(configs[env] ?? configs.development);\n}\n```\n\n### Step 4: Kubernetes Secrets\n```yaml\n# k8s\u002Fdev\u002Fapollo-secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: apollo-credentials\n  namespace: sales-dev\ntype: Opaque\nstringData:\n  APOLLO_SANDBOX_KEY: \"sandbox-token-here\"\n  APOLLO_API_KEY_DEV: \"dev-key-here\"\n---\n# k8s\u002Fprod\u002Fapollo-secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: apollo-credentials\n  namespace: sales-prod\ntype: Opaque\nstringData:\n  APOLLO_API_KEY_PROD: \"master-key-here\"\n```\n\n### Step 5: Environment Verification Script\n```typescript\n\u002F\u002F src\u002Fscripts\u002Fverify-envs.ts\nasync function verifyAllEnvironments() {\n  for (const [env, config] of Object.entries(configs)) {\n    try {\n      const client = createEnvClient(config);\n      const { data } = await client.get('\u002Fauth\u002Fhealth');\n      const isMaster = await testMasterAccess(client);\n      console.log(`${env}: ${data.is_logged_in ? 'OK' : 'FAIL'} (${isMaster ? 'master' : 'standard'} key, sandbox: ${config.isSandbox})`);\n    } catch (err: any) {\n      console.error(`${env}: FAIL — ${err.message}`);\n    }\n  }\n}\n\nasync function testMasterAccess(client: AxiosInstance): Promise\u003Cboolean> {\n  try { await client.post('\u002Fcontacts\u002Fsearch', { per_page: 1 }); return true; }\n  catch { return false; }\n}\n```\n\n## Output\n- Zod-validated environment config schema with feature flags and credit budgets\n- Three environment configs (dev with sandbox, staging, production)\n- Client factory with feature gating and debug logging\n- Kubernetes secrets per namespace\n- Environment verification script testing all configs\n\n## Error Handling\n| Issue | Resolution |\n|-------|------------|\n| Feature disabled | Client throws descriptive error identifying which env blocked it |\n| Wrong environment | Check `NODE_ENV`, client falls back to development |\n| Missing API key | Zod throws with clear validation error |\n| Sandbox returning dummy data | Expected in development — use staging for real data testing |\n\n## Resources\n- [Apollo Sandbox Testing](https:\u002F\u002Fdocs.apollo.io\u002Fdocs\u002Ftest-api-key)\n- [Create API Keys](https:\u002F\u002Fdocs.apollo.io\u002Fdocs\u002Fcreate-api-key)\n- [12-Factor App Config](https:\u002F\u002F12factor.net\u002Fconfig)\n- [Kubernetes Secrets](https:\u002F\u002Fkubernetes.io\u002Fdocs\u002Fconcepts\u002Fconfiguration\u002Fsecret\u002F)\n\n## Next Steps\nProceed to `apollo-observability` for monitoring setup.\n\n","# Apollo Multi-Environment Setup\n\n## Overview\nConfigure Apollo.io for development, staging, and production with isolated API keys, environment-specific rate limits, feature gating, and Kubernetes-native secret management. Apollo provides sandbox tokens for testing that return dummy data without consuming credits.\n\n## Prerequisites\n- Separate Apollo API keys per environment (or sandbox tokens for dev)\n- Node.js 18+\n\n## Instructions\n\n### Step 1: Environment Configuration Schema\n```typescript\n\u002F\u002F src\u002Fconfig\u002Fapollo-config.ts\nimport { z } from 'zod';\n\nconst EnvironmentSchema = z.enum(['development', 'staging', 'production']);\n\nconst ApolloEnvConfig = z.object({\n  environment: EnvironmentSchema,\n  apiKey: z.string().min(10),\n  baseUrl: z.string().url().default('https:\u002F\u002Fapi.apollo.io\u002Fapi\u002Fv1'),\n  isSandbox: z.boolean().default(false),\n  rateLimit: z.object({\n    maxPerMinute: z.number().min(1),\n    concurrency: z.number().min(1).max(20),\n  }),\n  features: z.object({\n    enrichment: z.boolean(),\n    sequences: z.boolean(),\n    deals: z.boolean(),\n    bulkEnrichment: z.boolean(),\n  }),\n  credits: z.object({\n    dailyBudget: z.number(),\n    alertThreshold: z.number(),  \u002F\u002F percentage\n  }),\n  logging: z.object({\n    level: z.enum(['debug', 'info', 'warn', 'error']),\n    redactPII: z.boolean(),\n  }),\n});\n\ntype ApolloEnvConfig = z.infer\u003Ctypeof ApolloEnvConfig>;\n```\n\n### Step 2: Per-Environment Configs\n```typescript\nconst configs: Record\u003Cstring, ApolloEnvConfig> = {\n  development: {\n    environment: 'development',\n    apiKey: process.env.APOLLO_SANDBOX_KEY ?? process.env.APOLLO_API_KEY_DEV!,\n    baseUrl: 'https:\u002F\u002Fapi.apollo.io\u002Fapi\u002Fv1',\n    isSandbox: true,\n    rateLimit: { maxPerMinute: 20, concurrency: 2 },\n    features: { enrichment: true, sequences: false, deals: false, bulkEnrichment: false },\n    credits: { dailyBudget: 10, alertThreshold: 80 },\n    logging: { level: 'debug', redactPII: false },\n  },\n  staging: {\n    environment: 'staging',\n    apiKey: process.env.APOLLO_API_KEY_STAGING!,\n    baseUrl: 'https:\u002F\u002Fapi.apollo.io\u002Fapi\u002Fv1',\n    isSandbox: false,\n    rateLimit: { maxPerMinute: 50, concurrency: 5 },\n    features: { enrichment: true, sequences: true, deals: true, bulkEnrichment: true },\n    credits: { dailyBudget: 50, alertThreshold: 70 },\n    logging: { level: 'info', redactPII: true },\n  },\n  production: {\n    environment: 'production',\n    apiKey: process.env.APOLLO_API_KEY_PROD!,\n    baseUrl: 'https:\u002F\u002Fapi.apollo.io\u002Fapi\u002Fv1',\n    isSandbox: false,\n    rateLimit: { maxPerMinute: 100, concurrency: 10 },\n    features: { enrichment: true, sequences: true, deals: true, bulkEnrichment: true },\n    credits: { dailyBudget: 500, alertThreshold: 90 },\n    logging: { level: 'warn', redactPII: true },\n  },\n};\n```\n\n### Step 3: Environment-Aware Client Factory\n```typescript\n\u002F\u002F src\u002Fconfig\u002Fclient-factory.ts\nimport axios, { AxiosInstance } from 'axios';\n\nexport function createEnvClient(config: ApolloEnvConfig): AxiosInstance {\n  const validated = ApolloEnvConfig.parse(config);\n\n  const client = axios.create({\n    baseURL: validated.baseUrl,\n    headers: { 'Content-Type': 'application\u002Fjson', 'x-api-key': validated.apiKey },\n    timeout: validated.environment === 'development' ? 30_000 : 15_000,\n  });\n\n  \u002F\u002F Feature gate: block disabled endpoints\n  client.interceptors.request.use((req) => {\n    if (req.url?.includes('\u002Fpeople\u002Fmatch') && !validated.features.enrichment)\n      throw new Error(`Enrichment disabled in ${validated.environment}`);\n    if (req.url?.includes('\u002Femailer_campaigns') && !validated.features.sequences)\n      throw new Error(`Sequences disabled in ${validated.environment}`);\n    if (req.url?.includes('\u002Fopportunities') && !validated.features.deals)\n      throw new Error(`Deals disabled in ${validated.environment}`);\n    if (req.url?.includes('\u002Fpeople\u002Fbulk_match') && !validated.features.bulkEnrichment)\n      throw new Error(`Bulk enrichment disabled in ${validated.environment}`);\n    return req;\n  });\n\n  \u002F\u002F Debug logging in dev\n  if (validated.logging.level === 'debug') {\n    client.interceptors.request.use((req) => {\n      console.log(`[${validated.environment}] ${req.method?.toUpperCase()} ${req.url}`);\n      return req;\n    });\n  }\n\n  return client;\n}\n\nexport function getClient(): AxiosInstance {\n  const env = process.env.NODE_ENV ?? 'development';\n  return createEnvClient(configs[env] ?? configs.development);\n}\n```\n\n### Step 4: Kubernetes Secrets\n```yaml\n# k8s\u002Fdev\u002Fapollo-secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: apollo-credentials\n  namespace: sales-dev\ntype: Opaque\nstringData:\n  APOLLO_SANDBOX_KEY: \"sandbox-token-here\"\n  APOLLO_API_KEY_DEV: \"dev-key-here\"\n---\n# k8s\u002Fprod\u002Fapollo-secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: apollo-credentials\n  namespace: sales-prod\ntype: Opaque\nstringData:\n  APOLLO_API_KEY_PROD: \"master-key-here\"\n```\n\n### Step 5: Environment Verification Script\n```typescript\n\u002F\u002F src\u002Fscripts\u002Fverify-envs.ts\nasync function verifyAllEnvironments() {\n  for (const [env, config] of Object.entries(configs)) {\n    try {\n      const client = createEnvClient(config);\n      const { data } = await client.get('\u002Fauth\u002Fhealth');\n      const isMaster = await testMasterAccess(client);\n      console.log(`${env}: ${data.is_logged_in ? 'OK' : 'FAIL'} (${isMaster ? 'master' : 'standard'} key, sandbox: ${config.isSandbox})`);\n    } catch (err: any) {\n      console.error(`${env}: FAIL — ${err.message}`);\n    }\n  }\n}\n\nasync function testMasterAccess(client: AxiosInstance): Promise\u003Cboolean> {\n  try { await client.post('\u002Fcontacts\u002Fsearch', { per_page: 1 }); return true; }\n  catch { return false; }\n}\n```\n\n## Output\n- Zod-validated environment config schema with feature flags and credit budgets\n- Three environment configs (dev with sandbox, staging, production)\n- Client factory with feature gating and debug logging\n- Kubernetes secrets per namespace\n- Environment verification script testing all configs\n\n## Error Handling\n| Issue | Resolution |\n|-------|------------|\n| Feature disabled | Client throws descriptive error identifying which env blocked it |\n| Wrong environment | Check `NODE_ENV`, client falls back to development |\n| Missing API key | Zod throws with clear validation error |\n| Sandbox returning dummy data | Expected in development — use staging for real data testing |\n\n## Resources\n- [Apollo Sandbox Testing](https:\u002F\u002Fdocs.apollo.io\u002Fdocs\u002Ftest-api-key)\n- [Create API Keys](https:\u002F\u002Fdocs.apollo.io\u002Fdocs\u002Fcreate-api-key)\n- [12-Factor App Config](https:\u002F\u002F12factor.net\u002Fconfig)\n- [Kubernetes Secrets](https:\u002F\u002Fkubernetes.io\u002Fdocs\u002Fconcepts\u002Fconfiguration\u002Fsecret\u002F)\n\n## Next Steps\nProceed to `apollo-observability` for monitoring setup.\n\n",{"name":5,"tags":44,"author":46,"license":15,"version":47,"description":48,"allowed-tools":49,"compatible-with":50},[45,24,26],"saas","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Configure Apollo.io multi-environment setup.\nUse when setting up development, staging, and production environments,\nor managing multiple Apollo configurations.\nTrigger with phrases like \"apollo environments\", \"apollo staging\",\n\"apollo dev prod\", \"apollo multi-tenant\", \"apollo env config\".\n","Read, Write, Edit, Bash(kubectl:*), Bash(curl:*)","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fapollo-multi-env-setup",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":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill apollo-multi-env-setup",{"tool":66,"command":67},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill apollo-multi-env-setup",{"tool":69,"command":70},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill apollo-multi-env-setup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fapollo-multi-env-setup\u002FSKILL.md",true,[],[75,89,99,108,114,121],{"skillNo":76,"name":77,"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":78,"categories":79,"keywords":85,"publishedAt":39},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[86,87,88],"model","model hierarchy","model hierarchy skill",{"skillNo":90,"name":91,"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":92,"categories":93,"keywords":95,"publishedAt":39},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[94],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[96,97,98],"MCP","zoom","zoom mcp",{"skillNo":100,"name":101,"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":102,"categories":103,"keywords":104,"publishedAt":39},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[105,106,107,97],"sdk","zoom apps sdk","apps",{"skillNo":109,"name":110,"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":111,"categories":112,"keywords":113,"publishedAt":39},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[110],{"skillNo":115,"name":116,"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":117,"categories":118,"keywords":120,"publishedAt":39},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[119],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[116],{"skillNo":122,"name":123,"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":124,"categories":125,"keywords":126,"publishedAt":39},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[123]]