[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EX85RT99GNXFFD7DGV336F":3,"skill-same:01M6EX85RT99GNXFFD7DGV336F":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":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6EX85RT99GNXFFD7DGV336F","airtable-automation",null,"Automate Airtable tasks via Rube MCP (Composio): records, bases, tables, fields, views. Always search tools first for current schemas.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fairtable-automation\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36],"automation","airtable","airtable automation","MCP","tasks","search","Tools","first","automate","bases","composio","via","records","2026-11-10 10:12:30",false,"---\nname: airtable-automation\ndescription: \"Automate Airtable tasks via Rube MCP (Composio): records, bases, tables, fields, views. Always search tools first for current schemas.\"\nrequires:\n  mcp: [rube]\n---\n\n# Airtable Automation via Rube MCP\n\nAutomate Airtable operations through Composio's Airtable toolkit via Rube MCP.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Airtable connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `airtable`\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\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `airtable`\n3. If connection is not ACTIVE, follow the returned auth link to complete Airtable auth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Create and Manage Records\n\n**When to use**: User wants to create, read, update, or delete records\n\n**Tool sequence**:\n1. `AIRTABLE_LIST_BASES` - Discover available bases [Prerequisite]\n2. `AIRTABLE_GET_BASE_SCHEMA` - Inspect table structure [Prerequisite]\n3. `AIRTABLE_LIST_RECORDS` - List\u002Ffilter records [Optional]\n4. `AIRTABLE_CREATE_RECORD` \u002F `AIRTABLE_CREATE_RECORDS` - Create records [Optional]\n5. `AIRTABLE_UPDATE_RECORD` \u002F `AIRTABLE_UPDATE_MULTIPLE_RECORDS` - Update records [Optional]\n6. `AIRTABLE_DELETE_RECORD` \u002F `AIRTABLE_DELETE_MULTIPLE_RECORDS` - Delete records [Optional]\n\n**Key parameters**:\n- `baseId`: Base ID (starts with 'app', e.g., 'appXXXXXXXXXXXXXX')\n- `tableIdOrName`: Table ID (starts with 'tbl') or table name\n- `fields`: Object mapping field names to values\n- `recordId`: Record ID (starts with 'rec') for updates\u002Fdeletes\n- `filterByFormula`: Airtable formula for filtering\n- `typecast`: Set true for automatic type conversion\n\n**Pitfalls**:\n- pageSize capped at 100; uses offset pagination; changing filters between pages can skip\u002Fduplicate rows\n- CREATE_RECORDS hard limit of 10 records per request; chunk larger imports\n- Field names are CASE-SENSITIVE and must match schema exactly\n- 422 UNKNOWN_FIELD_NAME when field names are wrong; 403 for permission issues\n- INVALID_MULTIPLE_CHOICE_OPTIONS may require typecast=true\n\n### 2. Search and Filter Records\n\n**When to use**: User wants to find specific records using formulas\n\n**Tool sequence**:\n1. `AIRTABLE_GET_BASE_SCHEMA` - Verify field names and types [Prerequisite]\n2. `AIRTABLE_LIST_RECORDS` - Query with filterByFormula [Required]\n3. `AIRTABLE_GET_RECORD` - Get full record details [Optional]\n\n**Key parameters**:\n- `filterByFormula`: Airtable formula (e.g., `{Status}='Done'`)\n- `sort`: Array of sort objects\n- `fields`: Array of field names to return\n- `maxRecords`: Max total records across all pages\n- `offset`: Pagination cursor from previous response\n\n**Pitfalls**:\n- Field names in formulas must be wrapped in `{}` and match schema exactly\n- String values must be quoted: `{Status}='Active'` not `{Status}=Active`\n- 422 INVALID_FILTER_BY_FORMULA for bad syntax or non-existent fields\n- Airtable rate limit: ~5 requests\u002Fsecond per base; handle 429 with Retry-After\n\n### 3. Manage Fields and Schema\n\n**When to use**: User wants to create or modify table fields\n\n**Tool sequence**:\n1. `AIRTABLE_GET_BASE_SCHEMA` - Inspect current schema [Prerequisite]\n2. `AIRTABLE_CREATE_FIELD` - Create a new field [Optional]\n3. `AIRTABLE_UPDATE_FIELD` - Rename\u002Fdescribe a field [Optional]\n4. `AIRTABLE_UPDATE_TABLE` - Update table metadata [Optional]\n\n**Key parameters**:\n- `name`: Field name\n- `type`: Field type (singleLineText, number, singleSelect, etc.)\n- `options`: Type-specific options (choices for select, precision for number)\n- `description`: Field description\n\n**Pitfalls**:\n- UPDATE_FIELD only changes name\u002Fdescription, NOT type\u002Foptions; create a replacement field and migrate\n- Computed fields (formula, rollup, lookup) cannot be created via API\n- 422 when type options are missing or malformed\n\n### 4. Manage Comments\n\n**When to use**: User wants to view or add comments on records\n\n**Tool sequence**:\n1. `AIRTABLE_LIST_COMMENTS` - List comments on a record [Required]\n\n**Key parameters**:\n- `baseId`: Base ID\n- `tableIdOrName`: Table identifier\n- `recordId`: Record ID (17 chars, starts with 'rec')\n- `pageSize`: Comments per page (max 100)\n\n**Pitfalls**:\n- Record IDs must be exactly 17 characters starting with 'rec'\n\n## Common Patterns\n\n### Airtable Formula Syntax\n\n**Comparison**:\n- `{Status}='Done'` - Equals\n- `{Priority}>1` - Greater than\n- `{Name}!=''` - Not empty\n\n**Functions**:\n- `AND({A}='x', {B}='y')` - Both conditions\n- `OR({A}='x', {A}='y')` - Either condition\n- `FIND('test', {Name})>0` - Contains text\n- `IS_BEFORE({Due Date}, TODAY())` - Date comparison\n\n**Escape rules**:\n- Single quotes in values: double them (`{Name}='John''s Company'`)\n\n### Pagination\n\n- Set `pageSize` (max 100)\n- Check response for `offset` string\n- Pass `offset` to next request unchanged\n- Keep filters\u002Fsorts\u002Fview stable between pages\n\n## Known Pitfalls\n\n**ID Formats**:\n- Base IDs: `appXXXXXXXXXXXXXX` (17 chars)\n- Table IDs: `tblXXXXXXXXXXXXXX` (17 chars)\n- Record IDs: `recXXXXXXXXXXXXXX` (17 chars)\n- Field IDs: `fldXXXXXXXXXXXXXX` (17 chars)\n\n**Batch Limits**:\n- CREATE_RECORDS: max 10 per request\n- UPDATE_MULTIPLE_RECORDS: max 10 per request\n- DELETE_MULTIPLE_RECORDS: max 10 per request\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| List bases | AIRTABLE_LIST_BASES | (none) |\n| Get schema | AIRTABLE_GET_BASE_SCHEMA | baseId |\n| List records | AIRTABLE_LIST_RECORDS | baseId, tableIdOrName |\n| Get record | AIRTABLE_GET_RECORD | baseId, tableIdOrName, recordId |\n| Create record | AIRTABLE_CREATE_RECORD | baseId, tableIdOrName, fields |\n| Create records | AIRTABLE_CREATE_RECORDS | baseId, tableIdOrName, records |\n| Update record | AIRTABLE_UPDATE_RECORD | baseId, tableIdOrName, recordId, fields |\n| Update records | AIRTABLE_UPDATE_MULTIPLE_RECORDS | baseId, tableIdOrName, records |\n| Delete record | AIRTABLE_DELETE_RECORD | baseId, tableIdOrName, recordId |\n| Create field | AIRTABLE_CREATE_FIELD | baseId, tableIdOrName, name, type |\n| Update field | AIRTABLE_UPDATE_FIELD | baseId, tableIdOrName, fieldId |\n| Update table | AIRTABLE_UPDATE_TABLE | baseId, tableIdOrName, name |\n| List comments | AIRTABLE_LIST_COMMENTS | baseId, tableIdOrName, recordId |\n","# Airtable Automation via Rube MCP\n\nAutomate Airtable operations through Composio's Airtable toolkit via Rube MCP.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Airtable connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `airtable`\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\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `airtable`\n3. If connection is not ACTIVE, follow the returned auth link to complete Airtable auth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Create and Manage Records\n\n**When to use**: User wants to create, read, update, or delete records\n\n**Tool sequence**:\n1. `AIRTABLE_LIST_BASES` - Discover available bases [Prerequisite]\n2. `AIRTABLE_GET_BASE_SCHEMA` - Inspect table structure [Prerequisite]\n3. `AIRTABLE_LIST_RECORDS` - List\u002Ffilter records [Optional]\n4. `AIRTABLE_CREATE_RECORD` \u002F `AIRTABLE_CREATE_RECORDS` - Create records [Optional]\n5. `AIRTABLE_UPDATE_RECORD` \u002F `AIRTABLE_UPDATE_MULTIPLE_RECORDS` - Update records [Optional]\n6. `AIRTABLE_DELETE_RECORD` \u002F `AIRTABLE_DELETE_MULTIPLE_RECORDS` - Delete records [Optional]\n\n**Key parameters**:\n- `baseId`: Base ID (starts with 'app', e.g., 'appXXXXXXXXXXXXXX')\n- `tableIdOrName`: Table ID (starts with 'tbl') or table name\n- `fields`: Object mapping field names to values\n- `recordId`: Record ID (starts with 'rec') for updates\u002Fdeletes\n- `filterByFormula`: Airtable formula for filtering\n- `typecast`: Set true for automatic type conversion\n\n**Pitfalls**:\n- pageSize capped at 100; uses offset pagination; changing filters between pages can skip\u002Fduplicate rows\n- CREATE_RECORDS hard limit of 10 records per request; chunk larger imports\n- Field names are CASE-SENSITIVE and must match schema exactly\n- 422 UNKNOWN_FIELD_NAME when field names are wrong; 403 for permission issues\n- INVALID_MULTIPLE_CHOICE_OPTIONS may require typecast=true\n\n### 2. Search and Filter Records\n\n**When to use**: User wants to find specific records using formulas\n\n**Tool sequence**:\n1. `AIRTABLE_GET_BASE_SCHEMA` - Verify field names and types [Prerequisite]\n2. `AIRTABLE_LIST_RECORDS` - Query with filterByFormula [Required]\n3. `AIRTABLE_GET_RECORD` - Get full record details [Optional]\n\n**Key parameters**:\n- `filterByFormula`: Airtable formula (e.g., `{Status}='Done'`)\n- `sort`: Array of sort objects\n- `fields`: Array of field names to return\n- `maxRecords`: Max total records across all pages\n- `offset`: Pagination cursor from previous response\n\n**Pitfalls**:\n- Field names in formulas must be wrapped in `{}` and match schema exactly\n- String values must be quoted: `{Status}='Active'` not `{Status}=Active`\n- 422 INVALID_FILTER_BY_FORMULA for bad syntax or non-existent fields\n- Airtable rate limit: ~5 requests\u002Fsecond per base; handle 429 with Retry-After\n\n### 3. Manage Fields and Schema\n\n**When to use**: User wants to create or modify table fields\n\n**Tool sequence**:\n1. `AIRTABLE_GET_BASE_SCHEMA` - Inspect current schema [Prerequisite]\n2. `AIRTABLE_CREATE_FIELD` - Create a new field [Optional]\n3. `AIRTABLE_UPDATE_FIELD` - Rename\u002Fdescribe a field [Optional]\n4. `AIRTABLE_UPDATE_TABLE` - Update table metadata [Optional]\n\n**Key parameters**:\n- `name`: Field name\n- `type`: Field type (singleLineText, number, singleSelect, etc.)\n- `options`: Type-specific options (choices for select, precision for number)\n- `description`: Field description\n\n**Pitfalls**:\n- UPDATE_FIELD only changes name\u002Fdescription, NOT type\u002Foptions; create a replacement field and migrate\n- Computed fields (formula, rollup, lookup) cannot be created via API\n- 422 when type options are missing or malformed\n\n### 4. Manage Comments\n\n**When to use**: User wants to view or add comments on records\n\n**Tool sequence**:\n1. `AIRTABLE_LIST_COMMENTS` - List comments on a record [Required]\n\n**Key parameters**:\n- `baseId`: Base ID\n- `tableIdOrName`: Table identifier\n- `recordId`: Record ID (17 chars, starts with 'rec')\n- `pageSize`: Comments per page (max 100)\n\n**Pitfalls**:\n- Record IDs must be exactly 17 characters starting with 'rec'\n\n## Common Patterns\n\n### Airtable Formula Syntax\n\n**Comparison**:\n- `{Status}='Done'` - Equals\n- `{Priority}>1` - Greater than\n- `{Name}!=''` - Not empty\n\n**Functions**:\n- `AND({A}='x', {B}='y')` - Both conditions\n- `OR({A}='x', {A}='y')` - Either condition\n- `FIND('test', {Name})>0` - Contains text\n- `IS_BEFORE({Due Date}, TODAY())` - Date comparison\n\n**Escape rules**:\n- Single quotes in values: double them (`{Name}='John''s Company'`)\n\n### Pagination\n\n- Set `pageSize` (max 100)\n- Check response for `offset` string\n- Pass `offset` to next request unchanged\n- Keep filters\u002Fsorts\u002Fview stable between pages\n\n## Known Pitfalls\n\n**ID Formats**:\n- Base IDs: `appXXXXXXXXXXXXXX` (17 chars)\n- Table IDs: `tblXXXXXXXXXXXXXX` (17 chars)\n- Record IDs: `recXXXXXXXXXXXXXX` (17 chars)\n- Field IDs: `fldXXXXXXXXXXXXXX` (17 chars)\n\n**Batch Limits**:\n- CREATE_RECORDS: max 10 per request\n- UPDATE_MULTIPLE_RECORDS: max 10 per request\n- DELETE_MULTIPLE_RECORDS: max 10 per request\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| List bases | AIRTABLE_LIST_BASES | (none) |\n| Get schema | AIRTABLE_GET_BASE_SCHEMA | baseId |\n| List records | AIRTABLE_LIST_RECORDS | baseId, tableIdOrName |\n| Get record | AIRTABLE_GET_RECORD | baseId, tableIdOrName, recordId |\n| Create record | AIRTABLE_CREATE_RECORD | baseId, tableIdOrName, fields |\n| Create records | AIRTABLE_CREATE_RECORDS | baseId, tableIdOrName, records |\n| Update record | AIRTABLE_UPDATE_RECORD | baseId, tableIdOrName, recordId, fields |\n| Update records | AIRTABLE_UPDATE_MULTIPLE_RECORDS | baseId, tableIdOrName, records |\n| Delete record | AIRTABLE_DELETE_RECORD | baseId, tableIdOrName, recordId |\n| Create field | AIRTABLE_CREATE_FIELD | baseId, tableIdOrName, name, type |\n| Update field | AIRTABLE_UPDATE_FIELD | baseId, tableIdOrName, fieldId |\n| Update table | AIRTABLE_UPDATE_TABLE | baseId, tableIdOrName, name |\n| List comments | AIRTABLE_LIST_COMMENTS | baseId, tableIdOrName, recordId |\n",{"name":5,"requires":42,"description":7},{"mcp":43},[44],"rube","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fairtable-automation",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":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill airtable-automation",{"tool":60,"command":61},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill airtable-automation",{"tool":63,"command":64},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill airtable-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fairtable-automation\u002FSKILL.md",true,[68],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"skill-report.json","REFERENCE","参考文档",9062,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fairtable-automation\u002Fskill-report.json",[75,85,94,103,109,116],{"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":81,"publishedAt":37},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[80],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[82,83,84],"model","model hierarchy","model hierarchy skill",{"skillNo":86,"name":87,"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":88,"categories":89,"keywords":91,"publishedAt":37},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[90],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[27,92,93],"zoom","zoom mcp",{"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":99,"publishedAt":37},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[100,101,102,92],"sdk","zoom apps sdk","apps",{"skillNo":104,"name":105,"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":106,"categories":107,"keywords":108,"publishedAt":37},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[105],{"skillNo":110,"name":111,"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":112,"categories":113,"keywords":115,"publishedAt":37},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[114],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[111],{"skillNo":117,"name":118,"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":119,"categories":120,"keywords":121,"publishedAt":37},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[118]]