[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F9ZJHVAH2HPHAHGHTNNNMB":3,"skill-same:01M6F9ZJHVAH2HPHAHGHTNNNMB":79},{"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":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6F9ZJHVAH2HPHAHGHTNNNMB","documenso-enterprise-rbac",null,"Configure Documenso enterprise role-based access control and team management.\nUse when implementing team permissions, configuring organizational roles,\nor setting up enterprise access controls.\nTrigger with phrases like \"documenso RBAC\", \"documenso teams\",\n\"documenso permissions\", \"documenso enterprise\", \"documenso roles\".","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\u002Fdocumenso-enterprise-rbac\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"rbac","documenso","documenso enterprise rbac","Enterprise","permissions","code","team","access","configure","read","write","edit","use","up","Access Control","io","trigger","controls","teams","openclaw","2026-11-10 10:12:30",false,"---\nname: documenso-enterprise-rbac\ndescription: |\n  Configure Documenso enterprise role-based access control and team management.\n  Use when implementing team permissions, configuring organizational roles,\n  or setting up enterprise access controls.\n  Trigger with phrases like \"documenso RBAC\", \"documenso teams\",\n  \"documenso permissions\", \"documenso enterprise\", \"documenso roles\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, documenso, rbac]\n\n---\n# Documenso Enterprise RBAC\n\n## Overview\n\nConfigure team-based access control and enterprise features in Documenso. The Team plan enables multi-user collaboration with shared documents. Enterprise adds SSO (OIDC), audit logging, and organization-level management.\n\n## Prerequisites\n\n- Documenso Team or Enterprise plan\n- Understanding of RBAC concepts\n- For SSO: OIDC-compatible identity provider (Okta, Azure AD, Google Workspace, Auth0)\n\n## Documenso Team Model\n\n```\nOrganization\n├── Team A\n│   ├── Owner (full control)\n│   ├── Admin (manage members, settings)\n│   └── Member (create, view, sign team documents)\n├── Team B\n│   └── ...\n└── Personal Accounts (separate from teams)\n```\n\n**Key concepts:**\n- Teams are separate from personal accounts -- team documents are owned by the team\n- Team API keys access all team documents; personal keys only access personal documents\n- Each team member can have Owner, Admin, or Member role\n- Unlimited teams and users on Team\u002FEnterprise plans (early adopter pricing)\n\n## Instructions\n\n### Step 1: Team API Key Scoping\n\n```typescript\nimport { Documenso } from \"@documenso\u002Fsdk-typescript\";\n\n\u002F\u002F Personal key: only YOUR documents\nconst personalClient = new Documenso({\n  apiKey: process.env.DOCUMENSO_PERSONAL_KEY!,\n});\n\n\u002F\u002F Team key: all documents in the team\nconst teamClient = new Documenso({\n  apiKey: process.env.DOCUMENSO_TEAM_KEY!,\n});\n\n\u002F\u002F Common mistake: using personal key for team operations\n\u002F\u002F Results in 403 Forbidden on team resources\n```\n\n### Step 2: Application-Level RBAC\n\nDocumenso handles team membership internally. For finer-grained control in your app, implement an authorization layer:\n\n```typescript\n\u002F\u002F src\u002Fauth\u002Fdocumenso-rbac.ts\ntype Role = \"viewer\" | \"editor\" | \"admin\" | \"owner\";\n\ninterface TeamMember {\n  userId: string;\n  teamId: string;\n  role: Role;\n}\n\nconst PERMISSIONS: Record\u003CRole, string[]> = {\n  viewer: [\"documents:read\"],\n  editor: [\"documents:read\", \"documents:create\", \"documents:send\"],\n  admin: [\"documents:read\", \"documents:create\", \"documents:send\", \"documents:delete\", \"members:manage\"],\n  owner: [\"documents:read\", \"documents:create\", \"documents:send\", \"documents:delete\", \"members:manage\", \"team:settings\", \"team:billing\"],\n};\n\nfunction hasPermission(member: TeamMember, permission: string): boolean {\n  return PERMISSIONS[member.role]?.includes(permission) ?? false;\n}\n\n\u002F\u002F Middleware\nfunction requirePermission(permission: string) {\n  return (req: Request, res: Response, next: NextFunction) => {\n    const member = req.teamMember; \u002F\u002F Set by auth middleware\n    if (!hasPermission(member, permission)) {\n      return res.status(403).json({\n        error: \"Forbidden\",\n        required: permission,\n        userRole: member.role,\n      });\n    }\n    next();\n  };\n}\n\n\u002F\u002F Usage\napp.delete(\"\u002Fapi\u002Fdocuments\u002F:id\",\n  requirePermission(\"documents:delete\"),\n  async (req, res) => {\n    await teamClient.documents.deleteV0(parseInt(req.params.id));\n    res.json({ deleted: true });\n  }\n);\n```\n\n### Step 3: Enterprise SSO Configuration\n\nDocumenso Enterprise supports SSO via OIDC. Configuration is done in the admin panel:\n\n```text\nSSO Setup (Enterprise only):\n1. Navigate to Organization Settings > SSO\n2. Select your OIDC provider\n3. Enter:\n   - Client ID (from your IdP)\n   - Client Secret (from your IdP)\n   - Issuer URL (e.g., https:\u002F\u002Flogin.microsoftonline.com\u002F{tenant}\u002Fv2.0)\n4. Configure redirect URI in your IdP:\n   https:\u002F\u002Fsign.yourcompany.com\u002Fapi\u002Fauth\u002Fcallback\u002Foidc\n5. Test with a non-admin user first\n\nSupported providers:\n- Google Workspace\n- Microsoft Entra ID (Azure AD)\n- Okta\n- Auth0\n- Any OIDC-compliant provider\n\nOnce enabled, team members sign in via:\nhttps:\u002F\u002Fsign.yourcompany.com\u002Fsso\u002F{organization-slug}\n```\n\n### Step 4: Audit Logging (Enterprise)\n\nEnterprise includes built-in audit logging. For additional application-level auditing:\n\n```typescript\n\u002F\u002F src\u002Faudit\u002Fdocumenso-audit.ts\ninterface AuditEntry {\n  timestamp: string;\n  userId: string;\n  teamId: string;\n  action: string;\n  resourceType: \"document\" | \"template\" | \"team\" | \"member\";\n  resourceId: string;\n  metadata: Record\u003Cstring, any>;\n}\n\nasync function auditLog(entry: Omit\u003CAuditEntry, \"timestamp\">) {\n  const log: AuditEntry = {\n    ...entry,\n    timestamp: new Date().toISOString(),\n  };\n\n  \u002F\u002F Write to your audit store (database, CloudWatch, etc.)\n  console.log(JSON.stringify(log));\n\n  \u002F\u002F Example: document sent\n  \u002F\u002F { action: \"document.send\", resourceType: \"document\",\n  \u002F\u002F   resourceId: \"42\", userId: \"user_123\", teamId: \"team_456\" }\n}\n\n\u002F\u002F Wrap Documenso operations with audit logging\nasync function sendDocumentAudited(\n  client: Documenso,\n  documentId: number,\n  userId: string,\n  teamId: string\n) {\n  await client.documents.sendV0(documentId);\n  await auditLog({\n    userId,\n    teamId,\n    action: \"document.send\",\n    resourceType: \"document\",\n    resourceId: String(documentId),\n    metadata: { status: \"PENDING\" },\n  });\n}\n```\n\n### Step 5: Multi-Tenant Architecture\n\n```typescript\n\u002F\u002F src\u002Ftenant\u002Fdocumenso-tenant.ts\n\u002F\u002F Each tenant maps to a Documenso team with its own API key\n\ninterface Tenant {\n  id: string;\n  name: string;\n  documensoTeamApiKey: string; \u002F\u002F Encrypted in database\n}\n\nclass TenantDocumensoService {\n  private clients = new Map\u003Cstring, Documenso>();\n\n  getClient(tenant: Tenant): Documenso {\n    if (!this.clients.has(tenant.id)) {\n      this.clients.set(\n        tenant.id,\n        new Documenso({ apiKey: tenant.documensoTeamApiKey })\n      );\n    }\n    return this.clients.get(tenant.id)!;\n  }\n\n  \u002F\u002F Ensure tenant isolation — never cross-access\n  async getDocument(tenant: Tenant, documentId: number) {\n    const client = this.getClient(tenant);\n    return client.documents.getV0(documentId);\n    \u002F\u002F Team API keys automatically scope to team documents\n  }\n}\n```\n\n## Permission Matrix\n\n| Action | Member | Admin | Owner |\n|--------|--------|-------|-------|\n| View team documents | Yes | Yes | Yes |\n| Create documents | Yes | Yes | Yes |\n| Send for signing | Yes | Yes | Yes |\n| Delete documents | No | Yes | Yes |\n| Manage team members | No | Yes | Yes |\n| Team settings \u002F billing | No | No | Yes |\n| Configure SSO | No | No | Yes |\n\n## Error Handling\n\n| RBAC Issue | Cause | Solution |\n|------------|-------|----------|\n| 403 Forbidden | Personal key on team resource | Use team-scoped API key |\n| Cannot delete | Not Admin\u002FOwner role | Request role upgrade from team Owner |\n| SSO login fails | Wrong OIDC configuration | Verify Client ID, Secret, and Issuer URL |\n| Tenant data leak | Wrong API key for tenant | Validate tenant isolation in tests |\n\n## Resources\n\n- [Documenso Teams](https:\u002F\u002Fdocumenso.com\u002Ffeatures\u002Fteams)\n- [SSO Portal Documentation](https:\u002F\u002Fdocs.documenso.com\u002Fusers\u002Forganisations\u002Fsso)\n- [Enterprise Features](https:\u002F\u002Fdocumenso.com\u002Fblog\u002Fintroducing-self-hosted-signing-infrastructure-for-enterprise)\n- [OWASP Access Control](https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FAccess_Control_Cheat_Sheet.html)\n\n## Next Steps\n\nFor migration strategies, see `documenso-migration-deep-dive`.\n\n","# Documenso Enterprise RBAC\n\n## Overview\n\nConfigure team-based access control and enterprise features in Documenso. The Team plan enables multi-user collaboration with shared documents. Enterprise adds SSO (OIDC), audit logging, and organization-level management.\n\n## Prerequisites\n\n- Documenso Team or Enterprise plan\n- Understanding of RBAC concepts\n- For SSO: OIDC-compatible identity provider (Okta, Azure AD, Google Workspace, Auth0)\n\n## Documenso Team Model\n\n```\nOrganization\n├── Team A\n│   ├── Owner (full control)\n│   ├── Admin (manage members, settings)\n│   └── Member (create, view, sign team documents)\n├── Team B\n│   └── ...\n└── Personal Accounts (separate from teams)\n```\n\n**Key concepts:**\n- Teams are separate from personal accounts -- team documents are owned by the team\n- Team API keys access all team documents; personal keys only access personal documents\n- Each team member can have Owner, Admin, or Member role\n- Unlimited teams and users on Team\u002FEnterprise plans (early adopter pricing)\n\n## Instructions\n\n### Step 1: Team API Key Scoping\n\n```typescript\nimport { Documenso } from \"@documenso\u002Fsdk-typescript\";\n\n\u002F\u002F Personal key: only YOUR documents\nconst personalClient = new Documenso({\n  apiKey: process.env.DOCUMENSO_PERSONAL_KEY!,\n});\n\n\u002F\u002F Team key: all documents in the team\nconst teamClient = new Documenso({\n  apiKey: process.env.DOCUMENSO_TEAM_KEY!,\n});\n\n\u002F\u002F Common mistake: using personal key for team operations\n\u002F\u002F Results in 403 Forbidden on team resources\n```\n\n### Step 2: Application-Level RBAC\n\nDocumenso handles team membership internally. For finer-grained control in your app, implement an authorization layer:\n\n```typescript\n\u002F\u002F src\u002Fauth\u002Fdocumenso-rbac.ts\ntype Role = \"viewer\" | \"editor\" | \"admin\" | \"owner\";\n\ninterface TeamMember {\n  userId: string;\n  teamId: string;\n  role: Role;\n}\n\nconst PERMISSIONS: Record\u003CRole, string[]> = {\n  viewer: [\"documents:read\"],\n  editor: [\"documents:read\", \"documents:create\", \"documents:send\"],\n  admin: [\"documents:read\", \"documents:create\", \"documents:send\", \"documents:delete\", \"members:manage\"],\n  owner: [\"documents:read\", \"documents:create\", \"documents:send\", \"documents:delete\", \"members:manage\", \"team:settings\", \"team:billing\"],\n};\n\nfunction hasPermission(member: TeamMember, permission: string): boolean {\n  return PERMISSIONS[member.role]?.includes(permission) ?? false;\n}\n\n\u002F\u002F Middleware\nfunction requirePermission(permission: string) {\n  return (req: Request, res: Response, next: NextFunction) => {\n    const member = req.teamMember; \u002F\u002F Set by auth middleware\n    if (!hasPermission(member, permission)) {\n      return res.status(403).json({\n        error: \"Forbidden\",\n        required: permission,\n        userRole: member.role,\n      });\n    }\n    next();\n  };\n}\n\n\u002F\u002F Usage\napp.delete(\"\u002Fapi\u002Fdocuments\u002F:id\",\n  requirePermission(\"documents:delete\"),\n  async (req, res) => {\n    await teamClient.documents.deleteV0(parseInt(req.params.id));\n    res.json({ deleted: true });\n  }\n);\n```\n\n### Step 3: Enterprise SSO Configuration\n\nDocumenso Enterprise supports SSO via OIDC. Configuration is done in the admin panel:\n\n```text\nSSO Setup (Enterprise only):\n1. Navigate to Organization Settings > SSO\n2. Select your OIDC provider\n3. Enter:\n   - Client ID (from your IdP)\n   - Client Secret (from your IdP)\n   - Issuer URL (e.g., https:\u002F\u002Flogin.microsoftonline.com\u002F{tenant}\u002Fv2.0)\n4. Configure redirect URI in your IdP:\n   https:\u002F\u002Fsign.yourcompany.com\u002Fapi\u002Fauth\u002Fcallback\u002Foidc\n5. Test with a non-admin user first\n\nSupported providers:\n- Google Workspace\n- Microsoft Entra ID (Azure AD)\n- Okta\n- Auth0\n- Any OIDC-compliant provider\n\nOnce enabled, team members sign in via:\nhttps:\u002F\u002Fsign.yourcompany.com\u002Fsso\u002F{organization-slug}\n```\n\n### Step 4: Audit Logging (Enterprise)\n\nEnterprise includes built-in audit logging. For additional application-level auditing:\n\n```typescript\n\u002F\u002F src\u002Faudit\u002Fdocumenso-audit.ts\ninterface AuditEntry {\n  timestamp: string;\n  userId: string;\n  teamId: string;\n  action: string;\n  resourceType: \"document\" | \"template\" | \"team\" | \"member\";\n  resourceId: string;\n  metadata: Record\u003Cstring, any>;\n}\n\nasync function auditLog(entry: Omit\u003CAuditEntry, \"timestamp\">) {\n  const log: AuditEntry = {\n    ...entry,\n    timestamp: new Date().toISOString(),\n  };\n\n  \u002F\u002F Write to your audit store (database, CloudWatch, etc.)\n  console.log(JSON.stringify(log));\n\n  \u002F\u002F Example: document sent\n  \u002F\u002F { action: \"document.send\", resourceType: \"document\",\n  \u002F\u002F   resourceId: \"42\", userId: \"user_123\", teamId: \"team_456\" }\n}\n\n\u002F\u002F Wrap Documenso operations with audit logging\nasync function sendDocumentAudited(\n  client: Documenso,\n  documentId: number,\n  userId: string,\n  teamId: string\n) {\n  await client.documents.sendV0(documentId);\n  await auditLog({\n    userId,\n    teamId,\n    action: \"document.send\",\n    resourceType: \"document\",\n    resourceId: String(documentId),\n    metadata: { status: \"PENDING\" },\n  });\n}\n```\n\n### Step 5: Multi-Tenant Architecture\n\n```typescript\n\u002F\u002F src\u002Ftenant\u002Fdocumenso-tenant.ts\n\u002F\u002F Each tenant maps to a Documenso team with its own API key\n\ninterface Tenant {\n  id: string;\n  name: string;\n  documensoTeamApiKey: string; \u002F\u002F Encrypted in database\n}\n\nclass TenantDocumensoService {\n  private clients = new Map\u003Cstring, Documenso>();\n\n  getClient(tenant: Tenant): Documenso {\n    if (!this.clients.has(tenant.id)) {\n      this.clients.set(\n        tenant.id,\n        new Documenso({ apiKey: tenant.documensoTeamApiKey })\n      );\n    }\n    return this.clients.get(tenant.id)!;\n  }\n\n  \u002F\u002F Ensure tenant isolation — never cross-access\n  async getDocument(tenant: Tenant, documentId: number) {\n    const client = this.getClient(tenant);\n    return client.documents.getV0(documentId);\n    \u002F\u002F Team API keys automatically scope to team documents\n  }\n}\n```\n\n## Permission Matrix\n\n| Action | Member | Admin | Owner |\n|--------|--------|-------|-------|\n| View team documents | Yes | Yes | Yes |\n| Create documents | Yes | Yes | Yes |\n| Send for signing | Yes | Yes | Yes |\n| Delete documents | No | Yes | Yes |\n| Manage team members | No | Yes | Yes |\n| Team settings \u002F billing | No | No | Yes |\n| Configure SSO | No | No | Yes |\n\n## Error Handling\n\n| RBAC Issue | Cause | Solution |\n|------------|-------|----------|\n| 403 Forbidden | Personal key on team resource | Use team-scoped API key |\n| Cannot delete | Not Admin\u002FOwner role | Request role upgrade from team Owner |\n| SSO login fails | Wrong OIDC configuration | Verify Client ID, Secret, and Issuer URL |\n| Tenant data leak | Wrong API key for tenant | Validate tenant isolation in tests |\n\n## Resources\n\n- [Documenso Teams](https:\u002F\u002Fdocumenso.com\u002Ffeatures\u002Fteams)\n- [SSO Portal Documentation](https:\u002F\u002Fdocs.documenso.com\u002Fusers\u002Forganisations\u002Fsso)\n- [Enterprise Features](https:\u002F\u002Fdocumenso.com\u002Fblog\u002Fintroducing-self-hosted-signing-infrastructure-for-enterprise)\n- [OWASP Access Control](https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FAccess_Control_Cheat_Sheet.html)\n\n## Next Steps\n\nFor migration strategies, see `documenso-migration-deep-dive`.\n\n",{"name":5,"tags":49,"author":51,"license":15,"version":52,"description":53,"allowed-tools":54,"compatible-with":55},[50,25,24],"saas","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Configure Documenso enterprise role-based access control and team management.\nUse when implementing team permissions, configuring organizational roles,\nor setting up enterprise access controls.\nTrigger with phrases like \"documenso RBAC\", \"documenso teams\",\n\"documenso permissions\", \"documenso enterprise\", \"documenso roles\".\n","Read, Write, Edit","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fdocumenso-enterprise-rbac",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":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill documenso-enterprise-rbac",{"tool":71,"command":72},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill documenso-enterprise-rbac",{"tool":74,"command":75},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill documenso-enterprise-rbac","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fdocumenso-enterprise-rbac\u002FSKILL.md",true,[],[80,94,104,113,119,126],{"skillNo":81,"name":82,"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":83,"categories":84,"keywords":90,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[91,92,93],"model","model hierarchy","model hierarchy skill",{"skillNo":95,"name":96,"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":97,"categories":98,"keywords":100,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[99],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[101,102,103],"MCP","zoom","zoom mcp",{"skillNo":105,"name":106,"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":107,"categories":108,"keywords":109,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[110,111,112,102],"sdk","zoom apps sdk","apps",{"skillNo":114,"name":115,"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":116,"categories":117,"keywords":118,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[115],{"skillNo":120,"name":121,"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":122,"categories":123,"keywords":125,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[124],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[121],{"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":131,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[128]]