github/spec-kit · error · IntegrationCatalogError
Catalog from {entry.url} is not valid UTF-8: {exc}
Error message
Catalog from {entry.url} is not valid UTF-8: {exc} What it means
Error "Catalog from {entry.url} is not valid UTF-8: {exc}" thrown in github/spec-kit.
Source
Thrown at src/specify_cli/integrations/catalog.py:246
indent=2,
),
encoding="utf-8",
)
except OSError:
pass # Cache is best-effort; proceed with fetched data
return catalog_data
except urllib.error.URLError as exc:
raise IntegrationCatalogError(
f"Failed to fetch catalog from {entry.url}: {exc}"
)
except UnicodeDecodeError as exc:
# A non-UTF-8 response body fails at .decode() before json.loads()
# ever runs, so JSONDecodeError below does not cover it (the two are
# sibling ValueError subclasses, not parent/child). Without this the
# raw UnicodeDecodeError escapes _get_merged_integrations()'s
# "warn and skip this catalog" handler and kills the whole command.
raise IntegrationCatalogError(
f"Catalog from {entry.url} is not valid UTF-8: {exc}"
)
except json.JSONDecodeError as exc:
raise IntegrationCatalogError(
f"Invalid JSON in catalog from {entry.url}: {exc}"
)
def _get_merged_integrations(
self, force_refresh: bool = False
) -> List[Dict[str, Any]]:
"""Fetch and merge integrations from all active catalogs.
Catalogs are processed in the order returned by
:meth:`get_active_catalogs`. On conflicts, the first catalog in that
order wins (lower numeric priority = higher precedence). Each dict is
annotated with ``_catalog_name`` and ``_install_allowed``.
"""
import sysView on GitHub (pinned to bf88c9f9a8)
Solutions
- Re-save the remote catalog as UTF-8 JSON, or point the catalog entry at a valid UTF-8 catalog.
When it happens
Trigger: Thrown at src/specify_cli/integrations/catalog.py:246 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of github/spec-kit@bf88c9f9a8 (2026-08-14).
Data as JSON: /api/errors/38f7c8393a266fe9.
Report an issue: GitHub.