github/spec-kit · error · IntegrationCatalogError

Invalid JSON in catalog from {entry.url}: {exc}

Error message

Invalid JSON in catalog from {entry.url}: {exc}

What it means

Error "Invalid JSON in catalog from {entry.url}: {exc}" thrown in github/spec-kit.

Source

Thrown at src/specify_cli/integrations/catalog.py:250

            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 sys

        active = self.get_active_catalogs()
        merged: Dict[str, Dict[str, Any]] = {}
        any_success = False

View on GitHub (pinned to bf88c9f9a8)

Solutions

  1. Fix the JSON syntax in the remote catalog document, then retry.

When it happens

Trigger: Thrown at src/specify_cli/integrations/catalog.py:250 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of github/spec-kit@bf88c9f9a8 (2026-08-14). Data as JSON: /api/errors/220f567653b2efa5. Report an issue: GitHub.