mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-04-19 15:12:42 +00:00
Compare commits
1 Commits
add-datave
...
add-sessio
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5012ef9846 |
@@ -7,16 +7,6 @@
|
|||||||
"email": "support@anthropic.com"
|
"email": "support@anthropic.com"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
|
||||||
"name": "adlc",
|
|
||||||
"description": "Agentforce Agent Development Life Cycle — author, discover, scaffold, deploy, test, and optimize .agent files",
|
|
||||||
"category": "development",
|
|
||||||
"source": {
|
|
||||||
"source": "url",
|
|
||||||
"url": "https://github.com/SalesforceAIResearch/agentforce-adlc.git"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/SalesforceAIResearch/agentforce-adlc"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "adspirer-ads-agent",
|
"name": "adspirer-ads-agent",
|
||||||
"description": "Cross-platform ad management for Google Ads, Meta Ads, TikTok Ads, and LinkedIn Ads. 91 tools for keyword research, campaign creation, performance analysis, and budget optimization.",
|
"description": "Cross-platform ad management for Google Ads, Meta Ads, TikTok Ads, and LinkedIn Ads. 91 tools for keyword research, campaign creation, performance analysis, and budget optimization.",
|
||||||
@@ -83,17 +73,6 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/awslabs/agent-plugins"
|
"homepage": "https://github.com/awslabs/agent-plugins"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "amplitude",
|
|
||||||
"source": {
|
|
||||||
"source": "url",
|
|
||||||
"url": "https://github.com/amplitude/mcp-marketplace.git",
|
|
||||||
"sha": "be54ccb66b10593721dd3a31e47b2db20ea02d2f"
|
|
||||||
},
|
|
||||||
"description": "Use Amplitude as an expert analyst — instrument Amplitude, discover product opportunities, analyze charts, create dashboards, manage experiments, and understand users and accounts.",
|
|
||||||
"category": "monitoring",
|
|
||||||
"homepage": "https://github.com/amplitude/mcp-marketplace"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "asana",
|
"name": "asana",
|
||||||
"description": "Asana project management integration. Create and manage tasks, search projects, update assignments, track progress, and integrate your development workflow with Asana's work management platform.",
|
"description": "Asana project management integration. Create and manage tasks, search projects, update assignments, track progress, and integrate your development workflow with Asana's work management platform.",
|
||||||
@@ -168,28 +147,6 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/awslabs/agent-plugins"
|
"homepage": "https://github.com/awslabs/agent-plugins"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "azure-cosmos-db-assistant",
|
|
||||||
"source": {
|
|
||||||
"source": "url",
|
|
||||||
"url": "https://github.com/AzureCosmosDB/cosmosdb-claude-code-plugin.git",
|
|
||||||
"sha": "56e6da0cae93cdee8bcfa5e624ecdd9a0a483181"
|
|
||||||
},
|
|
||||||
"description": "Expert assistant for Azure Cosmos DB — data modeling, query optimization, performance tuning, and best practices.",
|
|
||||||
"category": "database",
|
|
||||||
"homepage": "https://github.com/AzureCosmosDB/cosmosdb-claude-code-plugin"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "base44",
|
|
||||||
"description": "Build and deploy Base44 full-stack apps with CLI project management and JavaScript/TypeScript SDK development skills",
|
|
||||||
"category": "development",
|
|
||||||
"source": {
|
|
||||||
"source": "url",
|
|
||||||
"url": "https://github.com/base44/skills.git",
|
|
||||||
"sha": "c7039b37eca0e2916a565a7395040c00055bcf8b"
|
|
||||||
},
|
|
||||||
"homepage": "https://docs.base44.com"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "box",
|
"name": "box",
|
||||||
"description": "Work with your Box content directly from Claude Code — search files, organize folders, collaborate with your team, and use Box AI to answer questions, summarize documents, and extract data without leaving your workflow.",
|
"description": "Work with your Box content directly from Claude Code — search files, organize folders, collaborate with your team, and use Box AI to answer questions, summarize documents, and extract data without leaving your workflow.",
|
||||||
@@ -296,17 +253,6 @@
|
|||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
"homepage": "https://github.com/anthropics/claude-plugins-official/tree/main/plugins/claude-md-management"
|
"homepage": "https://github.com/anthropics/claude-plugins-official/tree/main/plugins/claude-md-management"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "cloudflare",
|
|
||||||
"source": {
|
|
||||||
"source": "url",
|
|
||||||
"url": "https://github.com/cloudflare/skills.git",
|
|
||||||
"sha": "5ec03da67e230df52b698255c8e5979dc9b124b6"
|
|
||||||
},
|
|
||||||
"description": "Skills for the Cloudflare developer platform: Workers, Durable Objects, Agents SDK, MCP servers, Wrangler CLI, and web performance.",
|
|
||||||
"category": "deployment",
|
|
||||||
"homepage": "https://github.com/cloudflare/skills"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "cloudinary",
|
"name": "cloudinary",
|
||||||
"description": "Use Cloudinary directly in Claude. Manage assets, apply transformations, optimize media, and more through natural conversation.",
|
"description": "Use Cloudinary directly in Claude. Manage assets, apply transformations, optimize media, and more through natural conversation.",
|
||||||
@@ -421,18 +367,6 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/astronomer/agents"
|
"homepage": "https://github.com/astronomer/agents"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "dataverse",
|
|
||||||
"description": "Agent skills for building on, analyzing, and managing Microsoft Dataverse — with Dataverse MCP, PAC CLI, and Python SDK.",
|
|
||||||
"category": "database",
|
|
||||||
"source": {
|
|
||||||
"source": "git-subdir",
|
|
||||||
"url": "https://github.com/microsoft/Dataverse-skills.git",
|
|
||||||
"path": ".github/plugins/dataverse",
|
|
||||||
"ref": "main"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/microsoft/Dataverse-skills"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "deploy-on-aws",
|
"name": "deploy-on-aws",
|
||||||
"description": "Deploy applications to AWS with architecture recommendations, cost estimates, and IaC deployment.",
|
"description": "Deploy applications to AWS with architecture recommendations, cost estimates, and IaC deployment.",
|
||||||
@@ -1079,18 +1013,6 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://www.accoil.com/product-tracking"
|
"homepage": "https://www.accoil.com/product-tracking"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "pydantic-ai",
|
|
||||||
"description": "Write accurate Pydantic AI code from the start. Up-to-date patterns, decision trees, and common gotchas for agents, tools, structured output, streaming, and multi-agent apps.",
|
|
||||||
"category": "development",
|
|
||||||
"source": {
|
|
||||||
"source": "git-subdir",
|
|
||||||
"url": "pydantic/skills",
|
|
||||||
"path": "plugins/ai",
|
|
||||||
"ref": "main"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/pydantic/skills/tree/main/plugins/ai"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "pyright-lsp",
|
"name": "pyright-lsp",
|
||||||
"description": "Python language server (Pyright) for type checking and code intelligence",
|
"description": "Python language server (Pyright) for type checking and code intelligence",
|
||||||
@@ -1226,7 +1148,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sanity",
|
"name": "sanity-plugin",
|
||||||
"description": "Sanity content platform integration with MCP server, agent skills, and slash commands. Query and author content, build and optimize GROQ queries, design schemas, and set up Visual Editing.",
|
"description": "Sanity content platform integration with MCP server, agent skills, and slash commands. Query and author content, build and optimize GROQ queries, design schemas, and set up Visual Editing.",
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"author": {
|
"author": {
|
||||||
@@ -1329,7 +1251,8 @@
|
|||||||
"category": "security",
|
"category": "security",
|
||||||
"source": {
|
"source": {
|
||||||
"source": "url",
|
"source": "url",
|
||||||
"url": "https://github.com/SonarSource/sonarqube-agent-plugins.git"
|
"url": "https://github.com/SonarSource/sonarqube-agent-plugins.git",
|
||||||
|
"sha": "0cae644cee9318e6245b62ca779abdc60e6daa49"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/SonarSource/sonarqube-agent-plugins"
|
"homepage": "https://github.com/SonarSource/sonarqube-agent-plugins"
|
||||||
},
|
},
|
||||||
@@ -1354,17 +1277,6 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://sourcegraph.com"
|
"homepage": "https://sourcegraph.com"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "spotify-ads-api",
|
|
||||||
"description": "Manage Spotify ad campaigns with natural language. Create campaigns, ad sets, ads, pull reports, and handle OAuth — all through conversation.",
|
|
||||||
"category": "productivity",
|
|
||||||
"source": {
|
|
||||||
"source": "url",
|
|
||||||
"url": "https://github.com/spotify/ads-claude-plugin.git",
|
|
||||||
"sha": "a4bce9912db071d47dfb410086a48004e0539efa"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/spotify/ads-claude-plugin"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "stagehand",
|
"name": "stagehand",
|
||||||
"description": "Browser automation skill for Claude Code using Stagehand. Automate web interactions, extract data, and navigate websites using natural language.",
|
"description": "Browser automation skill for Claude Code using Stagehand. Automate web interactions, extract data, and navigate websites using natural language.",
|
||||||
|
|||||||
7
external_plugins/slack/.claude-plugin/plugin.json
Normal file
7
external_plugins/slack/.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "slack",
|
||||||
|
"description": "Slack workspace integration. Search messages, access channels, read threads, and stay connected with your team's communications while coding. Find relevant discussions and context quickly.",
|
||||||
|
"author": {
|
||||||
|
"name": "Slack"
|
||||||
|
}
|
||||||
|
}
|
||||||
10
external_plugins/slack/.mcp.json
Normal file
10
external_plugins/slack/.mcp.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"slack": {
|
||||||
|
"type": "http",
|
||||||
|
"url": "https://mcp.slack.com/mcp",
|
||||||
|
"oauth": {
|
||||||
|
"clientId": "1601185624273.8899143856786",
|
||||||
|
"callbackPort": 3118
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "telegram",
|
"name": "telegram",
|
||||||
"description": "Telegram channel for Claude Code \u2014 messaging bridge with built-in access control. Manage pairing, allowlists, and policy via /telegram:access.",
|
"description": "Telegram channel for Claude Code \u2014 messaging bridge with built-in access control. Manage pairing, allowlists, and policy via /telegram:access.",
|
||||||
"version": "0.0.5",
|
"version": "0.0.4",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"telegram",
|
"telegram",
|
||||||
"messaging",
|
"messaging",
|
||||||
|
|||||||
@@ -51,22 +51,6 @@ if (!TOKEN) {
|
|||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
const INBOX_DIR = join(STATE_DIR, 'inbox')
|
const INBOX_DIR = join(STATE_DIR, 'inbox')
|
||||||
const PID_FILE = join(STATE_DIR, 'bot.pid')
|
|
||||||
|
|
||||||
// Telegram allows exactly one getUpdates consumer per token. If a previous
|
|
||||||
// session crashed (SIGKILL, terminal closed) its server.ts grandchild can
|
|
||||||
// survive as an orphan and hold the slot forever, so every new session sees
|
|
||||||
// 409 Conflict. Kill any stale holder before we start polling.
|
|
||||||
mkdirSync(STATE_DIR, { recursive: true, mode: 0o700 })
|
|
||||||
try {
|
|
||||||
const stale = parseInt(readFileSync(PID_FILE, 'utf8'), 10)
|
|
||||||
if (stale > 1 && stale !== process.pid) {
|
|
||||||
process.kill(stale, 0)
|
|
||||||
process.stderr.write(`telegram channel: replacing stale poller pid=${stale}\n`)
|
|
||||||
process.kill(stale, 'SIGTERM')
|
|
||||||
}
|
|
||||||
} catch {}
|
|
||||||
writeFileSync(PID_FILE, String(process.pid))
|
|
||||||
|
|
||||||
// Last-resort safety net — without these the process dies silently on any
|
// Last-resort safety net — without these the process dies silently on any
|
||||||
// unhandled promise rejection. With them it logs and keeps serving tools.
|
// unhandled promise rejection. With them it logs and keeps serving tools.
|
||||||
@@ -637,9 +621,6 @@ function shutdown(): void {
|
|||||||
if (shuttingDown) return
|
if (shuttingDown) return
|
||||||
shuttingDown = true
|
shuttingDown = true
|
||||||
process.stderr.write('telegram channel: shutting down\n')
|
process.stderr.write('telegram channel: shutting down\n')
|
||||||
try {
|
|
||||||
if (parseInt(readFileSync(PID_FILE, 'utf8'), 10) === process.pid) rmSync(PID_FILE)
|
|
||||||
} catch {}
|
|
||||||
// bot.stop() signals the poll loop to end; the current getUpdates request
|
// bot.stop() signals the poll loop to end; the current getUpdates request
|
||||||
// may take up to its long-poll timeout to return. Force-exit after 2s.
|
// may take up to its long-poll timeout to return. Force-exit after 2s.
|
||||||
setTimeout(() => process.exit(0), 2000)
|
setTimeout(() => process.exit(0), 2000)
|
||||||
@@ -649,19 +630,6 @@ process.stdin.on('end', shutdown)
|
|||||||
process.stdin.on('close', shutdown)
|
process.stdin.on('close', shutdown)
|
||||||
process.on('SIGTERM', shutdown)
|
process.on('SIGTERM', shutdown)
|
||||||
process.on('SIGINT', shutdown)
|
process.on('SIGINT', shutdown)
|
||||||
process.on('SIGHUP', shutdown)
|
|
||||||
|
|
||||||
// Orphan watchdog: stdin events above don't reliably fire when the parent
|
|
||||||
// chain (`bun run` wrapper → shell → us) is severed by a crash. Poll for
|
|
||||||
// reparenting (POSIX) or a dead stdin pipe and self-terminate.
|
|
||||||
const bootPpid = process.ppid
|
|
||||||
setInterval(() => {
|
|
||||||
const orphaned =
|
|
||||||
(process.platform !== 'win32' && process.ppid !== bootPpid) ||
|
|
||||||
process.stdin.destroyed ||
|
|
||||||
process.stdin.readableEnded
|
|
||||||
if (orphaned) shutdown()
|
|
||||||
}, 5000).unref()
|
|
||||||
|
|
||||||
// Commands are DM-only. Responding in groups would: (1) leak pairing codes via
|
// Commands are DM-only. Responding in groups would: (1) leak pairing codes via
|
||||||
// /status to other group members, (2) confirm bot presence in non-allowlisted
|
// /status to other group members, (2) confirm bot presence in non-allowlisted
|
||||||
@@ -1007,15 +975,7 @@ void (async () => {
|
|||||||
})
|
})
|
||||||
return // bot.stop() was called — clean exit from the loop
|
return // bot.stop() was called — clean exit from the loop
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (shuttingDown) return
|
|
||||||
if (err instanceof GrammyError && err.error_code === 409) {
|
if (err instanceof GrammyError && err.error_code === 409) {
|
||||||
if (attempt >= 8) {
|
|
||||||
process.stderr.write(
|
|
||||||
`telegram channel: 409 Conflict persists after ${attempt} attempts — ` +
|
|
||||||
`another poller is holding the bot token (stray 'bun server.ts' process or a second session). Exiting.\n`,
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const delay = Math.min(1000 * attempt, 15000)
|
const delay = Math.min(1000 * attempt, 15000)
|
||||||
const detail = attempt === 1
|
const detail = attempt === 1
|
||||||
? ' — another instance is polling (zombie session, or a second Claude Code running?)'
|
? ' — another instance is polling (zombie session, or a second Claude Code running?)'
|
||||||
|
|||||||
Reference in New Issue
Block a user