automate-whatsapp
Build and debug Kapso WhatsApp workflows, triggers, functions, and executions.
By gokapso · 3,100 installs
npx skills add gokapso/agent-skills --skill automate-whatsapp
Source repository · Upstream listing
Automate WhatsApp
When to use
Use this skill to build and run WhatsApp automations: workflow CRUD, graph edits, WhatsApp and Project Event triggers, Project Event emissions, executions, function management, webhook tools, and MCP tools.
Setup
Preferred path:
Kapso CLI installed and authenticated ( kapso login )
For workflow and function edits, use source controlled projects with kapso link , kapso pull , kapso build , and kapso push
For workflow code, use @kapso/workflows and export a Workflow instance from workflow.js or workflow.ts
Fallback path:
Env vars:
KAPSO API BASE URL (host only, no /platform/v1 )
KAPSO API KEY
How to
Edit workflows locally
Use this path first when the user is working in, or can create, a local repo.
Edit workflows/<workflow slug /workflow.js or workflow.ts with @kapso/workflows :
Build and push:
Use kapso push to push every local function and workflow. See references/local workflow source.md for repo layout, source file behavior, and JSON only editing.
Discover phone numbers first
Preferred path:
1. Check project state: kapso status
2. List connected numbers: kapso whatsapp numbers list output json
3. Resolve a display number when needed: kapso whatsapp numbers resolve phone number "<display number " output json
Fallback path:
1. List number configs for triggers: node scripts/list whatsapp phone numbers.js
Edit a workflow graph through API scripts
Prefer local source sync for workflow edits. Use these scripts as a fallback for debugging, direct graph inspection, or API only environments.
1. Fetch graph: node scripts/get graph.js <workflow id (note the lock version )
2. Edit the JSON (see graph rules below)
3. Validate: node scripts/validate graph.js definition file <path
4. Update: node scripts/update graph.js <workflow id expected lock version <n definition file <path
5. Re fetch to confirm
For small edits, use edit graph.js with old file and new file instead.
If you get a lock version conflict: re fetch, re apply changes, retry with new lock version.
Manage triggers
1. List: node scripts/list triggers.js <workflow id
2. Create: node scripts/create trigger.js <workflow id trigger type <type phone number id <id
3. Toggle: node scripts/update trigger.js trigger id <id active true false
4. Delete: node scripts/delete trigger.js trigger id <id
For inbound message triggers, prefer kapso whatsapp numbers resolve phone number "<display number " output json to get the exact phone number id . Fall back to node scripts/list whatsapp phone numbers.js when the CLI is unavailable.
For project event triggers, register or update the Project Event definition first when the user is defining an event type/schema:
Then create the trigger:
Definitions are metadata only. Do not emit a sample event just to register a name unless the user explicitly accepts that side effect.
Manage Project Event definitions
Use definitions for event names, descriptions, and flat scalar property schemas. Emitted events are separate records created by POST /platform/v1/events , emit event nodes, Function node project events , or Agent node emit event .
1. List: node scripts/project event definitions.js list
2. Create/update by name: node scripts/project event definitions.js create name <event.name [ description <text ] [ property schema <json ]
3. Update by ID: node scripts/project event definitions.js update definition id <id [ name <event.name ] [ description <text ] [ property schema <json ]
Build workflows with Project Events
Use this checklist when a workflow needs to remember or react to durable business facts:
1. Define the event first when the user is introducing a new event name or schema.
2. Use project event triggers when a workflow should react to an emitted event.
3. Use an emit event node for deterministic workflow step emission.
4. Use Function node project events when emission depends on function code output.
5. Use Agent node emit event only when the agent should decide whether/when to record the fact. Enable the emit event default tool and configure allowed event definitions before relying on it.
Project event triggered workflows are observers and cannot emit Project Events. Do not add event emission to a workflow that starts from a Project Event trigger.
Debug executions
1. Search workflow logs first when you have an execution ID: kapso logs search query "<execution id " source flow event filter flow execution id=<execution id period 7d limit 20 output json
2. List: node scripts/list executions.js <workflow id
3. Inspect: node scripts/get execution.js <execution id
4. Get value: node scripts/get context value.js <execution id variable path vars.foo
5. Events: node scripts/list execution events.js <execution id
Create and deploy a function
1. Write code with handler signature (see function rules below)
2. Create: node scripts/create function.js name <name code file <path [ public endpoint true]
3. Deploy: node scripts/deploy function.js function id <id
4. Verify: node scripts/get function.js function id <id
Use public endpoint true when the function should be callable without X API Key via the Kapso hosted invoke URL. This is only supported for Cloudflare functions.
New functions default to invoke response mode=passthrough , which returns the function body directly on successful invoke. Legacy wrapped functions can be migrated later with update function.js .
Set up agent node with remote sandbox repositories
Use this when the agent needs a remote ephemeral workspace to inspect or modify repository files during a workflow run.
1. Read references/agent remote sandbox.md for the execution model and field rules
2. Find model: node scripts/list provider models.js
3. Copy assets/agent remote sandbox github repo example.json as a starting point, or edit the agent node under data.config
4. Set sandbox enabled: true
5. Set sandbox network mode to allow all or allow list
6. If using allow list , add extra outbound hosts in sandbox allowed outbound hosts
7. Add GitHub repositories to flow agent resources with:
resource type: "github repository"
repo url
branch
pat
8. Write the system prompt so it explicitly reads from /workspace/repos/<repo slug before making changes
9. Validate and update the graph
Notes:
Remote sandbox is beta and free during the beta
sandbox enabled controls whether the remote workspace and sandbox tools are available
Repository resources stay configured even if sandbox access is turned off later
v1 supports GitHub repositories only
Use a repository root URL, not a GitHub file URL or tree/... URL
Repositories are mounted into /workspace/repos/<repo slug inside the remote sandbox
Use references/agent remote sandbox.md and references/node types.md for the exact shape
Graph rules
Exactly one start node with id = start
Never change existing node IDs
Use {node type} {timestamp ms} for new node IDs
Non decide nodes have 0 or 1 outgoing next edge
Decide edge labels must match conditions[].label
Edge keys are source / target / label (not from / to )
For full schema details, see references/graph contract.md .
Function rules
Do NOT use export , export default , or arrow functions
Return a Response object
Execution context
Always use this structure:
vars user defined variables
system system variables
context channel data
metadata request metadata
Scripts
Workflows
Script Purpose
list workflows.js List workflows (metadata only)
get workflow.js Get workflow metadata
create workflow.js Create a workflow
update workflow settings.js Update workflow settings
Graph
Script Purpose
get graph.js Get workflow graph + lock version
edit graph.js Patch graph via string replacement
update graph.js Replace entire graph
validate graph.js Validate graph structure locally
Triggers
Script Purpose
list triggers.js List triggers for a workflow
create trigger.js Create a trigger
update trigger.js Enable/disable a trigger
delete trigger.js Delete a trigger
list whatsapp phone numbers.js List phone numbers for trigger setup
Project Events
Script Purpose
project event definitions.js List, create, or update Project Event definitions
Executions
Script Purpose
list executions.js List executions
get execution.js Get execution details
get context value.js Read value from execution context
update execution status.js Force execution state
resume execution.js Resume waiting execution
list execution events.js List execution events
Functions
Script Purpose
list functions.js List project functions
get function.js Get function details + code
create function.js Create a function, optionally with a public invoke endpoint
update function.js Update function code, public endpoint setting, or migrate a legacy wrapped function to passthrough
deploy function.js Deploy function to runtime
invoke function.js Invoke function with payload
list function invocations.js List function invocations
OpenAPI
Script Purpose
openapi explore.mjs Explore OpenAPI (search/op/schema/where)
Install deps (once):
Examples:
Notes
Prefer file paths over inline JSON ( definition file , code file )
Use observe whatsapp for cross source Logs search when debugging a workflow alongside API calls, Meta events, or webhook deliveries.
Variable CRUD ( variables set.js , variables delete.js ) is blocked Platform API doesn't support it
References
Read the references for the operation you are changing:
[references/local workflow source.md](references/local workflow source.md) Local workflow source edits and CLI sync
[references/graph contract.md](references/graph contract.md) Graph edits: schema, computed vs editable fields, and lock version
[references/node types.md](references/node types.md) Adding or changing node configuration
[references/workflow overview.md](references/workflow overview.md) Execution behavior, state changes, and resumption
For function only work, read the function references below; graph/source references are needed only if the workflow changes too. Other task specific references:
[references/execution context.md](references/execution context.md) Context structure and variable substitution
[references/triggers.md](references/triggers.md) Trigger types and setup
[references/agent remote sandbox.md](references/agent remote sandbox.md) Remote sandbox behavior, repo resources, mounted paths
[references/functions reference.md](references/functions reference.md) Function management
[references/functions payloads.md](references/functions payloads.md) Payload shapes for functions
Assets
File Description
workflow linear.json Minimal linear workflow
workflow decision.json Minimal branching workflow
workflow agent simple.json Minimal agent workflow
workflow customer support intake agent.json Customer support intake
workflow interactive buttons decide function.json Interactive buttons + decide (function)
workflow interactive buttons decide ai.json Interactive buttons + decide (AI)
workflow api template wait agent.json API trigger + template + agent
function decide route interactive buttons.json Function for button routing
agent remote sandbox github repo example.json Agent node with remote sandbox + GitHub repo resource
Related skills
integrate whatsapp Onboarding, webhooks, messaging, templates, flows