From b4a0f8b564e81ebed32a93518b83b9a99e30fa8b Mon Sep 17 00:00:00 2001 From: Ali jawwad <33836051+jawwad-ali@users.noreply.github.com> Date: Wed, 1 Jul 2026 02:21:08 +0500 Subject: [PATCH] fix(integrations): add zed to discovery catalog.json (#3266) 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 5080608a7..601ae0ad9 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 bbd08ea40..0014ca3da 100644 --- a/tests/integrations/test_registry.py +++ b/tests/integrations/test_registry.py @@ -244,3 +244,26 @@ class TestMultiInstallSafeContracts: 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}"