[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M78XG9C64RHSE708RPG7FAC6":3,"skill-same:01M78XG9C64RHSE708RPG7FAC6":58},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":41,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M78XG9C64RHSE708RPG7FAC6","assemblyai-rate-limits",null,"Implement AssemblyAI rate limiting, backoff, and queue-based throttling.\nUse when handling rate limit errors, implementing retry logic,\nor managing concurrent transcription throughput.\nTrigger with phrases like \"assemblyai rate limit\", \"assemblyai throttling\",\n\"assemblyai 429\", \"assemblyai retry\", \"assemblyai backoff\".","jukeyman\u002Fjukeyman-skills","jukeyman","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142960420?v=4","01M78FR4Y3DHMMCBCC0GXXNB3F","RICK JEFFERSON","01M78FR4Z8RVQRAD31Y5J7V6EB",1,"MIT","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsaas-packs--assemblyai-pack--assemblyai-rate-limits\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: assemblyai-rate-limits\ndescription: |\n  Implement AssemblyAI rate limiting, backoff, and queue-based throttling.\n  Use when handling rate limit errors, implementing retry logic,\n  or managing concurrent transcription throughput.\n  Trigger with phrases like \"assemblyai rate limit\", \"assemblyai throttling\",\n  \"assemblyai 429\", \"assemblyai retry\", \"assemblyai backoff\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, ai, speech-to-text, assemblyai, transcription]\ncompatible-with: claude-code\n---\n\n# AssemblyAI Rate Limits\n\n## Overview\nHandle AssemblyAI rate limits with exponential backoff, queue-based throttling, and concurrency management. AssemblyAI auto-scales limits for paid users.\n\n## Prerequisites\n- `assemblyai` package installed\n- Understanding of async\u002Fawait patterns\n\n## Rate Limit Tiers (Actual)\n\n### Async Transcription API\n| Endpoint | Free | Pay-as-you-go |\n|----------|------|---------------|\n| `POST \u002Fv2\u002Ftranscript` | 5\u002Fmin | Scales with usage |\n| `GET \u002Fv2\u002Ftranscript\u002F:id` | No hard limit | No hard limit |\n| `POST \u002Fv2\u002Fupload` | 5\u002Fmin | Scales with usage |\n\n### Streaming (WebSocket)\n| Metric | Free | Pay-as-you-go |\n|--------|------|---------------|\n| New streams\u002Fmin | 5 | 100 (auto-scales) |\n| Concurrent streams | ~5 | Unlimited (auto-scales 10% every 60s at 70% usage) |\n\n### LeMUR\n| Metric | Free | Paid |\n|--------|------|------|\n| Requests\u002Fmin | Limited | Scales with usage |\n| Max audio input | 100 hours per request | 100 hours per request |\n\n**Note:** AssemblyAI auto-scales paid limits. At 70%+ utilization, the new session rate limit increases by 10% every 60 seconds with no ceiling cap.\n\n## Instructions\n\n### Step 1: Exponential Backoff with Jitter\n\n```typescript\nimport { AssemblyAI, type Transcript } from 'assemblyai';\n\nconst client = new AssemblyAI({\n  apiKey: process.env.ASSEMBLYAI_API_KEY!,\n});\n\nasync function transcribeWithBackoff(\n  audioUrl: string,\n  options: Record\u003Cstring, any> = {},\n  config = { maxRetries: 5, baseDelayMs: 1000, maxDelayMs: 30000 }\n): Promise\u003CTranscript> {\n  for (let attempt = 0; attempt \u003C= config.maxRetries; attempt++) {\n    try {\n      return await client.transcripts.transcribe({\n        audio: audioUrl,\n        ...options,\n      });\n    } catch (err: any) {\n      if (attempt === config.maxRetries) throw err;\n\n      const status = err.status ?? err.statusCode;\n      \u002F\u002F Only retry on 429 (rate limit) and 5xx (server errors)\n      if (status && status !== 429 && (status \u003C 500 || status >= 600)) throw err;\n\n      const exponentialDelay = config.baseDelayMs * Math.pow(2, attempt);\n      const jitter = Math.random() * config.baseDelayMs;\n      const delay = Math.min(exponentialDelay + jitter, config.maxDelayMs);\n\n      console.warn(`[${attempt + 1}\u002F${config.maxRetries}] Retrying in ${delay.toFixed(0)}ms...`);\n      await new Promise(r => setTimeout(r, delay));\n    }\n  }\n  throw new Error('Unreachable');\n}\n```\n\n### Step 2: Queue-Based Concurrency Control\n\n```typescript\nimport PQueue from 'p-queue';\n\n\u002F\u002F Limit to N concurrent transcription jobs\nconst transcriptionQueue = new PQueue({\n  concurrency: 5,           \u002F\u002F Max 5 concurrent jobs\n  interval: 60_000,         \u002F\u002F Per minute window\n  intervalCap: 50,           \u002F\u002F Max 50 new jobs per minute\n});\n\nasync function queuedTranscribe(audioUrl: string): Promise\u003CTranscript> {\n  return transcriptionQueue.add(() =>\n    transcribeWithBackoff(audioUrl)\n  );\n}\n\n\u002F\u002F Process a batch of files\nconst audioUrls = [\n  'https:\u002F\u002Fexample.com\u002Faudio1.mp3',\n  'https:\u002F\u002Fexample.com\u002Faudio2.mp3',\n  'https:\u002F\u002Fexample.com\u002Faudio3.mp3',\n];\n\nconst results = await Promise.all(\n  audioUrls.map(url => queuedTranscribe(url))\n);\n\nconsole.log(`Completed ${results.length} transcriptions`);\nconsole.log(`Queue size: ${transcriptionQueue.size}, pending: ${transcriptionQueue.pending}`);\n```\n\n### Step 3: Batch Processing with Progress\n\n```typescript\nasync function batchTranscribe(\n  audioUrls: string[],\n  onProgress?: (completed: number, total: number) => void\n): Promise\u003CTranscript[]> {\n  const queue = new PQueue({ concurrency: 5 });\n  const results: Transcript[] = [];\n  let completed = 0;\n\n  const promises = audioUrls.map(url =>\n    queue.add(async () => {\n      const transcript = await transcribeWithBackoff(url);\n      completed++;\n      onProgress?.(completed, audioUrls.length);\n      return transcript;\n    })\n  );\n\n  return Promise.all(promises);\n}\n\n\u002F\u002F Usage\nawait batchTranscribe(\n  urls,\n  (done, total) => console.log(`Progress: ${done}\u002F${total}`)\n);\n```\n\n### Step 4: Streaming Rate Limit Handling\n\n```typescript\nasync function connectStreamingWithRetry(maxRetries = 3) {\n  for (let attempt = 0; attempt \u003C= maxRetries; attempt++) {\n    try {\n      const transcriber = client.streaming.createService({\n        speech_model: 'nova-3',\n        sample_rate: 16000,\n      });\n\n      transcriber.on('error', (error) => {\n        console.error('Streaming error:', error);\n      });\n\n      await transcriber.connect();\n      return transcriber;\n    } catch (err: any) {\n      if (attempt === maxRetries) throw err;\n\n      \u002F\u002F WebSocket code 4008 = session limit\n      const delay = Math.pow(2, attempt) * 2000;\n      console.warn(`Stream connect failed. Retrying in ${delay}ms...`);\n      await new Promise(r => setTimeout(r, delay));\n    }\n  }\n}\n```\n\n## Output\n- Automatic retry with exponential backoff and jitter\n- Queue-based concurrency control with p-queue\n- Batch transcription with progress reporting\n- Streaming reconnection logic\n\n## Error Handling\n| Scenario | Status | Strategy |\n|----------|--------|----------|\n| Rate limited (async) | 429 | Exponential backoff, honor `Retry-After` header |\n| Server error | 500-503 | Retry with backoff |\n| Session limit (streaming) | WS 4008 | Wait and reconnect |\n| Auth error | 401 | Do not retry, fix credentials |\n| Invalid input | 400 | Do not retry, fix request |\n\n## Resources\n- [AssemblyAI Rate Limits](https:\u002F\u002Fwww.assemblyai.com\u002Fdocs\u002Fdeployment\u002Faccount-management)\n- [p-queue Documentation](https:\u002F\u002Fgithub.com\u002Fsindresorhus\u002Fp-queue)\n- [AssemblyAI Streaming Limits](https:\u002F\u002Fwww.assemblyai.com\u002Fdocs\u002Fstreaming)\n\n## Next Steps\nFor security configuration, see `assemblyai-security-basics`.\n","# AssemblyAI Rate Limits\n\n## Overview\nHandle AssemblyAI rate limits with exponential backoff, queue-based throttling, and concurrency management. AssemblyAI auto-scales limits for paid users.\n\n## Prerequisites\n- `assemblyai` package installed\n- Understanding of async\u002Fawait patterns\n\n## Rate Limit Tiers (Actual)\n\n### Async Transcription API\n| Endpoint | Free | Pay-as-you-go |\n|----------|------|---------------|\n| `POST \u002Fv2\u002Ftranscript` | 5\u002Fmin | Scales with usage |\n| `GET \u002Fv2\u002Ftranscript\u002F:id` | No hard limit | No hard limit |\n| `POST \u002Fv2\u002Fupload` | 5\u002Fmin | Scales with usage |\n\n### Streaming (WebSocket)\n| Metric | Free | Pay-as-you-go |\n|--------|------|---------------|\n| New streams\u002Fmin | 5 | 100 (auto-scales) |\n| Concurrent streams | ~5 | Unlimited (auto-scales 10% every 60s at 70% usage) |\n\n### LeMUR\n| Metric | Free | Paid |\n|--------|------|------|\n| Requests\u002Fmin | Limited | Scales with usage |\n| Max audio input | 100 hours per request | 100 hours per request |\n\n**Note:** AssemblyAI auto-scales paid limits. At 70%+ utilization, the new session rate limit increases by 10% every 60 seconds with no ceiling cap.\n\n## Instructions\n\n### Step 1: Exponential Backoff with Jitter\n\n```typescript\nimport { AssemblyAI, type Transcript } from 'assemblyai';\n\nconst client = new AssemblyAI({\n  apiKey: process.env.ASSEMBLYAI_API_KEY!,\n});\n\nasync function transcribeWithBackoff(\n  audioUrl: string,\n  options: Record\u003Cstring, any> = {},\n  config = { maxRetries: 5, baseDelayMs: 1000, maxDelayMs: 30000 }\n): Promise\u003CTranscript> {\n  for (let attempt = 0; attempt \u003C= config.maxRetries; attempt++) {\n    try {\n      return await client.transcripts.transcribe({\n        audio: audioUrl,\n        ...options,\n      });\n    } catch (err: any) {\n      if (attempt === config.maxRetries) throw err;\n\n      const status = err.status ?? err.statusCode;\n      \u002F\u002F Only retry on 429 (rate limit) and 5xx (server errors)\n      if (status && status !== 429 && (status \u003C 500 || status >= 600)) throw err;\n\n      const exponentialDelay = config.baseDelayMs * Math.pow(2, attempt);\n      const jitter = Math.random() * config.baseDelayMs;\n      const delay = Math.min(exponentialDelay + jitter, config.maxDelayMs);\n\n      console.warn(`[${attempt + 1}\u002F${config.maxRetries}] Retrying in ${delay.toFixed(0)}ms...`);\n      await new Promise(r => setTimeout(r, delay));\n    }\n  }\n  throw new Error('Unreachable');\n}\n```\n\n### Step 2: Queue-Based Concurrency Control\n\n```typescript\nimport PQueue from 'p-queue';\n\n\u002F\u002F Limit to N concurrent transcription jobs\nconst transcriptionQueue = new PQueue({\n  concurrency: 5,           \u002F\u002F Max 5 concurrent jobs\n  interval: 60_000,         \u002F\u002F Per minute window\n  intervalCap: 50,           \u002F\u002F Max 50 new jobs per minute\n});\n\nasync function queuedTranscribe(audioUrl: string): Promise\u003CTranscript> {\n  return transcriptionQueue.add(() =>\n    transcribeWithBackoff(audioUrl)\n  );\n}\n\n\u002F\u002F Process a batch of files\nconst audioUrls = [\n  'https:\u002F\u002Fexample.com\u002Faudio1.mp3',\n  'https:\u002F\u002Fexample.com\u002Faudio2.mp3',\n  'https:\u002F\u002Fexample.com\u002Faudio3.mp3',\n];\n\nconst results = await Promise.all(\n  audioUrls.map(url => queuedTranscribe(url))\n);\n\nconsole.log(`Completed ${results.length} transcriptions`);\nconsole.log(`Queue size: ${transcriptionQueue.size}, pending: ${transcriptionQueue.pending}`);\n```\n\n### Step 3: Batch Processing with Progress\n\n```typescript\nasync function batchTranscribe(\n  audioUrls: string[],\n  onProgress?: (completed: number, total: number) => void\n): Promise\u003CTranscript[]> {\n  const queue = new PQueue({ concurrency: 5 });\n  const results: Transcript[] = [];\n  let completed = 0;\n\n  const promises = audioUrls.map(url =>\n    queue.add(async () => {\n      const transcript = await transcribeWithBackoff(url);\n      completed++;\n      onProgress?.(completed, audioUrls.length);\n      return transcript;\n    })\n  );\n\n  return Promise.all(promises);\n}\n\n\u002F\u002F Usage\nawait batchTranscribe(\n  urls,\n  (done, total) => console.log(`Progress: ${done}\u002F${total}`)\n);\n```\n\n### Step 4: Streaming Rate Limit Handling\n\n```typescript\nasync function connectStreamingWithRetry(maxRetries = 3) {\n  for (let attempt = 0; attempt \u003C= maxRetries; attempt++) {\n    try {\n      const transcriber = client.streaming.createService({\n        speech_model: 'nova-3',\n        sample_rate: 16000,\n      });\n\n      transcriber.on('error', (error) => {\n        console.error('Streaming error:', error);\n      });\n\n      await transcriber.connect();\n      return transcriber;\n    } catch (err: any) {\n      if (attempt === maxRetries) throw err;\n\n      \u002F\u002F WebSocket code 4008 = session limit\n      const delay = Math.pow(2, attempt) * 2000;\n      console.warn(`Stream connect failed. Retrying in ${delay}ms...`);\n      await new Promise(r => setTimeout(r, delay));\n    }\n  }\n}\n```\n\n## Output\n- Automatic retry with exponential backoff and jitter\n- Queue-based concurrency control with p-queue\n- Batch transcription with progress reporting\n- Streaming reconnection logic\n\n## Error Handling\n| Scenario | Status | Strategy |\n|----------|--------|----------|\n| Rate limited (async) | 429 | Exponential backoff, honor `Retry-After` header |\n| Server error | 500-503 | Retry with backoff |\n| Session limit (streaming) | WS 4008 | Wait and reconnect |\n| Auth error | 401 | Do not retry, fix credentials |\n| Invalid input | 400 | Do not retry, fix request |\n\n## Resources\n- [AssemblyAI Rate Limits](https:\u002F\u002Fwww.assemblyai.com\u002Fdocs\u002Fdeployment\u002Faccount-management)\n- [p-queue Documentation](https:\u002F\u002Fgithub.com\u002Fsindresorhus\u002Fp-queue)\n- [AssemblyAI Streaming Limits](https:\u002F\u002Fwww.assemblyai.com\u002Fdocs\u002Fstreaming)\n\n## Next Steps\nFor security configuration, see `assemblyai-security-basics`.\n",{"name":5,"tags":24,"author":30,"license":15,"version":31,"description":32,"allowed-tools":33,"compatible-with":34},[25,26,27,28,29],"saas","ai","speech-to-text","assemblyai","transcription","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Implement AssemblyAI rate limiting, backoff, and queue-based throttling.\nUse when handling rate limit errors, implementing retry logic,\nor managing concurrent transcription throughput.\nTrigger with phrases like \"assemblyai rate limit\", \"assemblyai throttling\",\n\"assemblyai 429\", \"assemblyai retry\", \"assemblyai backoff\".\n","Read, Write, Edit","claude-code","main","99825ad3f3bcc6597ddcc7294a14e6e922f2b67b","skills\u002Fsaas-packs--assemblyai-pack--assemblyai-rate-limits",0,"https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills","https:\u002F\u002Fgithub.com\u002Fjukeyman","https:\u002F\u002FRJBUSINESSSOLUTIONS.ORG","Credit and Finance Expert | Developer\r\n\r\nI'm Rick Jefferson, a seasoned credit and finance expert with over a decade of experience in financial literacy,","2026-07-13 07:03:29",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add jukeyman\u002Fjukeyman-skills --skill assemblyai-rate-limits",{"tool":50,"command":51},"bunx","bunx skills add jukeyman\u002Fjukeyman-skills --skill assemblyai-rate-limits",{"tool":53,"command":54},"pnpm","pnpm dlx skills add jukeyman\u002Fjukeyman-skills --skill assemblyai-rate-limits","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsaas-packs--assemblyai-pack--assemblyai-rate-limits\u002FSKILL.md",true,[],[59,66,73,80,87,95],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M79ANS2SM329NEP5ZCX106RR","zustand-store-creator","Create zustand store creator operations. Auto-activating skill for Frontend Development.\nTriggers on: zustand store creator, zustand store creator\nPart of the Frontend Development skill category. Use when working with zustand store creator functionality. Trigger with phrases like \"zustand store creator\", \"zustand creator\", \"zustand\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzustand-store-creator\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M79AMZKP4YDEZ7EHG1Y7PP74","zero-trust-config-helper","Configure with zero trust config helper operations. Auto-activating skill for Security Advanced.\nTriggers on: zero trust config helper, zero trust config helper\nPart of the Security Advanced skill category. Use when configuring systems or services. Trigger with phrases like \"zero trust config helper\", \"zero helper\", \"zero\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzero-trust-config-helper\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M79AMJSBCEJQNBTYNAHYN5HM","zapier-integration-helper","Assist with zapier integration helper operations. Auto-activating skill for Business Automation.\nTriggers on: zapier integration helper, zapier integration helper\nPart of the Business Automation skill category. Use when working with APIs or building integrations. Trigger with phrases like \"zapier integration helper\", \"zapier helper\", \"zapier\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzapier-integration-helper\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M79AHJZGVMARS13VFQYRR1MP","yaml-config-validator","Validate yaml config validator operations. Auto-activating skill for DevOps Basics.\nTriggers on: yaml config validator, yaml config validator\nPart of the DevOps Basics skill category. Use when configuring systems or services. Trigger with phrases like \"yaml config validator\", \"yaml validator\", \"yaml\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyaml-config-validator\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":91,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":19},"01M79AHGDZRN0020RDQSQDPAM8","xvary-stock-research","Thesis-driven equity analysis from public SEC EDGAR and market data; \u002Fanalyze, \u002Fscore, \u002Fcompare workflows with bundled Python tools (Claude Code, Cursor, Codex).","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fxvary-stock-research\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fxvary-stock-research\u002FSKILL.md",[],[],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":19},"01M79AHCYJ9FV9RMHQ24HDRN33","xss-vulnerability-scanner","Scan xss vulnerability scanner operations. Auto-activating skill for Security Fundamentals.\nTriggers on: xss vulnerability scanner, xss vulnerability scanner\nPart of the Security Fundamentals skill category. Use when working with xss vulnerability scanner functionality. Trigger with phrases like \"xss vulnerability scanner\", \"xss scanner\", \"xss\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fxss-vulnerability-scanner\u002FSKILL.md",[],[]]