Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add gokapso/agent-skills --skill "kapso-automation"
Install specific skill from multi-skill repository
# Description
Manage Kapso workflows, AI agents, functions, and databases. Edit workflow graphs, configure triggers, manage executions, create functions, and perform database CRUD. Use when building automations, editing workflows, or managing project data.
# SKILL.md
name: kapso-automation
description: Manage Kapso workflows, AI agents, functions, and databases. Edit workflow graphs, configure triggers, manage executions, create functions, and perform database CRUD. Use when building automations, editing workflows, or managing project data.
Kapso Automation
When to use
Use this skill to build and run Kapso automation: workflow CRUD, graph edits, triggers, executions, function management, and D1 database operations.
Setup
Env vars:
- KAPSO_API_BASE_URL (host only, no /platform/v1)
- KAPSO_API_KEY
- PROJECT_ID
How to
Edit a workflow graph
- Fetch graph:
node scripts/get-graph.js <workflow_id>(note thelock_version) - Edit the JSON (see graph rules below)
- Validate:
node scripts/validate-graph.js --definition-file <path> - Update:
node scripts/update-graph.js <workflow_id> --expected-lock-version <n> --definition-file <path> - 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
- List:
node scripts/list-triggers.js <workflow_id> - Create:
node scripts/create-trigger.js <workflow_id> --trigger-type <type> --phone-number-id <id> - Toggle:
node scripts/update-trigger.js --trigger-id <id> --active true|false - Delete:
node 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.
Debug executions
- List:
node scripts/list-executions.js <workflow_id> - Inspect:
node scripts/get-execution.js <execution-id> - Get value:
node scripts/get-context-value.js <execution-id> --variable-path vars.foo - Events:
node scripts/list-execution-events.js <execution-id>
Create and deploy a function
- Write code with handler signature (see function rules below)
- Create:
node scripts/create-function.js --name <name> --code-file <path> - Deploy:
node scripts/deploy-function.js --function-id <id> - Verify:
node scripts/get-function.js --function-id <id>
Set up agent node with app integrations
- Find model:
node scripts/list-provider-models.js - Find account:
node scripts/list-accounts.js --app-slug <slug>(usepipedream_account_id) - Find action:
node scripts/search-actions.js --query <word> --app-slug <slug>(action_id = key) - Create integration:
node scripts/create-integration.js --action-id <id> --app-slug <slug> --account-id <id> --configured-props <json> - Add tools to agent node via
flow_agent_app_integration_tools
Database CRUD
- List tables:
node scripts/list-tables.js - Query:
node scripts/query-rows.js --table <name> --filters <json> - Create/update/delete with row scripts
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
nextedge - Decide edge labels must match
conditions[].label - Edge keys are
source/target/label(notfrom/to)
For full schema details, see references/graph-contract.md.
Function rules
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" }));
}
- Do NOT use
export,export default, or arrow functions - Return a
Responseobject
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 |
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 |
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 |
App integrations
| 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 |
Databases
| 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 |
Notes
- Prefer file paths over inline JSON (
--definition-file,--code-file) action_idis the same askeyfromsearch-actions--account-idusespipedream_account_idfromlist-accounts- Variable CRUD (
variables-set.js,variables-delete.js) is blocked - Platform API doesn't support it - Raw SQL execution is not supported via Platform API
References
Read before editing:
- references/graph-contract.md - Graph schema, computed vs editable fields, lock_version
- references/node-types.md - Node types and config shapes
- references/workflow-overview.md - Execution flow and states
Other references:
- references/execution-context.md - Context structure and variable substitution
- references/triggers.md - Trigger types and setup
- references/app-integrations.md - App integration and variable_definitions
- references/functions-reference.md - Function management
- references/functions-payloads.md - Payload shapes for functions
- references/databases-reference.md - Database operations
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-app-integration-example.json |
Agent node with app integrations |
Related skills
whatsapp-messaging- WhatsApp messaging and templateswhatsapp-flows- WhatsApp Flowskapso-api- Platform API and customers
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.