Replace the skills-only SSoT (skills/<name>/SKILL.md) with plugins/<name>/, where a plugin can bundle skills, MCP servers, lifecycle hooks, rules, commands, and agents. scripts/generate_plugins.py now discovers plugins from one or more layered --source roots and emits real per-target trees (dist/claude-code/** + .claude-plugin/marketplace.json, dist/agy/**), translating hooks.json/mcp.json between Claude Code's and agy's actual schemas instead of only fanning out flat skill lists. Adds a private-overlay build path (--source/--private-repo/--out/ --install-local) so a second, non-public repo (PII, tokens, personal-only plugins) can extend or override the public plugin set without either repo touching the other's history — private builds default to a gitignored dist-private/ and never land in tracked output. Drops install.sh and descriptions.json: both only ever covered skills and pre-date the native plugin marketplace; both tools now install the plugin marketplace the documented way (Claude Code's /plugin marketplace add, agy's plugins.json entries). CI path filters move to plugins/**, and the workflow gains workflow_dispatch for a manual re-trigger. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YVWWAnvR5TDQzmfY3RXG9
50 lines
1.3 KiB
YAML
50 lines
1.3 KiB
YAML
name: Generate plugin manifests
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- "plugins/**"
|
|
- "manifest.yaml"
|
|
- "scripts/**"
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- "plugins/**"
|
|
- "manifest.yaml"
|
|
- "scripts/**"
|
|
workflow_dispatch: {}
|
|
|
|
jobs:
|
|
validate:
|
|
if: github.event_name == 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.x"
|
|
- run: pip install -r scripts/requirements.txt
|
|
- run: python3 scripts/generate_plugins.py --check
|
|
|
|
generate:
|
|
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.x"
|
|
- run: pip install -r scripts/requirements.txt
|
|
- run: python3 scripts/generate_plugins.py
|
|
- name: Commit generated output
|
|
run: |
|
|
git config user.name "gitea-actions"
|
|
git config user.email "actions@git.rootiest.dev"
|
|
git add .claude-plugin dist
|
|
if git diff --cached --quiet; then
|
|
echo "No generated output changes."
|
|
exit 0
|
|
fi
|
|
git commit -m "chore(plugins): regenerate plugin manifests"
|
|
git push origin HEAD:main
|