Skip to content

chore(plugins): move Building with Zep plugin to its own repo #1

chore(plugins): move Building with Zep plugin to its own repo

chore(plugins): move Building with Zep plugin to its own repo #1

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