[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F8GJ7NZ1MJNRT24AG9D1JS":3,"skill-same:01M6F8GJ7NZ1MJNRT24AG9D1JS":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},"01M6F8GJ7NZ1MJNRT24AG9D1JS","clerk-observability",null,"Implement monitoring, logging, and observability for Clerk authentication.\nUse when setting up monitoring, debugging auth issues in production,\nor implementing audit logging.\nTrigger with phrases like \"clerk monitoring\", \"clerk logging\",\n\"clerk observability\", \"clerk metrics\", \"clerk audit log\".","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\u002Fclerk-observability\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"clerk observability","clerk","observability","Bash","audit log","io","log","up","edit","write","read","openclaw","monitoring","audit","logging","issues","authentication","code","debugging","auth","2026-11-10 10:12:30",false,"---\nname: clerk-observability\ndescription: |\n  Implement monitoring, logging, and observability for Clerk authentication.\n  Use when setting up monitoring, debugging auth issues in production,\n  or implementing audit logging.\n  Trigger with phrases like \"clerk monitoring\", \"clerk logging\",\n  \"clerk observability\", \"clerk metrics\", \"clerk audit log\".\nallowed-tools: Read, Write, Edit, Bash(npm:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, clerk, monitoring, observability, debugging]\n\n---\n# Clerk Observability\n\n## Overview\nImplement monitoring, logging, and observability for Clerk authentication. Covers structured auth logging, middleware performance tracking, webhook event monitoring, Sentry integration, and health check endpoints.\n\n## Prerequisites\n- Clerk integration working\n- Monitoring platform (Sentry, DataDog, or Pino logger at minimum)\n- Logging infrastructure (structured JSON logs recommended)\n\n## Instructions\n\n### Step 1: Structured Authentication Event Logging\n```typescript\n\u002F\u002F lib\u002Fauth-logger.ts\nimport pino from 'pino'\n\nconst logger = pino({\n  level: process.env.LOG_LEVEL || 'info',\n  transport: process.env.NODE_ENV === 'development' ? { target: 'pino-pretty' } : undefined,\n})\n\nexport function logAuthEvent(event: {\n  type: 'sign_in' | 'sign_out' | 'sign_up' | 'permission_denied' | 'session_expired'\n  userId?: string | null\n  orgId?: string | null\n  path: string\n  metadata?: Record\u003Cstring, any>\n}) {\n  logger.info({\n    category: 'auth',\n    ...event,\n    timestamp: new Date().toISOString(),\n  })\n}\n\nexport function logAuthError(error: Error, context: { userId?: string; path: string }) {\n  logger.error({\n    category: 'auth',\n    error: error.message,\n    stack: error.stack,\n    ...context,\n    timestamp: new Date().toISOString(),\n  })\n}\n```\n\n### Step 2: Middleware Performance Monitoring\n```typescript\n\u002F\u002F middleware.ts\nimport { clerkMiddleware, createRouteMatcher } from '@clerk\u002Fnextjs\u002Fserver'\n\nconst isPublicRoute = createRouteMatcher(['\u002F', '\u002Fsign-in(.*)', '\u002Fsign-up(.*)'])\n\nexport default clerkMiddleware(async (auth, req) => {\n  const start = Date.now()\n\n  if (!isPublicRoute(req)) {\n    await auth.protect()\n  }\n\n  const duration = Date.now() - start\n  const { userId } = await auth()\n\n  \u002F\u002F Log slow auth checks\n  if (duration > 100) {\n    console.warn(`[Auth Perf] ${req.nextUrl.pathname} took ${duration}ms`, {\n      userId: userId || 'anonymous',\n      method: req.method,\n    })\n  }\n\n  \u002F\u002F Add timing header for debugging\n  const response = new Response(null, { status: 200 })\n  response.headers.set('X-Auth-Duration', `${duration}ms`)\n})\n```\n\n### Step 3: Webhook Event Tracking\n```typescript\n\u002F\u002F app\u002Fapi\u002Fwebhooks\u002Fclerk\u002Froute.ts\nimport { logAuthEvent } from '@\u002Flib\u002Fauth-logger'\n\nasync function handleWebhookEvent(evt: WebhookEvent) {\n  const startTime = Date.now()\n\n  \u002F\u002F Track webhook processing metrics\n  const metrics = {\n    eventType: evt.type,\n    receivedAt: new Date().toISOString(),\n    processingTimeMs: 0,\n  }\n\n  switch (evt.type) {\n    case 'user.created':\n      logAuthEvent({\n        type: 'sign_up',\n        userId: evt.data.id,\n        path: '\u002Fwebhooks\u002Fclerk',\n        metadata: { email: evt.data.email_addresses[0]?.email_address },\n      })\n      await db.user.create({ data: { clerkId: evt.data.id } })\n      break\n\n    case 'session.created':\n      logAuthEvent({\n        type: 'sign_in',\n        userId: evt.data.user_id,\n        path: '\u002Fwebhooks\u002Fclerk',\n      })\n      break\n\n    case 'session.ended':\n      logAuthEvent({\n        type: 'sign_out',\n        userId: evt.data.user_id,\n        path: '\u002Fwebhooks\u002Fclerk',\n      })\n      break\n  }\n\n  metrics.processingTimeMs = Date.now() - startTime\n\n  \u002F\u002F Alert on slow webhook processing\n  if (metrics.processingTimeMs > 5000) {\n    console.error('[Webhook] Slow processing:', metrics)\n  }\n\n  return Response.json({ received: true })\n}\n```\n\n### Step 4: Sentry Error Tracking Integration\n```typescript\n\u002F\u002F lib\u002Fsentry-clerk.ts\nimport * as Sentry from '@sentry\u002Fnextjs'\nimport { auth, currentUser } from '@clerk\u002Fnextjs\u002Fserver'\n\nexport async function initSentryUser() {\n  const { userId, orgId } = await auth()\n\n  if (userId) {\n    const user = await currentUser()\n    Sentry.setUser({\n      id: userId,\n      email: user?.emailAddresses[0]?.emailAddress,\n      username: user?.username || undefined,\n    })\n    Sentry.setTag('org_id', orgId || 'personal')\n  }\n}\n\n\u002F\u002F Wrap API routes with Sentry + Clerk context\nexport function withAuthSentry(handler: Function) {\n  return async (...args: any[]) => {\n    await initSentryUser()\n    try {\n      return await handler(...args)\n    } catch (error) {\n      Sentry.captureException(error)\n      throw error\n    }\n  }\n}\n```\n\n```typescript\n\u002F\u002F sentry.server.config.ts\nimport * as Sentry from '@sentry\u002Fnextjs'\n\nSentry.init({\n  dsn: process.env.SENTRY_DSN,\n  tracesSampleRate: 0.1,\n  beforeSend(event) {\n    \u002F\u002F Scrub Clerk secret key if accidentally logged\n    if (event.extra) {\n      delete event.extra['CLERK_SECRET_KEY']\n    }\n    return event\n  },\n})\n```\n\n### Step 5: Health Check Endpoint\n```typescript\n\u002F\u002F app\u002Fapi\u002Fhealth\u002Froute.ts\nimport { clerkClient } from '@clerk\u002Fnextjs\u002Fserver'\n\nexport async function GET() {\n  const checks: Record\u003Cstring, { status: string; latencyMs: number; detail?: string }> = {}\n\n  \u002F\u002F Check Clerk Backend API\n  const clerkStart = Date.now()\n  try {\n    const client = await clerkClient()\n    await client.users.getUserList({ limit: 1 })\n    checks.clerk = { status: 'healthy', latencyMs: Date.now() - clerkStart }\n  } catch (err: any) {\n    checks.clerk = { status: 'unhealthy', latencyMs: Date.now() - clerkStart, detail: err.message }\n  }\n\n  \u002F\u002F Check database\n  const dbStart = Date.now()\n  try {\n    await db.$queryRaw`SELECT 1`\n    checks.database = { status: 'healthy', latencyMs: Date.now() - dbStart }\n  } catch (err: any) {\n    checks.database = { status: 'unhealthy', latencyMs: Date.now() - dbStart, detail: err.message }\n  }\n\n  const allHealthy = Object.values(checks).every((c) => c.status === 'healthy')\n  return Response.json(\n    { status: allHealthy ? 'healthy' : 'degraded', checks, timestamp: new Date().toISOString() },\n    { status: allHealthy ? 200 : 503 }\n  )\n}\n```\n\n### Step 6: Dashboard Metrics Query\n```typescript\n\u002F\u002F app\u002Fapi\u002Fadmin\u002Fauth-metrics\u002Froute.ts\nimport { auth } from '@clerk\u002Fnextjs\u002Fserver'\n\nexport async function GET() {\n  const { has } = await auth()\n  if (!has({ role: 'org:admin' })) {\n    return Response.json({ error: 'Forbidden' }, { status: 403 })\n  }\n\n  const now = new Date()\n  const dayAgo = new Date(now.getTime() - 24 * 60 * 60 * 1000)\n\n  const metrics = {\n    signIns24h: await db.auditLog.count({\n      where: { action: 'sign_in', timestamp: { gte: dayAgo } },\n    }),\n    signUps24h: await db.auditLog.count({\n      where: { action: 'sign_up', timestamp: { gte: dayAgo } },\n    }),\n    authErrors24h: await db.auditLog.count({\n      where: { action: 'permission_denied', timestamp: { gte: dayAgo } },\n    }),\n    webhookEvents24h: await db.webhookEvent.count({\n      where: { processedAt: { gte: dayAgo } },\n    }),\n  }\n\n  return Response.json(metrics)\n}\n```\n\n## Output\n- Structured auth event logging with Pino (sign-in, sign-out, sign-up, errors)\n- Middleware performance tracking with slow-request alerts\n- Webhook event monitoring with processing time metrics\n- Sentry integration with Clerk user context\n- Health check endpoint monitoring Clerk API and database\n- Admin metrics endpoint for auth dashboard\n\n## Error Handling\n| Issue | Monitoring Action |\n|-------|-------------------|\n| High auth latency (p95 > 200ms) | Alert via middleware timing logs, investigate caching |\n| Webhook failure rate > 1% | Alert on processing errors, check endpoint health |\n| Session anomalies | Track unusual sign-in patterns via audit log |\n| Clerk API errors | Capture with Sentry context, check status.clerk.com |\n\n## Examples\n\n### Quick Monitoring One-Liner\n```bash\n# Watch auth events in real-time (development)\nLOG_LEVEL=debug npm run dev 2>&1 | grep '\"category\":\"auth\"'\n```\n\n## Resources\n- [Clerk Dashboard Analytics](https:\u002F\u002Fdashboard.clerk.com)\n- [Sentry Next.js Integration](https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fnextjs\u002F)\n- [Pino Logger](https:\u002F\u002Fgetpino.io\u002F)\n\n## Next Steps\nProceed to `clerk-incident-runbook` for incident response procedures.\n\n","# Clerk Observability\n\n## Overview\nImplement monitoring, logging, and observability for Clerk authentication. Covers structured auth logging, middleware performance tracking, webhook event monitoring, Sentry integration, and health check endpoints.\n\n## Prerequisites\n- Clerk integration working\n- Monitoring platform (Sentry, DataDog, or Pino logger at minimum)\n- Logging infrastructure (structured JSON logs recommended)\n\n## Instructions\n\n### Step 1: Structured Authentication Event Logging\n```typescript\n\u002F\u002F lib\u002Fauth-logger.ts\nimport pino from 'pino'\n\nconst logger = pino({\n  level: process.env.LOG_LEVEL || 'info',\n  transport: process.env.NODE_ENV === 'development' ? { target: 'pino-pretty' } : undefined,\n})\n\nexport function logAuthEvent(event: {\n  type: 'sign_in' | 'sign_out' | 'sign_up' | 'permission_denied' | 'session_expired'\n  userId?: string | null\n  orgId?: string | null\n  path: string\n  metadata?: Record\u003Cstring, any>\n}) {\n  logger.info({\n    category: 'auth',\n    ...event,\n    timestamp: new Date().toISOString(),\n  })\n}\n\nexport function logAuthError(error: Error, context: { userId?: string; path: string }) {\n  logger.error({\n    category: 'auth',\n    error: error.message,\n    stack: error.stack,\n    ...context,\n    timestamp: new Date().toISOString(),\n  })\n}\n```\n\n### Step 2: Middleware Performance Monitoring\n```typescript\n\u002F\u002F middleware.ts\nimport { clerkMiddleware, createRouteMatcher } from '@clerk\u002Fnextjs\u002Fserver'\n\nconst isPublicRoute = createRouteMatcher(['\u002F', '\u002Fsign-in(.*)', '\u002Fsign-up(.*)'])\n\nexport default clerkMiddleware(async (auth, req) => {\n  const start = Date.now()\n\n  if (!isPublicRoute(req)) {\n    await auth.protect()\n  }\n\n  const duration = Date.now() - start\n  const { userId } = await auth()\n\n  \u002F\u002F Log slow auth checks\n  if (duration > 100) {\n    console.warn(`[Auth Perf] ${req.nextUrl.pathname} took ${duration}ms`, {\n      userId: userId || 'anonymous',\n      method: req.method,\n    })\n  }\n\n  \u002F\u002F Add timing header for debugging\n  const response = new Response(null, { status: 200 })\n  response.headers.set('X-Auth-Duration', `${duration}ms`)\n})\n```\n\n### Step 3: Webhook Event Tracking\n```typescript\n\u002F\u002F app\u002Fapi\u002Fwebhooks\u002Fclerk\u002Froute.ts\nimport { logAuthEvent } from '@\u002Flib\u002Fauth-logger'\n\nasync function handleWebhookEvent(evt: WebhookEvent) {\n  const startTime = Date.now()\n\n  \u002F\u002F Track webhook processing metrics\n  const metrics = {\n    eventType: evt.type,\n    receivedAt: new Date().toISOString(),\n    processingTimeMs: 0,\n  }\n\n  switch (evt.type) {\n    case 'user.created':\n      logAuthEvent({\n        type: 'sign_up',\n        userId: evt.data.id,\n        path: '\u002Fwebhooks\u002Fclerk',\n        metadata: { email: evt.data.email_addresses[0]?.email_address },\n      })\n      await db.user.create({ data: { clerkId: evt.data.id } })\n      break\n\n    case 'session.created':\n      logAuthEvent({\n        type: 'sign_in',\n        userId: evt.data.user_id,\n        path: '\u002Fwebhooks\u002Fclerk',\n      })\n      break\n\n    case 'session.ended':\n      logAuthEvent({\n        type: 'sign_out',\n        userId: evt.data.user_id,\n        path: '\u002Fwebhooks\u002Fclerk',\n      })\n      break\n  }\n\n  metrics.processingTimeMs = Date.now() - startTime\n\n  \u002F\u002F Alert on slow webhook processing\n  if (metrics.processingTimeMs > 5000) {\n    console.error('[Webhook] Slow processing:', metrics)\n  }\n\n  return Response.json({ received: true })\n}\n```\n\n### Step 4: Sentry Error Tracking Integration\n```typescript\n\u002F\u002F lib\u002Fsentry-clerk.ts\nimport * as Sentry from '@sentry\u002Fnextjs'\nimport { auth, currentUser } from '@clerk\u002Fnextjs\u002Fserver'\n\nexport async function initSentryUser() {\n  const { userId, orgId } = await auth()\n\n  if (userId) {\n    const user = await currentUser()\n    Sentry.setUser({\n      id: userId,\n      email: user?.emailAddresses[0]?.emailAddress,\n      username: user?.username || undefined,\n    })\n    Sentry.setTag('org_id', orgId || 'personal')\n  }\n}\n\n\u002F\u002F Wrap API routes with Sentry + Clerk context\nexport function withAuthSentry(handler: Function) {\n  return async (...args: any[]) => {\n    await initSentryUser()\n    try {\n      return await handler(...args)\n    } catch (error) {\n      Sentry.captureException(error)\n      throw error\n    }\n  }\n}\n```\n\n```typescript\n\u002F\u002F sentry.server.config.ts\nimport * as Sentry from '@sentry\u002Fnextjs'\n\nSentry.init({\n  dsn: process.env.SENTRY_DSN,\n  tracesSampleRate: 0.1,\n  beforeSend(event) {\n    \u002F\u002F Scrub Clerk secret key if accidentally logged\n    if (event.extra) {\n      delete event.extra['CLERK_SECRET_KEY']\n    }\n    return event\n  },\n})\n```\n\n### Step 5: Health Check Endpoint\n```typescript\n\u002F\u002F app\u002Fapi\u002Fhealth\u002Froute.ts\nimport { clerkClient } from '@clerk\u002Fnextjs\u002Fserver'\n\nexport async function GET() {\n  const checks: Record\u003Cstring, { status: string; latencyMs: number; detail?: string }> = {}\n\n  \u002F\u002F Check Clerk Backend API\n  const clerkStart = Date.now()\n  try {\n    const client = await clerkClient()\n    await client.users.getUserList({ limit: 1 })\n    checks.clerk = { status: 'healthy', latencyMs: Date.now() - clerkStart }\n  } catch (err: any) {\n    checks.clerk = { status: 'unhealthy', latencyMs: Date.now() - clerkStart, detail: err.message }\n  }\n\n  \u002F\u002F Check database\n  const dbStart = Date.now()\n  try {\n    await db.$queryRaw`SELECT 1`\n    checks.database = { status: 'healthy', latencyMs: Date.now() - dbStart }\n  } catch (err: any) {\n    checks.database = { status: 'unhealthy', latencyMs: Date.now() - dbStart, detail: err.message }\n  }\n\n  const allHealthy = Object.values(checks).every((c) => c.status === 'healthy')\n  return Response.json(\n    { status: allHealthy ? 'healthy' : 'degraded', checks, timestamp: new Date().toISOString() },\n    { status: allHealthy ? 200 : 503 }\n  )\n}\n```\n\n### Step 6: Dashboard Metrics Query\n```typescript\n\u002F\u002F app\u002Fapi\u002Fadmin\u002Fauth-metrics\u002Froute.ts\nimport { auth } from '@clerk\u002Fnextjs\u002Fserver'\n\nexport async function GET() {\n  const { has } = await auth()\n  if (!has({ role: 'org:admin' })) {\n    return Response.json({ error: 'Forbidden' }, { status: 403 })\n  }\n\n  const now = new Date()\n  const dayAgo = new Date(now.getTime() - 24 * 60 * 60 * 1000)\n\n  const metrics = {\n    signIns24h: await db.auditLog.count({\n      where: { action: 'sign_in', timestamp: { gte: dayAgo } },\n    }),\n    signUps24h: await db.auditLog.count({\n      where: { action: 'sign_up', timestamp: { gte: dayAgo } },\n    }),\n    authErrors24h: await db.auditLog.count({\n      where: { action: 'permission_denied', timestamp: { gte: dayAgo } },\n    }),\n    webhookEvents24h: await db.webhookEvent.count({\n      where: { processedAt: { gte: dayAgo } },\n    }),\n  }\n\n  return Response.json(metrics)\n}\n```\n\n## Output\n- Structured auth event logging with Pino (sign-in, sign-out, sign-up, errors)\n- Middleware performance tracking with slow-request alerts\n- Webhook event monitoring with processing time metrics\n- Sentry integration with Clerk user context\n- Health check endpoint monitoring Clerk API and database\n- Admin metrics endpoint for auth dashboard\n\n## Error Handling\n| Issue | Monitoring Action |\n|-------|-------------------|\n| High auth latency (p95 > 200ms) | Alert via middleware timing logs, investigate caching |\n| Webhook failure rate > 1% | Alert on processing errors, check endpoint health |\n| Session anomalies | Track unusual sign-in patterns via audit log |\n| Clerk API errors | Capture with Sentry context, check status.clerk.com |\n\n## Examples\n\n### Quick Monitoring One-Liner\n```bash\n# Watch auth events in real-time (development)\nLOG_LEVEL=debug npm run dev 2>&1 | grep '\"category\":\"auth\"'\n```\n\n## Resources\n- [Clerk Dashboard Analytics](https:\u002F\u002Fdashboard.clerk.com)\n- [Sentry Next.js Integration](https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fnextjs\u002F)\n- [Pino Logger](https:\u002F\u002Fgetpino.io\u002F)\n\n## Next Steps\nProceed to `clerk-incident-runbook` for incident response procedures.\n\n",{"name":5,"tags":44,"author":46,"license":15,"version":47,"description":48,"allowed-tools":49,"compatible-with":50},[45,20,31,21,37],"saas","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Implement monitoring, logging, and observability for Clerk authentication.\nUse when setting up monitoring, debugging auth issues in production,\nor implementing audit logging.\nTrigger with phrases like \"clerk monitoring\", \"clerk logging\",\n\"clerk observability\", \"clerk metrics\", \"clerk audit log\".\n","Read, Write, Edit, Bash(npm:*), Grep","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fclerk-observability",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 clerk-observability",{"tool":66,"command":67},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill clerk-observability",{"tool":69,"command":70},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill clerk-observability","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fclerk-observability\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]]