mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-06-26 13:53:29 +00:00
Compare commits
190 Commits
daisy/plug
...
bump/chrom
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a39a8cae2 | ||
|
|
82f22ec4f0 | ||
|
|
92fcf8973b | ||
|
|
f2e1d01b77 | ||
|
|
b6d4f81be3 | ||
|
|
50c34b2478 | ||
|
|
a30e0614d3 | ||
|
|
c63064637d | ||
|
|
d1410844ad | ||
|
|
89aae89012 | ||
|
|
c8e9219efb | ||
|
|
6b93bc00d3 | ||
|
|
16c1372836 | ||
|
|
ff23096dcd | ||
|
|
06c6d8878b | ||
|
|
324d8ebe73 | ||
|
|
c0236a0ffd | ||
|
|
a8237e1537 | ||
|
|
0dcbdd33a2 | ||
|
|
c39d4bb19a | ||
|
|
286e9f2217 | ||
|
|
28112e303c | ||
|
|
805cb8ec16 | ||
|
|
02540bfb49 | ||
|
|
d96849b22e | ||
|
|
60d98420a3 | ||
|
|
0c47f2e0b8 | ||
|
|
ec08d81de6 | ||
|
|
3b5666f0aa | ||
|
|
7a5090872c | ||
|
|
9679408140 | ||
|
|
8b6c3cc8f7 | ||
|
|
a837737d47 | ||
|
|
8ac5884387 | ||
|
|
d5f8b26fe2 | ||
|
|
da79cb089b | ||
|
|
ecdac18ae0 | ||
|
|
26461e1116 | ||
|
|
976a80e08f | ||
|
|
38cd9fc7c2 | ||
|
|
6e2d1f2f91 | ||
|
|
4976ad9034 | ||
|
|
28280efa24 | ||
|
|
b0aea92dae | ||
|
|
8d6a340ca3 | ||
|
|
cac84f53c5 | ||
|
|
9e9d4df139 | ||
|
|
631ffbe48c | ||
|
|
4c6fd97ad1 | ||
|
|
5561261ae5 | ||
|
|
ab02601dee | ||
|
|
946504a56d | ||
|
|
f8b2912971 | ||
|
|
f7b31235e6 | ||
|
|
5fada75bc8 | ||
|
|
e573c17502 | ||
|
|
63de38a1b8 | ||
|
|
6a7cabdbf0 | ||
|
|
78e25dccd3 | ||
|
|
d5234154b1 | ||
|
|
522134cd40 | ||
|
|
457bc2c1b9 | ||
|
|
b0be6e6828 | ||
|
|
1f602fa6d1 | ||
|
|
46d87e5175 | ||
|
|
9ead327f68 | ||
|
|
e671485536 | ||
|
|
8a724392b2 | ||
|
|
ba406c6f65 | ||
|
|
12834e9052 | ||
|
|
8add1ce0a9 | ||
|
|
b859f71861 | ||
|
|
3ea5f7e33e | ||
|
|
07004dd61a | ||
|
|
8f97af62cf | ||
|
|
9b9751d445 | ||
|
|
fd3242c6f3 | ||
|
|
85c3c0e7b9 | ||
|
|
336797ce0e | ||
|
|
5141495817 | ||
|
|
bea10e65c8 | ||
|
|
93cfa62d5e | ||
|
|
7d6c6dfd99 | ||
|
|
b3dc215fe6 | ||
|
|
d5643dbfc0 | ||
|
|
1a8324639e | ||
|
|
8deb7d0a77 | ||
|
|
ba72289351 | ||
|
|
628d90943e | ||
|
|
4e06383c92 | ||
|
|
99be430f05 | ||
|
|
2362355600 | ||
|
|
00c0763bb3 | ||
|
|
89ba2b0644 | ||
|
|
893c142cc6 | ||
|
|
47073c0247 | ||
|
|
bb335391eb | ||
|
|
c395fbb778 | ||
|
|
ef5d2c6649 | ||
|
|
76e00cab5f | ||
|
|
f2720286d2 | ||
|
|
5f7b3413b7 | ||
|
|
317e3cf6c4 | ||
|
|
e15e6cab6f | ||
|
|
620d9548ab | ||
|
|
efdbca3688 | ||
|
|
591106e702 | ||
|
|
1cf447a599 | ||
|
|
37c6f155c8 | ||
|
|
c43525f424 | ||
|
|
c6eaeb3ee3 | ||
|
|
7551464ff6 | ||
|
|
1eb8a0906e | ||
|
|
47ff4b6c1e | ||
|
|
720ba8d2a3 | ||
|
|
4302b1ce13 | ||
|
|
05700036f7 | ||
|
|
601a4f2069 | ||
|
|
a3d890fdf5 | ||
|
|
2de8b09ef5 | ||
|
|
899abe1769 | ||
|
|
3535a16aaf | ||
|
|
1d3abe4ae4 | ||
|
|
149ffba2a5 | ||
|
|
d64cc112b0 | ||
|
|
d2bcf3ca07 | ||
|
|
014eff3c62 | ||
|
|
f2503ec9f4 | ||
|
|
399e5acc23 | ||
|
|
4ce8d2bed7 | ||
|
|
78c9b88b10 | ||
|
|
3910ab51ae | ||
|
|
b549903c73 | ||
|
|
78f1ab6e2f | ||
|
|
68c1a28ab2 | ||
|
|
e43c1b1b78 | ||
|
|
03a6e7ae0e | ||
|
|
1e98cf0d71 | ||
|
|
96c9d519d2 | ||
|
|
98924db712 | ||
|
|
bcea77bd1f | ||
|
|
526f3a2b49 | ||
|
|
87c79bc44e | ||
|
|
dcfefd6b48 | ||
|
|
a38c460eeb | ||
|
|
c1afb6c6a9 | ||
|
|
45af07f34c | ||
|
|
63b2cc463b | ||
|
|
41f88f46f9 | ||
|
|
f57f280508 | ||
|
|
b8c05307db | ||
|
|
1bc468a4bf | ||
|
|
e296c56607 | ||
|
|
cd1c53bf2b | ||
|
|
b0df311751 | ||
|
|
c39351c8e9 | ||
|
|
72cca38954 | ||
|
|
67f69b4585 | ||
|
|
74f05bf702 | ||
|
|
223a74b65a | ||
|
|
39f01a4aa7 | ||
|
|
2ee206dd1d | ||
|
|
f2e103cc06 | ||
|
|
b377dc8a83 | ||
|
|
fc87dcd992 | ||
|
|
338f5bedca | ||
|
|
c7c2448b81 | ||
|
|
c0ce8baa8c | ||
|
|
cbe89abd5e | ||
|
|
fdda138ba1 | ||
|
|
5e758b6ad3 | ||
|
|
ed8a949295 | ||
|
|
a80002507f | ||
|
|
5cb4213291 | ||
|
|
12f9553ce3 | ||
|
|
32280220bf | ||
|
|
f7d6c3202f | ||
|
|
e6474e1e2b | ||
|
|
d2fe0eaa86 | ||
|
|
4fbb534b72 | ||
|
|
67c0d730ff | ||
|
|
af9446eb41 | ||
|
|
6e8fdfecb1 | ||
|
|
d665e5fbb0 | ||
|
|
1d175aeb85 | ||
|
|
e37b854ac6 | ||
|
|
06e6fde621 | ||
|
|
25b13ebd72 | ||
|
|
f9bf8f4469 | ||
|
|
711d3939d2 |
@@ -6,12 +6,6 @@
|
||||
"name": "Anthropic",
|
||||
"email": "support@anthropic.com"
|
||||
},
|
||||
"renames": {
|
||||
"adlc": "agentforce-adlc",
|
||||
"airwallex": "airwallex-agentos",
|
||||
"convex-backend": "convex",
|
||||
"vals": "valtown"
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "42crunch-api-security-testing",
|
||||
@@ -63,7 +57,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/SalesforceAIResearch/agentforce-adlc.git",
|
||||
"sha": "772aaa20ebdd97736a94ebcd9d60fd3949342b60"
|
||||
"sha": "2b2f59d9f29d3dae3a4bec0b953237f03bbba7af"
|
||||
},
|
||||
"homepage": "https://github.com/SalesforceAIResearch/agentforce-adlc"
|
||||
},
|
||||
@@ -83,7 +77,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/AikidoSec/aikido-claude-plugin.git",
|
||||
"sha": "01e8cf542500e579cff948a0fa0365e4f819d7b4"
|
||||
"sha": "fbe11e287175e5eda448516dd2f741a63b276514"
|
||||
},
|
||||
"homepage": "https://github.com/AikidoSec/aikido-claude-plugin"
|
||||
},
|
||||
@@ -129,7 +123,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/alloydb.git",
|
||||
"sha": "98bdfce9ab49622f5f4b1428130cc79feb37d93e"
|
||||
"sha": "2bc309c97558356ca1599c29bef9c17bf10d45e4"
|
||||
},
|
||||
"homepage": "https://cloud.google.com/alloydb"
|
||||
},
|
||||
@@ -143,7 +137,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/alloydb-omni.git",
|
||||
"sha": "23f9166ba3950728fb2c48390b2e35cc3ddd3b35"
|
||||
"sha": "da3dd45c7098f7fe11f95c01ae6ce8125459b534"
|
||||
},
|
||||
"homepage": "https://github.com/gemini-cli-extensions/alloydb-omni"
|
||||
},
|
||||
@@ -229,7 +223,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/astronomer/agents.git",
|
||||
"sha": "da0048c49f88335c9d9cc617837e182ba04a2ab5"
|
||||
"sha": "d33a14ddd4cd8045f90acfe49d2552120feeeced"
|
||||
},
|
||||
"homepage": "https://github.com/astronomer/agents"
|
||||
},
|
||||
@@ -250,7 +244,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/atlassian/atlassian-mcp-server.git",
|
||||
"sha": "f4911dba81f25782c88815b03deabf444cd46e0d"
|
||||
"sha": "55cfdc55afed1e273354f840a238421fbd9eee86"
|
||||
},
|
||||
"homepage": "https://github.com/atlassian/atlassian-mcp-server"
|
||||
},
|
||||
@@ -282,7 +276,7 @@
|
||||
"url": "https://github.com/auth0/agent-skills.git",
|
||||
"path": "plugins/auth0",
|
||||
"ref": "main",
|
||||
"sha": "838a181a235d8e563b437555794ddfe9bd60284b"
|
||||
"sha": "3e3a5d84fe922378bd2c2eafb7f7986759e3c87e"
|
||||
},
|
||||
"homepage": "https://auth0.com"
|
||||
},
|
||||
@@ -343,7 +337,7 @@
|
||||
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
|
||||
"path": "plugins/aws-core",
|
||||
"ref": "main",
|
||||
"sha": "ff1dc6f45f5203147f6cd52662cc74ded4bb0825"
|
||||
"sha": "7898a91483218173d096db3de6892c2dc545d160"
|
||||
},
|
||||
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
|
||||
},
|
||||
@@ -359,7 +353,7 @@
|
||||
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
|
||||
"path": "plugins/aws-data-analytics",
|
||||
"ref": "main",
|
||||
"sha": "ff1dc6f45f5203147f6cd52662cc74ded4bb0825"
|
||||
"sha": "49ca75209219a89ac43690d6ca0a59d976933ee8"
|
||||
},
|
||||
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
|
||||
},
|
||||
@@ -388,7 +382,7 @@
|
||||
"url": "https://github.com/awslabs/agent-plugins.git",
|
||||
"path": "plugins/aws-serverless",
|
||||
"ref": "main",
|
||||
"sha": "c65ee436b0db77bb75d380aef6fbdc9b114edf2a"
|
||||
"sha": "ba79e65ab968ed456b3cbee5f2d851d58239e864"
|
||||
},
|
||||
"homepage": "https://github.com/awslabs/agent-plugins"
|
||||
},
|
||||
@@ -404,7 +398,7 @@
|
||||
"url": "https://github.com/awslabs/startups.git",
|
||||
"path": "advisor/plugins/aws-startup-advisor",
|
||||
"ref": "main",
|
||||
"sha": "2e1d603a43b241f13ed40e4d1762f5e4ed744ecc"
|
||||
"sha": "b533244f9956412964fbd33c869c100f90b332ef"
|
||||
},
|
||||
"homepage": "https://github.com/awslabs/startups"
|
||||
},
|
||||
@@ -431,7 +425,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/microsoft/azure-skills.git",
|
||||
"sha": "206ad20914b60368f907ab84f64cb4aa50bbfb20"
|
||||
"sha": "2cd48ca625cddcc1d377d2861fbddd54417c70cc"
|
||||
},
|
||||
"homepage": "https://github.com/microsoft/azure-skills"
|
||||
},
|
||||
@@ -483,7 +477,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/bigquery-data-analytics.git",
|
||||
"sha": "4e64d8488e95697a348b88b8ee47f0e676b2544b"
|
||||
"sha": "89f3048eef8c808d1b3c53c90348b18c9a73055c"
|
||||
},
|
||||
"homepage": "https://github.com/gemini-cli-extensions/bigquery-data-analytics"
|
||||
},
|
||||
@@ -499,7 +493,7 @@
|
||||
"url": "https://github.com/boltz-bio/boltz-api-skills.git",
|
||||
"path": "plugins/boltz",
|
||||
"ref": "main",
|
||||
"sha": "59c4c2868b8ebbd1eca1f4b94bb99bf96220d15e"
|
||||
"sha": "70e480ebb14baecfc4456b49eb8b724611470b7c"
|
||||
},
|
||||
"homepage": "https://boltz.bio"
|
||||
},
|
||||
@@ -527,7 +521,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/brightdata/skills.git",
|
||||
"sha": "8d427e9871566efe3f0a1c8888f98b6fe8288831"
|
||||
"sha": "e825f02fbcd7a89087fd1053a57ddcd45113370f"
|
||||
},
|
||||
"homepage": "https://docs.brightdata.com"
|
||||
},
|
||||
@@ -541,7 +535,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/buildkite/skills.git",
|
||||
"sha": "ffffb1ed6c82a3b170433572b93d85b764c91bab"
|
||||
"sha": "6ab569537d836b66edcc52d61c566bdfa670a7c2"
|
||||
},
|
||||
"homepage": "https://buildkite.com"
|
||||
},
|
||||
@@ -557,7 +551,7 @@
|
||||
"url": "https://github.com/carta/plugins.git",
|
||||
"path": "plugins/carta-cap-table",
|
||||
"ref": "main",
|
||||
"sha": "62a5752861040f198e2c646761618cfedc2657b4"
|
||||
"sha": "d73954d3d9ce1e3fce1ec2b9ee6819922dd539e3"
|
||||
},
|
||||
"homepage": "https://carta.com"
|
||||
},
|
||||
@@ -573,7 +567,7 @@
|
||||
"url": "https://github.com/carta/plugins.git",
|
||||
"path": "plugins/carta-crm",
|
||||
"ref": "main",
|
||||
"sha": "62a5752861040f198e2c646761618cfedc2657b4"
|
||||
"sha": "d73a3615864a5590ad6105df1b3e1b26324d1813"
|
||||
},
|
||||
"homepage": "https://carta.com"
|
||||
},
|
||||
@@ -589,7 +583,7 @@
|
||||
"url": "https://github.com/carta/plugins.git",
|
||||
"path": "plugins/carta-investors",
|
||||
"ref": "main",
|
||||
"sha": "bb45f4b388a0d96366b137a8c47d03c45434d1fa"
|
||||
"sha": "4bd05d342e5908b9e246c4806c92ffa1872b22e5"
|
||||
},
|
||||
"homepage": "https://carta.com"
|
||||
},
|
||||
@@ -616,7 +610,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/ChromeDevTools/chrome-devtools-mcp.git",
|
||||
"sha": "52cf8c40081567a200442ab12fad43edb550b0d4"
|
||||
"sha": "e5bd334c97b4f25207cad586684cca8208f1657e"
|
||||
},
|
||||
"homepage": "https://github.com/ChromeDevTools/chrome-devtools-mcp"
|
||||
},
|
||||
@@ -632,7 +626,7 @@
|
||||
"url": "https://github.com/circlefin/skills.git",
|
||||
"path": "plugins/circle",
|
||||
"ref": "master",
|
||||
"sha": "8ee9281f6e5ab737236ce969348adc463e6c2f79"
|
||||
"sha": "c7d269a2025e26410e0e23fb5a73c769dc07d088"
|
||||
},
|
||||
"homepage": "https://www.circle.com"
|
||||
},
|
||||
@@ -738,7 +732,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/cloud-sql-mysql.git",
|
||||
"sha": "4508637f66362b70b75ea6e40d41a7ef8efabcc6"
|
||||
"sha": "fda5aac59a50258d61f115f4962325b7ca8c3b36"
|
||||
},
|
||||
"homepage": "https://github.com/gemini-cli-extensions/cloud-sql-mysql"
|
||||
},
|
||||
@@ -752,7 +746,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/cloud-sql-postgresql.git",
|
||||
"sha": "849ce3fdc200219d2228380d2112f2bae3abc81f"
|
||||
"sha": "38ab73d23d58342ea046d1163ddc9f1a83d13303"
|
||||
},
|
||||
"homepage": "https://cloud.google.com/sql"
|
||||
},
|
||||
@@ -766,7 +760,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/cloud-sql-sqlserver.git",
|
||||
"sha": "e55c1ff46d92dfcfedc6cf1139cf5eb5beb9f02d"
|
||||
"sha": "5069d84c78ccdc6a0177f2c7a7849b9708bde425"
|
||||
},
|
||||
"homepage": "https://github.com/gemini-cli-extensions/cloud-sql-sqlserver"
|
||||
},
|
||||
@@ -775,7 +769,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/cloudflare/skills.git",
|
||||
"sha": "ffcc622bf112eccc49c4b433faa5dd28e9ede2ea"
|
||||
"sha": "27ce0c0e159225caa7ed30ebefd4107aa6c52497"
|
||||
},
|
||||
"description": "Skills for the Cloudflare developer platform: Workers, Durable Objects, Agents SDK, MCP servers, Wrangler CLI, and web performance.",
|
||||
"category": "deployment",
|
||||
@@ -845,7 +839,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/coderabbitai/skills.git",
|
||||
"sha": "a81eb76a1539e4a3f2b5c6fc133849124e72d303"
|
||||
"sha": "2fd091d9582deccf19929e21f934921d0e8f686e"
|
||||
},
|
||||
"homepage": "https://github.com/coderabbitai/skills"
|
||||
},
|
||||
@@ -859,7 +853,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/CodSpeedHQ/codspeed.git",
|
||||
"sha": "90c83f42f4269f88046109df120046f677b9d873"
|
||||
"sha": "7ce2c9823f67522a81572814c6c8bebab0ca5687"
|
||||
},
|
||||
"homepage": "https://codspeed.io"
|
||||
},
|
||||
@@ -884,7 +878,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/spotify/confidence-ai-plugins.git",
|
||||
"sha": "01d1198bae6032854c192b7232af563698768777"
|
||||
"sha": "136a99ec77041e07d2757030ed27c0437040426d"
|
||||
},
|
||||
"homepage": "https://confidence.spotify.com"
|
||||
},
|
||||
@@ -910,7 +904,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/get-convex/convex-backend-skill.git",
|
||||
"sha": "b04d9d3c83bf8446302be95e12cb834fba6fe622"
|
||||
"sha": "bb4275f38abc4aa7196b936be756d2811dc4b4fc"
|
||||
},
|
||||
"homepage": "https://github.com/get-convex/convex-backend-skill",
|
||||
"keywords": [
|
||||
@@ -941,7 +935,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/CrowdStrike/foundry-skills.git",
|
||||
"sha": "a7e6a75ad2d9aa4093771e8c07d455c1ce39aae1"
|
||||
"sha": "7b2cda5cd3c5383924c365a3194172feb9fbac59"
|
||||
},
|
||||
"homepage": "https://github.com/CrowdStrike/foundry-skills"
|
||||
},
|
||||
@@ -987,7 +981,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/dash0hq/dash0-agent-plugin.git",
|
||||
"sha": "44be3b6fd8e6cbd1c5e59436a3e8db91d5920d0c"
|
||||
"sha": "fb9a6207929e5fc45c2661e5c74a2e077b3de79d"
|
||||
},
|
||||
"homepage": "https://dash0.com/"
|
||||
},
|
||||
@@ -998,7 +992,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/astronomer/agents.git",
|
||||
"sha": "da0048c49f88335c9d9cc617837e182ba04a2ab5"
|
||||
"sha": "ed2fe757381ff42337fd7bce56a50f31134d9dce"
|
||||
},
|
||||
"homepage": "https://github.com/astronomer/agents"
|
||||
},
|
||||
@@ -1022,7 +1016,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/astronomer/agents.git",
|
||||
"sha": "da0048c49f88335c9d9cc617837e182ba04a2ab5"
|
||||
"sha": "d33a14ddd4cd8045f90acfe49d2552120feeeced"
|
||||
},
|
||||
"homepage": "https://github.com/astronomer/agents"
|
||||
},
|
||||
@@ -1035,10 +1029,26 @@
|
||||
"url": "https://github.com/awslabs/agent-plugins.git",
|
||||
"path": "plugins/databases-on-aws",
|
||||
"ref": "main",
|
||||
"sha": "c65ee436b0db77bb75d380aef6fbdc9b114edf2a"
|
||||
"sha": "96a073a195491f2192c256ba66730b631ced03e1"
|
||||
},
|
||||
"homepage": "https://github.com/awslabs/agent-plugins"
|
||||
},
|
||||
{
|
||||
"name": "databricks",
|
||||
"description": "Databricks skills for the CLI, Apps, Lakebase, Model Serving, Lakeflow Jobs, Spark Declarative Pipelines, Declarative Automation Bundles (DABs), and classic-to-serverless migration.",
|
||||
"author": {
|
||||
"name": "Databricks"
|
||||
},
|
||||
"category": "database",
|
||||
"source": {
|
||||
"source": "git-subdir",
|
||||
"url": "https://github.com/databricks/databricks-agent-skills.git",
|
||||
"path": "plugins/databricks/claude",
|
||||
"ref": "main",
|
||||
"sha": "e337277c9771597bd2a67dfc5f8dd1d1afc887c6"
|
||||
},
|
||||
"homepage": "https://developers.databricks.com/"
|
||||
},
|
||||
{
|
||||
"name": "datadog",
|
||||
"description": "Use Datadog directly in Claude Code through a preconfigured Datadog MCP server. Query logs, metrics, traces, dashboards, and more through natural conversation. This plugin is in preview.",
|
||||
@@ -1077,7 +1087,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/dataproc.git",
|
||||
"sha": "a8d5220007ae51a7104428acd38748432de597a8"
|
||||
"sha": "6d6ac3889bf448e33a0ad96174bc5b0849c74ebe"
|
||||
},
|
||||
"homepage": "https://github.com/gemini-cli-extensions/dataproc"
|
||||
},
|
||||
@@ -1091,7 +1101,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/datarobot-oss/datarobot-agent-skills.git",
|
||||
"sha": "00207d8d614128deef728a9e6f7f07a3f1d958c6"
|
||||
"sha": "0e28dc839859f523f4d8d418612cdadb7a4a3ce7"
|
||||
},
|
||||
"homepage": "https://datarobot.com"
|
||||
},
|
||||
@@ -1104,7 +1114,7 @@
|
||||
"url": "https://github.com/microsoft/Dataverse-skills.git",
|
||||
"path": ".github/plugins/dataverse",
|
||||
"ref": "main",
|
||||
"sha": "1175021761a2f135ea7505208f074ed0fae45255"
|
||||
"sha": "9b23d74ea15a4a638ea7b28daf004b0ef3226602"
|
||||
},
|
||||
"homepage": "https://github.com/microsoft/Dataverse-skills"
|
||||
},
|
||||
@@ -1153,10 +1163,26 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/dominodatalab/domino-claude-plugin.git",
|
||||
"sha": "c2649c78bac350715594352ca61d2df9e3340783"
|
||||
"sha": "64f44339466b10982a5b1f0e7292ca832b3551f1"
|
||||
},
|
||||
"homepage": "https://www.domino.ai"
|
||||
},
|
||||
{
|
||||
"name": "dropbox",
|
||||
"description": "The Dropbox plugin for Claude connects your Dropbox files directly to Claude, so you can search, organize, save generated content, and create sharing links without switching tools. It respects your existing Dropbox permissions, and Claude only works with files you already have access to.",
|
||||
"author": {
|
||||
"name": "Dropbox"
|
||||
},
|
||||
"category": "productivity",
|
||||
"source": {
|
||||
"source": "git-subdir",
|
||||
"url": "https://github.com/dropbox/dropbox-ai-plugins.git",
|
||||
"path": "claude",
|
||||
"ref": "main",
|
||||
"sha": "2f9c81a5d012cc9c389132331a93f4ade06a97a9"
|
||||
},
|
||||
"homepage": "https://www.dropbox.com"
|
||||
},
|
||||
{
|
||||
"name": "duckdb-skills",
|
||||
"description": "DuckDB-powered skills for Claude Code: read any data file, attach and query DuckDB databases, search DuckDB/DuckLake docs, search past session logs, and install/update DuckDB extensions.",
|
||||
@@ -1195,7 +1221,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/exa-labs/exa-mcp-server.git",
|
||||
"sha": "9ea4ba3e67f87c462c3e06b192470e837ed9009e"
|
||||
"sha": "f7e9032308a6dca9dbad76d22bc3cda287ba6775"
|
||||
},
|
||||
"homepage": "https://exa.ai/docs/reference/exa-mcp"
|
||||
},
|
||||
@@ -1219,7 +1245,7 @@
|
||||
"url": "https://github.com/expo/skills.git",
|
||||
"path": "plugins/expo",
|
||||
"ref": "main",
|
||||
"sha": "b553ae4e1755bec11eac21517fe63040c7e07f2c"
|
||||
"sha": "ad897fdf0c6593d0cc7523198aa752c6f62adeda"
|
||||
},
|
||||
"homepage": "https://github.com/expo/skills/blob/main/plugins/expo/README.md"
|
||||
},
|
||||
@@ -1267,7 +1293,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/figma/mcp-server-guide.git",
|
||||
"sha": "2efd0e37d10c35c4a7cf6d2b7381c9dc1a569bd4"
|
||||
"sha": "bea8bea5f676ab2bf76fa822b82f50b66653c098"
|
||||
},
|
||||
"homepage": "https://github.com/figma/mcp-server-guide"
|
||||
},
|
||||
@@ -1285,7 +1311,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/firecrawl/firecrawl-claude-plugin.git",
|
||||
"sha": "e30c89f7b065b29a7283d49a4dcc5e302900fda3"
|
||||
"sha": "069551a7d2b0379ea7589a9e2f46062e69820a2d"
|
||||
},
|
||||
"homepage": "https://github.com/firecrawl/firecrawl-claude-plugin.git"
|
||||
},
|
||||
@@ -1299,7 +1325,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/firestore-native.git",
|
||||
"sha": "26ab5016e0216cf86f0988e1d11b52b5a101783e"
|
||||
"sha": "581b498b39529c895889742e51ea4a6d3bf2d547"
|
||||
},
|
||||
"homepage": "https://github.com/gemini-cli-extensions/firestore-native"
|
||||
},
|
||||
@@ -1402,7 +1428,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/huggingface/skills.git",
|
||||
"sha": "ea9a24f38a98baf2430dab3bcb31a89753ae9e6d"
|
||||
"sha": "35e8c35a1ae5b462e0bb23d444d25569c3bb6700"
|
||||
},
|
||||
"homepage": "https://github.com/huggingface/skills.git"
|
||||
},
|
||||
@@ -1416,7 +1442,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/hunter-io/claude-plugin.git",
|
||||
"sha": "9929ccf4f228171398049633da7afd8f1b65646b"
|
||||
"sha": "0bea093cd18c4725f7ded7bd49400df578421cd6"
|
||||
},
|
||||
"homepage": "https://hunter.io"
|
||||
},
|
||||
@@ -1430,7 +1456,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/heygen-com/hyperframes.git",
|
||||
"sha": "091137e3c32f7c247b6a7cc1c81ece36cd60a937"
|
||||
"sha": "92385711dccbe89a6673357a6f39da7379d68528"
|
||||
},
|
||||
"homepage": "https://hyperframes.heygen.com"
|
||||
},
|
||||
@@ -1484,7 +1510,7 @@
|
||||
"source": "github",
|
||||
"repo": "jfrog/claude-plugin",
|
||||
"commit": "259c8e718266c16e99b4f30ae9b1ed0f9f00d98d",
|
||||
"sha": "ac0ea16e9e96c9837b26d3c7d6bdfecd41cb6149"
|
||||
"sha": "320a5585d6d9747668bd20e1c512c577d1e871d3"
|
||||
},
|
||||
"homepage": "https://jfrog.com"
|
||||
},
|
||||
@@ -1537,7 +1563,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/langfuse/claude-observability-plugin.git",
|
||||
"sha": "597af67d6c6b369f3e55db6cfa2ebe444f1af46c"
|
||||
"sha": "938df41639efcaa22790b1a216308b6ed626a8b7"
|
||||
},
|
||||
"homepage": "https://langfuse.com/integrations/other/claude-code"
|
||||
},
|
||||
@@ -1643,7 +1669,7 @@
|
||||
"url": "https://github.com/pydantic/skills.git",
|
||||
"path": "plugins/logfire",
|
||||
"ref": "main",
|
||||
"sha": "1e7a4567d8375e8ef07ad078d7f38bc03ce5e944"
|
||||
"sha": "f0c20b9895f06d58823032f13e68c6aaae9dd3fa"
|
||||
},
|
||||
"homepage": "https://github.com/pydantic/skills/tree/main/plugins/logfire"
|
||||
},
|
||||
@@ -1673,7 +1699,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/looker.git",
|
||||
"sha": "0b4e497ef9839fce0ae1efd40216fee15a1c5e33"
|
||||
"sha": "2f871191fc110c51442cc0ab4210af329d0ebc63"
|
||||
},
|
||||
"homepage": "https://github.com/gemini-cli-extensions/looker"
|
||||
},
|
||||
@@ -1814,7 +1840,7 @@
|
||||
"url": "https://github.com/mercadopago/mercadopago-claude-marketplace.git",
|
||||
"path": "plugins/mercadopago",
|
||||
"ref": "main",
|
||||
"sha": "ba967158392bec9f0c199cd39196af64222f0ab0"
|
||||
"sha": "fffc567d1cbfe18b361bf00da5677b470a94f49a"
|
||||
},
|
||||
"homepage": "https://github.com/mercadopago/mercadopago-claude-marketplace/tree/main/plugins/mercadopago"
|
||||
},
|
||||
@@ -1841,7 +1867,7 @@
|
||||
"url": "https://github.com/awslabs/startups.git",
|
||||
"path": "migrate/plugins/migration-to-aws",
|
||||
"ref": "main",
|
||||
"sha": "2e1d603a43b241f13ed40e4d1762f5e4ed744ecc"
|
||||
"sha": "e49c21bf8b4883a9646938c00091633dfb8f483f"
|
||||
},
|
||||
"homepage": "https://github.com/awslabs/startups"
|
||||
},
|
||||
@@ -1919,7 +1945,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/netlify/context-and-tools.git",
|
||||
"sha": "ab80a6ed2b6c4933a3f964101c82b45cab847b5b"
|
||||
"sha": "a1d397b8addd2cd8e61e6592542203ecfa7c5152"
|
||||
},
|
||||
"homepage": "https://github.com/netlify/context-and-tools"
|
||||
},
|
||||
@@ -1955,7 +1981,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/nvsecurity/nightvision-skills.git",
|
||||
"sha": "a510be06ca7fb2a0b1ffe38d4163f56dbc3b9e93"
|
||||
"sha": "67af610a1da439e10b1714d3896a2a02bf1ebd63"
|
||||
},
|
||||
"homepage": "https://github.com/nvsecurity/nightvision-skills"
|
||||
},
|
||||
@@ -1965,7 +1991,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/Nimbleway/agent-skills.git",
|
||||
"sha": "eb97261aa8145fa6d0f45d62d0955805fa06fb91"
|
||||
"sha": "1a599ea15f71d20cc6f85692030021146931997a"
|
||||
},
|
||||
"homepage": "https://docs.nimbleway.com/integrations/agent-skills/plugin-installation"
|
||||
},
|
||||
@@ -1992,10 +2018,26 @@
|
||||
"url": "https://github.com/NVIDIA/skills.git",
|
||||
"path": "plugins/nvidia-skills",
|
||||
"ref": "main",
|
||||
"sha": "366564ddf68ad55b3c12a2faee3d2fd3d3de3b36"
|
||||
"sha": "26811af1bbb5fb5c8ff3fc5dc04a6f36840615c1"
|
||||
},
|
||||
"homepage": "https://github.com/NVIDIA/skills"
|
||||
},
|
||||
{
|
||||
"name": "oracle-ai-data-platform-workbench-databricks-migrator",
|
||||
"description": "Drive the Oracle AI Data Platform (AIDP) Databricks Migration Toolkit in natural language. Plans and executes automated Databricks → AIDP migrations of notebooks, jobs, schedules, and catalog DDL — Pass-1 dependency rewrite + Pass-2 cell-by-cell execute/verify/fix on a live AIDP cluster with Claude.",
|
||||
"author": {
|
||||
"name": "Oracle"
|
||||
},
|
||||
"category": "development",
|
||||
"source": {
|
||||
"source": "git-subdir",
|
||||
"url": "https://github.com/oracle-samples/oracle-aidp-samples.git",
|
||||
"path": "ai/claude-code-plugins/oracle-ai-data-platform-workbench-databricks-migrator",
|
||||
"ref": "main",
|
||||
"sha": "a88bcf3a9f9acca94663a727de42d8535e869486"
|
||||
},
|
||||
"homepage": "https://docs.oracle.com/en/cloud/paas/ai-data-platform/index.html"
|
||||
},
|
||||
{
|
||||
"name": "oracle-ai-data-platform-workbench-engineer-agent",
|
||||
"description": "Oracle AI Data Platform (AIDP) Workbench engineer agent for Claude Code — a 37-skill agent that operates the full Spark/Delta lakehouse in natural language. Discovers your catalog into a grounding cache, turns plain English into accurate Spark SQL, and runs the lifecycle (CREATE/INSERT/UPDATE/DELETE/MERGE, OPTIMIZE/VACUUM, time-travel). Ingests files, profiles data and sets quality rules, authors and repairs pipelines, provisions clusters, and debugs via the Spark UI. Governs the platform (roles, credential store, Delta Sharing, audit logs), plus native Git, bundles, and MLOps/MLflow. Runs via the official Oracle aidp CLI.",
|
||||
@@ -2054,7 +2096,7 @@
|
||||
"url": "https://github.com/growthxai/output.git",
|
||||
"path": "coding_assistants/claude/plugins/outputai",
|
||||
"ref": "main",
|
||||
"sha": "66f1583420ff5c2912e331045ed225f45e835a63"
|
||||
"sha": "2da721305432195c2d92020167bf11905421fe61"
|
||||
},
|
||||
"homepage": "https://output.ai"
|
||||
},
|
||||
@@ -2164,7 +2206,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/PostHog/ai-plugin.git",
|
||||
"sha": "d09ebca2302c085cef2dd576f2b6ec88fe254ce1"
|
||||
"sha": "835f4f647fec8a8fbde8ea00cf9b2432a35d7e5b"
|
||||
},
|
||||
"homepage": "https://posthog.com/docs/model-context-protocol"
|
||||
},
|
||||
@@ -2230,7 +2272,7 @@
|
||||
"url": "https://github.com/pydantic/skills.git",
|
||||
"path": "plugins/ai",
|
||||
"ref": "main",
|
||||
"sha": "1e7a4567d8375e8ef07ad078d7f38bc03ce5e944"
|
||||
"sha": "f0c20b9895f06d58823032f13e68c6aaae9dd3fa"
|
||||
},
|
||||
"homepage": "https://github.com/pydantic/skills/tree/main/plugins/ai"
|
||||
},
|
||||
@@ -2268,7 +2310,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/qdrant/skills.git",
|
||||
"sha": "80f1980d126039c762664a3fe660bbad2eb1ec11"
|
||||
"sha": "0651740b38ed466ad12907bfb848e5f4b71b25e2"
|
||||
},
|
||||
"homepage": "https://skills.qdrant.tech"
|
||||
},
|
||||
@@ -2293,7 +2335,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/TheQtCompanyRnD/agent-skills.git",
|
||||
"sha": "2be55aaf050cf0e5d92d62966c473d2c5f6d780a"
|
||||
"sha": "6e3411d7e58965aa31fa3803c398511f27b29216"
|
||||
},
|
||||
"homepage": "https://www.qt.io/"
|
||||
},
|
||||
@@ -2307,7 +2349,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/quarkusio/quarkus-agent-mcp.git",
|
||||
"sha": "4c1fcf1cba1f292315f7d33261274798305ea954"
|
||||
"sha": "1804071ef5f0c7ca2a2e8d6708b1eef4a1fec74a"
|
||||
},
|
||||
"homepage": "https://quarkus.io"
|
||||
},
|
||||
@@ -2359,7 +2401,7 @@
|
||||
"url": "https://github.com/redis/agent-skills.git",
|
||||
"path": "plugins/redis-development",
|
||||
"ref": "main",
|
||||
"sha": "5ca2e1a2d82a768221e8f71a02e3ca095a37d38e"
|
||||
"sha": "3d6f25505ea2adff4dd62d5a0e7f4a5b076fa047"
|
||||
},
|
||||
"homepage": "https://redis.io"
|
||||
},
|
||||
@@ -2369,7 +2411,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/Digital-Process-Tools/claude-remember.git",
|
||||
"sha": "8bd6255f081dc7123b6b64d335a2c8c5a379ea00"
|
||||
"sha": "9d7324957b4d6e92fd57d265a2685a363e93f63e"
|
||||
},
|
||||
"homepage": "https://github.com/Digital-Process-Tools/claude-remember"
|
||||
},
|
||||
@@ -2383,7 +2425,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/resend/resend-skills.git",
|
||||
"sha": "288efc7103c8177c9019dea79cf0099bacabb81d"
|
||||
"sha": "298207bbe7a43d1886dc9490ecf880b5442600f9"
|
||||
},
|
||||
"homepage": "https://resend.com"
|
||||
},
|
||||
@@ -2409,7 +2451,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/rilldata/agent-skills.git",
|
||||
"sha": "9bdc4efa38a9ad419104fc2d1bb3e89529202487"
|
||||
"sha": "c8c8738f44826150d52304cd4fb70cc3ecbdca2e"
|
||||
},
|
||||
"homepage": "https://docs.rilldata.com/developers/build/ai-configuration"
|
||||
},
|
||||
@@ -2542,10 +2584,26 @@
|
||||
"url": "https://github.com/SAP/open-ux-tools.git",
|
||||
"path": "packages/fiori-mcp-server",
|
||||
"ref": "main",
|
||||
"sha": "2ad82bdef290e4a099441753be75987cf84ecd1a"
|
||||
"sha": "0cddd1a565895e5a12623b9e6aa19758cdbf80df"
|
||||
},
|
||||
"homepage": "https://github.com/SAP/open-ux-tools/tree/main/packages/fiori-mcp-server"
|
||||
},
|
||||
{
|
||||
"name": "sap-hana-cli",
|
||||
"description": "150+ SAP HANA database tools for AI assistants. Query tables, import/export data, profile data quality, compare schemas, manage backups, monitor performance, and more. Connects to SAP HANA Cloud and on-premise databases.",
|
||||
"author": {
|
||||
"name": "SAP SE",
|
||||
"email": "ospo@sap.com",
|
||||
"url": "https://www.sap.com"
|
||||
},
|
||||
"category": "database",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/SAP-samples/hana-cli-claude-plugin.git",
|
||||
"sha": "abadd0aba32792b6378ed784e9f6d3e5b25dfc2a"
|
||||
},
|
||||
"homepage": "https://github.com/SAP-samples/hana-cli-claude-plugin"
|
||||
},
|
||||
{
|
||||
"name": "sap-mdk-server",
|
||||
"description": "MCP server for SAP Mobile Development Kit (MDK). Build and modify MDK applications with AI assistance — schema lookups, action validation, rule editing, and project scaffolding.",
|
||||
@@ -2558,7 +2616,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/SAP/mdk-mcp-server.git",
|
||||
"sha": "10ff6ccfee094b9fb3b3877a41f00fa278b1bcc4"
|
||||
"sha": "a3df54e69dfcf193b92b0c081a4acbeefb92b419"
|
||||
},
|
||||
"homepage": "https://help.sap.com/docs/MDK"
|
||||
},
|
||||
@@ -2598,7 +2656,7 @@
|
||||
"source": "git-subdir",
|
||||
"url": "https://github.com/semgrep/mcp-marketplace.git",
|
||||
"path": "plugin",
|
||||
"sha": "18771d9a7f78b0cb15711ad759ab253b20aeb45d"
|
||||
"sha": "8e652ba6f586bb20377a72792c402c5a85a9b284"
|
||||
},
|
||||
"homepage": "https://github.com/semgrep/mcp-marketplace.git"
|
||||
},
|
||||
@@ -2608,10 +2666,10 @@
|
||||
"category": "monitoring",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/getsentry/sentry-for-claude.git",
|
||||
"sha": "9ab3551758913a4144517d4fafb71476a48c64f8"
|
||||
"url": "https://github.com/getsentry/plugin-claude.git",
|
||||
"sha": "f69cf097dd4c2fd56cab2738442e78848ff6d206"
|
||||
},
|
||||
"homepage": "https://github.com/getsentry/sentry-for-claude/tree/main"
|
||||
"homepage": "https://github.com/getsentry/plugin-claude"
|
||||
},
|
||||
{
|
||||
"name": "sentry-cli",
|
||||
@@ -2625,7 +2683,7 @@
|
||||
"url": "https://github.com/getsentry/cli.git",
|
||||
"path": "plugins/sentry-cli",
|
||||
"ref": "main",
|
||||
"sha": "33028c2ac93e027ce3faa9045efc91d895deae1a"
|
||||
"sha": "20b469aa5a21acd9bad0650670a08dbe671f499b"
|
||||
},
|
||||
"homepage": "https://sentry.io"
|
||||
},
|
||||
@@ -2651,7 +2709,7 @@
|
||||
"url": "https://github.com/ServiceNow/sdk.git",
|
||||
"path": "providers/claude/plugin",
|
||||
"ref": "master",
|
||||
"sha": "35ef6130d8a49e67b531bde2f987808426273d15"
|
||||
"sha": "4aadc235ad57a7442e42529869e68ff19c59596c"
|
||||
},
|
||||
"homepage": "https://servicenow.github.io/sdk/"
|
||||
},
|
||||
@@ -2690,7 +2748,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/Shopify/Shopify-AI-Toolkit.git",
|
||||
"sha": "a8e87a7cff153479eb77230d9c232484a1f3062f"
|
||||
"sha": "2de64b683f8120e215e783fbee12aa037ce77f55"
|
||||
},
|
||||
"homepage": "https://shopify.dev"
|
||||
},
|
||||
@@ -2712,7 +2770,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/slackapi/slack-mcp-plugin.git",
|
||||
"sha": "9ae6855c4cf81ce8ecd23b12560ff295721c0d07"
|
||||
"sha": "1559729e80eafb1e93fba4aae30c43a85fe35355"
|
||||
},
|
||||
"homepage": "https://github.com/slackapi/slack-mcp-plugin/tree/main"
|
||||
},
|
||||
@@ -2742,7 +2800,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/SonarSource/sonarqube-agent-plugins.git",
|
||||
"sha": "86eb67ba72ae804f604baa58990f5388c6655410"
|
||||
"sha": "5b4783d8749074e8e0c26ca8590990b1489771eb"
|
||||
},
|
||||
"homepage": "https://www.sonarsource.com"
|
||||
},
|
||||
@@ -2778,7 +2836,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/spanner.git",
|
||||
"sha": "e6a93f9ce95758ce7b7c54330871cfb40e53b976"
|
||||
"sha": "88030b07ba0d39475ff22e3d410b92fa543d0b67"
|
||||
},
|
||||
"homepage": "https://github.com/gemini-cli-extensions/spanner"
|
||||
},
|
||||
@@ -2802,7 +2860,7 @@
|
||||
"url": "https://github.com/stripe/ai.git",
|
||||
"path": "providers/claude/plugin",
|
||||
"ref": "main",
|
||||
"sha": "d9527bfc2d0993f3d2a650501e53e4f68d179ca3"
|
||||
"sha": "23b54f12503eb18bb05eb9de9fbaeb301bec80b0"
|
||||
},
|
||||
"homepage": "https://github.com/stripe/ai/tree/main/providers/claude/plugin"
|
||||
},
|
||||
@@ -2870,7 +2928,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/JetBrains/teamcity-cli.git",
|
||||
"sha": "2406cb584cc5ca729ed9303b27bd070cf7b206ec"
|
||||
"sha": "42ce6a22b1a8167120adbfa8de8b79f36e698133"
|
||||
},
|
||||
"homepage": "https://www.jetbrains.com/teamcity/"
|
||||
},
|
||||
@@ -2963,7 +3021,25 @@
|
||||
"url": "https://github.com/UI5/plugins-coding-agents.git",
|
||||
"path": "plugins/ui5",
|
||||
"ref": "main",
|
||||
"sha": "60f66f3341cb69ab4f649f1f60d70649bf391be2"
|
||||
"sha": "d1e3a43fa80ef160cb42689b88d665e25a5a81a1"
|
||||
},
|
||||
"homepage": "https://github.com/UI5/plugins-coding-agents"
|
||||
},
|
||||
{
|
||||
"name": "ui5-modernization",
|
||||
"description": "Complete UI5 modernization toolkit with workflow and specialized fix patterns for modernizing SAPUI5/OpenUI5 applications.",
|
||||
"author": {
|
||||
"name": "SAP SE",
|
||||
"email": "openui5@sap.com",
|
||||
"url": "https://www.sap.com"
|
||||
},
|
||||
"category": "development",
|
||||
"source": {
|
||||
"source": "git-subdir",
|
||||
"url": "https://github.com/UI5/plugins-coding-agents.git",
|
||||
"path": "plugins/ui5-modernization",
|
||||
"ref": "main",
|
||||
"sha": "d1e3a43fa80ef160cb42689b88d665e25a5a81a1"
|
||||
},
|
||||
"homepage": "https://github.com/UI5/plugins-coding-agents"
|
||||
},
|
||||
@@ -2981,7 +3057,7 @@
|
||||
"url": "https://github.com/UI5/plugins-coding-agents.git",
|
||||
"path": "plugins/ui5-typescript-conversion",
|
||||
"ref": "main",
|
||||
"sha": "60f66f3341cb69ab4f649f1f60d70649bf391be2"
|
||||
"sha": "d1e3a43fa80ef160cb42689b88d665e25a5a81a1"
|
||||
},
|
||||
"homepage": "https://github.com/UI5/plugins-coding-agents"
|
||||
},
|
||||
@@ -2997,7 +3073,7 @@
|
||||
"url": "https://github.com/val-town/plugins.git",
|
||||
"path": "plugin",
|
||||
"ref": "main",
|
||||
"sha": "1f7928397349f2ccb228302d8b062c7f20745871"
|
||||
"sha": "22594eb245d5b06714c99248d68c333169274b21"
|
||||
},
|
||||
"homepage": "https://val.town"
|
||||
},
|
||||
@@ -3036,7 +3112,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/vercel/vercel-plugin.git",
|
||||
"sha": "b2f2bc09dd05b15db9cb2e696f57872e85944aad"
|
||||
"sha": "5f3f0ad7931ad49d6a4c6ed43ab4bf4781a69f6d"
|
||||
},
|
||||
"homepage": "https://github.com/vercel/vercel-plugin"
|
||||
},
|
||||
@@ -3075,7 +3151,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/wix/skills.git",
|
||||
"sha": "9cd9d7c60470194a6c3170e3d093a818a2f11d6b"
|
||||
"sha": "1ea953a29525ce8ff07a3b5a3a107927804c3eba"
|
||||
},
|
||||
"homepage": "https://dev.wix.com/docs/wix-cli/guides/development/about-wix-skills"
|
||||
},
|
||||
@@ -3128,7 +3204,7 @@
|
||||
"url": "https://github.com/zapier/zapier-mcp.git",
|
||||
"path": "plugins/zapier",
|
||||
"ref": "main",
|
||||
"sha": "469b06007824bb859982a95d2dad5caec11e0bf1"
|
||||
"sha": "469651fe7fdaa3dfc6a476ef5bad6c354773366a"
|
||||
},
|
||||
"homepage": "https://github.com/zapier/zapier-mcp/tree/main/plugins/zapier"
|
||||
},
|
||||
@@ -3185,6 +3261,20 @@
|
||||
"sha": "a2162c384e1ffb68b3bf14783ea9a1a762c85ff5"
|
||||
},
|
||||
"homepage": "https://github.com/zscaler/zscaler-mcp-server"
|
||||
},
|
||||
{
|
||||
"name": "langfuse",
|
||||
"description": "Skills for working with Langfuse, the open-source LLM engineering platform for tracing, prompt management, and evaluation.",
|
||||
"author": {
|
||||
"name": "Langfuse"
|
||||
},
|
||||
"category": "monitoring",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/langfuse/skills.git",
|
||||
"sha": "c39789078b848160a695947907db3ba40b7a2bce"
|
||||
},
|
||||
"homepage": "https://langfuse.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
124
.github/scripts/external-pr-scope.js
vendored
Normal file
124
.github/scripts/external-pr-scope.js
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
'use strict';
|
||||
// Shared logic for letting a NON-MEMBER pull request stay open and be reviewed, scoped to
|
||||
// the contributor's own already-listed plugin repo. No maintained allowlist, no individuals.
|
||||
//
|
||||
// Trust model: we do NOT verify the submitter's identity. We trust the SOURCE REPO. A PR is
|
||||
// in scope only if it ADDS marketplace.json entries whose source.url is a repo that ALREADY
|
||||
// backs a live entry in this marketplace (derived from the base marketplace.json), pinned to
|
||||
// a commit in that repo. Because the repo is org-controlled and the SHA pins to a real commit
|
||||
// there, the shipped code is the org's code regardless of who opened the PR. Merge still
|
||||
// requires CI + a maintainer approval.
|
||||
//
|
||||
// Used by:
|
||||
// - close-external-prs.yml (skip the auto-close when in scope)
|
||||
// - external-pr-scope-guard.yml (required status check: fail a non-member PR that is out of scope)
|
||||
//
|
||||
// Security: evaluate() reads base + head marketplace.json as DATA via the API and parses them;
|
||||
// it never checks out or executes head code.
|
||||
|
||||
const MARKETPLACE = '.claude-plugin/marketplace.json';
|
||||
|
||||
function normalizeRepo(u) {
|
||||
return String(u || '').trim().toLowerCase()
|
||||
.replace(/^git\+/, '')
|
||||
.replace(/^https?:\/\//, '')
|
||||
.replace(/\.git$/, '')
|
||||
.replace(/\/+$/, '');
|
||||
}
|
||||
|
||||
function pluginsByName(json) {
|
||||
const map = {};
|
||||
for (const p of (json && json.plugins) || []) { if (p && p.name) map[p.name] = p; }
|
||||
return map;
|
||||
}
|
||||
|
||||
// Repos that already back a live entry, derived from the base marketplace.json.
|
||||
function liveReposOf(base) {
|
||||
const s = new Set();
|
||||
for (const name of Object.keys(base)) {
|
||||
const u = base[name] && base[name].source && base[name].source.url;
|
||||
if (!u) continue;
|
||||
const r = normalizeRepo(u);
|
||||
if (r.split('/').length >= 3) s.add(r); // host/org/repo
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
// Pure decision over an already-computed diff. Returns { ok, problems, added, removed, modified }.
|
||||
// before = plugins at the MERGE-BASE (what head forked from), after = plugins at HEAD,
|
||||
// liveRepos = repos already live on the current base branch. Diffing before->after (not
|
||||
// base-tip->head) isolates THIS PR's changes; a stale fork no longer shows main's later
|
||||
// additions as phantom removals.
|
||||
function analyze({ changedFiles, before, after, liveRepos }) {
|
||||
const problems = [];
|
||||
|
||||
const off = changedFiles.filter(n => n !== MARKETPLACE);
|
||||
if (off.length) problems.push(`changes files other than ${MARKETPLACE}: ${off.join(', ')}`);
|
||||
|
||||
const baseNames = new Set(Object.keys(before));
|
||||
const headNames = new Set(Object.keys(after));
|
||||
const removed = [...baseNames].filter(n => !headNames.has(n));
|
||||
const added = [...headNames].filter(n => !baseNames.has(n));
|
||||
const modified = [...headNames].filter(
|
||||
n => baseNames.has(n) && JSON.stringify(before[n]) !== JSON.stringify(after[n])
|
||||
);
|
||||
|
||||
if (removed.length) problems.push(`removes existing entr${removed.length > 1 ? 'ies' : 'y'}: ${removed.join(', ')}`);
|
||||
if (modified.length) problems.push(`modifies existing entr${modified.length > 1 ? 'ies' : 'y'}: ${modified.join(', ')}`);
|
||||
if (!off.length && !added.length && !removed.length && !modified.length) {
|
||||
problems.push('makes no in-scope change (expected additions to marketplace.json)');
|
||||
}
|
||||
|
||||
for (const name of added) {
|
||||
const u = after[name] && after[name].source && after[name].source.url;
|
||||
if (!u) { problems.push(`added "${name}" has no source.url to validate`); continue; }
|
||||
const r = normalizeRepo(u);
|
||||
if (r.split('/').length < 3) { problems.push(`added "${name}" source.url ${u} is not a valid repo URL`); continue; }
|
||||
if (!liveRepos.has(r)) {
|
||||
problems.push(`added "${name}" points at ${u}, a repo with no existing live plugin in this marketplace`);
|
||||
}
|
||||
}
|
||||
|
||||
return { ok: problems.length === 0, problems, added, removed, modified, liveRepoCount: liveRepos.size };
|
||||
}
|
||||
|
||||
async function readPlugins(github, owner, repo, ref) {
|
||||
try {
|
||||
const { data } = await github.rest.repos.getContent({ owner, repo, ref, path: MARKETPLACE });
|
||||
return pluginsByName(JSON.parse(Buffer.from(data.content, 'base64').toString('utf8')));
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// API wrapper used by both workflows. Fetches the diff + base/head marketplace.json, delegates to analyze().
|
||||
async function evaluate({ github, context }) {
|
||||
const pr = context.payload.pull_request;
|
||||
const owner = context.repo.owner, repo = context.repo.repo;
|
||||
|
||||
const files = await github.paginate(github.rest.pulls.listFiles, {
|
||||
owner, repo, pull_number: pr.number, per_page: 100,
|
||||
});
|
||||
const changedFiles = files.map(f => f.filename);
|
||||
|
||||
// Diff THIS PR's changes (merge-base -> head), not base-tip -> head, so a fork that is
|
||||
// behind main doesn't show main's later additions as phantom removals.
|
||||
let mergeBaseSha = pr.base.sha;
|
||||
try {
|
||||
const cmp = await github.rest.repos.compareCommits({ owner, repo, base: pr.base.sha, head: pr.head.sha });
|
||||
if (cmp && cmp.data && cmp.data.merge_base_commit && cmp.data.merge_base_commit.sha) {
|
||||
mergeBaseSha = cmp.data.merge_base_commit.sha;
|
||||
}
|
||||
} catch (e) { /* fall back to base.sha */ }
|
||||
|
||||
const liveBase = await readPlugins(github, owner, repo, pr.base.sha); // current base branch (for "already live")
|
||||
const before = await readPlugins(github, owner, repo, mergeBaseSha); // what head forked from
|
||||
const after = await readPlugins(github, pr.head.repo.owner.login, pr.head.repo.name, pr.head.sha);
|
||||
if (liveBase === null || before === null || after === null) {
|
||||
return { ok: false, problems: ['could not read marketplace.json at base, merge-base, and/or head'], added: [], removed: [], modified: [] };
|
||||
}
|
||||
|
||||
return analyze({ changedFiles, before, after, liveRepos: liveReposOf(liveBase) });
|
||||
}
|
||||
|
||||
module.exports = { normalizeRepo, liveReposOf, analyze, readPlugins, evaluate, MARKETPLACE };
|
||||
21
.github/workflows/close-external-prs.yml
vendored
21
.github/workflows/close-external-prs.yml
vendored
@@ -7,13 +7,17 @@ on:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
issues: write
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check-membership:
|
||||
if: vars.DISABLE_EXTERNAL_PR_CHECK != 'true'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check if author has write access
|
||||
# pull_request_target: checks out the BASE repo (trusted), so the allowlist + shared
|
||||
# script below are this repo's versions, never the fork's.
|
||||
- uses: actions/checkout@v4
|
||||
- name: Close PR unless author is a member or the PR is an in-scope external contribution
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
@@ -30,7 +34,20 @@ jobs:
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`${author} has ${data.permission} access, closing PR`);
|
||||
// Non-member: allow the PR to stay open ONLY if it is an in-scope external
|
||||
// contribution — it adds marketplace.json entries whose source repo ALREADY backs
|
||||
// a live plugin here, and changes nothing else. (No maintained allowlist: the set
|
||||
// of allowed repos is derived from the live marketplace.) This grants only the
|
||||
// right to open a reviewable PR; the External PR Scope Guard required check and a
|
||||
// maintainer approval still gate the merge.
|
||||
const { evaluate } = require(`${process.env.GITHUB_WORKSPACE}/.github/scripts/external-pr-scope.js`);
|
||||
const result = await evaluate({ github, context });
|
||||
if (result.ok && result.added.length > 0) {
|
||||
console.log(`In-scope external contribution (adds: ${result.added.join(', ')}) — allowing PR.`);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`Closing PR from ${author}: ${result.problems.join('; ') || 'out of scope'}`);
|
||||
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
|
||||
52
.github/workflows/external-pr-scope-guard.yml
vendored
Normal file
52
.github/workflows/external-pr-scope-guard.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
name: External PR Scope Guard
|
||||
|
||||
# Required status check that constrains what a NON-MEMBER pull request may change.
|
||||
# Members (write/admin) are unrestricted and skip this check. For a non-member PR this
|
||||
# fails unless the PR is an in-scope external contribution per .github/scripts/external-pr-scope.js:
|
||||
# it changes ONLY .claude-plugin/marketplace.json, the delta is additions-only (no existing
|
||||
# entry modified or removed), and every ADDED entry's source.url is a repo that ALREADY backs
|
||||
# a live plugin in this marketplace (the allowed set is derived from the live marketplace —
|
||||
# there is no maintained allowlist).
|
||||
#
|
||||
# Add the scope-guard job as a REQUIRED status check in branch protection for it to block merge.
|
||||
#
|
||||
# Security: runs on pull_request_target but checks out only the BASE repo (trusted) for the
|
||||
# shared script; the head marketplace.json is fetched as DATA via the API and parsed, never executed.
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
|
||||
jobs:
|
||||
scope-guard:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4 # base repo (trusted)
|
||||
- uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const author = context.payload.pull_request.user.login;
|
||||
|
||||
const { data: perm } = await github.rest.repos.getCollaboratorPermissionLevel({
|
||||
owner: context.repo.owner, repo: context.repo.repo, username: author,
|
||||
});
|
||||
if (['admin', 'write'].includes(perm.permission)) {
|
||||
console.log(`${author} is ${perm.permission} (member) — scope guard not applicable.`);
|
||||
return;
|
||||
}
|
||||
|
||||
const { evaluate } = require(`${process.env.GITHUB_WORKSPACE}/.github/scripts/external-pr-scope.js`);
|
||||
const result = await evaluate({ github, context });
|
||||
|
||||
if (!result.ok) {
|
||||
core.setFailed(
|
||||
`Scope guard: a non-member PR may only ADD marketplace.json entries whose source repo already backs a live plugin here.\n - ` +
|
||||
result.problems.join('\n - ')
|
||||
);
|
||||
return;
|
||||
}
|
||||
console.log(`Scope guard passed: adds ${result.added.join(', ') || 'none'}, all from repos already live here.`);
|
||||
15
README.md
15
README.md
@@ -42,21 +42,6 @@ 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.
|
||||
|
||||
Reference in New Issue
Block a user