npx skills add ...
npx skills add vapiai/skills --skill create-squad
Design, create, update, and verify Vapi Squads and documented handoff tools through the public API. Use for choosing a single assistant versus a multi-assistant Squad, persistent or transient members, entry-member ordering, specialization boundaries, context engineering, variable extraction, model-specific handoff patterns, assistant-version pins, and safe Squad updates.
npx skills add vapiai/skills --skill create-squad
Use a Squad only when multiple focused assistants improve the design. Default to a payload or implementation plan unless the user explicitly requests live Vapi mutations.
Prefer one assistant when one focused prompt and one compatible tool set can handle the use case reliably. Use a Squad for genuine boundaries such as:
Do not create one assistant per conversational step. Keep related steps in one member and make each handoff boundary earn its latency and operational cost.
handoff tool.Determine the execution mode.
VAPI_API_KEY.Define focused members.
GET /assistant; create missing assistants first with the create-assistant skill.Create handoff relationships after destinations exist.
type: "assistant" plus a verified assistantId for saved cross-assistant destinations.POST /tool, then attach them to the source assistants with the configuration-preserving procedure in the create-tool skill.Configure public context controls only when needed.
contextEngineeringPlan on a handoff destination: all, lastNMessages, userAndAssistantMessages, previousAssistantMessages, or none when supported by the current schema.variableExtractionPlan.schema only for specific structured values needed downstream. Do not invent values or claim extraction occurred before a real handoff.Create and verify the Squad.
members from verified assistant IDs in explicit order.assistantVersion only to a version returned by the public assistant API when the user wants an immutable pin. Omit it to follow latest.POST /squad only after explicit live-create intent.Handle failures honestly.
400, correct a documented field placement or limit before at most one justified retry.401 or 403, stop for authentication or permission issues. On 404, report the missing assistant, tool, or Squad. On 5xx, report the service failure.Use verified IDs only:
The first member is the entry assistant. Handoff tools belong on the relevant source assistants; Squad membership alone does not define every transition.
Placeholders are acceptable in templates, never in live requests. Read Squad Configuration for transient Squads, context transfer, version pins, and safe Squad updates. Read Squad API Examples when the user requests TypeScript, Python, or cURL implementation code.
Send only the changed top-level fields to PATCH /squad/{id}. Omit members for a name-only or other non-member update. When the requested change affects member order, membership, version pins, assistant overrides, or handoff destinations:
GET /squad/{id}.members array and current membersOverrides when it must also change.assistantId or inline assistant, assistantVersion, assistantOverrides, and any documented destination fields already present.members array plus only the other changed top-level fields.{
"type": "handoff",
"function": { "name": "handoff_to_billing" },
"destinations": [
{
"type": "assistant",
"assistantId": "<verified-billing-assistant-id>",
"description": "The caller needs billing, invoice, or payment help.",
"contextEngineeringPlan": {
"type": "userAndAssistantMessages"
},
"variableExtractionPlan": {
"schema": {
"type": "object",
"properties": {
"accountNumber": { "type": "string" }
}
}
}
}
]
}