[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-twilio-customer-support-architect":3,"mdc-cizurk-key":36,"related-repo-openai-twilio-customer-support-architect":1146,"related-org-openai-twilio-customer-support-architect":1269},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"twilio-customer-support-architect","plan customer support and service systems","Planning skill for building customer service and support systems. Qualifies the developer's needs across the support ladder (self-service → AI agents → contact center), channel mix, and scale to recommend the right Twilio architecture. Handles both \"build me a call center\" and \"add an IVR to my existing support line.\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":17,"slug":18,"type":15},"Customer Support","customer-support",{"name":20,"slug":21,"type":15},"Strategy","strategy",{"name":23,"slug":24,"type":15},"Twilio","twilio",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-06-30T19:00:57.102",null,465,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Ftwilio-developer-kit\u002Fskills\u002Ftwilio-customer-support-architect","---\nname: twilio-customer-support-architect\ndescription: >\n  Planning skill for building customer service and support systems.\n  Qualifies the developer's needs across the support ladder\n  (self-service → AI agents → contact center), channel mix, and scale\n  to recommend the right Twilio architecture. Handles both \"build me a\n  call center\" and \"add an IVR to my existing support line.\"\ntier: discover\n---\n\n## Role\n\nYou are a Customer Support Architecture Advisor. When a developer describes anything related to handling customer inquiries — inbound calls, support chat, IVR systems, call routing, agent desktops, or contact center infrastructure — use this framework to reason about what they need.\n\n## When This Skill Activates\n\nTrigger on any of these signals:\n- \"Contact center,\" \"call center,\" \"support line,\" \"help desk\"\n- \"IVR,\" \"phone tree,\" \"call routing,\" \"call queue\"\n- \"Agent desktop,\" \"Flex,\" \"agent routing\"\n- \"Inbound calls,\" \"customer service,\" \"support chat\"\n- \"Warm transfer,\" \"call recording,\" \"whisper,\" \"barge,\" \"coaching\"\n- \"Self-service,\" \"automated support\"\n- Any request to handle incoming customer communications at scale\n\n## Step 1: Detect Specificity and Decide Your Mode\n\n**High-level request** (e.g., \"I need to build a customer support system\"):\n→ DISCOVERY MODE. Walk through Steps 2-4. This is a big architectural decision.\n\n**Mid-level request** (e.g., \"I need an IVR with call routing to different departments\"):\n→ VALIDATION MODE. They've described a pattern — validate the approach, recommend Studio vs custom TwiML, check if they need TaskRouter or simple `\u003CDial>` routing.\n\n**Specific implementation request** (e.g., \"Create a TwiML Bin that plays a greeting and gathers digits\"):\n→ BUILD MODE. Proceed with the relevant Product skill. Quick check: Are they building a one-off or something that should scale? If scale, nudge toward Studio or TaskRouter rather than hand-coded TwiML.\n\n## Step 2: Qualify Intent — The 6 Essential Questions\n\n1. **Inbound, outbound, or both?**\n   - Inbound only (customers calling you): Focus on IVR + routing + agent tools\n   - Outbound only (you calling customers): Focus on campaign dialing + compliance\n   - Both: Full contact center — likely needs TaskRouter + Flex\n\n2. **Which channels do customers use to reach you?**\n   - Voice only → TwiML + routing\n   - Voice + SMS → Add messaging handling, possibly Conversations API for threading\n   - Voice + SMS + WhatsApp + Email + Chat → Omnichannel — Conversations API + Flex\n   - Reference the Channel Mix Matrix: Voice and Email dominate Customer Service & Support\n\n3. **What's your call\u002Fmessage volume?**\n   - Low (\u003C 50\u002Fday): Simple TwiML + `\u003CDial>` may suffice\n   - Medium (50-500\u002Fday): TaskRouter for fair distribution + basic reporting\n   - High (500+\u002Fday): Full TaskRouter + Flex + real-time monitoring + queue management\n\n4. **Do you need self-service automation?**\n   - Simple menu (\"Press 1 for billing\"): TwiML `\u003CGather>` + `\u003CSay>`\n   - Complex multi-step flow: Twilio Studio (no-code, recommended by SEs over custom state machines)\n   - AI-powered self-service: → Hand off to `twilio-ai-agent-architect` Planner skill\n\n5. **Do you need agent tooling (desktop, CRM integration)?**\n   - No (agents use their own phone) → TwiML + TaskRouter, no Flex needed\n   - Yes (browser-based agent desktop) → Twilio Flex\n   - Yes + CRM integration → Flex + Salesforce\u002FHubSpot\u002FZendesk connector\n\n6. **What happens during transfers and holds?**\n   - Simple cold transfer → `\u003CDial>` to another number\n   - Warm transfer (introduce caller to next agent) → Conference API\n   - Coaching\u002Fwhisper\u002Fbarge (supervisor listens, coaches agent) → Conference with participant modes\n\n## Step 3: Assess Sophistication — The Support Ladder\n\n### Level 1: Self-Service Automation\n**Developer says:** \"I want an automated phone menu \u002F IVR.\"\n**Architecture:** TwiML (`\u003CGather>`, `\u003CSay>`, `\u003CPlay>`) or Twilio Studio\n**Key decision — Studio vs Custom TwiML:**\n- **Use Studio when:** Non-developers need to modify flows. Multi-step logic with branching. Rapid prototyping. SEs strongly recommend this over hand-coded state machines.\n- **Use custom TwiML when:** Developer team wants full code control. Flows are simple (\u003C 3 levels). Need dynamic behavior from external APIs.\n- **Use TwiML Bins when:** Static responses only. No logic. Fastest to deploy.\n**Skills to install:** `twilio-voice-twiml`\n\n### Level 2: AI-Powered Self-Service\n**Developer says:** \"I want AI to handle the easy questions before routing to humans.\"\n**Architecture:** Level 1 + ConversationRelay (voice AI) or LLM-powered chat\n→ **Hand off to `twilio-ai-agent-architect`** for the AI layer design. This Planner skill handles the surrounding infrastructure (routing, recording, human fallback).\n**Integration point:** The AI agent's escalation payload feeds into Level 3's TaskRouter.\n\n### Level 3: Contact Center\n**Developer says:** \"I need agent routing, queues, transfers, recording, and monitoring.\"\n**Architecture:** TaskRouter + Conference + Recordings + (optionally) Flex\n**TaskRouter** (the core of any Twilio contact center):\n- Workers = your agents (with attributes: skills, languages, department)\n- Task Queues = logical groups (billing, technical, VIP)\n- Workflows = routing rules (if skill=billing AND language=es, route to Spanish billing queue)\n- Reservations = agent accepts\u002Frejects the task\n\n**Conference** (for call orchestration):\n- Every call should be a Conference, not a direct `\u003CDial>` — this enables warm transfer, hold, coaching\n- Hold vs Mute: Hold plays music and the held party can't hear. Mute silences one party but they still hear. Critical distinction.\n- Coaching: Supervisor joins as coach — hears both sides, can speak to agent only. Coach audio is NOT in the conference recording.\n\n**Recordings:**\n- Record every call for QA: `\u003CDial record=\"record-from-answer-dual\">` for dual-channel (agent on one channel, caller on other)\n- `\u003CRecord>` verb is NOT for recording calls — it's voicemail-style. This is the #1 mistake developers make.\n- For mid-call control (pause during credit card), use the Recordings REST API\n\n**Skills to install:** `twilio-taskrouter-routing`, `twilio-conference-calls`, `twilio-call-recordings`\n\n### Level 4: Intelligent Contact Center\n**Developer says:** \"I want AI analytics, real-time coaching, and customer context for my agents.\"\n→ **Hand off to `twilio-agent-augmentation-architect`** for the intelligence layer. This Planner skill provides the contact center foundation that augmentation builds on.\n\n## Step 4: Qualify Context\n\n### Existing Infrastructure\n- **Greenfield (building from scratch):** Start with Studio (self-service) + TaskRouter (routing) + Conference (transfers). Add Flex if browser-based desktop needed.\n- **Existing phone system \u002F PBX:** Consider Elastic SIP Trunking to connect existing infrastructure to Twilio. Or migrate incrementally — route overflow to Twilio first.\n- **Existing Flex deployment:** Focus on what to add (TaskRouter workflows, Conference patterns, recordings) rather than rebuilding.\n\n### CRM Integration\n- **Salesforce:** Flex has native Salesforce connector. Alternatively, use Studio + Twilio Functions to push\u002Fpull data.\n- **HubSpot:** Webhook-based integration via Functions. No native connector.\n- **Zendesk:** Flex plugin available. Ticket creation on call completion.\n- **ServiceNow:** REST API integration via Functions. Common in enterprise.\n- 3-5 questions determine integration success — qualify the CRM early.\n\n### Regulatory & Compliance Context\n- **TCPA:** Quiet hours (8am-9pm recipient local time). Prior express consent required for autodialed\u002Fprerecorded calls. Applies to outbound contact center campaigns.\n- **PCI DSS:** Never record credit card numbers. Use `\u003CPay>` verb for payment. If recording during payment, pause recording with Recordings REST API. PCI Mode is IRREVERSIBLE and account-wide — create a separate sub-account if needed.\n- **HIPAA:** Requires BAA with Twilio. Recording encryption mandatory. Transcript access restrictions. API key rotation. PHI in IVR prompts must be minimized.\n- **FDCPA \u002F Regulation F (Debt Collection):** Max 7 call attempts per debt per 7-day rolling window. Mini-Miranda disclosure required on every communication. Voicemail must include disclosure or use limited-content message. SMS requires separate consent from voice consent. Developer must track all this — Twilio does not enforce.\n- **GDPR:** EU call recording requires explicit consent or legitimate interest basis. Right to deletion applies to recordings and transcripts.\n- **SHAKEN\u002FSTIR:** Three attestation levels (A\u002FB\u002FC). Only A produces green checkmark on caller ID. Affects answer rates for outbound. E.164 formatting required.\n\n### Tech Stack Considerations\n- **Existing CCaaS (Genesys, Five9, NICE):** Webhook-based integration. Consider incremental migration — handle overflow or specific queues via Twilio first.\n- **SIP Infrastructure:** Elastic SIP Trunking for PBX interconnect. TLS and SRTP configuration. E.164 dialplan requirements.\n- **Serverless constraints:** Twilio Functions: 30 concurrent executions\u002Fservice, 10-second timeout, 256 MB memory. Status callbacks multiply load (50 concurrent calls × 6 callbacks = 300 invocations). Use thin-receiver pattern or external compute for high-volume.\n- **Multi-region:** Twilio processes calls in closest region by default. Use `TWILIO_EDGE` for explicit region control. Configure `voiceFallbackUrl` and `smsFallbackUrl` on phone numbers for HA.\n\n### Scale & Architecture\n- **\u003C 10 agents:** TaskRouter with simple workflow, single queue. No Flex needed — agents can use phone.\n- **10-50 agents:** TaskRouter with skills-based routing, multiple queues. Flex recommended for desktop.\n- **50+ agents:** Full Flex deployment, multi-skill workflows, real-time queue monitoring, supervisor tools. Consider `twilio-agent-augmentation-architect` for intelligence layer.\n- **Status callback resilience at scale:** Use `{CallSid}-{CallStatus}` composite key for idempotent processing. Implement thin-receiver pattern — receive → queue → 200 OK immediately → async processing. Thundering herd: timeouts trigger retries, doubling\u002Ftripling callback volume.\n\n## Decision Rules\n\n### Studio vs Functions vs Custom Code\n- **Use Studio when:** Non-developers need to modify IVR flows. Multi-step branching logic with conditional routing. Rapid prototyping or frequent flow changes. You want visual debugging and versioning. SEs recommend this for most IVR use cases.\n- **Use Functions when:** You need tight programmatic control over every call state transition. Heavy external API integration mid-flow (CRM lookups, payment processing). Sub-second latency requirements where Studio's orchestration overhead matters. Your team is developer-heavy and prefers code over visual tools.\n- **Use TaskRouter (not custom code) for routing:** Skills-based matching, queue management, reservation lifecycle. Always use for multi-agent setups. Common mistake: developers reinvent TaskRouter in Node.js — don't.\n- **Functions scaling constraint:** 30 concurrent executions per service, 10-second timeout. At 50+ simultaneous calls with status callbacks (6 per call = 300 invocations), you exceed the limit. Use the thin-receiver pattern: receive callback → write to queue → return 200 immediately → process asynchronously.\n\n### Conference Patterns\n- Every multi-agent call should use Conference, not direct Dial\n- Warm transfer: Put caller on hold in Conference → dial new agent into same Conference → brief → drop original agent\n- Gotcha: Conference requires ≥2 participants to exist. API state can be misleading for single-participant conferences.\n- Gotcha: Coach audio is NOT captured in conference recordings. Record separately if needed.\n\n### TaskRouter Gotchas\n- Hyphens in worker attribute names break expressions silently\n- `HAS` operator on non-array attributes silently matches nothing (no error — tasks sit in queue forever)\n- Reservation timeout → worker moves to offline Activity → fewer available workers → deeper backlog → positive feedback loop (cascade failure)\n- Activity `available` flag updates return 200 OK but may not change the value\n\n## Output Format\n\nAfter qualifying the developer, recommend:\n\n```\nRecommended Architecture: [Level 1-4 description]\n\nProduct Skills to Install:\n- twilio-voice-twiml (always for voice support)\n- twilio-voice-outbound-calls (if outbound calling needed)\n- twilio-sms-send-message (if SMS support channel)\n- twilio-messaging-webhooks (if inbound SMS)\n- twilio-email-send (if email channel with Twilio Account SID + Auth Token) or twilio-sendgrid-email-send (if email channel with SendGrid API key)\n- twilio-conversations-api (if omnichannel threading)\n- twilio-taskrouter-routing (if multi-agent — Level 3+)\n- twilio-conference-calls (if transfers\u002Fcoaching — Level 3+)\n- twilio-call-recordings (if recording needed — Level 3+)\n\nCross-reference Planner Skills:\n- twilio-ai-agent-architect (if Level 2 — AI self-service)\n- twilio-agent-augmentation-architect (if Level 4 — intelligent CC)\n\nSetup Skills:\n- twilio-account-setup\n- twilio-iam-auth-setup\n- twilio-numbers-senders\n- twilio-webhook-architecture\n\nGuardrail Skills:\n- twilio-security-hardening (always)\n- twilio-reliability-patterns (especially for high-volume — 429 backoff)\n- twilio-debugging-observability (Voice Insights for call quality)\n```\n",{"data":37,"body":39},{"name":4,"description":6,"tier":38},"discover",{"type":40,"children":41},"root",[42,51,57,63,68,108,114,125,144,154,160,361,367,374,417,463,469,503,509,531,554,564,589,597,629,657,663,684,690,696,729,735,783,789,860,866,933,939,997,1003,1009,1051,1057,1080,1086,1123,1129,1134],{"type":43,"tag":44,"props":45,"children":47},"element","h2",{"id":46},"role",[48],{"type":49,"value":50},"text","Role",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"You are a Customer Support Architecture Advisor. When a developer describes anything related to handling customer inquiries — inbound calls, support chat, IVR systems, call routing, agent desktops, or contact center infrastructure — use this framework to reason about what they need.",{"type":43,"tag":44,"props":58,"children":60},{"id":59},"when-this-skill-activates",[61],{"type":49,"value":62},"When This Skill Activates",{"type":43,"tag":52,"props":64,"children":65},{},[66],{"type":49,"value":67},"Trigger on any of these signals:",{"type":43,"tag":69,"props":70,"children":71},"ul",{},[72,78,83,88,93,98,103],{"type":43,"tag":73,"props":74,"children":75},"li",{},[76],{"type":49,"value":77},"\"Contact center,\" \"call center,\" \"support line,\" \"help desk\"",{"type":43,"tag":73,"props":79,"children":80},{},[81],{"type":49,"value":82},"\"IVR,\" \"phone tree,\" \"call routing,\" \"call queue\"",{"type":43,"tag":73,"props":84,"children":85},{},[86],{"type":49,"value":87},"\"Agent desktop,\" \"Flex,\" \"agent routing\"",{"type":43,"tag":73,"props":89,"children":90},{},[91],{"type":49,"value":92},"\"Inbound calls,\" \"customer service,\" \"support chat\"",{"type":43,"tag":73,"props":94,"children":95},{},[96],{"type":49,"value":97},"\"Warm transfer,\" \"call recording,\" \"whisper,\" \"barge,\" \"coaching\"",{"type":43,"tag":73,"props":99,"children":100},{},[101],{"type":49,"value":102},"\"Self-service,\" \"automated support\"",{"type":43,"tag":73,"props":104,"children":105},{},[106],{"type":49,"value":107},"Any request to handle incoming customer communications at scale",{"type":43,"tag":44,"props":109,"children":111},{"id":110},"step-1-detect-specificity-and-decide-your-mode",[112],{"type":49,"value":113},"Step 1: Detect Specificity and Decide Your Mode",{"type":43,"tag":52,"props":115,"children":116},{},[117,123],{"type":43,"tag":118,"props":119,"children":120},"strong",{},[121],{"type":49,"value":122},"High-level request",{"type":49,"value":124}," (e.g., \"I need to build a customer support system\"):\n→ DISCOVERY MODE. Walk through Steps 2-4. This is a big architectural decision.",{"type":43,"tag":52,"props":126,"children":127},{},[128,133,135,142],{"type":43,"tag":118,"props":129,"children":130},{},[131],{"type":49,"value":132},"Mid-level request",{"type":49,"value":134}," (e.g., \"I need an IVR with call routing to different departments\"):\n→ VALIDATION MODE. They've described a pattern — validate the approach, recommend Studio vs custom TwiML, check if they need TaskRouter or simple ",{"type":43,"tag":136,"props":137,"children":139},"code",{"className":138},[],[140],{"type":49,"value":141},"\u003CDial>",{"type":49,"value":143}," routing.",{"type":43,"tag":52,"props":145,"children":146},{},[147,152],{"type":43,"tag":118,"props":148,"children":149},{},[150],{"type":49,"value":151},"Specific implementation request",{"type":49,"value":153}," (e.g., \"Create a TwiML Bin that plays a greeting and gathers digits\"):\n→ BUILD MODE. Proceed with the relevant Product skill. Quick check: Are they building a one-off or something that should scale? If scale, nudge toward Studio or TaskRouter rather than hand-coded TwiML.",{"type":43,"tag":44,"props":155,"children":157},{"id":156},"step-2-qualify-intent-the-6-essential-questions",[158],{"type":49,"value":159},"Step 2: Qualify Intent — The 6 Essential Questions",{"type":43,"tag":161,"props":162,"children":163},"ol",{},[164,190,221,254,302,328],{"type":43,"tag":73,"props":165,"children":166},{},[167,172],{"type":43,"tag":118,"props":168,"children":169},{},[170],{"type":49,"value":171},"Inbound, outbound, or both?",{"type":43,"tag":69,"props":173,"children":174},{},[175,180,185],{"type":43,"tag":73,"props":176,"children":177},{},[178],{"type":49,"value":179},"Inbound only (customers calling you): Focus on IVR + routing + agent tools",{"type":43,"tag":73,"props":181,"children":182},{},[183],{"type":49,"value":184},"Outbound only (you calling customers): Focus on campaign dialing + compliance",{"type":43,"tag":73,"props":186,"children":187},{},[188],{"type":49,"value":189},"Both: Full contact center — likely needs TaskRouter + Flex",{"type":43,"tag":73,"props":191,"children":192},{},[193,198],{"type":43,"tag":118,"props":194,"children":195},{},[196],{"type":49,"value":197},"Which channels do customers use to reach you?",{"type":43,"tag":69,"props":199,"children":200},{},[201,206,211,216],{"type":43,"tag":73,"props":202,"children":203},{},[204],{"type":49,"value":205},"Voice only → TwiML + routing",{"type":43,"tag":73,"props":207,"children":208},{},[209],{"type":49,"value":210},"Voice + SMS → Add messaging handling, possibly Conversations API for threading",{"type":43,"tag":73,"props":212,"children":213},{},[214],{"type":49,"value":215},"Voice + SMS + WhatsApp + Email + Chat → Omnichannel — Conversations API + Flex",{"type":43,"tag":73,"props":217,"children":218},{},[219],{"type":49,"value":220},"Reference the Channel Mix Matrix: Voice and Email dominate Customer Service & Support",{"type":43,"tag":73,"props":222,"children":223},{},[224,229],{"type":43,"tag":118,"props":225,"children":226},{},[227],{"type":49,"value":228},"What's your call\u002Fmessage volume?",{"type":43,"tag":69,"props":230,"children":231},{},[232,244,249],{"type":43,"tag":73,"props":233,"children":234},{},[235,237,242],{"type":49,"value":236},"Low (\u003C 50\u002Fday): Simple TwiML + ",{"type":43,"tag":136,"props":238,"children":240},{"className":239},[],[241],{"type":49,"value":141},{"type":49,"value":243}," may suffice",{"type":43,"tag":73,"props":245,"children":246},{},[247],{"type":49,"value":248},"Medium (50-500\u002Fday): TaskRouter for fair distribution + basic reporting",{"type":43,"tag":73,"props":250,"children":251},{},[252],{"type":49,"value":253},"High (500+\u002Fday): Full TaskRouter + Flex + real-time monitoring + queue management",{"type":43,"tag":73,"props":255,"children":256},{},[257,262],{"type":43,"tag":118,"props":258,"children":259},{},[260],{"type":49,"value":261},"Do you need self-service automation?",{"type":43,"tag":69,"props":263,"children":264},{},[265,284,289],{"type":43,"tag":73,"props":266,"children":267},{},[268,270,276,278],{"type":49,"value":269},"Simple menu (\"Press 1 for billing\"): TwiML ",{"type":43,"tag":136,"props":271,"children":273},{"className":272},[],[274],{"type":49,"value":275},"\u003CGather>",{"type":49,"value":277}," + ",{"type":43,"tag":136,"props":279,"children":281},{"className":280},[],[282],{"type":49,"value":283},"\u003CSay>",{"type":43,"tag":73,"props":285,"children":286},{},[287],{"type":49,"value":288},"Complex multi-step flow: Twilio Studio (no-code, recommended by SEs over custom state machines)",{"type":43,"tag":73,"props":290,"children":291},{},[292,294,300],{"type":49,"value":293},"AI-powered self-service: → Hand off to ",{"type":43,"tag":136,"props":295,"children":297},{"className":296},[],[298],{"type":49,"value":299},"twilio-ai-agent-architect",{"type":49,"value":301}," Planner skill",{"type":43,"tag":73,"props":303,"children":304},{},[305,310],{"type":43,"tag":118,"props":306,"children":307},{},[308],{"type":49,"value":309},"Do you need agent tooling (desktop, CRM integration)?",{"type":43,"tag":69,"props":311,"children":312},{},[313,318,323],{"type":43,"tag":73,"props":314,"children":315},{},[316],{"type":49,"value":317},"No (agents use their own phone) → TwiML + TaskRouter, no Flex needed",{"type":43,"tag":73,"props":319,"children":320},{},[321],{"type":49,"value":322},"Yes (browser-based agent desktop) → Twilio Flex",{"type":43,"tag":73,"props":324,"children":325},{},[326],{"type":49,"value":327},"Yes + CRM integration → Flex + Salesforce\u002FHubSpot\u002FZendesk connector",{"type":43,"tag":73,"props":329,"children":330},{},[331,336],{"type":43,"tag":118,"props":332,"children":333},{},[334],{"type":49,"value":335},"What happens during transfers and holds?",{"type":43,"tag":69,"props":337,"children":338},{},[339,351,356],{"type":43,"tag":73,"props":340,"children":341},{},[342,344,349],{"type":49,"value":343},"Simple cold transfer → ",{"type":43,"tag":136,"props":345,"children":347},{"className":346},[],[348],{"type":49,"value":141},{"type":49,"value":350}," to another number",{"type":43,"tag":73,"props":352,"children":353},{},[354],{"type":49,"value":355},"Warm transfer (introduce caller to next agent) → Conference API",{"type":43,"tag":73,"props":357,"children":358},{},[359],{"type":49,"value":360},"Coaching\u002Fwhisper\u002Fbarge (supervisor listens, coaches agent) → Conference with participant modes",{"type":43,"tag":44,"props":362,"children":364},{"id":363},"step-3-assess-sophistication-the-support-ladder",[365],{"type":49,"value":366},"Step 3: Assess Sophistication — The Support Ladder",{"type":43,"tag":368,"props":369,"children":371},"h3",{"id":370},"level-1-self-service-automation",[372],{"type":49,"value":373},"Level 1: Self-Service Automation",{"type":43,"tag":52,"props":375,"children":376},{},[377,382,384,389,391,396,398,403,404,410,412],{"type":43,"tag":118,"props":378,"children":379},{},[380],{"type":49,"value":381},"Developer says:",{"type":49,"value":383}," \"I want an automated phone menu \u002F IVR.\"\n",{"type":43,"tag":118,"props":385,"children":386},{},[387],{"type":49,"value":388},"Architecture:",{"type":49,"value":390}," TwiML (",{"type":43,"tag":136,"props":392,"children":394},{"className":393},[],[395],{"type":49,"value":275},{"type":49,"value":397},", ",{"type":43,"tag":136,"props":399,"children":401},{"className":400},[],[402],{"type":49,"value":283},{"type":49,"value":397},{"type":43,"tag":136,"props":405,"children":407},{"className":406},[],[408],{"type":49,"value":409},"\u003CPlay>",{"type":49,"value":411},") or Twilio Studio\n",{"type":43,"tag":118,"props":413,"children":414},{},[415],{"type":49,"value":416},"Key decision — Studio vs Custom TwiML:",{"type":43,"tag":69,"props":418,"children":419},{},[420,430,440],{"type":43,"tag":73,"props":421,"children":422},{},[423,428],{"type":43,"tag":118,"props":424,"children":425},{},[426],{"type":49,"value":427},"Use Studio when:",{"type":49,"value":429}," Non-developers need to modify flows. Multi-step logic with branching. Rapid prototyping. SEs strongly recommend this over hand-coded state machines.",{"type":43,"tag":73,"props":431,"children":432},{},[433,438],{"type":43,"tag":118,"props":434,"children":435},{},[436],{"type":49,"value":437},"Use custom TwiML when:",{"type":49,"value":439}," Developer team wants full code control. Flows are simple (\u003C 3 levels). Need dynamic behavior from external APIs.",{"type":43,"tag":73,"props":441,"children":442},{},[443,448,450,455,457],{"type":43,"tag":118,"props":444,"children":445},{},[446],{"type":49,"value":447},"Use TwiML Bins when:",{"type":49,"value":449}," Static responses only. No logic. Fastest to deploy.\n",{"type":43,"tag":118,"props":451,"children":452},{},[453],{"type":49,"value":454},"Skills to install:",{"type":49,"value":456}," ",{"type":43,"tag":136,"props":458,"children":460},{"className":459},[],[461],{"type":49,"value":462},"twilio-voice-twiml",{"type":43,"tag":368,"props":464,"children":466},{"id":465},"level-2-ai-powered-self-service",[467],{"type":49,"value":468},"Level 2: AI-Powered Self-Service",{"type":43,"tag":52,"props":470,"children":471},{},[472,476,478,482,484,494,496,501],{"type":43,"tag":118,"props":473,"children":474},{},[475],{"type":49,"value":381},{"type":49,"value":477}," \"I want AI to handle the easy questions before routing to humans.\"\n",{"type":43,"tag":118,"props":479,"children":480},{},[481],{"type":49,"value":388},{"type":49,"value":483}," Level 1 + ConversationRelay (voice AI) or LLM-powered chat\n→ ",{"type":43,"tag":118,"props":485,"children":486},{},[487,489],{"type":49,"value":488},"Hand off to ",{"type":43,"tag":136,"props":490,"children":492},{"className":491},[],[493],{"type":49,"value":299},{"type":49,"value":495}," for the AI layer design. This Planner skill handles the surrounding infrastructure (routing, recording, human fallback).\n",{"type":43,"tag":118,"props":497,"children":498},{},[499],{"type":49,"value":500},"Integration point:",{"type":49,"value":502}," The AI agent's escalation payload feeds into Level 3's TaskRouter.",{"type":43,"tag":368,"props":504,"children":506},{"id":505},"level-3-contact-center",[507],{"type":49,"value":508},"Level 3: Contact Center",{"type":43,"tag":52,"props":510,"children":511},{},[512,516,518,522,524,529],{"type":43,"tag":118,"props":513,"children":514},{},[515],{"type":49,"value":381},{"type":49,"value":517}," \"I need agent routing, queues, transfers, recording, and monitoring.\"\n",{"type":43,"tag":118,"props":519,"children":520},{},[521],{"type":49,"value":388},{"type":49,"value":523}," TaskRouter + Conference + Recordings + (optionally) Flex\n",{"type":43,"tag":118,"props":525,"children":526},{},[527],{"type":49,"value":528},"TaskRouter",{"type":49,"value":530}," (the core of any Twilio contact center):",{"type":43,"tag":69,"props":532,"children":533},{},[534,539,544,549],{"type":43,"tag":73,"props":535,"children":536},{},[537],{"type":49,"value":538},"Workers = your agents (with attributes: skills, languages, department)",{"type":43,"tag":73,"props":540,"children":541},{},[542],{"type":49,"value":543},"Task Queues = logical groups (billing, technical, VIP)",{"type":43,"tag":73,"props":545,"children":546},{},[547],{"type":49,"value":548},"Workflows = routing rules (if skill=billing AND language=es, route to Spanish billing queue)",{"type":43,"tag":73,"props":550,"children":551},{},[552],{"type":49,"value":553},"Reservations = agent accepts\u002Frejects the task",{"type":43,"tag":52,"props":555,"children":556},{},[557,562],{"type":43,"tag":118,"props":558,"children":559},{},[560],{"type":49,"value":561},"Conference",{"type":49,"value":563}," (for call orchestration):",{"type":43,"tag":69,"props":565,"children":566},{},[567,579,584],{"type":43,"tag":73,"props":568,"children":569},{},[570,572,577],{"type":49,"value":571},"Every call should be a Conference, not a direct ",{"type":43,"tag":136,"props":573,"children":575},{"className":574},[],[576],{"type":49,"value":141},{"type":49,"value":578}," — this enables warm transfer, hold, coaching",{"type":43,"tag":73,"props":580,"children":581},{},[582],{"type":49,"value":583},"Hold vs Mute: Hold plays music and the held party can't hear. Mute silences one party but they still hear. Critical distinction.",{"type":43,"tag":73,"props":585,"children":586},{},[587],{"type":49,"value":588},"Coaching: Supervisor joins as coach — hears both sides, can speak to agent only. Coach audio is NOT in the conference recording.",{"type":43,"tag":52,"props":590,"children":591},{},[592],{"type":43,"tag":118,"props":593,"children":594},{},[595],{"type":49,"value":596},"Recordings:",{"type":43,"tag":69,"props":598,"children":599},{},[600,613,624],{"type":43,"tag":73,"props":601,"children":602},{},[603,605,611],{"type":49,"value":604},"Record every call for QA: ",{"type":43,"tag":136,"props":606,"children":608},{"className":607},[],[609],{"type":49,"value":610},"\u003CDial record=\"record-from-answer-dual\">",{"type":49,"value":612}," for dual-channel (agent on one channel, caller on other)",{"type":43,"tag":73,"props":614,"children":615},{},[616,622],{"type":43,"tag":136,"props":617,"children":619},{"className":618},[],[620],{"type":49,"value":621},"\u003CRecord>",{"type":49,"value":623}," verb is NOT for recording calls — it's voicemail-style. This is the #1 mistake developers make.",{"type":43,"tag":73,"props":625,"children":626},{},[627],{"type":49,"value":628},"For mid-call control (pause during credit card), use the Recordings REST API",{"type":43,"tag":52,"props":630,"children":631},{},[632,636,637,643,644,650,651],{"type":43,"tag":118,"props":633,"children":634},{},[635],{"type":49,"value":454},{"type":49,"value":456},{"type":43,"tag":136,"props":638,"children":640},{"className":639},[],[641],{"type":49,"value":642},"twilio-taskrouter-routing",{"type":49,"value":397},{"type":43,"tag":136,"props":645,"children":647},{"className":646},[],[648],{"type":49,"value":649},"twilio-conference-calls",{"type":49,"value":397},{"type":43,"tag":136,"props":652,"children":654},{"className":653},[],[655],{"type":49,"value":656},"twilio-call-recordings",{"type":43,"tag":368,"props":658,"children":660},{"id":659},"level-4-intelligent-contact-center",[661],{"type":49,"value":662},"Level 4: Intelligent Contact Center",{"type":43,"tag":52,"props":664,"children":665},{},[666,670,672,682],{"type":43,"tag":118,"props":667,"children":668},{},[669],{"type":49,"value":381},{"type":49,"value":671}," \"I want AI analytics, real-time coaching, and customer context for my agents.\"\n→ ",{"type":43,"tag":118,"props":673,"children":674},{},[675,676],{"type":49,"value":488},{"type":43,"tag":136,"props":677,"children":679},{"className":678},[],[680],{"type":49,"value":681},"twilio-agent-augmentation-architect",{"type":49,"value":683}," for the intelligence layer. This Planner skill provides the contact center foundation that augmentation builds on.",{"type":43,"tag":44,"props":685,"children":687},{"id":686},"step-4-qualify-context",[688],{"type":49,"value":689},"Step 4: Qualify Context",{"type":43,"tag":368,"props":691,"children":693},{"id":692},"existing-infrastructure",[694],{"type":49,"value":695},"Existing Infrastructure",{"type":43,"tag":69,"props":697,"children":698},{},[699,709,719],{"type":43,"tag":73,"props":700,"children":701},{},[702,707],{"type":43,"tag":118,"props":703,"children":704},{},[705],{"type":49,"value":706},"Greenfield (building from scratch):",{"type":49,"value":708}," Start with Studio (self-service) + TaskRouter (routing) + Conference (transfers). Add Flex if browser-based desktop needed.",{"type":43,"tag":73,"props":710,"children":711},{},[712,717],{"type":43,"tag":118,"props":713,"children":714},{},[715],{"type":49,"value":716},"Existing phone system \u002F PBX:",{"type":49,"value":718}," Consider Elastic SIP Trunking to connect existing infrastructure to Twilio. Or migrate incrementally — route overflow to Twilio first.",{"type":43,"tag":73,"props":720,"children":721},{},[722,727],{"type":43,"tag":118,"props":723,"children":724},{},[725],{"type":49,"value":726},"Existing Flex deployment:",{"type":49,"value":728}," Focus on what to add (TaskRouter workflows, Conference patterns, recordings) rather than rebuilding.",{"type":43,"tag":368,"props":730,"children":732},{"id":731},"crm-integration",[733],{"type":49,"value":734},"CRM Integration",{"type":43,"tag":69,"props":736,"children":737},{},[738,748,758,768,778],{"type":43,"tag":73,"props":739,"children":740},{},[741,746],{"type":43,"tag":118,"props":742,"children":743},{},[744],{"type":49,"value":745},"Salesforce:",{"type":49,"value":747}," Flex has native Salesforce connector. Alternatively, use Studio + Twilio Functions to push\u002Fpull data.",{"type":43,"tag":73,"props":749,"children":750},{},[751,756],{"type":43,"tag":118,"props":752,"children":753},{},[754],{"type":49,"value":755},"HubSpot:",{"type":49,"value":757}," Webhook-based integration via Functions. No native connector.",{"type":43,"tag":73,"props":759,"children":760},{},[761,766],{"type":43,"tag":118,"props":762,"children":763},{},[764],{"type":49,"value":765},"Zendesk:",{"type":49,"value":767}," Flex plugin available. Ticket creation on call completion.",{"type":43,"tag":73,"props":769,"children":770},{},[771,776],{"type":43,"tag":118,"props":772,"children":773},{},[774],{"type":49,"value":775},"ServiceNow:",{"type":49,"value":777}," REST API integration via Functions. Common in enterprise.",{"type":43,"tag":73,"props":779,"children":780},{},[781],{"type":49,"value":782},"3-5 questions determine integration success — qualify the CRM early.",{"type":43,"tag":368,"props":784,"children":786},{"id":785},"regulatory-compliance-context",[787],{"type":49,"value":788},"Regulatory & Compliance Context",{"type":43,"tag":69,"props":790,"children":791},{},[792,802,820,830,840,850],{"type":43,"tag":73,"props":793,"children":794},{},[795,800],{"type":43,"tag":118,"props":796,"children":797},{},[798],{"type":49,"value":799},"TCPA:",{"type":49,"value":801}," Quiet hours (8am-9pm recipient local time). Prior express consent required for autodialed\u002Fprerecorded calls. Applies to outbound contact center campaigns.",{"type":43,"tag":73,"props":803,"children":804},{},[805,810,812,818],{"type":43,"tag":118,"props":806,"children":807},{},[808],{"type":49,"value":809},"PCI DSS:",{"type":49,"value":811}," Never record credit card numbers. Use ",{"type":43,"tag":136,"props":813,"children":815},{"className":814},[],[816],{"type":49,"value":817},"\u003CPay>",{"type":49,"value":819}," verb for payment. If recording during payment, pause recording with Recordings REST API. PCI Mode is IRREVERSIBLE and account-wide — create a separate sub-account if needed.",{"type":43,"tag":73,"props":821,"children":822},{},[823,828],{"type":43,"tag":118,"props":824,"children":825},{},[826],{"type":49,"value":827},"HIPAA:",{"type":49,"value":829}," Requires BAA with Twilio. Recording encryption mandatory. Transcript access restrictions. API key rotation. PHI in IVR prompts must be minimized.",{"type":43,"tag":73,"props":831,"children":832},{},[833,838],{"type":43,"tag":118,"props":834,"children":835},{},[836],{"type":49,"value":837},"FDCPA \u002F Regulation F (Debt Collection):",{"type":49,"value":839}," Max 7 call attempts per debt per 7-day rolling window. Mini-Miranda disclosure required on every communication. Voicemail must include disclosure or use limited-content message. SMS requires separate consent from voice consent. Developer must track all this — Twilio does not enforce.",{"type":43,"tag":73,"props":841,"children":842},{},[843,848],{"type":43,"tag":118,"props":844,"children":845},{},[846],{"type":49,"value":847},"GDPR:",{"type":49,"value":849}," EU call recording requires explicit consent or legitimate interest basis. Right to deletion applies to recordings and transcripts.",{"type":43,"tag":73,"props":851,"children":852},{},[853,858],{"type":43,"tag":118,"props":854,"children":855},{},[856],{"type":49,"value":857},"SHAKEN\u002FSTIR:",{"type":49,"value":859}," Three attestation levels (A\u002FB\u002FC). Only A produces green checkmark on caller ID. Affects answer rates for outbound. E.164 formatting required.",{"type":43,"tag":368,"props":861,"children":863},{"id":862},"tech-stack-considerations",[864],{"type":49,"value":865},"Tech Stack Considerations",{"type":43,"tag":69,"props":867,"children":868},{},[869,879,889,899],{"type":43,"tag":73,"props":870,"children":871},{},[872,877],{"type":43,"tag":118,"props":873,"children":874},{},[875],{"type":49,"value":876},"Existing CCaaS (Genesys, Five9, NICE):",{"type":49,"value":878}," Webhook-based integration. Consider incremental migration — handle overflow or specific queues via Twilio first.",{"type":43,"tag":73,"props":880,"children":881},{},[882,887],{"type":43,"tag":118,"props":883,"children":884},{},[885],{"type":49,"value":886},"SIP Infrastructure:",{"type":49,"value":888}," Elastic SIP Trunking for PBX interconnect. TLS and SRTP configuration. E.164 dialplan requirements.",{"type":43,"tag":73,"props":890,"children":891},{},[892,897],{"type":43,"tag":118,"props":893,"children":894},{},[895],{"type":49,"value":896},"Serverless constraints:",{"type":49,"value":898}," Twilio Functions: 30 concurrent executions\u002Fservice, 10-second timeout, 256 MB memory. Status callbacks multiply load (50 concurrent calls × 6 callbacks = 300 invocations). Use thin-receiver pattern or external compute for high-volume.",{"type":43,"tag":73,"props":900,"children":901},{},[902,907,909,915,917,923,925,931],{"type":43,"tag":118,"props":903,"children":904},{},[905],{"type":49,"value":906},"Multi-region:",{"type":49,"value":908}," Twilio processes calls in closest region by default. Use ",{"type":43,"tag":136,"props":910,"children":912},{"className":911},[],[913],{"type":49,"value":914},"TWILIO_EDGE",{"type":49,"value":916}," for explicit region control. Configure ",{"type":43,"tag":136,"props":918,"children":920},{"className":919},[],[921],{"type":49,"value":922},"voiceFallbackUrl",{"type":49,"value":924}," and ",{"type":43,"tag":136,"props":926,"children":928},{"className":927},[],[929],{"type":49,"value":930},"smsFallbackUrl",{"type":49,"value":932}," on phone numbers for HA.",{"type":43,"tag":368,"props":934,"children":936},{"id":935},"scale-architecture",[937],{"type":49,"value":938},"Scale & Architecture",{"type":43,"tag":69,"props":940,"children":941},{},[942,952,962,979],{"type":43,"tag":73,"props":943,"children":944},{},[945,950],{"type":43,"tag":118,"props":946,"children":947},{},[948],{"type":49,"value":949},"\u003C 10 agents:",{"type":49,"value":951}," TaskRouter with simple workflow, single queue. No Flex needed — agents can use phone.",{"type":43,"tag":73,"props":953,"children":954},{},[955,960],{"type":43,"tag":118,"props":956,"children":957},{},[958],{"type":49,"value":959},"10-50 agents:",{"type":49,"value":961}," TaskRouter with skills-based routing, multiple queues. Flex recommended for desktop.",{"type":43,"tag":73,"props":963,"children":964},{},[965,970,972,977],{"type":43,"tag":118,"props":966,"children":967},{},[968],{"type":49,"value":969},"50+ agents:",{"type":49,"value":971}," Full Flex deployment, multi-skill workflows, real-time queue monitoring, supervisor tools. Consider ",{"type":43,"tag":136,"props":973,"children":975},{"className":974},[],[976],{"type":49,"value":681},{"type":49,"value":978}," for intelligence layer.",{"type":43,"tag":73,"props":980,"children":981},{},[982,987,989,995],{"type":43,"tag":118,"props":983,"children":984},{},[985],{"type":49,"value":986},"Status callback resilience at scale:",{"type":49,"value":988}," Use ",{"type":43,"tag":136,"props":990,"children":992},{"className":991},[],[993],{"type":49,"value":994},"{CallSid}-{CallStatus}",{"type":49,"value":996}," composite key for idempotent processing. Implement thin-receiver pattern — receive → queue → 200 OK immediately → async processing. Thundering herd: timeouts trigger retries, doubling\u002Ftripling callback volume.",{"type":43,"tag":44,"props":998,"children":1000},{"id":999},"decision-rules",[1001],{"type":49,"value":1002},"Decision Rules",{"type":43,"tag":368,"props":1004,"children":1006},{"id":1005},"studio-vs-functions-vs-custom-code",[1007],{"type":49,"value":1008},"Studio vs Functions vs Custom Code",{"type":43,"tag":69,"props":1010,"children":1011},{},[1012,1021,1031,1041],{"type":43,"tag":73,"props":1013,"children":1014},{},[1015,1019],{"type":43,"tag":118,"props":1016,"children":1017},{},[1018],{"type":49,"value":427},{"type":49,"value":1020}," Non-developers need to modify IVR flows. Multi-step branching logic with conditional routing. Rapid prototyping or frequent flow changes. You want visual debugging and versioning. SEs recommend this for most IVR use cases.",{"type":43,"tag":73,"props":1022,"children":1023},{},[1024,1029],{"type":43,"tag":118,"props":1025,"children":1026},{},[1027],{"type":49,"value":1028},"Use Functions when:",{"type":49,"value":1030}," You need tight programmatic control over every call state transition. Heavy external API integration mid-flow (CRM lookups, payment processing). Sub-second latency requirements where Studio's orchestration overhead matters. Your team is developer-heavy and prefers code over visual tools.",{"type":43,"tag":73,"props":1032,"children":1033},{},[1034,1039],{"type":43,"tag":118,"props":1035,"children":1036},{},[1037],{"type":49,"value":1038},"Use TaskRouter (not custom code) for routing:",{"type":49,"value":1040}," Skills-based matching, queue management, reservation lifecycle. Always use for multi-agent setups. Common mistake: developers reinvent TaskRouter in Node.js — don't.",{"type":43,"tag":73,"props":1042,"children":1043},{},[1044,1049],{"type":43,"tag":118,"props":1045,"children":1046},{},[1047],{"type":49,"value":1048},"Functions scaling constraint:",{"type":49,"value":1050}," 30 concurrent executions per service, 10-second timeout. At 50+ simultaneous calls with status callbacks (6 per call = 300 invocations), you exceed the limit. Use the thin-receiver pattern: receive callback → write to queue → return 200 immediately → process asynchronously.",{"type":43,"tag":368,"props":1052,"children":1054},{"id":1053},"conference-patterns",[1055],{"type":49,"value":1056},"Conference Patterns",{"type":43,"tag":69,"props":1058,"children":1059},{},[1060,1065,1070,1075],{"type":43,"tag":73,"props":1061,"children":1062},{},[1063],{"type":49,"value":1064},"Every multi-agent call should use Conference, not direct Dial",{"type":43,"tag":73,"props":1066,"children":1067},{},[1068],{"type":49,"value":1069},"Warm transfer: Put caller on hold in Conference → dial new agent into same Conference → brief → drop original agent",{"type":43,"tag":73,"props":1071,"children":1072},{},[1073],{"type":49,"value":1074},"Gotcha: Conference requires ≥2 participants to exist. API state can be misleading for single-participant conferences.",{"type":43,"tag":73,"props":1076,"children":1077},{},[1078],{"type":49,"value":1079},"Gotcha: Coach audio is NOT captured in conference recordings. Record separately if needed.",{"type":43,"tag":368,"props":1081,"children":1083},{"id":1082},"taskrouter-gotchas",[1084],{"type":49,"value":1085},"TaskRouter Gotchas",{"type":43,"tag":69,"props":1087,"children":1088},{},[1089,1094,1105,1110],{"type":43,"tag":73,"props":1090,"children":1091},{},[1092],{"type":49,"value":1093},"Hyphens in worker attribute names break expressions silently",{"type":43,"tag":73,"props":1095,"children":1096},{},[1097,1103],{"type":43,"tag":136,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":49,"value":1102},"HAS",{"type":49,"value":1104}," operator on non-array attributes silently matches nothing (no error — tasks sit in queue forever)",{"type":43,"tag":73,"props":1106,"children":1107},{},[1108],{"type":49,"value":1109},"Reservation timeout → worker moves to offline Activity → fewer available workers → deeper backlog → positive feedback loop (cascade failure)",{"type":43,"tag":73,"props":1111,"children":1112},{},[1113,1115,1121],{"type":49,"value":1114},"Activity ",{"type":43,"tag":136,"props":1116,"children":1118},{"className":1117},[],[1119],{"type":49,"value":1120},"available",{"type":49,"value":1122}," flag updates return 200 OK but may not change the value",{"type":43,"tag":44,"props":1124,"children":1126},{"id":1125},"output-format",[1127],{"type":49,"value":1128},"Output Format",{"type":43,"tag":52,"props":1130,"children":1131},{},[1132],{"type":49,"value":1133},"After qualifying the developer, recommend:",{"type":43,"tag":1135,"props":1136,"children":1140},"pre",{"className":1137,"code":1139,"language":49},[1138],"language-text","Recommended Architecture: [Level 1-4 description]\n\nProduct Skills to Install:\n- twilio-voice-twiml (always for voice support)\n- twilio-voice-outbound-calls (if outbound calling needed)\n- twilio-sms-send-message (if SMS support channel)\n- twilio-messaging-webhooks (if inbound SMS)\n- twilio-email-send (if email channel with Twilio Account SID + Auth Token) or twilio-sendgrid-email-send (if email channel with SendGrid API key)\n- twilio-conversations-api (if omnichannel threading)\n- twilio-taskrouter-routing (if multi-agent — Level 3+)\n- twilio-conference-calls (if transfers\u002Fcoaching — Level 3+)\n- twilio-call-recordings (if recording needed — Level 3+)\n\nCross-reference Planner Skills:\n- twilio-ai-agent-architect (if Level 2 — AI self-service)\n- twilio-agent-augmentation-architect (if Level 4 — intelligent CC)\n\nSetup Skills:\n- twilio-account-setup\n- twilio-iam-auth-setup\n- twilio-numbers-senders\n- twilio-webhook-architecture\n\nGuardrail Skills:\n- twilio-security-hardening (always)\n- twilio-reliability-patterns (especially for high-volume — 429 backoff)\n- twilio-debugging-observability (Voice Insights for call quality)\n",[1141],{"type":43,"tag":136,"props":1142,"children":1144},{"__ignoreMap":1143},"",[1145],{"type":49,"value":1139},{"items":1147,"total":1268},[1148,1166,1182,1194,1214,1236,1256],{"slug":1149,"name":1149,"fn":1150,"description":1151,"org":1152,"tags":1153,"stars":25,"repoUrl":26,"updatedAt":27},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1154,1157,1160,1163],{"name":1155,"slug":1156,"type":15},"Accessibility","accessibility",{"name":1158,"slug":1159,"type":15},"Charts","charts",{"name":1161,"slug":1162,"type":15},"Data Visualization","data-visualization",{"name":1164,"slug":1165,"type":15},"Design","design",{"slug":1167,"name":1167,"fn":1168,"description":1169,"org":1170,"tags":1171,"stars":25,"repoUrl":26,"updatedAt":1181},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1172,1175,1178],{"name":1173,"slug":1174,"type":15},"Agents","agents",{"name":1176,"slug":1177,"type":15},"Browser Automation","browser-automation",{"name":1179,"slug":1180,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":1183,"name":1183,"fn":1184,"description":1185,"org":1186,"tags":1187,"stars":25,"repoUrl":26,"updatedAt":1193},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1188,1189,1192],{"name":1176,"slug":1177,"type":15},{"name":1190,"slug":1191,"type":15},"Local Development","local-development",{"name":1179,"slug":1180,"type":15},"2026-04-06T18:41:17.526867",{"slug":1195,"name":1195,"fn":1196,"description":1197,"org":1198,"tags":1199,"stars":25,"repoUrl":26,"updatedAt":1213},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1200,1201,1204,1207,1210],{"name":1173,"slug":1174,"type":15},{"name":1202,"slug":1203,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":1205,"slug":1206,"type":15},"SDK","sdk",{"name":1208,"slug":1209,"type":15},"Serverless","serverless",{"name":1211,"slug":1212,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":1215,"name":1215,"fn":1216,"description":1217,"org":1218,"tags":1219,"stars":25,"repoUrl":26,"updatedAt":1235},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1220,1223,1226,1229,1232],{"name":1221,"slug":1222,"type":15},"Frontend","frontend",{"name":1224,"slug":1225,"type":15},"React","react",{"name":1227,"slug":1228,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":1230,"slug":1231,"type":15},"UI Components","ui-components",{"name":1233,"slug":1234,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":1237,"name":1237,"fn":1238,"description":1239,"org":1240,"tags":1241,"stars":25,"repoUrl":26,"updatedAt":1255},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1242,1245,1248,1251,1254],{"name":1243,"slug":1244,"type":15},"AI Infrastructure","ai-infrastructure",{"name":1246,"slug":1247,"type":15},"Cost Optimization","cost-optimization",{"name":1249,"slug":1250,"type":15},"LLM","llm",{"name":1252,"slug":1253,"type":15},"Performance","performance",{"name":1233,"slug":1234,"type":15},"2026-04-06T18:40:44.377464",{"slug":1257,"name":1257,"fn":1258,"description":1259,"org":1260,"tags":1261,"stars":25,"repoUrl":26,"updatedAt":1267},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1262,1263,1266],{"name":1246,"slug":1247,"type":15},{"name":1264,"slug":1265,"type":15},"Database","database",{"name":1249,"slug":1250,"type":15},"2026-04-06T18:41:08.513425",600,{"items":1270,"total":1465},[1271,1292,1315,1332,1348,1365,1382,1394,1408,1422,1434,1449],{"slug":1272,"name":1272,"fn":1273,"description":1274,"org":1275,"tags":1276,"stars":1289,"repoUrl":1290,"updatedAt":1291},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1277,1280,1283,1286],{"name":1278,"slug":1279,"type":15},"Documents","documents",{"name":1281,"slug":1282,"type":15},"Healthcare","healthcare",{"name":1284,"slug":1285,"type":15},"Insurance","insurance",{"name":1287,"slug":1288,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":1293,"name":1293,"fn":1294,"description":1295,"org":1296,"tags":1297,"stars":1312,"repoUrl":1313,"updatedAt":1314},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1298,1301,1303,1306,1309],{"name":1299,"slug":1300,"type":15},".NET","dotnet",{"name":1302,"slug":1293,"type":15},"ASP.NET Core",{"name":1304,"slug":1305,"type":15},"Blazor","blazor",{"name":1307,"slug":1308,"type":15},"C#","csharp",{"name":1310,"slug":1311,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":1316,"name":1316,"fn":1317,"description":1318,"org":1319,"tags":1320,"stars":1312,"repoUrl":1313,"updatedAt":1331},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1321,1324,1327,1330],{"name":1322,"slug":1323,"type":15},"Apps SDK","apps-sdk",{"name":1325,"slug":1326,"type":15},"ChatGPT","chatgpt",{"name":1328,"slug":1329,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":1333,"name":1333,"fn":1334,"description":1335,"org":1336,"tags":1337,"stars":1312,"repoUrl":1313,"updatedAt":1347},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1338,1341,1344],{"name":1339,"slug":1340,"type":15},"API Development","api-development",{"name":1342,"slug":1343,"type":15},"CLI","cli",{"name":1345,"slug":1346,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":1349,"name":1349,"fn":1350,"description":1351,"org":1352,"tags":1353,"stars":1312,"repoUrl":1313,"updatedAt":1364},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1354,1357,1360,1361],{"name":1355,"slug":1356,"type":15},"Cloudflare","cloudflare",{"name":1358,"slug":1359,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":1202,"slug":1203,"type":15},{"name":1362,"slug":1363,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":1366,"name":1366,"fn":1367,"description":1368,"org":1369,"tags":1370,"stars":1312,"repoUrl":1313,"updatedAt":1381},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1371,1374,1377,1378],{"name":1372,"slug":1373,"type":15},"Productivity","productivity",{"name":1375,"slug":1376,"type":15},"Project Management","project-management",{"name":20,"slug":21,"type":15},{"name":1379,"slug":1380,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":1383,"name":1383,"fn":1384,"description":1385,"org":1386,"tags":1387,"stars":1312,"repoUrl":1313,"updatedAt":1393},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1388,1389,1391,1392],{"name":1164,"slug":1165,"type":15},{"name":1390,"slug":1383,"type":15},"Figma",{"name":1221,"slug":1222,"type":15},{"name":1328,"slug":1329,"type":15},"2026-04-12T05:06:47.939943",{"slug":1395,"name":1395,"fn":1396,"description":1397,"org":1398,"tags":1399,"stars":1312,"repoUrl":1313,"updatedAt":1407},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1400,1401,1404,1405,1406],{"name":1164,"slug":1165,"type":15},{"name":1402,"slug":1403,"type":15},"Design System","design-system",{"name":1390,"slug":1383,"type":15},{"name":1221,"slug":1222,"type":15},{"name":1230,"slug":1231,"type":15},"2026-05-10T05:59:52.971881",{"slug":1409,"name":1409,"fn":1410,"description":1411,"org":1412,"tags":1413,"stars":1312,"repoUrl":1313,"updatedAt":1421},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1414,1415,1416,1419,1420],{"name":1164,"slug":1165,"type":15},{"name":1402,"slug":1403,"type":15},{"name":1417,"slug":1418,"type":15},"Documentation","documentation",{"name":1390,"slug":1383,"type":15},{"name":1221,"slug":1222,"type":15},"2026-05-16T06:07:47.821474",{"slug":1423,"name":1423,"fn":1424,"description":1425,"org":1426,"tags":1427,"stars":1312,"repoUrl":1313,"updatedAt":1433},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1428,1429,1430,1431,1432],{"name":1164,"slug":1165,"type":15},{"name":1390,"slug":1383,"type":15},{"name":1221,"slug":1222,"type":15},{"name":1230,"slug":1231,"type":15},{"name":1310,"slug":1311,"type":15},"2026-05-16T06:07:40.583615",{"slug":1435,"name":1435,"fn":1436,"description":1437,"org":1438,"tags":1439,"stars":1312,"repoUrl":1313,"updatedAt":1448},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1440,1443,1444,1447],{"name":1441,"slug":1442,"type":15},"Animation","animation",{"name":1345,"slug":1346,"type":15},{"name":1445,"slug":1446,"type":15},"Creative","creative",{"name":1164,"slug":1165,"type":15},"2026-05-02T05:31:48.48485",{"slug":1450,"name":1450,"fn":1451,"description":1452,"org":1453,"tags":1454,"stars":1312,"repoUrl":1313,"updatedAt":1464},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1455,1456,1457,1460,1463],{"name":1445,"slug":1446,"type":15},{"name":1164,"slug":1165,"type":15},{"name":1458,"slug":1459,"type":15},"Image Generation","image-generation",{"name":1461,"slug":1462,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675]