This gives Claude the ability to post messages to Discord channels via webhooks. You can send simple text, rich embeds with custom colors and fields, or attach files. It's especially handy for CI/CD notifications, error alerts, or any automated status updates you want piped into Discord. The skill includes examples for everything from basic messages to multi-embed pipeline notifications. Just note the rate limits: 30 requests per minute per webhook, and keep your webhook URL secret since anyone with it can post to your channel.
npx -y skills add vm0-ai/vm0-skills --skill discord-webhook --agent claude-codeInstalls into .claude/skills of the current project.
All examples below assume you have DISCORD_WEBHOOK_URL set.
Write to /tmp/discord_webhook_request.json:
{
"content": "Hello from webhook!"
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Write to /tmp/discord_webhook_request.json:
{
"content": "Alert!",
"username": "Alert Bot",
"avatar_url": "https://i.imgur.com/4M34hi2.png"
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Write to /tmp/discord_webhook_request.json:
{
"embeds": [
{
"title": "Deployment Complete",
"description": "Version 1.2.3 deployed to production",
"color": 5763719,
"fields": [
{
"name": "Environment",
"value": "Production",
"inline": true
},
{
"name": "Status",
"value": "Success",
"inline": true
}
],
"timestamp": "2025-01-01T12:00:00.000Z"
}
]
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Common colors (decimal):
57637191554899757932661677696016744192Write to /tmp/discord_webhook_request.json:
{
"embeds": [
{
"title": "Error Alert",
"description": "Database connection failed",
"color": 15548997,
"fields": [
{
"name": "Service",
"value": "api-server"
},
{
"name": "Error",
"value": "Connection timeout"
}
],
"footer": {
"text": "Monitor"
}
}
]
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Write to /tmp/discord_webhook_payload.json:
{
"content": "Screenshot attached"
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -F "file1=@screenshot.png" -F 'payload_json=@/tmp/discord_webhook_payload.json'
Write to /tmp/discord_webhook_payload.json:
{
"content": "Log files attached"
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -F "file1=@error.log" -F "file2=@debug.log" -F 'payload_json=@/tmp/discord_webhook_payload.json'
Write to /tmp/discord_webhook_request.json:
{
"embeds": [
{
"title": "Build Started",
"color": 16776960
},
{
"title": "Tests Passed",
"color": 5763719
},
{
"title": "Deployed",
"color": 5793266
}
]
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Write to /tmp/discord_webhook_request.json:
{
"content": "<@<your-user-id>> Check this out!",
"allowed_mentions": {
"users": ["<your-user-id>"]
}
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Replace <your-user-id> with the actual Discord user ID.
Write to /tmp/discord_webhook_request.json:
{
"content": "Silent update",
"flags": 4096
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
Write to /tmp/discord_webhook_request.json:
{
"username": "GitHub Actions",
"embeds": [
{
"title": "Pipeline Status",
"color": 5763719,
"fields": [
{
"name": "Repository",
"value": "myorg/myrepo",
"inline": true
},
{
"name": "Branch",
"value": "main",
"inline": true
},
{
"name": "Commit",
"value": "abc1234",
"inline": true
},
{
"name": "Status",
"value": "Success"
}
],
"timestamp": "2025-01-01T12:00:00.000Z"
}
]
}
Then run:
curl -s -X POST "$DISCORD_WEBHOOK_URL" -H "Content-Type: application/json" -d @/tmp/discord_webhook_request.json
{
"title": "Title text",
"description": "Description text",
"url": "https://example.com",
"color": 5763719,
"fields": [
{"name": "Field 1", "value": "Value 1", "inline": true}
],
"author": {"name": "Author", "icon_url": "https://..."},
"footer": {"text": "Footer text"},
"thumbnail": {"url": "https://..."},
"image": {"url": "https://..."},
"timestamp": "2025-01-01T12:00:00.000Z"
}
juliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills