{"record":{"id":"165a4a055f8468a5","repo":"github/spec-kit","slug":"kind-capitalize-for-command-primary-name-m","errorCode":null,"errorMessage":"{kind.capitalize()} for command '{primary_name}' must be a string","messagePattern":"(.+?) for command '(.+?)' must be a string","errorType":"validation","errorClass":"ValidationError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/extensions/__init__.py","lineNumber":1117,"sourceCode":"\n        declared_names: Dict[str, str] = {}\n\n        for cmd in manifest.commands:\n            primary_name = cmd[\"name\"]\n            aliases = cmd.get(\"aliases\", [])\n\n            if aliases is None:\n                aliases = []\n            if not isinstance(aliases, list):\n                raise ValidationError(\n                    f\"Aliases for command '{primary_name}' must be a list\"\n                )\n\n            for kind, name in [(\"command\", primary_name)] + [\n                (\"alias\", alias) for alias in aliases\n            ]:\n                if not isinstance(name, str):\n                    raise ValidationError(\n                        f\"{kind.capitalize()} for command '{primary_name}' must be a string\"\n                    )\n\n                path_reason = relative_extension_path_violation(name)\n                if path_reason:\n                    raise ValidationError(\n                        f\"Invalid {kind} {name!r}: {path_reason}\"\n                    )\n\n                # Enforce canonical pattern only for primary command names;\n                # aliases are free-form to preserve community extension compat.\n                if kind == \"command\":\n                    match = EXTENSION_COMMAND_NAME_PATTERN.match(name)\n                    if match is None:\n                        raise ValidationError(\n                            f\"Invalid {kind} '{name}': \"\n                            \"must follow pattern 'speckit.{extension}.{command}'\"\n                        )","sourceCodeStart":1099,"sourceCodeEnd":1135,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/extensions/__init__.py#L1099-L1135","documentation":"Error \"{kind.capitalize()} for command '{primary_name}' must be a string\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/extensions/__init__.py:1117 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["In the extension manifest, make the alias/name value a 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"}