github/spec-kit · error · BundlerError
Unsupported catalog config schema version '{str(schema_versi
Error message
Unsupported catalog config schema version '{str(schema_version).strip()}' at {path}; this Spec Kit understands version {CONFIG_SCHEMA_VERSION}. The file may have been written by a newer version or is corrupt. What it means
Raised when `schema_version` in `bundle-catalogs.yml` exists but its major component differs from `CONFIG_SCHEMA_VERSION` known by the installed spec-kit. Major-version mismatch means the file's shape is not understood by this version, so parsing aborts rather than mis-reading fields.
Source
Thrown at src/specify_cli/bundler/commands_impl/catalog_config.py:58
if not path.exists():
return []
# ``load_yaml`` returns ``{}`` only for an empty document and the raw parse
# otherwise, so a non-mapping top level — a falsy ``[]``/``false``/``0``/``''``
# or an explicit null (``load_yaml`` -> ``None``) — is caught by the isinstance
# guard below and raised like a truthy one, staying consistent with the other
# reader of this file (models/catalog._merge_config).
data = load_yaml(path)
if not isinstance(data, dict):
raise BundlerError(
f"Malformed catalog config at {path}: expected a mapping at the top "
f"level, got {type(data).__name__}."
)
schema_version = data.get("schema_version")
if schema_version is not None and (
str(schema_version).strip().split(".")[0]
!= CONFIG_SCHEMA_VERSION.split(".")[0]
):
raise BundlerError(
f"Unsupported catalog config schema version "
f"'{str(schema_version).strip()}' at {path}; this Spec Kit "
f"understands version {CONFIG_SCHEMA_VERSION}. The file may have been "
"written by a newer version or is corrupt."
)
catalogs = data.get("catalogs")
if catalogs is None:
return []
if not isinstance(catalogs, list):
raise BundlerError(
f"Malformed catalog config at {path}: 'catalogs' must be a list, "
f"got {type(catalogs).__name__}."
)
for entry in catalogs:
if not isinstance(entry, dict):
raise BundlerError(
f"Malformed catalog config at {path}: each catalog entry must be "
f"a mapping, got {type(entry).__name__}."View on GitHub (pinned to bf88c9f9a8)
Solutions
- Align the file's `schema_version` major with the version this CLI understands (shown in the message)
- Upgrade spec-kit to the release that wrote the file
- Or delete the project-scoped file to fall back to built-in defaults and re-add sources
Example fix
# before schema_version: "2.0" # after schema_version: "1.0"
Defensive patterns
Strategy: validation
Validate before calling
from specify_cli.bundler.models.catalog import CONFIG_SCHEMA_VERSION
major = str(data.get("schema_version", CONFIG_SCHEMA_VERSION)).strip().split(".")[0]
if major != CONFIG_SCHEMA_VERSION.split(".")[0]:
raise SystemExit(f"config schema {major}.x not understood; CLI knows {CONFIG_SCHEMA_VERSION}") Type guard
def schema_major_matches(data: dict) -> bool:
v = data.get("schema_version")
return v is None or str(v).strip().split(".")[0] == CONFIG_SCHEMA_VERSION.split(".")[0] Try / catch
try:
read_catalog_config(project_root)
except BundlerError as exc:
if "Unsupported catalog config schema version" in str(exc):
# upgrade spec-kit or regenerate the project-scoped file
raise
raise Prevention
- Pin the spec-kit version in CI so schema versions stay aligned across the team
- After upgrading spec-kit, check bundle-catalogs.yml schema_version against the release notes
When it happens
Trigger: `schema_version: 2.0` in the file while this CLI understands `1.x`; also triggers for unquoted numeric versions only when the integer part differs (comparison is on `split(".")[0]` of the stringified value).
Common situations: Opening a project created by a newer spec-kit release with an older CLI; hand-writing a version string like `v1` or `1`; downgrading the tool.
Related errors
- Unsupported catalog config schema version '{str(schema_versi
- Unsupported records schema version '{seen}' at {path}; this
- Malformed catalog config at {path}: expected a mapping at th
- Malformed catalog config at {path}: 'catalogs' must be a lis
- Malformed catalog config at {path}: each catalog entry must
AI-assisted analysis of github/spec-kit@bf88c9f9a8 (2026-08-14).
Data as JSON: /api/errors/4b4798effe579711.
Report an issue: GitHub.