Splits MCP server config out of the bundled skills plugin into standalone github-mcp/gitea-mcp plugins, and adds a targets restriction (whole-plugin and per-skill) so a plugin/skill can be scoped to just claude-code or agy.
Adds a new external field to plugin.json: a target-keyed map of Claude Code marketplace source objects. When set, the generator emits that source (e.g. a GitHub repo) verbatim in marketplace.json instead of a local ./dist/... path — nothing is copied or vendored, and installs always fetch the current upstream version.
Adds caveman (JuliusBrussee/caveman) and ponytail (DietrichGebert/ponytail) as external-source plugins, installable through this same marketplace. Claude Code-only — agy has no external-source mechanism, and both plugins' hooks/MCP assume Claude Code's plugin runtime.
README updated to document both features and the two new plugins.
python3 scripts/generate_plugins.py regenerates .claude-plugin/marketplace.json cleanly, with caveman/ponytail as external GitHub sources and no local dist/claude-code or dist/agy output for them
/plugin marketplace update then /plugin install caveman@rootiest-ai / /plugin install ponytail@rootiest-ai in a live Claude Code session
## Summary
- Splits MCP server config out of the bundled skills plugin into standalone `github-mcp`/`gitea-mcp` plugins, and adds a `targets` restriction (whole-plugin and per-skill) so a plugin/skill can be scoped to just `claude-code` or `agy`.
- Adds a new `external` field to `plugin.json`: a target-keyed map of Claude Code marketplace `source` objects. When set, the generator emits that source (e.g. a GitHub repo) verbatim in `marketplace.json` instead of a local `./dist/...` path — nothing is copied or vendored, and installs always fetch the current upstream version.
- Adds `caveman` ([JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman)) and `ponytail` ([DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)) as external-source plugins, installable through this same marketplace. Claude Code-only — agy has no external-source mechanism, and both plugins' hooks/MCP assume Claude Code's plugin runtime.
- README updated to document both features and the two new plugins.
## Test plan
- [x] `python3 scripts/generate_plugins.py --check` passes
- [x] `python3 scripts/generate_plugins.py` regenerates `.claude-plugin/marketplace.json` cleanly, with `caveman`/`ponytail` as external GitHub sources and no local `dist/claude-code` or `dist/agy` output for them
- [x] `/plugin marketplace update` then `/plugin install caveman@rootiest-ai` / `/plugin install ponytail@rootiest-ai` in a live Claude Code session
Lets a plugin.json declare an `external` target->source map instead of
carrying local content, so the generator emits that Claude Code
marketplace source (e.g. a GitHub repo) verbatim rather than a local
dist path. Adds caveman and ponytail as external entries, installed
straight from their upstream repos with nothing vendored or copied.
Claude Code-only for now — agy has no equivalent external-source
mechanism, and both plugins' hooks/MCP assume Claude Code's runtime.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014YVWWAnvR5TDQzmfY3RXG9
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
github-mcp/gitea-mcpplugins, and adds atargetsrestriction (whole-plugin and per-skill) so a plugin/skill can be scoped to justclaude-codeoragy.externalfield toplugin.json: a target-keyed map of Claude Code marketplacesourceobjects. When set, the generator emits that source (e.g. a GitHub repo) verbatim inmarketplace.jsoninstead of a local./dist/...path — nothing is copied or vendored, and installs always fetch the current upstream version.caveman(JuliusBrussee/caveman) andponytail(DietrichGebert/ponytail) as external-source plugins, installable through this same marketplace. Claude Code-only — agy has no external-source mechanism, and both plugins' hooks/MCP assume Claude Code's plugin runtime.Test plan
python3 scripts/generate_plugins.py --checkpassespython3 scripts/generate_plugins.pyregenerates.claude-plugin/marketplace.jsoncleanly, withcaveman/ponytailas external GitHub sources and no localdist/claude-codeordist/agyoutput for them/plugin marketplace updatethen/plugin install caveman@rootiest-ai//plugin install ponytail@rootiest-aiin a live Claude Code session