[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EXBVME6EMME3W3PR9M00RJ":3,"skill-same:01M6EXBVME6EMME3W3PR9M00RJ":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6EXBVME6EMME3W3PR9M00RJ","automate-whatsapp",null,"Build WhatsApp automations with Kapso workflows: configure WhatsApp triggers, edit workflow graphs, manage executions, deploy functions, and use databases\u002Fintegrations for state. Use when automating WhatsApp conversations and event handling.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fautomate-whatsapp\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"whatsapp","automate whatsapp","automate","with","safe","event","triggers","manage","functions","master","databases","agent-skills","use","edit","integrations","configure","state","workflows","workflow","github","2026-11-10 10:12:30",false,"---\nname: automate-whatsapp\ndescription: \"Build WhatsApp automations with Kapso workflows: configure WhatsApp triggers, edit workflow graphs, manage executions, deploy functions, and use databases\u002Fintegrations for state. Use when automating WhatsApp conversations and event handling.\"\nsource: \"https:\u002F\u002Fgithub.com\u002Fgokapso\u002Fagent-skills\u002Ftree\u002Fmaster\u002Fskills\u002Fautomate-whatsapp\"\nrisk: safe\n---\n\n# Automate WhatsApp\n\n## When to use\n\nUse this skill to build and run WhatsApp automations: workflow CRUD, graph edits, triggers, executions, function management, app integrations, and D1 database operations.\n\n## Setup\n\nEnv vars:\n- `KAPSO_API_BASE_URL` (host only, no `\u002Fplatform\u002Fv1`)\n- `KAPSO_API_KEY`\n\n## How to\n\n### Edit a workflow graph\n\n1. Fetch graph: `node scripts\u002Fget-graph.js \u003Cworkflow_id>` (note the `lock_version`)\n2. Edit the JSON (see graph rules below)\n3. Validate: `node scripts\u002Fvalidate-graph.js --definition-file \u003Cpath>`\n4. Update: `node scripts\u002Fupdate-graph.js \u003Cworkflow_id> --expected-lock-version \u003Cn> --definition-file \u003Cpath>`\n5. Re-fetch to confirm\n\nFor small edits, use `edit-graph.js` with `--old-file` and `--new-file` instead.\n\nIf you get a lock_version conflict: re-fetch, re-apply changes, retry with new lock_version.\n\n### Manage triggers\n\n1. List: `node scripts\u002Flist-triggers.js \u003Cworkflow_id>`\n2. Create: `node scripts\u002Fcreate-trigger.js \u003Cworkflow_id> --trigger-type \u003Ctype> --phone-number-id \u003Cid>`\n3. Toggle: `node scripts\u002Fupdate-trigger.js --trigger-id \u003Cid> --active true|false`\n4. Delete: `node scripts\u002Fdelete-trigger.js --trigger-id \u003Cid>`\n\nFor inbound_message triggers, first run `node scripts\u002Flist-whatsapp-phone-numbers.js` to get `phone_number_id`.\n\n### Debug executions\n\n1. List: `node scripts\u002Flist-executions.js \u003Cworkflow_id>`\n2. Inspect: `node scripts\u002Fget-execution.js \u003Cexecution-id>`\n3. Get value: `node scripts\u002Fget-context-value.js \u003Cexecution-id> --variable-path vars.foo`\n4. Events: `node scripts\u002Flist-execution-events.js \u003Cexecution-id>`\n\n### Create and deploy a function\n\n1. Write code with handler signature (see function rules below)\n2. Create: `node scripts\u002Fcreate-function.js --name \u003Cname> --code-file \u003Cpath>`\n3. Deploy: `node scripts\u002Fdeploy-function.js --function-id \u003Cid>`\n4. Verify: `node scripts\u002Fget-function.js --function-id \u003Cid>`\n\n### Set up agent node with app integrations\n\n1. Find model: `node scripts\u002Flist-provider-models.js`\n2. Find account: `node scripts\u002Flist-accounts.js --app-slug \u003Cslug>` (use `pipedream_account_id`)\n3. Find action: `node scripts\u002Fsearch-actions.js --query \u003Cword> --app-slug \u003Cslug>` (action_id = key)\n4. Create integration: `node scripts\u002Fcreate-integration.js --action-id \u003Cid> --app-slug \u003Cslug> --account-id \u003Cid> --configured-props \u003Cjson>`\n5. Add tools to agent node via `flow_agent_app_integration_tools`\n\n### Database CRUD\n\n1. List tables: `node scripts\u002Flist-tables.js`\n2. Query: `node scripts\u002Fquery-rows.js --table \u003Cname> --filters \u003Cjson>`\n3. Create\u002Fupdate\u002Fdelete with row scripts\n\n## Graph rules\n\n- Exactly one start node with `id` = `start`\n- Never change existing node IDs\n- Use `{node_type}_{timestamp_ms}` for new node IDs\n- Non-decide nodes have 0 or 1 outgoing `next` edge\n- Decide edge labels must match `conditions[].label`\n- Edge keys are `source`\u002F`target`\u002F`label` (not `from`\u002F`to`)\n\nFor full schema details, see `references\u002Fgraph-contract.md`.\n\n## Function rules\n\n```js\nasync function handler(request, env) {\n  \u002F\u002F Parse input\n  const body = await request.json();\n  \u002F\u002F Use env.KV and env.DB as needed\n  return new Response(JSON.stringify({ result: \"ok\" }));\n}\n```\n\n- Do NOT use `export`, `export default`, or arrow functions\n- Return a `Response` object\n\n## Execution context\n\nAlways use this structure:\n- `vars` - user-defined variables\n- `system` - system variables\n- `context` - channel data\n- `metadata` - request metadata\n\n## Scripts\n\n### Workflows\n\n| Script | Purpose |\n|--------|---------|\n| `list-workflows.js` | List workflows (metadata only) |\n| `get-workflow.js` | Get workflow metadata |\n| `create-workflow.js` | Create a workflow |\n| `update-workflow-settings.js` | Update workflow settings |\n\n### Graph\n\n| Script | Purpose |\n|--------|---------|\n| `get-graph.js` | Get workflow graph + lock_version |\n| `edit-graph.js` | Patch graph via string replacement |\n| `update-graph.js` | Replace entire graph |\n| `validate-graph.js` | Validate graph structure locally |\n\n### Triggers\n\n| Script | Purpose |\n|--------|---------|\n| `list-triggers.js` | List triggers for a workflow |\n| `create-trigger.js` | Create a trigger |\n| `update-trigger.js` | Enable\u002Fdisable a trigger |\n| `delete-trigger.js` | Delete a trigger |\n| `list-whatsapp-phone-numbers.js` | List phone numbers for trigger setup |\n\n### Executions\n\n| Script | Purpose |\n|--------|---------|\n| `list-executions.js` | List executions |\n| `get-execution.js` | Get execution details |\n| `get-context-value.js` | Read value from execution context |\n| `update-execution-status.js` | Force execution state |\n| `resume-execution.js` | Resume waiting execution |\n| `list-execution-events.js` | List execution events |\n\n### Functions\n\n| Script | Purpose |\n|--------|---------|\n| `list-functions.js` | List project functions |\n| `get-function.js` | Get function details + code |\n| `create-function.js` | Create a function |\n| `update-function.js` | Update function code |\n| `deploy-function.js` | Deploy function to runtime |\n| `invoke-function.js` | Invoke function with payload |\n| `list-function-invocations.js` | List function invocations |\n\n### App integrations\n\n| Script | Purpose |\n|--------|---------|\n| `list-apps.js` | Search integration apps |\n| `search-actions.js` | Search actions (action_id = key) |\n| `get-action-schema.js` | Get action JSON schema |\n| `list-accounts.js` | List connected accounts |\n| `create-connect-token.js` | Create OAuth connect link |\n| `configure-prop.js` | Resolve remote_options for a prop |\n| `reload-props.js` | Reload dynamic props |\n| `list-integrations.js` | List saved integrations |\n| `create-integration.js` | Create an integration |\n| `update-integration.js` | Update an integration |\n| `delete-integration.js` | Delete an integration |\n\n### Databases\n\n| Script | Purpose |\n|--------|---------|\n| `list-tables.js` | List D1 tables |\n| `get-table.js` | Get table schema + sample rows |\n| `query-rows.js` | Query rows with filters |\n| `create-row.js` | Create a row |\n| `update-row.js` | Update rows |\n| `upsert-row.js` | Upsert a row |\n| `delete-row.js` | Delete rows |\n\n### OpenAPI\n\n| Script | Purpose |\n|--------|---------|\n| `openapi-explore.mjs` | Explore OpenAPI (search\u002Fop\u002Fschema\u002Fwhere) |\n\nInstall deps (once):\n```bash\nnpm i\n```\n\nExamples:\n```bash\nnode scripts\u002Fopenapi-explore.mjs --spec workflows search \"variables\"\nnode scripts\u002Fopenapi-explore.mjs --spec workflows op getWorkflowVariables\nnode scripts\u002Fopenapi-explore.mjs --spec platform op queryDatabaseRows\n```\n\n## Notes\n\n- Prefer file paths over inline JSON (`--definition-file`, `--code-file`)\n- `action_id` is the same as `key` from `search-actions`\n- `--account-id` uses `pipedream_account_id` from `list-accounts`\n- Variable CRUD (`variables-set.js`, `variables-delete.js`) is blocked - Platform API doesn't support it\n- Raw SQL execution is not supported via Platform API\n\n## References\n\nRead before editing:\n- [references\u002Fgraph-contract.md](references\u002Fgraph-contract.md) - Graph schema, computed vs editable fields, lock_version\n- [references\u002Fnode-types.md](references\u002Fnode-types.md) - Node types and config shapes\n- [references\u002Fworkflow-overview.md](references\u002Fworkflow-overview.md) - Execution flow and states\n\nOther references:\n- [references\u002Fexecution-context.md](references\u002Fexecution-context.md) - Context structure and variable substitution\n- [references\u002Ftriggers.md](references\u002Ftriggers.md) - Trigger types and setup\n- [references\u002Fapp-integrations.md](references\u002Fapp-integrations.md) - App integration and variable_definitions\n- [references\u002Ffunctions-reference.md](references\u002Ffunctions-reference.md) - Function management\n- [references\u002Ffunctions-payloads.md](references\u002Ffunctions-payloads.md) - Payload shapes for functions\n- [references\u002Fdatabases-reference.md](references\u002Fdatabases-reference.md) - Database operations\n\n## Assets\n\n| File | Description |\n|------|-------------|\n| `workflow-linear.json` | Minimal linear workflow |\n| `workflow-decision.json` | Minimal branching workflow |\n| `workflow-agent-simple.json` | Minimal agent workflow |\n| `workflow-customer-support-intake-agent.json` | Customer support intake |\n| `workflow-interactive-buttons-decide-function.json` | Interactive buttons + decide (function) |\n| `workflow-interactive-buttons-decide-ai.json` | Interactive buttons + decide (AI) |\n| `workflow-api-template-wait-agent.json` | API trigger + template + agent |\n| `function-decide-route-interactive-buttons.json` | Function for button routing |\n| `agent-app-integration-example.json` | Agent node with app integrations |\n\n## Related skills\n\n- `integrate-whatsapp` - Onboarding, webhooks, messaging, templates, flows\n- `observe-whatsapp` - Debugging, logs, health checks\n\n\u003C!-- FILEMAP:BEGIN -->\n```text\n[automate-whatsapp file map]|root: .\n|.:{package.json,SKILL.md}\n|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}\n|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}\n|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}\n|scripts\u002Flib\u002Fdatabases:{args.js,filters.js,kapso-api.js}\n|scripts\u002Flib\u002Ffunctions:{args.js,kapso-api.js}\n|scripts\u002Flib\u002Fworkflows:{args.js,kapso-api.js,result.js}\n```\n\u003C!-- FILEMAP:END -->\n\n","# Automate WhatsApp\n\n## When to use\n\nUse this skill to build and run WhatsApp automations: workflow CRUD, graph edits, triggers, executions, function management, app integrations, and D1 database operations.\n\n## Setup\n\nEnv vars:\n- `KAPSO_API_BASE_URL` (host only, no `\u002Fplatform\u002Fv1`)\n- `KAPSO_API_KEY`\n\n## How to\n\n### Edit a workflow graph\n\n1. Fetch graph: `node scripts\u002Fget-graph.js \u003Cworkflow_id>` (note the `lock_version`)\n2. Edit the JSON (see graph rules below)\n3. Validate: `node scripts\u002Fvalidate-graph.js --definition-file \u003Cpath>`\n4. Update: `node scripts\u002Fupdate-graph.js \u003Cworkflow_id> --expected-lock-version \u003Cn> --definition-file \u003Cpath>`\n5. Re-fetch to confirm\n\nFor small edits, use `edit-graph.js` with `--old-file` and `--new-file` instead.\n\nIf you get a lock_version conflict: re-fetch, re-apply changes, retry with new lock_version.\n\n### Manage triggers\n\n1. List: `node scripts\u002Flist-triggers.js \u003Cworkflow_id>`\n2. Create: `node scripts\u002Fcreate-trigger.js \u003Cworkflow_id> --trigger-type \u003Ctype> --phone-number-id \u003Cid>`\n3. Toggle: `node scripts\u002Fupdate-trigger.js --trigger-id \u003Cid> --active true|false`\n4. Delete: `node scripts\u002Fdelete-trigger.js --trigger-id \u003Cid>`\n\nFor inbound_message triggers, first run `node scripts\u002Flist-whatsapp-phone-numbers.js` to get `phone_number_id`.\n\n### Debug executions\n\n1. List: `node scripts\u002Flist-executions.js \u003Cworkflow_id>`\n2. Inspect: `node scripts\u002Fget-execution.js \u003Cexecution-id>`\n3. Get value: `node scripts\u002Fget-context-value.js \u003Cexecution-id> --variable-path vars.foo`\n4. Events: `node scripts\u002Flist-execution-events.js \u003Cexecution-id>`\n\n### Create and deploy a function\n\n1. Write code with handler signature (see function rules below)\n2. Create: `node scripts\u002Fcreate-function.js --name \u003Cname> --code-file \u003Cpath>`\n3. Deploy: `node scripts\u002Fdeploy-function.js --function-id \u003Cid>`\n4. Verify: `node scripts\u002Fget-function.js --function-id \u003Cid>`\n\n### Set up agent node with app integrations\n\n1. Find model: `node scripts\u002Flist-provider-models.js`\n2. Find account: `node scripts\u002Flist-accounts.js --app-slug \u003Cslug>` (use `pipedream_account_id`)\n3. Find action: `node scripts\u002Fsearch-actions.js --query \u003Cword> --app-slug \u003Cslug>` (action_id = key)\n4. Create integration: `node scripts\u002Fcreate-integration.js --action-id \u003Cid> --app-slug \u003Cslug> --account-id \u003Cid> --configured-props \u003Cjson>`\n5. Add tools to agent node via `flow_agent_app_integration_tools`\n\n### Database CRUD\n\n1. List tables: `node scripts\u002Flist-tables.js`\n2. Query: `node scripts\u002Fquery-rows.js --table \u003Cname> --filters \u003Cjson>`\n3. Create\u002Fupdate\u002Fdelete with row scripts\n\n## Graph rules\n\n- Exactly one start node with `id` = `start`\n- Never change existing node IDs\n- Use `{node_type}_{timestamp_ms}` for new node IDs\n- Non-decide nodes have 0 or 1 outgoing `next` edge\n- Decide edge labels must match `conditions[].label`\n- Edge keys are `source`\u002F`target`\u002F`label` (not `from`\u002F`to`)\n\nFor full schema details, see `references\u002Fgraph-contract.md`.\n\n## Function rules\n\n```js\nasync function handler(request, env) {\n  \u002F\u002F Parse input\n  const body = await request.json();\n  \u002F\u002F Use env.KV and env.DB as needed\n  return new Response(JSON.stringify({ result: \"ok\" }));\n}\n```\n\n- Do NOT use `export`, `export default`, or arrow functions\n- Return a `Response` object\n\n## Execution context\n\nAlways use this structure:\n- `vars` - user-defined variables\n- `system` - system variables\n- `context` - channel data\n- `metadata` - request metadata\n\n## Scripts\n\n### Workflows\n\n| Script | Purpose |\n|--------|---------|\n| `list-workflows.js` | List workflows (metadata only) |\n| `get-workflow.js` | Get workflow metadata |\n| `create-workflow.js` | Create a workflow |\n| `update-workflow-settings.js` | Update workflow settings |\n\n### Graph\n\n| Script | Purpose |\n|--------|---------|\n| `get-graph.js` | Get workflow graph + lock_version |\n| `edit-graph.js` | Patch graph via string replacement |\n| `update-graph.js` | Replace entire graph |\n| `validate-graph.js` | Validate graph structure locally |\n\n### Triggers\n\n| Script | Purpose |\n|--------|---------|\n| `list-triggers.js` | List triggers for a workflow |\n| `create-trigger.js` | Create a trigger |\n| `update-trigger.js` | Enable\u002Fdisable a trigger |\n| `delete-trigger.js` | Delete a trigger |\n| `list-whatsapp-phone-numbers.js` | List phone numbers for trigger setup |\n\n### Executions\n\n| Script | Purpose |\n|--------|---------|\n| `list-executions.js` | List executions |\n| `get-execution.js` | Get execution details |\n| `get-context-value.js` | Read value from execution context |\n| `update-execution-status.js` | Force execution state |\n| `resume-execution.js` | Resume waiting execution |\n| `list-execution-events.js` | List execution events |\n\n### Functions\n\n| Script | Purpose |\n|--------|---------|\n| `list-functions.js` | List project functions |\n| `get-function.js` | Get function details + code |\n| `create-function.js` | Create a function |\n| `update-function.js` | Update function code |\n| `deploy-function.js` | Deploy function to runtime |\n| `invoke-function.js` | Invoke function with payload |\n| `list-function-invocations.js` | List function invocations |\n\n### App integrations\n\n| Script | Purpose |\n|--------|---------|\n| `list-apps.js` | Search integration apps |\n| `search-actions.js` | Search actions (action_id = key) |\n| `get-action-schema.js` | Get action JSON schema |\n| `list-accounts.js` | List connected accounts |\n| `create-connect-token.js` | Create OAuth connect link |\n| `configure-prop.js` | Resolve remote_options for a prop |\n| `reload-props.js` | Reload dynamic props |\n| `list-integrations.js` | List saved integrations |\n| `create-integration.js` | Create an integration |\n| `update-integration.js` | Update an integration |\n| `delete-integration.js` | Delete an integration |\n\n### Databases\n\n| Script | Purpose |\n|--------|---------|\n| `list-tables.js` | List D1 tables |\n| `get-table.js` | Get table schema + sample rows |\n| `query-rows.js` | Query rows with filters |\n| `create-row.js` | Create a row |\n| `update-row.js` | Update rows |\n| `upsert-row.js` | Upsert a row |\n| `delete-row.js` | Delete rows |\n\n### OpenAPI\n\n| Script | Purpose |\n|--------|---------|\n| `openapi-explore.mjs` | Explore OpenAPI (search\u002Fop\u002Fschema\u002Fwhere) |\n\nInstall deps (once):\n```bash\nnpm i\n```\n\nExamples:\n```bash\nnode scripts\u002Fopenapi-explore.mjs --spec workflows search \"variables\"\nnode scripts\u002Fopenapi-explore.mjs --spec workflows op getWorkflowVariables\nnode scripts\u002Fopenapi-explore.mjs --spec platform op queryDatabaseRows\n```\n\n## Notes\n\n- Prefer file paths over inline JSON (`--definition-file`, `--code-file`)\n- `action_id` is the same as `key` from `search-actions`\n- `--account-id` uses `pipedream_account_id` from `list-accounts`\n- Variable CRUD (`variables-set.js`, `variables-delete.js`) is blocked - Platform API doesn't support it\n- Raw SQL execution is not supported via Platform API\n\n## References\n\nRead before editing:\n- [references\u002Fgraph-contract.md](references\u002Fgraph-contract.md) - Graph schema, computed vs editable fields, lock_version\n- [references\u002Fnode-types.md](references\u002Fnode-types.md) - Node types and config shapes\n- [references\u002Fworkflow-overview.md](references\u002Fworkflow-overview.md) - Execution flow and states\n\nOther references:\n- [references\u002Fexecution-context.md](references\u002Fexecution-context.md) - Context structure and variable substitution\n- [references\u002Ftriggers.md](references\u002Ftriggers.md) - Trigger types and setup\n- [references\u002Fapp-integrations.md](references\u002Fapp-integrations.md) - App integration and variable_definitions\n- [references\u002Ffunctions-reference.md](references\u002Ffunctions-reference.md) - Function management\n- [references\u002Ffunctions-payloads.md](references\u002Ffunctions-payloads.md) - Payload shapes for functions\n- [references\u002Fdatabases-reference.md](references\u002Fdatabases-reference.md) - Database operations\n\n## Assets\n\n| File | Description |\n|------|-------------|\n| `workflow-linear.json` | Minimal linear workflow |\n| `workflow-decision.json` | Minimal branching workflow |\n| `workflow-agent-simple.json` | Minimal agent workflow |\n| `workflow-customer-support-intake-agent.json` | Customer support intake |\n| `workflow-interactive-buttons-decide-function.json` | Interactive buttons + decide (function) |\n| `workflow-interactive-buttons-decide-ai.json` | Interactive buttons + decide (AI) |\n| `workflow-api-template-wait-agent.json` | API trigger + template + agent |\n| `function-decide-route-interactive-buttons.json` | Function for button routing |\n| `agent-app-integration-example.json` | Agent node with app integrations |\n\n## Related skills\n\n- `integrate-whatsapp` - Onboarding, webhooks, messaging, templates, flows\n- `observe-whatsapp` - Debugging, logs, health checks\n\n\u003C!-- FILEMAP:BEGIN -->\n```text\n[automate-whatsapp file map]|root: .\n|.:{package.json,SKILL.md}\n|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}\n|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}\n|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}\n|scripts\u002Flib\u002Fdatabases:{args.js,filters.js,kapso-api.js}\n|scripts\u002Flib\u002Ffunctions:{args.js,kapso-api.js}\n|scripts\u002Flib\u002Fworkflows:{args.js,kapso-api.js,result.js}\n```\n\u003C!-- FILEMAP:END -->\n\n",{"name":5,"risk":31,"source":52,"description":7},"https:\u002F\u002Fgithub.com\u002Fgokapso\u002Fagent-skills\u002Ftree\u002Fmaster\u002Fskills\u002Fautomate-whatsapp","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fautomate-whatsapp",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill automate-whatsapp",{"tool":68,"command":69},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill automate-whatsapp",{"tool":71,"command":72},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill automate-whatsapp","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fautomate-whatsapp\u002FSKILL.md",true,[76],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"skill-report.json","REFERENCE","参考文档",11094,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fautomate-whatsapp\u002Fskill-report.json",[83,93,103,112,118,125],{"skillNo":84,"name":85,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":89,"publishedAt":47},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[88],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[90,91,92],"model","model hierarchy","model hierarchy skill",{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":99,"publishedAt":47},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[98],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[100,101,102],"MCP","zoom","zoom mcp",{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":47},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[109,110,111,101],"sdk","zoom apps sdk","apps",{"skillNo":113,"name":114,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":47},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[114],{"skillNo":119,"name":120,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":124,"publishedAt":47},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[123],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[120],{"skillNo":126,"name":127,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":47},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[127]]