{"record":{"id":"54db1cc217c6e0fd","repo":"github/spec-kit","slug":"requires-must-be-a-mapping","errorCode":null,"errorMessage":"'requires' must be a mapping","messagePattern":"'requires' must be a mapping","errorType":"validation","errorClass":"IntegrationDescriptorError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/integrations/catalog.py","lineNumber":737,"sourceCode":"                    f\"integration.{field} must be a string, got {type(integ[field]).__name__}\"\n                )\n\n        if not re.match(r\"^[a-z0-9-]+$\", integ[\"id\"]):\n            raise IntegrationDescriptorError(\n                f\"Invalid integration ID '{integ['id']}': \"\n                \"must be lowercase alphanumeric with hyphens only\"\n            )\n\n        try:\n            pkg_version.Version(integ[\"version\"])\n        except (pkg_version.InvalidVersion, TypeError):\n            raise IntegrationDescriptorError(\n                f\"Invalid version '{integ['version']}'\"\n            )\n\n        requires = self.data[\"requires\"]\n        if not isinstance(requires, dict):\n            raise IntegrationDescriptorError(\n                \"'requires' must be a mapping\"\n            )\n        if \"speckit_version\" not in requires:\n            raise IntegrationDescriptorError(\n                \"Missing requires.speckit_version\"\n            )\n        if not isinstance(requires[\"speckit_version\"], str) or not requires[\"speckit_version\"].strip():\n            raise IntegrationDescriptorError(\n                \"requires.speckit_version must be a non-empty string\"\n            )\n        tools = requires.get(\"tools\")\n        if tools is not None:\n            if not isinstance(tools, list):\n                raise IntegrationDescriptorError(\n                    \"requires.tools must be a list\"\n                )\n            for tool in tools:\n                if not isinstance(tool, dict):","sourceCodeStart":719,"sourceCodeEnd":755,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/integrations/catalog.py#L719-L755","documentation":"Error \"'requires' must be a mapping\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/integrations/catalog.py:737 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Make the 'requires' value in the descriptor a mapping."],"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-15T22:17:37.221Z"}