{"record":{"id":"7a7130b888ee6afe","repo":"diegosouzapw/OmniRoute","slug":"failed-to-fetch-skill-md-res-status-url","errorCode":null,"errorMessage":"Failed to fetch SKILL.md: ${res.status} (${url})","messagePattern":"Failed to fetch SKILL\\.md: (.+?) \\((.+?)\\)","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lib/skills/skillssh.ts","lineNumber":67,"sourceCode":"    clearTimeout(timeout);\n  }\n}\n\n/**\n * Fetch SKILL.md content from GitHub for a skills.sh skill.\n *\n * @param source - GitHub \"owner/repo\" (e.g. \"supabase/agent-skills\")\n * @param skillId - Skill name (last segment of the full id, e.g. \"supabase-postgres-best-practices\")\n */\nexport async function fetchSkillMd(source: string, skillId: string): Promise<string> {\n  const url = `${GITHUB_RAW_BASE}/${source}/main/skills/${skillId}/SKILL.md`;\n  const controller = new AbortController();\n  const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);\n\n  try {\n    const res = await fetch(url, { signal: controller.signal });\n    if (!res.ok) {\n      throw new Error(`Failed to fetch SKILL.md: ${res.status} (${url})`);\n    }\n    return await res.text();\n  } finally {\n    clearTimeout(timeout);\n  }\n}\n","sourceCodeStart":49,"sourceCodeEnd":74,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/lib/skills/skillssh.ts#L49-L74","documentation":"Error \"Failed to fetch SKILL.md: ${res.status} (${url})\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/lib/skills/skillssh.ts:67 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}