From 1cbfd4f2d811c590897e33f6c8d1991c8d0f3866 Mon Sep 17 00:00:00 2001 From: jawwad-ali Date: Tue, 30 Jun 2026 21:28:42 +0500 Subject: [PATCH] fix(integrations): add zed to discovery catalog.json zed is registered, registrar-aligned and registry-tested, but it was the only one of the 34 integrations absent from integrations/catalog.json, making it undiscoverable through the discovery manifest. Add the missing 'zed' entry (mirroring the sibling skills entries) and a registry<->catalog parity regression test so a future integration can't silently drift. Co-Authored-By: Claude Opus 4.8 --- integrations/catalog.json | 9 +++++++++ tests/integrations/test_registry.py | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/integrations/catalog.json b/integrations/catalog.json index 5080608a7b..601ae0ad92 100644 --- a/integrations/catalog.json +++ b/integrations/catalog.json @@ -299,6 +299,15 @@ "author": "spec-kit-core", "repository": "https://github.com/github/spec-kit", "tags": ["cli", "skills", "z-ai"] + }, + "zed": { + "id": "zed", + "name": "Zed", + "version": "1.0.0", + "description": "Zed editor skills-based integration", + "author": "spec-kit-core", + "repository": "https://github.com/github/spec-kit", + "tags": ["ide", "skills"] } } } diff --git a/tests/integrations/test_registry.py b/tests/integrations/test_registry.py index bbd08ea404..0014ca3dab 100644 --- a/tests/integrations/test_registry.py +++ b/tests/integrations/test_registry.py @@ -244,3 +244,26 @@ def test_safe_integrations_have_disjoint_manifests( f"{initial} and {additional} are declared multi-install safe but both manage " f"these files: {sorted(initial_files & additional_files)}" ) + + +class TestCatalogParity: + """The discovery catalog must list every registered integration.""" + + def test_every_registered_integration_is_in_catalog(self): + """``integrations/catalog.json`` must cover every registry key. + + The catalog is the discovery manifest; an integration that is + registered, registrar-aligned and registry-tested but missing from + the catalog is undiscoverable through it. ``generic`` is exempt — + it is the no-fixed-directory fallback, not a catalogued agent. + """ + from pathlib import Path + + repo_root = Path(__file__).resolve().parents[2] + catalog = json.loads( + (repo_root / "integrations" / "catalog.json").read_text(encoding="utf-8") + ) + catalogued = set(catalog["integrations"]) + registered = set(INTEGRATION_REGISTRY) - {"generic"} + missing = sorted(registered - catalogued) + assert not missing, f"integrations missing from catalog.json: {missing}"