{"record":{"id":"8de2fbaec50df8d9","repo":"NousResearch/hermes-agent","slug":"bundle-name-name-r-normalizes-to-an-empty-slug","errorCode":null,"errorMessage":"Bundle name {name!r} normalizes to an empty slug","messagePattern":"Bundle name (.+?) normalizes to an empty slug","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"agent/skill_bundles.py","lineNumber":380,"sourceCode":"    if user_instruction:\n        header_lines.extend(\n            [\"\", f\"User instruction: {user_instruction}\"]\n        )\n\n    header = \"\\n\".join(header_lines)\n    return (\"\\n\\n\".join([header, *skill_blocks]), loaded_names, missing)\n\n\n# ---------------------------------------------------------------------------\n# File-level CRUD helpers — used by `hermes bundles` CLI subcommand.\n# ---------------------------------------------------------------------------\n\n\ndef bundle_path_for(name: str) -> Path:\n    \"\"\"Return the canonical filesystem path for a bundle name.\"\"\"\n    slug = _slugify(name)\n    if not slug:\n        raise ValueError(f\"Bundle name {name!r} normalizes to an empty slug\")\n    return _bundles_dir() / f\"{slug}.yaml\"\n\n\ndef save_bundle(\n    name: str,\n    skills: List[str],\n    description: str = \"\",\n    instruction: str = \"\",\n    overwrite: bool = False,\n) -> Path:\n    \"\"\"Write a bundle to disk and invalidate the cache.\n\n    Raises ``FileExistsError`` if the target exists and ``overwrite`` is\n    False. Raises ``ValueError`` if the inputs are unusable.\n    \"\"\"\n    name = (name or \"\").strip()\n    if not name:\n        raise ValueError(\"Bundle name is required\")","sourceCodeStart":362,"sourceCodeEnd":398,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/agent/skill_bundles.py#L362-L398","documentation":"Error \"Bundle name {name!r} normalizes to an empty slug\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at agent/skill_bundles.py:380 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Choose a bundle name that keeps at least one alphanumeric character after normalization."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}