{"record":{"id":"be4599150a3ac2f2","repo":"github/spec-kit","slug":"extension-ext-spec-not-found-in-bundled-extens","errorCode":null,"errorMessage":"Extension '{ext_spec}' not found in bundled extensions or catalog","messagePattern":"Extension '(.+?)' not found in bundled extensions or catalog","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/commands/init.py","lineNumber":142,"sourceCode":"            raise ValueError(f\"No extension.yml found in {source_path}\")\n        manifest = manager.install_from_directory(source_path, speckit_version)\n        return f\"{manifest.name} v{manifest.version} installed\"\n\n    # --- Bundled extension name or catalog ID ---\n    bundled_path = _locate_bundled_extension(ext_spec)\n    if bundled_path is not None:\n        if manager.registry.is_installed(ext_spec):\n            return \"already installed\"\n        manifest = manager.install_from_directory(bundled_path, speckit_version)\n        return f\"{manifest.name} v{manifest.version} installed\"\n\n    # Fall back to catalog\n    catalog = ExtensionCatalog(project_path)\n    ext_info, catalog_error = _resolve_catalog_extension(ext_spec, catalog, \"add\")\n    if catalog_error:\n        raise ValueError(f\"Could not query extension catalog: {catalog_error}\")\n    if not ext_info:\n        raise ValueError(f\"Extension '{ext_spec}' not found in bundled extensions or catalog\")\n\n    resolved_id = ext_info[\"id\"]\n    if resolved_id != ext_spec:\n        bundled_path = _locate_bundled_extension(resolved_id)\n        if bundled_path is not None:\n            if manager.registry.is_installed(resolved_id):\n                return \"already installed\"\n            manifest = manager.install_from_directory(bundled_path, speckit_version)\n            return f\"{manifest.name} v{manifest.version} installed\"\n\n    if ext_info.get(\"bundled\") and not ext_info.get(\"download_url\"):\n        from ..extensions import REINSTALL_COMMAND\n\n        raise ValueError(\n            f\"Extension '{resolved_id}' is bundled with spec-kit but not found in the installed package. \"\n            f\"Try reinstalling spec-kit: {REINSTALL_COMMAND}\"\n        )\n","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/commands/init.py#L124-L160","documentation":"The extension argument was neither a URL, local path, nor a bundled extension, and catalog resolution found no matching id or unique display name. Spec Kit therefore raises ValueError and marks the init extension step failed.","triggerScenarios":"`specify init --extension <value>` where value is a typo, wrong-case id, display name with no exact catalog match, or an extension that exists only in a catalog that is not configured.","commonSituations":"Using a display name instead of the exact id, adding a community extension not present in the default installable catalog, a stale cache, or a custom catalog that does not include the entry.","solutions":["Run `specify extension list --available` (or `specify extension search`) and copy the exact extension ID.","Retry `specify init <project> --extension <exact-id>`; IDs are case-sensitive.","If the extension is community/custom, configure a trusted catalog that actually contains it.","Otherwise install from a local directory or trusted URL using the ./path or https:// forms."],"exampleFix":"# before\nspecify init demo --extension \"Self Test\"\n\n# after\nspecify init demo --extension selftest","handlingStrategy":"validation","validationCode":"from pathlib import Path\nfrom specify_cli.extensions import ExtensionCatalog\n\ndef extension_spec_resolves(ext_spec: str, project_root: Path) -> bool:\n    catalog = ExtensionCatalog(project_root)\n    if catalog.get_extension_info(ext_spec):\n        return True\n    return any(\n        str(ext.get(\"name\", \"\")).lower() == ext_spec.lower()\n        for ext in catalog.search()\n    )","typeGuard":null,"tryCatchPattern":"try:\n    _install_extension_during_init(project_path, ext_spec, version)\nexcept ValueError as exc:\n    if \"not found in bundled extensions or catalog\" in str(exc):\n        suggest_available_extension_ids()\n    else:\n        raise","preventionTips":["Use exact catalog IDs from `specify extension list --available` in scripts.","Pin extension IDs in project documentation rather than display names.","Ensure the catalog that contains the extension is configured before init."],"tags":["init","extensions","catalog","lookup"],"backgroundTag":null,"analyzedSha":"bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c","analyzedAt":"2026-08-14T19:43:37.150Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}