{"record":{"id":"9bcc0f0194888443","repo":"odysseus-dev/odysseus","slug":"skill-bundle-exceeds-size-limit","errorCode":null,"errorMessage":"skill bundle exceeds size limit","messagePattern":"skill bundle exceeds size limit","errorType":"exception","errorClass":"SkillImportError","httpStatus":null,"severity":"error","filePath":"services/memory/skill_importer.py","lineNumber":430,"sourceCode":"        if not isinstance(ent, dict):\n            continue\n        name = ent.get(\"name\") or \"\"\n        ent_type = ent.get(\"type\")\n        rel = _safe_relpath(f\"{rel_dir}/{name}\" if rel_dir else name)\n        if ent_type == \"dir\":\n            _list_github_dir(src, rel, out, depth=depth + 1)\n            total = sum(len(v.encode(\"utf-8\")) for v in out.values())\n            continue\n        if ent_type != \"file\" or not _is_text_file(name):\n            continue\n        dl = ent.get(\"download_url\")\n        if not dl:\n            continue\n        _assert_github_url(dl, context=\"download URL\")\n        text = _fetch_text(dl)\n        total += len(text.encode(\"utf-8\"))\n        if total > MAX_TOTAL_BYTES:\n            raise SkillImportError(\"skill bundle exceeds size limit\")\n        out[rel] = text\n\n\ndef fetch_skill_bundle(url: str) -> Tuple[Dict[str, str], ResolvedSource]:\n    \"\"\"Download SKILL.md and sibling text assets. Returns relative_path → content.\"\"\"\n    src = parse_skill_source(url)\n    files: Dict[str, str] = {}\n\n    path = _safe_relpath(src.path) if src.path else \"\"\n    if path.lower().endswith(\"skill.md\"):\n        files[path] = _fetch_text(_raw_url(src, path))\n        parent = \"/\".join(path.split(\"/\")[:-1])\n        if parent:\n            try:\n                _list_github_dir(src, parent, files)\n            except SkillImportError:\n                pass\n        return files, src","sourceCodeStart":412,"sourceCodeEnd":448,"githubUrl":"https://github.com/odysseus-dev/odysseus/blob/f9235ebbf13f693a6fd29ce70b097f6ec83705bf/services/memory/skill_importer.py#L412-L448","documentation":"Error \"skill bundle exceeds size limit\" thrown in odysseus-dev/odysseus.","triggerScenarios":"Triggered when the corresponding server-side validation or runtime check at the recorded location rejects the request or operation and returns this error message to the caller.","commonSituations":"See trigger scenarios.","solutions":["Reduce the skill bundle size below the limit.","Remove large auxiliary files from the skill folder."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f9235ebbf13f693a6fd29ce70b097f6ec83705bf","analyzedAt":"2026-08-14T21:47:48.359Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}