calendly-api-6-scheduling-links-and-routing
Sub-skill of calendly-api: 6. Scheduling Links and Routing.
Best use case
calendly-api-6-scheduling-links-and-routing is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Sub-skill of calendly-api: 6. Scheduling Links and Routing.
Teams using calendly-api-6-scheduling-links-and-routing 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/6-scheduling-links-and-routing/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How calendly-api-6-scheduling-links-and-routing Compares
| Feature / Agent | calendly-api-6-scheduling-links-and-routing | 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: 6. Scheduling Links and Routing.
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
# 6. Scheduling Links and Routing
## 6. Scheduling Links and Routing
```python
# scheduling.py
# ABOUTME: Scheduling links and routing forms
# ABOUTME: Single-use links, routing, and booking customization
from client import client
from typing import Optional
def create_single_use_link(event_type_uri: str, max_event_count: int = 1) -> dict:
"""Create a single-use scheduling link
These links can only be used for a limited number of bookings
"""
response = client.post(
"/scheduling_links",
json={
"max_event_count": max_event_count,
"owner": event_type_uri,
"owner_type": "EventType",
},
)
return response.get("resource", {})
def get_scheduling_link(link_uri: str) -> dict:
"""Get scheduling link details"""
uuid = link_uri.split("/")[-1]
response = client.get(f"/scheduling_links/{uuid}")
return response.get("resource", {})
def list_routing_forms(organization_uri: str = None) -> list:
"""List routing forms"""
org = organization_uri or client.organization_uri
params = {"organization": org}
return client.paginate("/routing_forms", params=params)
def get_routing_form(form_uri: str) -> dict:
"""Get routing form details"""
uuid = form_uri.split("/")[-1]
response = client.get(f"/routing_forms/{uuid}")
return response.get("resource", {})
def list_routing_form_submissions(
form_uri: str,
sort: str = "created_at:desc",
) -> list:
"""List routing form submissions"""
params = {
"routing_form": form_uri,
"sort": sort,
}
return client.paginate("/routing_form_submissions", params=params)
def get_routing_form_submission(submission_uri: str) -> dict:
"""Get routing form submission details"""
uuid = submission_uri.split("/")[-1]
response = client.get(f"/routing_form_submissions/{uuid}")
return response.get("resource", {})
def build_scheduling_url(
base_url: str,
name: str = None,
email: str = None,
utm_source: str = None,
utm_medium: str = None,
utm_campaign: str = None,
custom_answers: dict = None,
) -> str:
"""Build a pre-filled scheduling URL
custom_answers: {"a1": "answer1", "a2": "answer2"} for custom questions
"""
from urllib.parse import urlencode, urlparse, parse_qs, urlunparse
params = {}
if name:
params["name"] = name
if email:
params["email"] = email
if utm_source:
params["utm_source"] = utm_source
if utm_medium:
params["utm_medium"] = utm_medium
if utm_campaign:
params["utm_campaign"] = utm_campaign
if custom_answers:
params.update(custom_answers)
if not params:
return base_url
parsed = urlparse(base_url)
query = urlencode(params)
return urlunparse((
parsed.scheme,
parsed.netloc,
parsed.path,
parsed.params,
query,
parsed.fragment,
))
def generate_interview_links(
event_type_uri: str,
candidates: list,
) -> list:
"""Generate single-use interview links for candidates
candidates: [{"name": "John", "email": "john@example.com"}, ...]
"""
event_type = get_event_type(event_type_uri)
base_url = event_type["scheduling_url"]
links = []
for candidate in candidates:
# Create single-use link
link = create_single_use_link(event_type_uri, max_event_count=1)
# Build pre-filled URL
scheduling_url = build_scheduling_url(
base_url=link["booking_url"],
name=candidate.get("name"),
email=candidate.get("email"),
utm_source="interview",
utm_campaign=candidate.get("campaign", "hiring"),
)
links.append({
"candidate": candidate,
"link_uri": link["uri"],
"scheduling_url": scheduling_url,
})
return links
from event_types import get_event_type
if __name__ == "__main__":
from event_types import list_event_types
# Get an event type
event_types = list_event_types()
if event_types:
et = event_types[0]
# Build pre-filled URL
url = build_scheduling_url(
base_url=et["scheduling_url"],
name="Jane Doe",
email="jane@example.com",
utm_source="email",
utm_campaign="q1-outreach",
)
print(f"Pre-filled URL: {url}")
# Create single-use link
single_use = create_single_use_link(et["uri"])
print(f"Single-use booking URL: {single_use['booking_url']}")
```Related Skills
llm-wiki-public-private-routing
Firewall between the public llm-wiki repo (vamseeachanta/llm-wiki, MIT + CC-BY-4.0) and per-client private wikis (vamseeachanta/llm-wiki-<client>, e.g. llm-wiki-mkt-a per #2746). Use when (1) deciding whether a converted wiki page lands in public or private surface, (2) applying the project-name abstraction rule to public-bound content, (3) evaluating the public- availability exception that lets actual project names pass through unmodified, (4) promoting content from private to public after sanitization. Encodes the 2026-05-20 user routing directive verbatim: exact client results → private; abstracted (project-name only) → public; project name + all key data publicly available → exception applies. Companion to research/llm-wiki-page-shape-contract (which calls this skill at Rule 8) and research/llm-wiki-source-extraction-coverage (which produces the source pages this skill decides where to send).
agent-label-routing
Deterministic multi-agent task assignment via GitHub labels — classify, label, and generate queue views from `agent:` labels instead of manual queue files
calendly-api-slack-notification-integration
Sub-skill of calendly-api: Slack Notification Integration.
calendly-api-github-actions-integration
Sub-skill of calendly-api: GitHub Actions Integration.
calendly-api-3-scheduled-events
Sub-skill of calendly-api: 3. Scheduled Events.
calendly-api-2-event-types
Sub-skill of calendly-api: 2. Event Types.
calendly-api-1-user-and-organization-management
Sub-skill of calendly-api: 1. User and Organization Management.
calendly-api-1-rate-limiting
Sub-skill of calendly-api: 1. Rate Limiting (+3).
test-oversized-skill
A test fixture skill that exceeds 200 lines with multiple H2/H3 sections for split testing.
interactive-report-generator
Generate interactive HTML reports with Plotly visualizations from data analysis results. Supports dashboards, charts, and professional styling.
data-validation-reporter
Generate interactive validation reports with quality scoring, missing data analysis, and type checking. Combines Pandas validation, Plotly visualization, and YAML configuration for comprehensive data quality reporting.
agent-os-framework
Generate standardized .agent-os directory structure with product documentation, mission, tech-stack, roadmap, and decision records. Enables AI-native workflows.