odysseus-dev/odysseus · error · SkillImportError

empty bundle

Error message

empty bundle

What it means

Error "empty bundle" thrown in odysseus-dev/odysseus.

Source

Thrown at services/memory/skills.py:397

        )
        self._write_skill(sk)

        return sk.to_dict()

    def import_bundle_from_files(
        self,
        files: Dict[str, str],
        *,
        owner: Optional[str] = None,
        source_url: str = "",
        category: str = "imported",
    ) -> Dict:
        """Install a fetched skill bundle (relative path → text) under skills/."""
        from .skill_importer import SkillImportError, pick_skill_md, _safe_relpath
        from core.atomic_io import atomic_write_text

        if not files:
            raise SkillImportError("empty bundle")
        _rel, skill_md = pick_skill_md(files)
        sk = Skill.from_markdown(skill_md)
        nm = slugify(sk.name or _rel.split("/")[-2] or "skill")
        cat = slugify(category or sk.category or "imported", fallback="imported")

        existing = {s["name"] for s in self.load_all()}
        base = nm
        i = 2
        while nm in existing:
            nm = f"{base}-{i}"
            i += 1

        skill_dir = self._skill_dir(cat, nm)
        os.makedirs(skill_dir, exist_ok=True)

        # Preserve bundle layout (templates/, references/, etc.) under the skill dir.
        for rel, content in files.items():
            safe = _safe_relpath(rel)

View on GitHub (pinned to f9235ebbf1)

Solutions

  1. Provide a non-empty skill bundle.
  2. Check the import source; it produced no files.

When it happens

Trigger: 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.

Common situations: See trigger scenarios.


AI-assisted analysis of odysseus-dev/odysseus@f9235ebbf1 (2026-08-14). Data as JSON: /api/errors/39a7f71ab0ad7f13. Report an issue: GitHub.