github/spec-kit · error · ValueError

Extension '{resolved_id}' is bundled with spec-kit but not f

Error message

Extension '{resolved_id}' is bundled with spec-kit but not found in the installed package. Try reinstalling spec-kit: {REINSTALL_COMMAND}

What it means

The catalog marks the extension as bundled with Spec Kit and without a download URL, but the extension directory is not present in the currently installed specify-cli package. This points to an incomplete or corrupted CLI installation rather than a bad extension argument.

Source

Thrown at src/specify_cli/commands/init.py:156

    ext_info, catalog_error = _resolve_catalog_extension(ext_spec, catalog, "add")
    if catalog_error:
        raise ValueError(f"Could not query extension catalog: {catalog_error}")
    if not ext_info:
        raise ValueError(f"Extension '{ext_spec}' not found in bundled extensions or catalog")

    resolved_id = ext_info["id"]
    if resolved_id != ext_spec:
        bundled_path = _locate_bundled_extension(resolved_id)
        if bundled_path is not None:
            if manager.registry.is_installed(resolved_id):
                return "already installed"
            manifest = manager.install_from_directory(bundled_path, speckit_version)
            return f"{manifest.name} v{manifest.version} installed"

    if ext_info.get("bundled") and not ext_info.get("download_url"):
        from ..extensions import REINSTALL_COMMAND

        raise ValueError(
            f"Extension '{resolved_id}' is bundled with spec-kit but not found in the installed package. "
            f"Try reinstalling spec-kit: {REINSTALL_COMMAND}"
        )

    if not ext_info.get("_install_allowed", True):
        catalog_name = ext_info.get("_catalog_name", "community")
        raise ValueError(
            f"Extension '{ext_spec}' is in the '{catalog_name}' catalog but installation is not allowed from that catalog"
        )

    zip_path = catalog.download_extension(resolved_id)
    try:
        manifest = manager.install_from_zip(zip_path, speckit_version)
    finally:
        zip_path.unlink(missing_ok=True)
    return f"{manifest.name} v{manifest.version} installed"

View on GitHub (pinned to bf88c9f9a8)

Solutions

  1. Run the reinstall command printed in the error: `uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git`.
  2. If you installed with pip/pipx instead, reinstall/upgrade through that same tool so package data is complete.
  3. Verify the extension is present after reinstall, then rerun `specify init`.
  4. If it still fails in a fresh installation, report the missing bundled extension to Spec Kit.

Example fix

# before
pip install specify-cli

# after
uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git
Defensive patterns

Strategy: validation

Validate before calling

from specify_cli._assets import _locate_bundled_extension

def bundled_extension_is_available(extension_id: str) -> bool:
    return _locate_bundled_extension(extension_id) is not None

Try / catch

try:
    _install_extension_during_init(project_path, ext_spec, version)
except ValueError as exc:
    if "Try reinstalling spec-kit" in str(exc):
        run_reinstall_command_and_retry_init()
    else:
        raise

Prevention

When it happens

Trigger: `specify init --extension <bundled-id>` resolves a bundled catalog entry, but `_locate_bundled_extension()` cannot find the expected directory in the installed package data.

Common situations: A partially upgraded pip/pipx/uv installation, package data excluded by a repackaged install, an old layout from an earlier Spec Kit release, or a broken editable/source environment.

Related errors


AI-assisted analysis of github/spec-kit@bf88c9f9a8 (2026-08-14). Data as JSON: /api/errors/72233d918128a851. Report an issue: GitHub.