{"record":{"id":"a559928818924c4a","repo":"github/spec-kit","slug":"invalid-version-specifier-required","errorCode":null,"errorMessage":"Invalid version specifier: {required}","messagePattern":"Invalid version specifier: (.+?)","errorType":"exception","errorClass":"CompatibilityError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/extensions/__init__.py","lineNumber":2036,"sourceCode":"        \"\"\"\n        required = manifest.requires_speckit_version\n\n        # Parse version specifier (e.g., \">=0.1.0,<2.0.0\")\n        # Defense in depth: the manifest validator now rejects a non-string\n        # requires.speckit_version, but this method is public and also reachable\n        # with a hand-built manifest object. ``InvalidSpecifier`` alone does not\n        # cover a non-string -- scalars raise TypeError from the constructor, and\n        # a list/dict is iterable so it constructs here and only breaks inside\n        # .contains(). Reject up front so this always reports a CompatibilityError.\n        if not isinstance(required, str):\n            raise CompatibilityError(\n                \"Invalid version specifier: expected a string, got \"\n                f\"{type(required).__name__} ({required!r})\"\n            )\n        try:\n            SpecifierSet(required)  # Just to validate\n        except InvalidSpecifier:\n            raise CompatibilityError(f\"Invalid version specifier: {required}\")\n\n        if not version_satisfies(speckit_version, required):\n            raise CompatibilityError(\n                f\"Extension requires spec-kit {required}, \"\n                f\"but {speckit_version} is installed.\\n\"\n                f\"Upgrade spec-kit with: {REINSTALL_COMMAND}\"\n            )\n\n        return True\n\n    def install_from_directory(\n        self,\n        source_dir: Path,\n        speckit_version: str,\n        register_commands: bool = True,\n        priority: int = 10,\n        link_commands: bool = False,\n        force: bool = False,","sourceCodeStart":2018,"sourceCodeEnd":2054,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/extensions/__init__.py#L2018-L2054","documentation":"Error \"Invalid version specifier: {required}\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/extensions/__init__.py:2036 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix requires.speckit_version to a valid version specifier, e.g. '>=0.0.70'."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c","analyzedAt":"2026-08-14T19:43:37.150Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}