github/spec-kit · error · CompatibilityError

Extension requires spec-kit {required}, but {speckit_version

Error message

Extension requires spec-kit {required}, but {speckit_version} is installed.\nUpgrade spec-kit with: {REINSTALL_COMMAND}

What it means

Error "Extension requires spec-kit {required}, but {speckit_version} is installed.\nUpgrade spec-kit with: {REINSTALL_COMMAND}" thrown in github/spec-kit.

Source

Thrown at src/specify_cli/extensions/__init__.py:2039

        # Parse version specifier (e.g., ">=0.1.0,<2.0.0")
        # Defense in depth: the manifest validator now rejects a non-string
        # requires.speckit_version, but this method is public and also reachable
        # with a hand-built manifest object. ``InvalidSpecifier`` alone does not
        # cover a non-string -- scalars raise TypeError from the constructor, and
        # a list/dict is iterable so it constructs here and only breaks inside
        # .contains(). Reject up front so this always reports a CompatibilityError.
        if not isinstance(required, str):
            raise CompatibilityError(
                "Invalid version specifier: expected a string, got "
                f"{type(required).__name__} ({required!r})"
            )
        try:
            SpecifierSet(required)  # Just to validate
        except InvalidSpecifier:
            raise CompatibilityError(f"Invalid version specifier: {required}")

        if not version_satisfies(speckit_version, required):
            raise CompatibilityError(
                f"Extension requires spec-kit {required}, "
                f"but {speckit_version} is installed.\n"
                f"Upgrade spec-kit with: {REINSTALL_COMMAND}"
            )

        return True

    def install_from_directory(
        self,
        source_dir: Path,
        speckit_version: str,
        register_commands: bool = True,
        priority: int = 10,
        link_commands: bool = False,
        force: bool = False,
    ) -> ExtensionManifest:
        """Install extension from a local directory.

View on GitHub (pinned to bf88c9f9a8)

Solutions

  1. Upgrade spec-kit with the printed reinstall command, or install an extension version compatible with the installed spec-kit.

When it happens

Trigger: Thrown at src/specify_cli/extensions/__init__.py:2039 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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