calendly-api-slack-notification-integration
Sub-skill of calendly-api: Slack Notification Integration.
Best use case
calendly-api-slack-notification-integration is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Sub-skill of calendly-api: Slack Notification Integration.
Teams using calendly-api-slack-notification-integration should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/slack-notification-integration/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How calendly-api-slack-notification-integration Compares
| Feature / Agent | calendly-api-slack-notification-integration | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Sub-skill of calendly-api: Slack Notification Integration.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Slack Notification Integration
## Slack Notification Integration
```python
# slack_integration.py
# ABOUTME: Notify Slack when Calendly events are scheduled
# ABOUTME: Webhook handler with Slack notifications
import os
import requests
from flask import Flask, request, jsonify
from webhooks import WebhookHandler, verify_webhook_signature
app = Flask(__name__)
webhook = WebhookHandler(signing_key=os.environ.get("CALENDLY_WEBHOOK_SECRET"))
SLACK_WEBHOOK_URL = os.environ.get("SLACK_WEBHOOK_URL")
def send_slack_notification(message: dict):
"""Send a message to Slack"""
requests.post(SLACK_WEBHOOK_URL, json=message)
@webhook.on("invitee.created")
def handle_new_booking(data: dict) -> dict:
"""Notify Slack of new booking"""
invitee = data.get("invitee", {})
event = data.get("scheduled_event", {})
event_type = data.get("event_type", {})
# Extract custom answers
answers = {}
for qa in invitee.get("questions_and_answers", []):
answers[qa["question"]] = qa["answer"]
# Send Slack notification
blocks = [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":calendar: New Meeting Scheduled",
},
},
{
"type": "section",
"fields": [
{"type": "mrkdwn", "text": f"*Event:*\n{event_type.get('name')}"},
{"type": "mrkdwn", "text": f"*Invitee:*\n{invitee.get('name')}"},
{"type": "mrkdwn", "text": f"*Email:*\n{invitee.get('email')}"},
{"type": "mrkdwn", "text": f"*Time:*\n{event.get('start_time')}"},
],
},
]
if answers:
answer_text = "\n".join(f"*{q}:* {a}" for q, a in answers.items())
blocks.append({
"type": "section",
"text": {"type": "mrkdwn", "text": f"*Responses:*\n{answer_text}"},
})
blocks.append({
"type": "actions",
"elements": [
{
"type": "button",
"text": {"type": "plain_text", "text": "View in Calendly"},
"url": f"https://calendly.com/app/scheduled_events/{event['uri'].split('/')[-1]}",
},
],
})
send_slack_notification({"blocks": blocks})
return {"handled": True, "notified": "slack"}
@webhook.on("invitee.canceled")
def handle_cancellation(data: dict) -> dict:
"""Notify Slack of cancellation"""
invitee = data.get("invitee", {})
event = data.get("scheduled_event", {})
cancellation = invitee.get("cancellation", {})
send_slack_notification({
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":x: Meeting Canceled",
},
},
{
"type": "section",
"fields": [
{"type": "mrkdwn", "text": f"*Event:*\n{event.get('name')}"},
{"type": "mrkdwn", "text": f"*Invitee:*\n{invitee.get('name')}"},
{"type": "mrkdwn", "text": f"*Reason:*\n{cancellation.get('reason', 'Not provided')}"},
{"type": "mrkdwn", "text": f"*Canceled by:*\n{cancellation.get('canceled_by')}"},
],
},
],
})
return {"handled": True, "notified": "slack"}
@app.route("/webhooks/calendly", methods=["POST"])
def calendly_webhook():
"""Handle Calendly webhook"""
# Verify signature
signature = request.headers.get("Calendly-Webhook-Signature")
if signature:
signing_key = os.environ.get("CALENDLY_WEBHOOK_SECRET")
if not verify_webhook_signature(request.data, signature, signing_key):
return jsonify({"error": "Invalid signature"}), 401
payload = request.json
result = webhook.handle(payload)
return jsonify(result)
if __name__ == "__main__":
app.run(port=8080)
```Related Skills
library-evaluation-integration
Create evaluation scripts and integration tests for Python scientific libraries in the digitalmodel package. Follows the established pattern from fluids, ht, meshio, sectionproperties, and pygmt evaluations.
clean-worktree-integration-from-dirty-main
Land validated issue work from isolated worktrees when the main checkout is dirty by creating a fresh integration worktree, cherry-picking only implementation commits, re-running combined validation, and preparing push/closeout artifacts.
hermes-ecosystem-integration
Wire Hermes into workspace-hub ecosystem — multi-repo skills, config sync, session export to learning pipeline, memory cross-pollination, skill patch tracking, and cross-machine health checks.
api-integration
Integrate offshore engineering software APIs with mock testing for OrcaFlex, AQWA, and WAMIT
llm-wiki-roadmap-integration
Integrate repo-ecosystem work into an existing llm-wiki / knowledge-roadmap issue without creating duplicate GitHub issues.
slack-gif-creator
Create custom animated GIFs for Slack reactions and celebrations. Use for team milestones, custom emoji reactions, inside jokes, and workplace fun.
mkdocs-integration-with-python-package
Sub-skill of mkdocs: Integration with Python Package (+2).
improve-integration
Sub-skill of improve: Integration.
clean-code-pre-commit-integration
Sub-skill of clean-code: Pre-commit Integration.
agent-teams-work-queue-integration
Sub-skill of agent-teams: Work Queue Integration.
vscode-extensions-git-workflow-integration
Sub-skill of vscode-extensions: Git Workflow Integration (+1).
raycast-alfred-project-switcher-integration
Sub-skill of raycast-alfred: Project Switcher Integration.