
whatsapp-messaging
Send and read WhatsApp messages via Kapso Meta proxy, manage templates (CRUD/send), and upload media. Use when sending messages, creating templates, or reading inbox history.
- Installs
- 97
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/gokapso/agent-skills --skill whatsapp-messaging- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads whatsapp-messaging automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
WhatsApp Messaging
When to use
Use this skill when working with WhatsApp messaging via Kapso: sending messages, creating/managing templates, uploading media, or reading inbox history.
Setup
Env vars:
KAPSO_API_BASE_URL(host only, no/platform/v1)KAPSO_API_KEYMETA_GRAPH_VERSION(optional, defaultv24.0)
Discover IDs first
Two Meta IDs are needed for different operations:
| ID | Used for | How to discover |
|---|---|---|
business_account_id (WABA) | Template CRUD | node scripts/list-platform-phone-numbers.mjs |
phone_number_id | Sending messages, media upload | node scripts/list-platform-phone-numbers.mjs |
SDK setup
Install:
npm install @kapso/whatsapp-cloud-api
Create client:
import { WhatsAppClient } from "@kapso/whatsapp-cloud-api";
const client = new WhatsAppClient({
baseUrl: "https://api.kapso.ai/meta/whatsapp",
kapsoApiKey: process.env.KAPSO_API_KEY!
});
How to
Send a text message
Via SDK:
await client.messages.sendText({
phoneNumberId: "<PHONE_NUMBER_ID>",
to: "+15551234567",
body: "Hello from Kapso"
});
Send a template message
- Discover IDs:
node scripts/list-platform-phone-numbers.mjs - Draft template payload from
assets/template-utility-order-status-update.json - Create:
node scripts/create-template.mjs --business-account-id <WABA_ID> --file <payload.json> - Check status:
node scripts/template-status.mjs --business-account-id <WABA_ID> --name <name> - Send:
node scripts/send-template.mjs --phone-number-id <ID> --file <send-payload.json>
Send an interactive message
Interactive messages require an active 24-hour session window. For outbound notifications outside the window, use templates.
- Discover
phone_number_id - Pick payload from
assets/send-interactive-*.json - Send:
node scripts/send-interactive.mjs --phone-number-id <ID> --file <payload.json>
Read inbox data
Use Meta proxy or SDK:
- Proxy:
GET /{phone_number_id}/messages,GET /{phone_number_id}/conversations - SDK:
client.messages.query(),client.conversations.list()
Template rules
Creation:
- Use
parameter_format: "NAMED"with{{param_name}}(preferred over positional) - Include examples when using variables in HEADER/BODY
- Use
language(notlanguage_code) - Don't interleave QUICK_REPLY with URL/PHONE_NUMBER buttons
- URL button variables must be at the end of the URL and use positional
{{1}}
Send-time:
- For NAMED templates, include
parameter_namein header/body params - URL buttons need a
buttoncomponent withsub_type: "url"andindex - Media headers use either
idorlink(never both)
Scripts
| Script | Purpose | Required ID |
|---|---|---|
list-platform-phone-numbers.mjs | Discover business_account_id + phone_number_id | — |
list-connected-numbers.mjs | List WABA phone numbers | business_account_id |
list-templates.mjs | List templates (with filters) | business_account_id |
template-status.mjs | Check single template status | business_account_id |
create-template.mjs | Create a template | business_account_id |
update-template.mjs | Update existing template | business_account_id |
send-template.mjs | Send template message | phone_number_id |
send-interactive.mjs | Send interactive message | phone_number_id |
upload-media.mjs | Upload media for send-time headers | phone_number_id |
Assets
| File | Description |
|---|---|
template-utility-order-status-update.json | UTILITY template with named params + URL button |
send-template-order-status-update.json | Send-time payload for order_status_update |
template-utility-named.json | UTILITY template showing button ordering rules |
template-marketing-media-header.json | MARKETING template with IMAGE header |
template-authentication-otp.json | AUTHENTICATION OTP template (COPY_CODE) |
send-interactive-buttons.json | Interactive button message |
send-interactive-list.json | Interactive list message |
send-interactive-cta-url.json | Interactive CTA URL message |
send-interactive-location-request.json | Location request message |
send-interactive-catalog-message.json | Catalog message |
References
- references/templates-reference.md - Template creation rules, components cheat sheet, send-time components
- references/whatsapp-api-reference.md - Meta proxy payloads for messages and conversations
- references/whatsapp-cloud-api-js.md - SDK usage for sending and reading messages
Related skills
kapso-automation- Workflow automationwhatsapp-flows- WhatsApp Flowskapso-api- Platform API and customers
FAQ
What does the whatsapp-messaging skill do?
Send and read WhatsApp messages via Kapso Meta proxy, manage templates (CRUD/send), and upload media. Use when sending messages, creating templates, or reading inbox history.
How do I install whatsapp-messaging?
Run npx skills add https://github.com/gokapso/agent-skills --skill whatsapp-messaging in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/whatsapp-messaging/ (personal) or .claude/skills/whatsapp-messaging/ (project).
Which AI agents can use whatsapp-messaging?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is whatsapp-messaging safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains whatsapp-messaging?
It is published by gokapso in gokapso/agent-skills. It has 97 recorded installs.
More from gokapso/agent-skills
integrate-whatsapp
gokapso/agent-skills
Connect WhatsApp to your product with Kapso: onboard customers with setup links, detect connections, receive events via webhooks, and send messages/templates/media. Also manage WhatsApp Flows (create/update/publish, data endpoints, encryption). Use when integrating WhatsApp end-to-end.
automate-whatsapp
gokapso/agent-skills
Build and debug Kapso WhatsApp workflows, triggers, functions, and executions.
observe-whatsapp
gokapso/agent-skills
Observe and troubleshoot WhatsApp in Kapso: search Logs across API, Meta webhook, workflow, and webhook-delivery events; debug message delivery; inspect webhook retries; triage API errors; and run health checks. Use when investigating production issues, message failures, workflow behavior, or webhook delivery problems.
integrate-whatsapp-calling
gokapso/agent-skills
Connect voice agents to WhatsApp Calling through Kapso. Use for Calling setup, signed call webhooks, inbound answering, outbound permission and dialing, native recordings and transcripts, or debugging signaling and media with Pipecat, Pipecat Cloud, ElevenLabs Agents, or another provider.
kapso-api
gokapso/agent-skills
Kapso Platform API for customer onboarding, setup links, phone number provisioning, and connection detection. Use when working with multi-tenant WhatsApp integrations, embedded signup, or customer management.
whatsapp-flows
gokapso/agent-skills
Manage WhatsApp Flows via Kapso Platform API. List, create, update, publish flows, manage versions, attach data endpoints, and check encryption. Use when working with WhatsApp Flows, flow JSON, or data endpoints.
Popular ai & agents skills
google-agents-cli-publish
google/agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini", "publish to Gemini" (formerly Gemini Enterprise), or needs guidance on the agents-cli publish gemini command. Also use when the user wants to "manage agents in Agent Registry", "list/update/delete registered agents", or "register an MCP server". Covers ADK vs A2A registration modes, programmatic and interactive usage, flag reference, auto-detection from deployment metadata, Agent Registry fleet management, and troubleshooting. Part of the agents-cli skills suite. Do NOT use for deployment (use google-agents-cli-deploy).
google-agents-cli-eval
google/agents-cli
This skill should be used when the user wants to "run an evaluation", "evaluate my agent", "evaluate my ADK agent", "write an eval dataset", "analyze eval failures", "compare eval results", "optimize agent", or needs guidance on the Gemini platform eval methodology and the Quality Flywheel. Covers eval metrics, dataset schema, LLM-as-judge scoring, and common failure causes. Applies to any agents-cli project, whatever framework the agent is written in. Do NOT use for agent API code patterns (ADK: use google-agents-cli-adk-code), deployment (use google-agents-cli-deploy), or project scaffolding (use google-agents-cli-scaffold).
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
codex-pet
prime-skills/runcomfy-agent-skills
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into ${CODEXHOME:-$HOME/.codex}/pets/ / and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as runcomfy run openai/gpt-image-2/edit to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no $imagegen, no OPENAIAPIKEY required, only RUNCOMFYTOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
executing-plans
obra/superpowers
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available