{"record":{"id":"d324f4b2150259f3","repo":"github/spec-kit","slug":"requires-tools-entry-name-must-be-a-non-empty-st","errorCode":null,"errorMessage":"requires.tools entry 'name' must be a non-empty string","messagePattern":"requires\\.tools entry 'name' must be a non-empty string","errorType":"validation","errorClass":"IntegrationDescriptorError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/integrations/catalog.py","lineNumber":761,"sourceCode":"            )\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):\n                    raise IntegrationDescriptorError(\n                        \"Each requires.tools entry must be a mapping\"\n                    )\n                tool_name = tool.get(\"name\")\n                if not isinstance(tool_name, str) or not tool_name.strip():\n                    raise IntegrationDescriptorError(\n                        \"requires.tools entry 'name' must be a non-empty string\"\n                    )\n\n        provides = self.data[\"provides\"]\n        if not isinstance(provides, dict):\n            raise IntegrationDescriptorError(\n                \"'provides' must be a mapping\"\n            )\n        commands = provides.get(\"commands\", [])\n        scripts = provides.get(\"scripts\", [])\n        if \"commands\" in provides and not isinstance(commands, list):\n            raise IntegrationDescriptorError(\n                \"Invalid provides.commands: expected a list\"\n            )\n        if \"scripts\" in provides and not isinstance(scripts, list):\n            raise IntegrationDescriptorError(\n                \"Invalid provides.scripts: expected a list\"\n            )","sourceCodeStart":743,"sourceCodeEnd":779,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/integrations/catalog.py#L743-L779","documentation":"Error \"requires.tools entry 'name' must be a non-empty string\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/integrations/catalog.py:761 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set each requires.tools entry 'name' to a non-empty string."],"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"}