[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FAC2XVRYYDJMY43GZ4NBJM":3,"skill-same:01M6FAC2XVRYYDJMY43GZ4NBJM":85},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":62,"commitSha":63,"skillDirectory":64,"forksCount":65,"repositoryHtmlUrl":66,"repositoryHomepageUrl":67,"ownerHtmlUrl":68,"ownerBlogUrl":6,"ownerDescription":69,"updatedAt":70,"install":71,"resources":84},"01M6FAC2XVRYYDJMY43GZ4NBJM","exa-local-dev-loop",null,"Configure Exa local development with hot reload, testing, and mock responses.\nUse when setting up a development environment, writing tests against Exa,\nor establishing a fast iteration cycle.\nTrigger with phrases like \"exa dev setup\", \"exa local development\",\n\"exa test setup\", \"develop with exa\", \"mock exa\".","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\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fexa-local-dev-loop\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"exa local dev loop","local dev","dev","local","loop","exa","write","io","iteration","cycle","test setup","up","edit","testing","read","configure","Bash","code","dev setup","writing","2026-11-10 10:12:30",false,"---\nname: exa-local-dev-loop\ndescription: |\n  Configure Exa local development with hot reload, testing, and mock responses.\n  Use when setting up a development environment, writing tests against Exa,\n  or establishing a fast iteration cycle.\n  Trigger with phrases like \"exa dev setup\", \"exa local development\",\n  \"exa test setup\", \"develop with exa\", \"mock exa\".\nallowed-tools: Read, Write, Edit, Bash(npm:*), Bash(pnpm:*), Bash(npx:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, exa, testing, development]\n\n---\n# Exa Local Dev Loop\n\n## Overview\nSet up a fast, reproducible local development workflow for Exa integrations. Covers project structure, mock responses for unit tests, integration test patterns, and hot-reload configuration.\n\n## Prerequisites\n- `exa-js` installed and `EXA_API_KEY` configured\n- Node.js 18+ with npm\u002Fpnpm\n- `vitest` for testing (or `jest`)\n\n## Instructions\n\n### Step 1: Project Structure\n```\nmy-exa-project\u002F\n├── src\u002F\n│   ├── exa\u002F\n│   │   ├── client.ts       # Singleton Exa client\n│   │   ├── search.ts       # Search wrappers\n│   │   └── types.ts        # Typed interfaces\n│   └── index.ts\n├── tests\u002F\n│   ├── exa.unit.test.ts    # Mock-based unit tests\n│   └── exa.integration.test.ts  # Real API tests (needs key)\n├── .env.local              # Local secrets (git-ignored)\n├── .env.example            # Template for team\n├── tsconfig.json\n├── vitest.config.ts\n└── package.json\n```\n\n### Step 2: Package Setup\n```json\n{\n  \"scripts\": {\n    \"dev\": \"tsx watch src\u002Findex.ts\",\n    \"test\": \"vitest\",\n    \"test:unit\": \"vitest --testPathPattern=unit\",\n    \"test:integration\": \"vitest --testPathPattern=integration\",\n    \"build\": \"tsc\"\n  },\n  \"dependencies\": {\n    \"exa-js\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"tsx\": \"^4.0.0\",\n    \"vitest\": \"^2.0.0\",\n    \"typescript\": \"^5.0.0\"\n  }\n}\n```\n\n### Step 3: Mock Exa for Unit Tests\n```typescript\n\u002F\u002F tests\u002Fexa.unit.test.ts\nimport { describe, it, expect, vi, beforeEach } from \"vitest\";\n\n\u002F\u002F Mock the exa-js module\nvi.mock(\"exa-js\", () => {\n  return {\n    default: vi.fn().mockImplementation(() => ({\n      search: vi.fn().mockResolvedValue({\n        results: [\n          { url: \"https:\u002F\u002Fexample.com\u002F1\", title: \"Test Result 1\", score: 0.95 },\n          { url: \"https:\u002F\u002Fexample.com\u002F2\", title: \"Test Result 2\", score: 0.87 },\n        ],\n      }),\n      searchAndContents: vi.fn().mockResolvedValue({\n        results: [\n          {\n            url: \"https:\u002F\u002Fexample.com\u002F1\",\n            title: \"Test Result 1\",\n            score: 0.95,\n            text: \"This is the full text content of the page.\",\n            highlights: [\"Key excerpt from the page\"],\n            summary: \"A summary of the page content.\",\n          },\n        ],\n      }),\n      findSimilar: vi.fn().mockResolvedValue({\n        results: [\n          { url: \"https:\u002F\u002Fsimilar.com\u002F1\", title: \"Similar Page\", score: 0.82 },\n        ],\n      }),\n      getContents: vi.fn().mockResolvedValue({\n        results: [\n          { url: \"https:\u002F\u002Fexample.com\u002F1\", title: \"Page\", text: \"Content\" },\n        ],\n      }),\n    })),\n  };\n});\n\nimport Exa from \"exa-js\";\n\ndescribe(\"Exa Search\", () => {\n  let exa: any;\n\n  beforeEach(() => {\n    exa = new Exa(\"test-key\");\n  });\n\n  it(\"should return search results\", async () => {\n    const result = await exa.search(\"test query\", { numResults: 5 });\n    expect(result.results).toHaveLength(2);\n    expect(result.results[0].score).toBeGreaterThan(0.9);\n  });\n\n  it(\"should return content with searchAndContents\", async () => {\n    const result = await exa.searchAndContents(\"test\", { text: true });\n    expect(result.results[0].text).toBeDefined();\n    expect(result.results[0].highlights).toHaveLength(1);\n  });\n});\n```\n\n### Step 4: Integration Tests (Real API)\n```typescript\n\u002F\u002F tests\u002Fexa.integration.test.ts\nimport { describe, it, expect } from \"vitest\";\nimport Exa from \"exa-js\";\n\n\u002F\u002F Skip if no API key available (CI without secrets)\nconst describeWithKey = process.env.EXA_API_KEY\n  ? describe\n  : describe.skip;\n\ndescribeWithKey(\"Exa Integration\", () => {\n  const exa = new Exa(process.env.EXA_API_KEY!);\n\n  it(\"should execute a basic search\", async () => {\n    const result = await exa.search(\"test connectivity\", { numResults: 1 });\n    expect(result.results.length).toBeGreaterThanOrEqual(1);\n    expect(result.results[0].url).toMatch(\u002F^https?:\\\u002F\\\u002F\u002F);\n  }, 10000); \u002F\u002F 10s timeout for API calls\n\n  it(\"should return text content\", async () => {\n    const result = await exa.searchAndContents(\"TypeScript tutorial\", {\n      numResults: 1,\n      text: { maxCharacters: 500 },\n    });\n    expect(result.results[0].text).toBeDefined();\n    expect(result.results[0].text!.length).toBeGreaterThan(0);\n  }, 15000);\n\n  it(\"should find similar pages\", async () => {\n    const result = await exa.findSimilar(\"https:\u002F\u002Fnodejs.org\", {\n      numResults: 3,\n    });\n    expect(result.results.length).toBeGreaterThanOrEqual(1);\n  }, 10000);\n});\n```\n\n### Step 5: Environment Configuration\n```bash\nset -euo pipefail\n# Create .env.example template (commit this)\ncat > .env.example \u003C\u003C 'EOF'\n# Exa API — get key at https:\u002F\u002Fdashboard.exa.ai\nEXA_API_KEY=\nEOF\n\n# Create local env (git-ignored)\ncp .env.example .env.local\necho \"EXA_API_KEY=your-key-here\" > .env.local\n```\n\n## Error Handling\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `Cannot find module 'exa-js'` | Not installed | Run `npm install exa-js` |\n| Test timeout | Slow API response | Increase vitest timeout to 15000ms |\n| Mock not applied | Import order issue | Ensure `vi.mock()` is before imports |\n| Integration test fails in CI | No API key secret | Add `EXA_API_KEY` to CI secrets or skip |\n\n## Examples\n\n### Vitest Config for Exa Projects\n```typescript\n\u002F\u002F vitest.config.ts\nimport { defineConfig } from \"vitest\u002Fconfig\";\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    environment: \"node\",\n    testTimeout: 15000,   \u002F\u002F Exa API calls can take a few seconds\n    setupFiles: [\"dotenv\u002Fconfig\"],\n  },\n});\n```\n\n## Resources\n- [Vitest Documentation](https:\u002F\u002Fvitest.dev\u002F)\n- [tsx Documentation](https:\u002F\u002Fgithub.com\u002Fprivatenumber\u002Ftsx)\n- [exa-js on npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fexa-js)\n\n## Next Steps\nSee `exa-sdk-patterns` for production-ready code patterns.\n\n","# Exa Local Dev Loop\n\n## Overview\nSet up a fast, reproducible local development workflow for Exa integrations. Covers project structure, mock responses for unit tests, integration test patterns, and hot-reload configuration.\n\n## Prerequisites\n- `exa-js` installed and `EXA_API_KEY` configured\n- Node.js 18+ with npm\u002Fpnpm\n- `vitest` for testing (or `jest`)\n\n## Instructions\n\n### Step 1: Project Structure\n```\nmy-exa-project\u002F\n├── src\u002F\n│   ├── exa\u002F\n│   │   ├── client.ts       # Singleton Exa client\n│   │   ├── search.ts       # Search wrappers\n│   │   └── types.ts        # Typed interfaces\n│   └── index.ts\n├── tests\u002F\n│   ├── exa.unit.test.ts    # Mock-based unit tests\n│   └── exa.integration.test.ts  # Real API tests (needs key)\n├── .env.local              # Local secrets (git-ignored)\n├── .env.example            # Template for team\n├── tsconfig.json\n├── vitest.config.ts\n└── package.json\n```\n\n### Step 2: Package Setup\n```json\n{\n  \"scripts\": {\n    \"dev\": \"tsx watch src\u002Findex.ts\",\n    \"test\": \"vitest\",\n    \"test:unit\": \"vitest --testPathPattern=unit\",\n    \"test:integration\": \"vitest --testPathPattern=integration\",\n    \"build\": \"tsc\"\n  },\n  \"dependencies\": {\n    \"exa-js\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"tsx\": \"^4.0.0\",\n    \"vitest\": \"^2.0.0\",\n    \"typescript\": \"^5.0.0\"\n  }\n}\n```\n\n### Step 3: Mock Exa for Unit Tests\n```typescript\n\u002F\u002F tests\u002Fexa.unit.test.ts\nimport { describe, it, expect, vi, beforeEach } from \"vitest\";\n\n\u002F\u002F Mock the exa-js module\nvi.mock(\"exa-js\", () => {\n  return {\n    default: vi.fn().mockImplementation(() => ({\n      search: vi.fn().mockResolvedValue({\n        results: [\n          { url: \"https:\u002F\u002Fexample.com\u002F1\", title: \"Test Result 1\", score: 0.95 },\n          { url: \"https:\u002F\u002Fexample.com\u002F2\", title: \"Test Result 2\", score: 0.87 },\n        ],\n      }),\n      searchAndContents: vi.fn().mockResolvedValue({\n        results: [\n          {\n            url: \"https:\u002F\u002Fexample.com\u002F1\",\n            title: \"Test Result 1\",\n            score: 0.95,\n            text: \"This is the full text content of the page.\",\n            highlights: [\"Key excerpt from the page\"],\n            summary: \"A summary of the page content.\",\n          },\n        ],\n      }),\n      findSimilar: vi.fn().mockResolvedValue({\n        results: [\n          { url: \"https:\u002F\u002Fsimilar.com\u002F1\", title: \"Similar Page\", score: 0.82 },\n        ],\n      }),\n      getContents: vi.fn().mockResolvedValue({\n        results: [\n          { url: \"https:\u002F\u002Fexample.com\u002F1\", title: \"Page\", text: \"Content\" },\n        ],\n      }),\n    })),\n  };\n});\n\nimport Exa from \"exa-js\";\n\ndescribe(\"Exa Search\", () => {\n  let exa: any;\n\n  beforeEach(() => {\n    exa = new Exa(\"test-key\");\n  });\n\n  it(\"should return search results\", async () => {\n    const result = await exa.search(\"test query\", { numResults: 5 });\n    expect(result.results).toHaveLength(2);\n    expect(result.results[0].score).toBeGreaterThan(0.9);\n  });\n\n  it(\"should return content with searchAndContents\", async () => {\n    const result = await exa.searchAndContents(\"test\", { text: true });\n    expect(result.results[0].text).toBeDefined();\n    expect(result.results[0].highlights).toHaveLength(1);\n  });\n});\n```\n\n### Step 4: Integration Tests (Real API)\n```typescript\n\u002F\u002F tests\u002Fexa.integration.test.ts\nimport { describe, it, expect } from \"vitest\";\nimport Exa from \"exa-js\";\n\n\u002F\u002F Skip if no API key available (CI without secrets)\nconst describeWithKey = process.env.EXA_API_KEY\n  ? describe\n  : describe.skip;\n\ndescribeWithKey(\"Exa Integration\", () => {\n  const exa = new Exa(process.env.EXA_API_KEY!);\n\n  it(\"should execute a basic search\", async () => {\n    const result = await exa.search(\"test connectivity\", { numResults: 1 });\n    expect(result.results.length).toBeGreaterThanOrEqual(1);\n    expect(result.results[0].url).toMatch(\u002F^https?:\\\u002F\\\u002F\u002F);\n  }, 10000); \u002F\u002F 10s timeout for API calls\n\n  it(\"should return text content\", async () => {\n    const result = await exa.searchAndContents(\"TypeScript tutorial\", {\n      numResults: 1,\n      text: { maxCharacters: 500 },\n    });\n    expect(result.results[0].text).toBeDefined();\n    expect(result.results[0].text!.length).toBeGreaterThan(0);\n  }, 15000);\n\n  it(\"should find similar pages\", async () => {\n    const result = await exa.findSimilar(\"https:\u002F\u002Fnodejs.org\", {\n      numResults: 3,\n    });\n    expect(result.results.length).toBeGreaterThanOrEqual(1);\n  }, 10000);\n});\n```\n\n### Step 5: Environment Configuration\n```bash\nset -euo pipefail\n# Create .env.example template (commit this)\ncat > .env.example \u003C\u003C 'EOF'\n# Exa API — get key at https:\u002F\u002Fdashboard.exa.ai\nEXA_API_KEY=\nEOF\n\n# Create local env (git-ignored)\ncp .env.example .env.local\necho \"EXA_API_KEY=your-key-here\" > .env.local\n```\n\n## Error Handling\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `Cannot find module 'exa-js'` | Not installed | Run `npm install exa-js` |\n| Test timeout | Slow API response | Increase vitest timeout to 15000ms |\n| Mock not applied | Import order issue | Ensure `vi.mock()` is before imports |\n| Integration test fails in CI | No API key secret | Add `EXA_API_KEY` to CI secrets or skip |\n\n## Examples\n\n### Vitest Config for Exa Projects\n```typescript\n\u002F\u002F vitest.config.ts\nimport { defineConfig } from \"vitest\u002Fconfig\";\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    environment: \"node\",\n    testTimeout: 15000,   \u002F\u002F Exa API calls can take a few seconds\n    setupFiles: [\"dotenv\u002Fconfig\"],\n  },\n});\n```\n\n## Resources\n- [Vitest Documentation](https:\u002F\u002Fvitest.dev\u002F)\n- [tsx Documentation](https:\u002F\u002Fgithub.com\u002Fprivatenumber\u002Ftsx)\n- [exa-js on npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fexa-js)\n\n## Next Steps\nSee `exa-sdk-patterns` for production-ready code patterns.\n\n",{"name":5,"tags":54,"author":57,"license":15,"version":58,"description":59,"allowed-tools":60,"compatible-with":61},[55,34,42,56],"saas","development","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Configure Exa local development with hot reload, testing, and mock responses.\nUse when setting up a development environment, writing tests against Exa,\nor establishing a fast iteration cycle.\nTrigger with phrases like \"exa dev setup\", \"exa local development\",\n\"exa test setup\", \"develop with exa\", \"mock exa\".\n","Read, Write, Edit, Bash(npm:*), Bash(pnpm:*), Bash(npx:*), Grep","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fexa-local-dev-loop",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":72,"prompt":82,"zipAvailable":83},[73,76,79],{"tool":74,"command":75},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill exa-local-dev-loop",{"tool":77,"command":78},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill exa-local-dev-loop",{"tool":80,"command":81},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill exa-local-dev-loop","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fexa-local-dev-loop\u002FSKILL.md",true,[],[86,98,108,117,123,130],{"skillNo":87,"name":88,"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":89,"categories":90,"keywords":94,"publishedAt":49},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[91],{"categoryNo":92,"categoryName":93,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[95,96,97],"model","model hierarchy","model hierarchy skill",{"skillNo":99,"name":100,"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":101,"categories":102,"keywords":104,"publishedAt":49},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[103],{"categoryNo":92,"categoryName":93,"taxonomyType":21,"taxonomyTypeDesc":22},[105,106,107],"MCP","zoom","zoom mcp",{"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":49},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[114,115,116,106],"sdk","zoom apps sdk","apps",{"skillNo":118,"name":119,"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":120,"categories":121,"keywords":122,"publishedAt":49},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[119],{"skillNo":124,"name":125,"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":126,"categories":127,"keywords":129,"publishedAt":49},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[128],{"categoryNo":92,"categoryName":93,"taxonomyType":21,"taxonomyTypeDesc":22},[125],{"skillNo":131,"name":132,"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":133,"categories":134,"keywords":135,"publishedAt":49},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[132]]