README invites external PRs that CI closes automatically

Author: Dharundp6Created Sep 17, 2026Updated Sep 17, 2026

The contradiction

README.md:80 says:

Plugins are just markdown files. Fork the repo, make your changes, and submit a PR.

There is no CONTRIBUTING.md and no mention of membership. But .github/workflows/close-external-prs.yml runs on pull_request_target: [opened] and closes any PR from a non-member with:

Thanks for your interest! This repo only accepts contributions from Anthropic team members. If you'd like to submit a plugin to the marketplace, please submit your plugin here.

The only external PR that survives is one touching only .claude-plugin/marketplace.json, additions-only, whose source.url already backs a live plugin here. So the README's instruction succeeds for almost nobody who follows it.

It is already costing people work

  • #1180 — opened 17:36:37, closed 17:36:51. Fourteen seconds, for a 13-file change.
  • #232 — "Review request: PR #231 — add markifact entry" (open)
  • #183 — "Review request: PR #182 — refresh adspirer-ads-agent entry" (open)

The last two are contributors who followed the README, had the PR auto-closed, and then filed an issue asking for a review — so the gap is also generating issue traffic that the submission flow would have absorbed.

At 24k+ stars this is a fair amount of avoidable effort, and the auto-close message is the first time a contributor learns the policy.

Suggested fix

The bot's message already contains the right destination, so the README just needs to agree with it. Something like:

markdown
## Contributing

Plugins are just markdown files. To propose one for the marketplace, submit it
[here](https://clau.de/plugin-directory-submission) — pull requests from outside
the Anthropic org are closed automatically.

Anthropic team members: fork the repo, make your changes, and submit a PR.

Happy to open the PR if it helps, though as written the guard would close that too — it touches a file other than marketplace.json.

Not a bug, noted in passing

While confirming the above I checked the "url": "" entries across 14 .mcp.json files, which #1180 was removing. Those look intentional — check-mcp-urls.yml filters them deliberately ("Empty URLs are placeholders awaiting config and would false-fail"), and endpoints like Snowflake and Databricks are per-account. Mentioning it so the idea is not retried.

Source: anthropics/knowledge-work-plugins