github/spec-kit · error · CompatibilityError

Invalid version specifier: expected a string, got {type(requ

Error message

Invalid version specifier: expected a string, got {type(required).__name__} ({required!r})

What it means

Error "Invalid version specifier: expected a string, got {type(required).__name__} ({required!r})" thrown in github/spec-kit.

Source

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

            speckit_version: Current spec-kit version

        Returns:
            True if compatible

        Raises:
            CompatibilityError: If extension is incompatible
        """
        required = manifest.requires_speckit_version

        # 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(

View on GitHub (pinned to bf88c9f9a8)

Solutions

  1. Set requires.speckit_version in the manifest to a string version specifier such as '>=0.0.70'.

When it happens

Trigger: Thrown at src/specify_cli/extensions/__init__.py:2029 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/6e67fcf9d39e74dd. Report an issue: GitHub.