chore(plugins): move Building with Zep plugin to its own repo #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test Plugin Marketplaces | |
| on: | |
| pull_request: | |
| paths: | |
| - '.claude-plugin/marketplace.json' | |
| - '.agents/plugins/marketplace.json' | |
| - '.cursor-plugin/marketplace.json' | |
| - '.github/workflows/test-plugin-marketplaces.yml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.claude-plugin/marketplace.json' | |
| - '.agents/plugins/marketplace.json' | |
| - '.cursor-plugin/marketplace.json' | |
| - '.github/workflows/test-plugin-marketplaces.yml' | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Validate marketplace catalogs | |
| run: | | |
| python3 - <<'PY' | |
| import json | |
| from pathlib import Path | |
| expected = { | |
| '.claude-plugin/marketplace.json': { | |
| 'building-with-zep': ('github', 'getzep/building-with-zep-plugin'), | |
| 'zep-memory': ('github', 'getzep/zep-memory-plugin'), | |
| }, | |
| '.agents/plugins/marketplace.json': { | |
| 'building-with-zep': ('url', 'https://github.com/getzep/building-with-zep-plugin.git'), | |
| 'zep-memory': ('url', 'https://github.com/getzep/zep-memory-plugin.git'), | |
| }, | |
| '.cursor-plugin/marketplace.json': {}, | |
| } | |
| for path, wanted in expected.items(): | |
| data = json.loads(Path(path).read_text()) | |
| assert data.get('name') == 'zep', f'{path}: marketplace name must be zep' | |
| entries = data.get('plugins') | |
| assert isinstance(entries, list), f'{path}: plugins must be an array' | |
| actual = {} | |
| for entry in entries: | |
| assert 'version' not in entry, f"{path}: {entry.get('name')} duplicates version" | |
| source = entry.get('source') | |
| if isinstance(source, str): | |
| actual[entry['name']] = ('url-string', source) | |
| else: | |
| value = source.get('repo') if source.get('source') == 'github' else source.get('url') | |
| actual[entry['name']] = (source.get('source'), value) | |
| assert actual == wanted, f'{path}: unexpected plugin sources: {actual!r}' | |
| cursor = json.loads(Path('.cursor-plugin/marketplace.json').read_text()) | |
| assert cursor.get('plugins') == [], ( | |
| 'Cursor marketplace catalogs only resolve same-repo plugin paths; ' | |
| 'leave plugins empty here and distribute Cursor via ' | |
| 'getzep/building-with-zep-plugin' | |
| ) | |
| PY |