skills/automate-whatsapp/SKILL.md
Build WhatsApp automations with Kapso workflows: configure WhatsApp triggers, edit workflow graphs, manage executions, deploy functions, and use databases/integrations for state. Use when automatin...
npx skillsauth add voidomin/Param_Adventures_Phase2 automate-whatsappInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to build and run WhatsApp automations: workflow CRUD, graph edits, triggers, executions, function management, app integrations, and D1 database operations.
Env vars:
KAPSO_API_BASE_URL (host only, no /platform/v1)KAPSO_API_KEYnode scripts/get-graph.js <workflow_id> (note the lock_version)node scripts/validate-graph.js --definition-file <path>node scripts/update-graph.js <workflow_id> --expected-lock-version <n> --definition-file <path>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.
node scripts/list-triggers.js <workflow_id>node scripts/create-trigger.js <workflow_id> --trigger-type <type> --phone-number-id <id>node scripts/update-trigger.js --trigger-id <id> --active true|falsenode scripts/delete-trigger.js --trigger-id <id>For inbound_message triggers, first run node scripts/list-whatsapp-phone-numbers.js to get phone_number_id.
node scripts/list-executions.js <workflow_id>node scripts/get-execution.js <execution-id>node scripts/get-context-value.js <execution-id> --variable-path vars.foonode scripts/list-execution-events.js <execution-id>node scripts/create-function.js --name <name> --code-file <path>node scripts/deploy-function.js --function-id <id>node scripts/get-function.js --function-id <id>node scripts/list-provider-models.jsnode scripts/list-accounts.js --app-slug <slug> (use pipedream_account_id)node scripts/search-actions.js --query <word> --app-slug <slug> (action_id = key)node scripts/create-integration.js --action-id <id> --app-slug <slug> --account-id <id> --configured-props <json>flow_agent_app_integration_toolsnode scripts/list-tables.jsnode scripts/query-rows.js --table <name> --filters <json>id = start{node_type}_{timestamp_ms} for new node IDsnext edgeconditions[].labelsource/target/label (not from/to)For full schema details, see references/graph-contract.md.
async function handler(request, env) {
// Parse input
const body = await request.json();
// Use env.KV and env.DB as needed
return new Response(JSON.stringify({ result: "ok" }));
}
export, export default, or arrow functionsResponse objectAlways use this structure:
vars - user-defined variablessystem - system variablescontext - channel datametadata - request metadata| 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 |
| 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 |
| 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 |
| 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 |
| Script | Purpose |
|--------|---------|
| list-functions.js | List project functions |
| get-function.js | Get function details + code |
| create-function.js | Create a function |
| update-function.js | Update function code |
| deploy-function.js | Deploy function to runtime |
| invoke-function.js | Invoke function with payload |
| list-function-invocations.js | List function invocations |
| Script | Purpose |
|--------|---------|
| list-apps.js | Search integration apps |
| search-actions.js | Search actions (action_id = key) |
| get-action-schema.js | Get action JSON schema |
| list-accounts.js | List connected accounts |
| create-connect-token.js | Create OAuth connect link |
| configure-prop.js | Resolve remote_options for a prop |
| reload-props.js | Reload dynamic props |
| list-integrations.js | List saved integrations |
| create-integration.js | Create an integration |
| update-integration.js | Update an integration |
| delete-integration.js | Delete an integration |
| Script | Purpose |
|--------|---------|
| list-tables.js | List D1 tables |
| get-table.js | Get table schema + sample rows |
| query-rows.js | Query rows with filters |
| create-row.js | Create a row |
| update-row.js | Update rows |
| upsert-row.js | Upsert a row |
| delete-row.js | Delete rows |
| Script | Purpose |
|--------|---------|
| openapi-explore.mjs | Explore OpenAPI (search/op/schema/where) |
Install deps (once):
npm i
Examples:
node scripts/openapi-explore.mjs --spec workflows search "variables"
node scripts/openapi-explore.mjs --spec workflows op getWorkflowVariables
node scripts/openapi-explore.mjs --spec platform op queryDatabaseRows
--definition-file, --code-file)action_id is the same as key from search-actions--account-id uses pipedream_account_id from list-accountsvariables-set.js, variables-delete.js) is blocked - Platform API doesn't support itRead before editing:
Other references:
| 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-app-integration-example.json | Agent node with app integrations |
integrate-whatsapp - Onboarding, webhooks, messaging, templates, flowsobserve-whatsapp - Debugging, logs, health checks[automate-whatsapp file map]|root: .
|.:{package.json,SKILL.md}
|assets:{agent-app-integration-example.json,databases-example.json,function-decide-route-interactive-buttons.json,functions-example.json,workflow-agent-simple.json,workflow-api-template-wait-agent.json,workflow-customer-support-intake-agent.json,workflow-decision.json,workflow-interactive-buttons-decide-ai.json,workflow-interactive-buttons-decide-function.json,workflow-linear.json}
|references:{app-integrations.md,databases-reference.md,execution-context.md,function-contracts.md,functions-payloads.md,functions-reference.md,graph-contract.md,node-types.md,triggers.md,workflow-overview.md,workflow-reference.md}
|scripts:{configure-prop.js,create-connect-token.js,create-function.js,create-integration.js,create-row.js,create-trigger.js,create-workflow.js,delete-integration.js,delete-row.js,delete-trigger.js,deploy-function.js,edit-graph.js,get-action-schema.js,get-context-value.js,get-execution-event.js,get-execution.js,get-function.js,get-graph.js,get-table.js,get-workflow.js,invoke-function.js,list-accounts.js,list-apps.js,list-execution-events.js,list-executions.js,list-function-invocations.js,list-functions.js,list-integrations.js,list-provider-models.js,list-tables.js,list-triggers.js,list-whatsapp-phone-numbers.js,list-workflows.js,openapi-explore.mjs,query-rows.js,reload-props.js,resume-execution.js,search-actions.js,update-execution-status.js,update-function.js,update-graph.js,update-integration.js,update-row.js,update-trigger.js,update-workflow-settings.js,upsert-row.js,validate-graph.js,variables-delete.js,variables-list.js,variables-set.js}
|scripts/lib/databases:{args.js,filters.js,kapso-api.js}
|scripts/lib/functions:{args.js,kapso-api.js}
|scripts/lib/workflows:{args.js,kapso-api.js,result.js}
<!-- FILEMAP:END -->documentation
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create ...
tools
Automate Canva tasks via Rube MCP (Composio): designs, exports, folders, brand templates, autofill. Always search tools first for current schemas.
tools
Automate Calendly scheduling, event management, invitee tracking, availability checks, and organization administration via Rube MCP (Composio). Always search tools first for current schemas.
tools
Automate Cal.com tasks via Rube MCP (Composio): manage bookings, check availability, configure webhooks, and handle teams. Always search tools first for current schemas.