diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 688771a0..89f22224 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,6 +6,12 @@ "name": "Anthropic", "email": "support@anthropic.com" }, + "renames": { + "adlc": "agentforce-adlc", + "airwallex": "airwallex-agentos", + "convex-backend": "convex", + "vals": "valtown" + }, "plugins": [ { "name": "42crunch-api-security-testing", @@ -19,7 +25,7 @@ "url": "https://github.com/42Crunch-AI/claude-plugins.git", "path": "plugins/api-security-testing", "ref": "v1.5.5", - "sha": "0f325999a7106eadb2d0ecbcccabf6c12dc06aef" + "sha": "2ed4978117324165d07f43681f9a908fddefea47" }, "homepage": "https://42crunch.com" }, @@ -191,7 +197,7 @@ "source": { "source": "url", "url": "https://github.com/apollographql/skills.git", - "sha": "7a76acd4b60c41a33cbc4126c98177e51b27b2f3" + "sha": "7df6a608dd71f937e664b19183fb60d101bb13a1" }, "homepage": "https://www.apollographql.com" }, @@ -414,7 +420,7 @@ "url": "https://github.com/awslabs/agent-plugins.git", "path": "plugins/aws-transform", "ref": "main", - "sha": "283d86f528c2d2269928ab77f707e659a7e597fe" + "sha": "23dc619d35f848fd03b12d45d0e16c191d40d1e6" }, "homepage": "https://github.com/awslabs/agent-plugins" }, @@ -447,7 +453,7 @@ "source": { "source": "url", "url": "https://github.com/base44/skills.git", - "sha": "1463369a8664bb3dbf127d041a710dd7a085f4fa" + "sha": "035970c832a6be98a54e7a8d25d3e9111135d205" }, "homepage": "https://docs.base44.com" }, @@ -567,7 +573,7 @@ "url": "https://github.com/carta/plugins.git", "path": "plugins/carta-cap-table", "ref": "main", - "sha": "0f7d5f3f1c71ae5d5715494621764fda0fbb0776" + "sha": "74dcec2b733f150c11b6d7c59b7a37e63da79a82" }, "homepage": "https://carta.com" }, @@ -599,7 +605,7 @@ "url": "https://github.com/carta/plugins.git", "path": "plugins/carta-investors", "ref": "main", - "sha": "0f7d5f3f1c71ae5d5715494621764fda0fbb0776" + "sha": "e32d1707c89887768fd8462c3942865ae3b7e343" }, "homepage": "https://carta.com" }, @@ -626,7 +632,7 @@ "source": { "source": "url", "url": "https://github.com/ChromeDevTools/chrome-devtools-mcp.git", - "sha": "cf003051706619ca084235020f62a4d6902fb226" + "sha": "913308263bdc8042af74924b68dc39a374ad071d" }, "homepage": "https://github.com/ChromeDevTools/chrome-devtools-mcp" }, @@ -720,7 +726,7 @@ "source": { "source": "url", "url": "https://github.com/ClickHouse/clickhouse-claude-code-plugin.git", - "sha": "ecbd47627d7e7b3de15b297b91e0abf3e6ebc746" + "sha": "e98bda0a36613cd220243a83535dcc37e14295ab" }, "homepage": "https://github.com/ClickHouse/clickhouse-claude-code-plugin" }, @@ -734,7 +740,7 @@ "source": { "source": "url", "url": "https://github.com/ClickHouse/agent-skills.git", - "sha": "faa5b11bfa6c1b615cfff0ac017c73b8c255a3f7" + "sha": "71cc41a35ab55d508bed1ab24699ef03da687eae" }, "homepage": "https://clickhouse.com" }, @@ -920,7 +926,7 @@ "source": { "source": "url", "url": "https://github.com/get-convex/convex-backend-skill.git", - "sha": "1c8025f558df0cd3d2f650bca20f1c93d3ab2aa3" + "sha": "884c2c222d473fb9ffdf1ceb6d842c4d77208d93" }, "homepage": "https://github.com/get-convex/convex-backend-skill", "keywords": [ @@ -997,7 +1003,7 @@ "source": { "source": "url", "url": "https://github.com/dash0hq/dash0-agent-plugin.git", - "sha": "28a71f7f0d449197336b941b7186e59d3a5acfa1" + "sha": "f9d9607c86146158bf6bcb1040be3a5578922c2c" }, "homepage": "https://dash0.com/" }, @@ -1061,7 +1067,7 @@ "url": "https://github.com/databricks/databricks-agent-skills.git", "path": "plugins/databricks/claude", "ref": "main", - "sha": "917055a6e1d82860a98a685f5c15ee9ea57b0f53" + "sha": "579e6bb4dc199f5be59c8597dcd142cbf9c0d036" }, "homepage": "https://developers.databricks.com/" }, @@ -1276,7 +1282,7 @@ "url": "https://github.com/expo/skills.git", "path": "plugins/expo", "ref": "main", - "sha": "1f9951197dc6acff61c4f0f19521fa0e62c33e51" + "sha": "06fcc81d979c015fc0e2ff55b5b733021f04ec3e" }, "homepage": "https://github.com/expo/skills/blob/main/plugins/expo/README.md" }, @@ -1292,7 +1298,7 @@ "source": { "source": "url", "url": "https://github.com/fastly/fastly-agent-toolkit.git", - "sha": "9a273f0b2f7a496355b6ec30c1b34614a80bf805" + "sha": "ea3623d5facc7053eaa802f5fc483dd7121a39aa" }, "homepage": "https://github.com/fastly/fastly-agent-toolkit/blob/main/README.md" }, @@ -1313,7 +1319,7 @@ "source": { "source": "url", "url": "https://github.com/voxel51/fiftyone-skills.git", - "sha": "d34365bd643b889d67dafcc120a8c525699fb54c" + "sha": "b64f982e06a2831f934ab6c42298d4d1c4fe9852" }, "homepage": "https://docs.voxel51.com/" }, @@ -1324,7 +1330,7 @@ "source": { "source": "url", "url": "https://github.com/figma/mcp-server-guide.git", - "sha": "bea8bea5f676ab2bf76fa822b82f50b66653c098" + "sha": "a72c41ef5cd8ea88c96dd4b2e73311463b1cf6bc" }, "homepage": "https://github.com/figma/mcp-server-guide" }, @@ -1537,7 +1543,7 @@ "source": { "source": "url", "url": "https://github.com/huggingface/skills.git", - "sha": "35e8c35a1ae5b462e0bb23d444d25569c3bb6700" + "sha": "2aad4f7a8d2d8360cf65364291489e65370caad8" }, "homepage": "https://github.com/huggingface/skills.git" }, @@ -1551,7 +1557,7 @@ "source": { "source": "url", "url": "https://github.com/hunter-io/claude-plugin.git", - "sha": "64ca3082f6ab1f1a14540a94e7d522692928be99" + "sha": "c13945a47acd6ec9ea7ed9860af110b98b357189" }, "homepage": "https://hunter.io" }, @@ -1565,7 +1571,7 @@ "source": { "source": "url", "url": "https://github.com/heygen-com/hyperframes.git", - "sha": "a7c3cc7d689b13c5bb96559f9bad713205edb194" + "sha": "3a717fa71997477c6f81dce7c9f2e63a4ad675ed" }, "homepage": "https://hyperframes.heygen.com" }, @@ -1636,7 +1642,7 @@ "source": "github", "repo": "jfrog/claude-plugin", "commit": "259c8e718266c16e99b4f30ae9b1ed0f9f00d98d", - "sha": "abadbc634f2acb10387737c4116defaabecec2da" + "sha": "c6967bd11059f10e7c301922d2a411f57126a25f" }, "homepage": "https://jfrog.com" }, @@ -1980,7 +1986,7 @@ "source": { "source": "url", "url": "https://github.com/mergifyio/mergify-cli.git", - "sha": "4efb5cbc393e5e10a0c27aff5a854c187e5e5ac9" + "sha": "204649e633454e4f197e06bb71f5b6000b62fde5" }, "homepage": "https://mergify.com" }, @@ -2007,7 +2013,7 @@ "url": "https://github.com/awslabs/startups.git", "path": "migrate/plugins/migration-to-aws", "ref": "main", - "sha": "5c85895eef7fab5bc0839a0704f940a726c55b10" + "sha": "cc6609038a5cb89c1b85f1f97283439eb0ee256b" }, "homepage": "https://github.com/awslabs/startups" }, @@ -2158,7 +2164,7 @@ "url": "https://github.com/NVIDIA/skills.git", "path": "plugins/nvidia-skills", "ref": "main", - "sha": "55f8f7a5a4d77ed14f57e74c786fa04d193b6541" + "sha": "1f01acfe1aece58ba95d124eafdfb5bb93523db6" }, "homepage": "https://github.com/NVIDIA/skills" }, @@ -2236,7 +2242,7 @@ "url": "https://github.com/growthxai/output.git", "path": "coding_assistants/claude/plugins/outputai", "ref": "main", - "sha": "38ae07ca87a97251f6e44886c4f3737c06960546" + "sha": "9d7a8708d9f9d13f91895263f90f583568239828" }, "homepage": "https://output.ai" }, @@ -2309,7 +2315,7 @@ "source": { "source": "url", "url": "https://github.com/pixeltable/pixeltable-skill.git", - "sha": "729175dbb2a144bb6529fb93ac696bad40a1f09d" + "sha": "933c15b55a49aa375ce0300c074bdf43b68571b9" }, "homepage": "https://docs.pixeltable.com" }, @@ -2532,7 +2538,7 @@ "url": "https://github.com/railwayapp/railway-skills.git", "path": "plugins/railway", "ref": "main", - "sha": "fb1956d20ffae1a5a7ddc2673f58f9bfa15fce93" + "sha": "770b6d16afd8257cc968a0ada598a2e52ecc8a9d" }, "homepage": "https://docs.railway.com/ai/claude-code-plugin" }, @@ -2555,7 +2561,7 @@ "source": "url", "url": "https://github.com/RevenueCat/rc-claude-code-plugin.git", "path": "revenuecat", - "sha": "7d922e9d756dc330a369a761345f88495c3a5a1f" + "sha": "f9c61f12e434b3933f556a5ca169eff20cb27094" }, "homepage": "https://www.revenuecat.com" }, @@ -2621,7 +2627,7 @@ "source": "url", "url": "https://github.com/RevenueCat/rc-claude-code-plugin.git", "path": "revenuecat", - "sha": "7d922e9d756dc330a369a761345f88495c3a5a1f" + "sha": "f9c61f12e434b3933f556a5ca169eff20cb27094" }, "homepage": "https://www.revenuecat.com" }, @@ -2768,7 +2774,7 @@ "url": "https://github.com/SAP/open-ux-tools.git", "path": "packages/fiori-mcp-server", "ref": "main", - "sha": "c5ecab3c1fefedc12ec39e326c658a15adee1877" + "sha": "a0af1f0e70969f39fff4260531d4ddd0cf63bd69" }, "homepage": "https://github.com/SAP/open-ux-tools/tree/main/packages/fiori-mcp-server" }, @@ -2867,7 +2873,7 @@ "url": "https://github.com/getsentry/cli.git", "path": "plugins/sentry-cli", "ref": "main", - "sha": "332b27f562b4f992133fb39e76304c1327706668" + "sha": "ed185afd09e9eef02f2f4e4d9d90cc9a64a7c00b" }, "homepage": "https://sentry.io" }, @@ -2954,7 +2960,7 @@ "source": { "source": "url", "url": "https://github.com/slackapi/slack-mcp-plugin.git", - "sha": "44af86dab9ccc227a6ae6c4371727185cf530e6e" + "sha": "6af155a7082b881ba9f80bc86b449b2b7f688393" }, "homepage": "https://github.com/slackapi/slack-mcp-plugin/tree/main" }, @@ -2984,7 +2990,7 @@ "source": { "source": "url", "url": "https://github.com/SonarSource/sonarqube-agent-plugins.git", - "sha": "5b4783d8749074e8e0c26ca8590990b1489771eb" + "sha": "63c286b56fe9a6b142c117bc347d1a1bd5abadff" }, "homepage": "https://www.sonarsource.com" }, @@ -3044,7 +3050,7 @@ "url": "https://github.com/stripe/ai.git", "path": "providers/claude/plugin", "ref": "main", - "sha": "b2157ec24d37736756cb077f0681f366f5aed591" + "sha": "b8d7e28d0cc5690fb0c0be54c84cbfdd7df6e4cd" }, "homepage": "https://github.com/stripe/ai/tree/main/providers/claude/plugin" }, @@ -3078,7 +3084,7 @@ "source": { "source": "url", "url": "https://github.com/obra/superpowers.git", - "sha": "f268f7c953744036f0fa7e9d4b73535c04e57cb8" + "sha": "d884ae04edebef577e82ff7c4e143debd0bbec99" }, "homepage": "https://github.com/obra/superpowers.git" }, @@ -3126,7 +3132,7 @@ "source": { "source": "url", "url": "https://github.com/JetBrains/teamcity-cli.git", - "sha": "32dfd91cc8a9b6d44f47896c1ef1b183ab58e973" + "sha": "880cabdcac732e5f0accfe8f0af37dbd5829ca1b" }, "homepage": "https://www.jetbrains.com/teamcity/" }, @@ -3219,7 +3225,7 @@ "url": "https://github.com/UI5/plugins-coding-agents.git", "path": "plugins/ui5", "ref": "main", - "sha": "d1e3a43fa80ef160cb42689b88d665e25a5a81a1" + "sha": "c61e0b7fc7e38168f1df4f705f54c57e59d44c98" }, "homepage": "https://github.com/UI5/plugins-coding-agents" }, @@ -3377,7 +3383,7 @@ "source": { "source": "url", "url": "https://github.com/wix/skills.git", - "sha": "483d35bb7bf5e59268d938cc03802cac9a324508" + "sha": "8efcbffad6d72ef66b7c903c567017e177df61c4" }, "homepage": "https://dev.wix.com/docs/wix-cli/guides/development/about-wix-skills" }, @@ -3512,7 +3518,7 @@ "source": { "source": "url", "url": "https://github.com/zytedata/claude-skills.git", - "sha": "7f9d853e65c917692142c5813b7442787544ca95" + "sha": "adb02df6aca7bce7c4d8614e1dd24ea1682e8ad5" }, "homepage": "https://www.zyte.com" } diff --git a/.github/workflows/validate-licenses.yml b/.github/workflows/validate-licenses.yml index f882df6e..8376578c 100644 --- a/.github/workflows/validate-licenses.yml +++ b/.github/workflows/validate-licenses.yml @@ -22,10 +22,14 @@ jobs: run: | set -euo pipefail missing=() + wrong_content=() for plugin_dir in plugins/*/; do plugin="${plugin_dir%/}" if [[ ! -f "$plugin/LICENSE" ]]; then missing+=("$plugin") + elif ! grep -q "Apache License" "$plugin/LICENSE" || \ + ! grep -q "Version 2.0" "$plugin/LICENSE"; then + wrong_content+=("$plugin") fi done if [[ "${#missing[@]}" -gt 0 ]]; then @@ -35,4 +39,11 @@ jobs: done exit 1 fi - echo "All $(ls -d plugins/*/ | wc -l) plugins have a LICENSE file." + if [[ "${#wrong_content[@]}" -gt 0 ]]; then + echo "::error::The following plugins have a LICENSE file that does not contain Apache 2.0 text:" + for p in "${wrong_content[@]}"; do + echo " - $p" + done + exit 1 + fi + echo "All $(ls -d plugins/*/ | wc -l) plugins have an Apache 2.0 LICENSE file." diff --git a/README.md b/README.md index a6c23417..43104e24 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,21 @@ plugin-name/ └── README.md # Documentation ``` +## Plugin names are immutable + +The `name` field in a marketplace entry is an **immutable slug**. Once a plugin has been published, its `name` must not change — users have it installed under that slug, and renaming it breaks their install with a `plugin-not-found` error. + +- To change how a plugin is labeled in the UI, set or update `displayName` instead. +- If a rename is genuinely unavoidable, add an entry to the top-level `renames` map in `.claude-plugin/marketplace.json` so existing installs auto-migrate: + +```json +"renames": { + "old-name": "new-name" +} +``` + +The Claude Code plugin loader reads this map and transparently rewrites the old slug to the new one on the user's next sync. + ## Skill-bundle plugins When a plugin's source repository ships skills (`SKILL.md` files) without a `.claude-plugin/plugin.json` manifest, the marketplace entry can declare the skills directly using `strict: false` and an explicit `skills` array.