{"record":{"id":"01735baa60106fb8","repo":"github/spec-kit","slug":"invalid-kind-name-must-follow-pattern-spec","errorCode":null,"errorMessage":"Invalid {kind} '{name}': must follow pattern 'speckit.{extension}.{command}'","messagePattern":"Invalid (.+?) '(.+?)': must follow pattern 'speckit\\.(.+?)\\.(.+?)'","errorType":"validation","errorClass":"ValidationError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/extensions/__init__.py","lineNumber":1132,"sourceCode":"                (\"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                        )\n\n                    namespace = match.group(1)\n                    if namespace != manifest.id:\n                        raise ValidationError(\n                            f\"{kind.capitalize()} '{name}' must use extension namespace '{manifest.id}'\"\n                        )\n\n                    if namespace in CORE_COMMAND_NAMES:\n                        raise ValidationError(\n                            f\"{kind.capitalize()} '{name}' conflicts with core command namespace '{namespace}'\"\n                        )\n\n                if name in declared_names:\n                    raise ValidationError(\n                        f\"Duplicate command or alias '{name}' in extension manifest\"","sourceCodeStart":1114,"sourceCodeEnd":1150,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/extensions/__init__.py#L1114-L1150","documentation":"Error \"Invalid {kind} '{name}': must follow pattern 'speckit.{extension}.{command}'\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/extensions/__init__.py:1132 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rename the command/alias to follow the 'speckit.<extension>.<command>' pattern in the extension manifest."],"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"}