@controllerai/cli 0.2.12 → 0.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/client.js +239 -13
- package/dist/api/client.js.map +1 -1
- package/dist/commands/agent.js +84 -10
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/approval.js +34 -0
- package/dist/commands/approval.js.map +1 -0
- package/dist/commands/auth.js +5 -4
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/branch.js +32 -1
- package/dist/commands/branch.js.map +1 -1
- package/dist/commands/connection.js +41 -0
- package/dist/commands/connection.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/expr.js +125 -5
- package/dist/commands/expr.js.map +1 -1
- package/dist/commands/file.js +70 -0
- package/dist/commands/file.js.map +1 -0
- package/dist/commands/flow.js +143 -26
- package/dist/commands/flow.js.map +1 -1
- package/dist/commands/node.js +66 -7
- package/dist/commands/node.js.map +1 -1
- package/dist/commands/run.js +354 -40
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/signup.js +10 -7
- package/dist/commands/signup.js.map +1 -1
- package/dist/commands/trigger.js +4 -1
- package/dist/commands/trigger.js.map +1 -1
- package/dist/commands/workflow.js +149 -35
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config.js +7 -1
- package/dist/config.js.map +1 -1
- package/dist/errors.js +3 -4
- package/dist/errors.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/skills/controllerai-agents/SKILL.md +34 -32
- package/skills/controllerai-ai-nodes/SKILL.md +2 -0
- package/skills/controllerai-data/SKILL.md +2 -0
- package/skills/controllerai-expressions/SKILL.md +8 -0
- package/skills/controllerai-flow-control/SKILL.md +2 -0
- package/skills/controllerai-integration-actions/SKILL.md +2 -0
- package/skills/controllerai-node-config/SKILL.md +3 -1
- package/skills/controllerai-runs/SKILL.md +3 -1
- package/skills/controllerai-start/SKILL.md +3 -1
- package/skills/controllerai-triggers/SKILL.md +4 -0
- package/skills/controllerai-workflows/SKILL.md +12 -8
- package/skills/controllerai-workflows/references/command-map.md +1 -1
- package/skills/manifest.json +57 -57
|
@@ -5,6 +5,8 @@ description: Design and configure Controller AI execution paths using only-when
|
|
|
5
5
|
|
|
6
6
|
# Controller AI flow control
|
|
7
7
|
|
|
8
|
+
In MCP hosts, send each exact literal `cai ...` command through the single `exec` tool; never translate it into another grammar.
|
|
9
|
+
|
|
8
10
|
Choose the primitive from the intended execution semantics before adding nodes.
|
|
9
11
|
|
|
10
12
|
## Pick the correct primitive
|
|
@@ -5,6 +5,8 @@ description: Discover, connect, attach, update, and verify ready integration act
|
|
|
5
5
|
|
|
6
6
|
# Controller AI integration actions
|
|
7
7
|
|
|
8
|
+
In MCP hosts, send each exact literal `cai ...` command through the single `exec` tool; never translate it into another grammar.
|
|
9
|
+
|
|
8
10
|
Ready integration actions give a hosted agent one app operation without first building a workflow. Use only the `cai` commands below; do not call Controller AI REST or MCP routes directly.
|
|
9
11
|
|
|
10
12
|
## Choose direct action or workflow
|
|
@@ -5,6 +5,8 @@ description: Discover, initialize, configure, connect, and verify Controller AI
|
|
|
5
5
|
|
|
6
6
|
# Controller AI node configuration
|
|
7
7
|
|
|
8
|
+
In MCP hosts, send each exact literal `cai ...` command through the single `exec` tool; never translate it into another grammar.
|
|
9
|
+
|
|
8
10
|
A node is ready only after its component, connection, dependency-ordered props, wiring, and output type are valid. Treat configuration as a state machine, not a bag of property writes.
|
|
9
11
|
|
|
10
12
|
## Deterministic sequence
|
|
@@ -35,7 +37,7 @@ cai connection list --node <nodeSlug> --json
|
|
|
35
37
|
|
|
36
38
|
- One active connection: use its exact `connectionId`.
|
|
37
39
|
- Several: use an explicit user preference; otherwise ask which account.
|
|
38
|
-
- None: add the real component without `--connection`; `missingConnection: true` is a valid handoff state.
|
|
40
|
+
- None: add the real component without `--connection`; `missingConnection: true` is a valid handoff state. Get the link with `cai connection connect <nodeSlug> --no-open` and share it with the user right away — do not start with `--wait`, which blocks until they finish and delays sharing the link. After they confirm, run `cai connection list --integration <nodeSlug> --json` and bind the new ID with `cai node set-connection <nodeId> --connection <connectionId>`.
|
|
39
41
|
|
|
40
42
|
Never substitute a connection from a similar slug.
|
|
41
43
|
|
|
@@ -5,6 +5,8 @@ description: Run and debug Controller AI nodes on development and flows on devel
|
|
|
5
5
|
|
|
6
6
|
# Controller AI runs
|
|
7
7
|
|
|
8
|
+
In MCP hosts, send each exact literal `cai ...` command through the single `exec` tool; never translate it into another grammar.
|
|
9
|
+
|
|
8
10
|
Think "real run", not "simulation". `run node` always uses development; `run flow` defaults to development and can target the published live version. Both rails execute real integration actions (messages send, records change, provider usage is spent); development isolation covers the data store only. Running is a required part of building — one successful run is how a dynamic node's output type gets resolved for the next step — so mitigate risk before running.
|
|
9
11
|
|
|
10
12
|
## Consequential actions: mitigate with the user, don't refuse
|
|
@@ -40,7 +42,7 @@ cai run inputs <nodeId> --json
|
|
|
40
42
|
cai run inputs <flowId> --flow --json
|
|
41
43
|
```
|
|
42
44
|
|
|
43
|
-
Use returned opaque input IDs. A compact input file can be a flat map:
|
|
45
|
+
Use returned opaque input IDs. Flow mode lists EVERY declared input with a `used` flag: supply the used ones (an unsupplied used input falls back to its saved test value), while values keyed to unused inputs are accepted and ignored. A compact input file can be a flat map:
|
|
44
46
|
|
|
45
47
|
```json
|
|
46
48
|
{
|
|
@@ -5,6 +5,8 @@ description: Connect, orient, and route work across Controller AI agents and no-
|
|
|
5
5
|
|
|
6
6
|
# Start with Controller AI
|
|
7
7
|
|
|
8
|
+
In MCP hosts, send each exact literal `cai ...` command through the single `exec` tool; never translate it into another grammar.
|
|
9
|
+
|
|
8
10
|
Use the installed `cai` CLI as the supported platform interface. Do not call Controller AI REST or MCP routes directly.
|
|
9
11
|
|
|
10
12
|
## Confirm the setup
|
|
@@ -15,7 +17,7 @@ Run:
|
|
|
15
17
|
cai doctor
|
|
16
18
|
```
|
|
17
19
|
|
|
18
|
-
If authentication is missing and the human already has an account, run `cai connect`. If no account exists, run `cai signup` to create a provisional workspace and start building immediately.
|
|
20
|
+
If authentication is missing and the human already has an account, run `cai connect`. If no account exists, run `cai signup` to create a provisional workspace and start building immediately. An unclaimed signup has the same functional access as a free account, including workflow and agent publishing; its workspace is not automatically deleted, and it has a $1 monthly usage cap (`cai signup` prints the exact amount). Email claiming is optional: run `cai signup email <address>`, ask the human account owner for the 6-digit code delivered to their inbox (never guess it), then run `cai signup verify <code>` to raise the monthly cap to $5 and enable durable account recovery. If agent signup is disabled, ask the human to register at https://app.getcontroller.ai/register, then run `cai connect`.
|
|
19
21
|
|
|
20
22
|
If `cai doctor` reports missing, stale, or damaged managed skills, run `cai skills update`, then run `cai doctor` again. When the `CLI version` row says a newer cai is available, upgrade before continuing (`npm install -g @controllerai/cli@latest`, then `cai skills update`) — new versions carry fixes the rest of these skills assume. Skill updates are setup maintenance, not a step to repeat during every build. Never ask the user to paste a password, provider token, or Controller AI credential into chat.
|
|
21
23
|
|
|
@@ -5,6 +5,8 @@ description: Discover, configure, create, sample, enable, test, and debug Contro
|
|
|
5
5
|
|
|
6
6
|
# Controller AI triggers
|
|
7
7
|
|
|
8
|
+
In MCP hosts, send each exact literal `cai ...` command through the single `exec` tool; never translate it into another grammar.
|
|
9
|
+
|
|
8
10
|
A trigger targets exactly one flow. Its source may capture events before publish, but ordinary event execution uses the live workflow. Creating the source is therefore separate from mapping, development testing, publishing, and live replay.
|
|
9
11
|
|
|
10
12
|
## Require a real source decision
|
|
@@ -107,6 +109,8 @@ cai trigger create \
|
|
|
107
109
|
|
|
108
110
|
Capture all returned IDs. `triggerId` is the canvas ID used for get/rename/toggle/delete. `backendTriggerId` is numeric and used for captured events and replay. They are not interchangeable.
|
|
109
111
|
|
|
112
|
+
Read a single trigger back with `cai trigger get <triggerId> --json` — the full record: node, event, connection, props, lifecycle. Read-back is always `get`; the CLI has no `describe` read command anywhere (`cai workflow set-description` is a setter).
|
|
113
|
+
|
|
110
114
|
Follow returned `nextSteps` in order. Trigger payload does not automatically populate the target flow; define flow inputs, relink the run-subflow node if needed, and configure its mapping props.
|
|
111
115
|
|
|
112
116
|
## Remove or disable an automatic start
|
|
@@ -5,7 +5,9 @@ description: Build, inspect, edit, test, recover, and publish Controller AI work
|
|
|
5
5
|
|
|
6
6
|
# Controller AI workflows
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
In MCP hosts, send each exact literal `cai ...` command through the single `exec` tool; never translate it into another grammar.
|
|
9
|
+
|
|
10
|
+
Use `cai` as the control surface. Never call Controller AI REST or MCP routes directly; when the CLI lacks a capability, say so and name the UI path instead of bypassing it.
|
|
9
11
|
|
|
10
12
|
## Establish context
|
|
11
13
|
|
|
@@ -38,11 +40,11 @@ It returns the whole map compactly — every flow with typed inputs/outputs, its
|
|
|
38
40
|
|
|
39
41
|
## Build protocol
|
|
40
42
|
|
|
41
|
-
1. Translate the request into inputs, steps, outputs, trigger, integrations, failure behavior, and publish intent.
|
|
43
|
+
1. Translate the request into inputs, steps, outputs, trigger, integrations, failure behavior, and publish intent. When the request says to store, save, log, or record something and names no external destination, that means a data type plus a create-record node (`controllerai-data`) — a flow output alone does not persist anything. When the user names the destination (a spreadsheet, a CRM, another app, a file), write there with that integration's node instead; add a platform record only when the user also wants a copy kept here.
|
|
42
44
|
2. Inspect the current workflow before editing: `cai workflow outline`, then `cai flow get <flowId>` for the flows you will touch.
|
|
43
45
|
3. Create or select a flow. Define flow inputs and outputs before nodes that derive props from them.
|
|
44
46
|
4. Build in execution order. After each material change, read it back with the corresponding `get`, `props`, `status`, or `list` command.
|
|
45
|
-
5.
|
|
47
|
+
5. Run `cai flow layout <flowId>` once per changed flow as the LAST step after a headless build or any batch of structural edits (adds, deletes, rewires) — add-time placement avoids overlap, but only layout produces clean left-to-right columns. An open builder adopts your layout automatically.
|
|
46
48
|
6. Test on the development rail. Debug every failed or suspicious node; a green top-level status alone is insufficient.
|
|
47
49
|
7. Re-read `cai workflow status`. Publish only when the user asked for a live change or clearly authorized deployment.
|
|
48
50
|
|
|
@@ -64,19 +66,19 @@ Load the narrow skill when the task reaches that surface:
|
|
|
64
66
|
## Lifecycle rules
|
|
65
67
|
|
|
66
68
|
- All graph edits target development. Live remains unchanged until `cai workflow publish`.
|
|
67
|
-
-
|
|
69
|
+
- Email verification is not a publishing prerequisite. An unclaimed agent-created account may publish; email claiming only raises its monthly usage cap and enables account recovery.
|
|
68
70
|
- Prefer `--json` for decisions and IDs; human tables are for presentation. If human output looks odd, re-run the same read with `--json` before acting.
|
|
69
71
|
- A workflow contains flows; a flow is one canvas. Do not confuse their IDs.
|
|
70
72
|
- For flow inputs, pass a human `--display` label and use the compiler-current binding from the latest `cai flow get` (`jsBinding`) or `cai workflow outline` (`binding`). An input rename can change it: re-read bindings after every rename and never cache their spellings across renames. `legacyBinding` is diagnostic-only; never use it in expressions.
|
|
71
73
|
- Name nodes after the data they produce. Downstream input bindings are seeded from that name when wired.
|
|
72
74
|
- Use `cai workflow save --name "<checkpoint>"` before a risky rewrite. Named saves and state renames work on every plan.
|
|
73
75
|
- **Edit the graph with a plan-aware safety net.** Each save is a version state. `cai workflow history` has no age cutoff on Free, Max, or custom plans and a 90-day window on Pro/Starter; expand a group with `cai workflow history --group <groupId>` to get its state IDs. Restore with `cai workflow restore --state <stateId>` within 7 days on Free, 90 days on Pro/Starter, or without an age limit on Max/custom. Duplicate, delete, and refactor with that window in mind. Restore rolls back the DEFINITION (graph and schemas) only — record data is unversioned and stays as it is. External side effects (sent messages, provider calls) are equally outside the undo.
|
|
74
|
-
- **Validate after structural edits, don't ask permission before them.** After deleting a flow, deleting a type, or a large refactor — and before publish — run `cai workflow validate` and fix what it lists:
|
|
76
|
+
- **Validate after structural edits, don't ask permission before them.** After deleting a flow, deleting a type, or a large refactor — and before every publish — run `cai workflow validate` and fix what it lists. It is deep: required props, connections, wiring, expressions, output types, subflows, branches, trigger issues, grouped per red node. Publish refuses when validation reports errors; `--acknowledge-validation-errors` may only be used after the user explicitly approved publishing with the listed issues. Deleting a flow deletes its nodes, edges, inputs/outputs, and attached triggers, and breaks callers in other flows — exactly like deleting a function breaks its call sites; validate shows every break.
|
|
75
77
|
- On a conflict, re-read current state and reapply intent. Do not replay stale IDs or whole documents.
|
|
76
78
|
- Never delete a workflow without the user's explicit intent; the CLI requires `--yes` but that is not a substitute for authorization. `cai workflow delete` tears down deployed triggers and soft-deletes the workflow row. Historical workflow/version data remains stored, but there is currently no CLI restore command for the deleted row.
|
|
77
|
-
- **Know the dependency graph before deleting or refactoring shared resources.** `cai deps` shows which agents attach this workflow as a tool (LIVE or draft), which workflows call it, and which connections it uses; `cai deps --account` maps the whole account. Deleting a workflow with agent dependents is refused server-side, and `--force` is a deprecated, inert compatibility flag. For a draft attachment, run `cai agent remove-tool <agentId> --tool <toolId>`. If it is also LIVE, publish that detached draft with `cai agent publish <agentId>`; if it is LIVE-only, publish the already-detached current draft or delete the agent. Then retry the workflow delete.
|
|
78
|
-
- **Check the account feed when recent activity matters.** `cai events` lists what happened in the account, newest first: connections created, workflow edits/publishes/runs, agents created/published, members added. Filter with `--type` (comma-separated), `--since 30m|2h|7d|<ISO>`, `--for-workflow <id>`; page with `--cursor`. Typical uses: `cai events --type connection.created --since 10m` to see whether the user finished connecting, `cai events --since 24h` to catch up at session start, `cai events --for-workflow <id> --type workflow.run` for recent run activity. The feed cannot show connection deletions, settings changes,
|
|
79
|
-
- **Share the platform, not just text.** At the right moments, hand the user the real product page — command outputs include `appUrl` when the app origin is known: after `workflow publish` (the live builder view), after development `run flow`/`run node` (the run page; live flow runs omit it), after `agent publish`/`test` (agent and conversation pages), and `connection connect` prints the connect link (
|
|
79
|
+
- **Know the dependency graph before deleting or refactoring shared resources.** `cai deps` shows which agents attach this workflow as a tool (LIVE or draft), which workflows call it, and which connections it uses; `cai deps --account` maps the whole account. Deleting a workflow with agent dependents is refused server-side, and `--force` is a deprecated, inert compatibility flag. For a draft attachment, run `cai agent remove-tool <agentId> --tool <toolId>`. If it is also LIVE, publish that detached draft with `cai agent publish <agentId>`; if it is LIVE-only, publish the already-detached current draft or delete the agent. Publishing or deleting a dependent agent is its own live/destructive decision — get the user's explicit approval for that step first. Then retry the workflow delete.
|
|
80
|
+
- **Check the account feed when recent activity matters.** `cai events` lists what happened in the account, newest first: connections created, workflow edits/publishes/runs, agents created/published, members added. Filter with `--type` (comma-separated), `--since 30m|2h|7d|<ISO>`, `--for-workflow <id>`; page with `--cursor`. Typical uses: `cai events --type connection.created --since 10m` to see whether the user finished connecting, `cai events --since 24h` to catch up at session start, `cai events --for-workflow <id> --type workflow.run` for recent run activity. The feed cannot show connection deletions, settings changes, member removals, or any label/folder/share activity — absence there proves nothing. When the user asks you to reconstruct a past change the platform does not record (e.g. which workflow a label was removed from), say it is not recorded and change nothing; names or current state that merely suggest an answer are not evidence, and acting on a guess is worse than reporting the limitation.
|
|
81
|
+
- **Share the platform, not just text.** At the right moments, hand the user the real product page — command outputs include `appUrl` when the app origin is known: after `workflow publish` (the live builder view), after development `run flow`/`run node` (the run page; live flow runs omit it), after `agent publish`/`test` (agent and conversation pages), and `connection connect` prints the connect link (share the link first with `--no-open`; add `--wait` only after the link is already in front of the user). When the user asks for a link at any other time, don't guess URLs: `cai workflow get`, `cai workflow status`, and `cai agent get` include `appUrl`. When you cannot perform something (settings, product-only surfaces), give the link instead of apologizing.
|
|
80
82
|
- Never silently weaken the request to make a test pass. Report an unsupported capability or ask about a real product decision.
|
|
81
83
|
|
|
82
84
|
## Completion gate
|
|
@@ -84,6 +86,7 @@ Load the narrow skill when the task reaches that surface:
|
|
|
84
86
|
Before claiming success, verify all of the following:
|
|
85
87
|
|
|
86
88
|
```bash
|
|
89
|
+
cai workflow validate --json
|
|
87
90
|
cai workflow status --json
|
|
88
91
|
cai flow get <flowId> --json
|
|
89
92
|
cai run flow <flowId> --inputs <values.json> --json
|
|
@@ -91,6 +94,7 @@ cai run flow <flowId> --inputs <values.json> --json
|
|
|
91
94
|
|
|
92
95
|
Then confirm:
|
|
93
96
|
|
|
97
|
+
- **`cai workflow validate` reports `errors: 0`.** Every error is fixed, or explicitly reported to the user with what it breaks — never summarized away, never called cosmetic. A red canvas and a "done" claim cannot coexist.
|
|
94
98
|
- Required node connections and props are complete.
|
|
95
99
|
- Expressions compiled and their resolved configs are non-null.
|
|
96
100
|
- Expected branch or error paths were exercised where practical.
|
|
@@ -9,7 +9,7 @@ cai connect
|
|
|
9
9
|
cai doctor
|
|
10
10
|
cai config reset [--local|--global]
|
|
11
11
|
cai auth status
|
|
12
|
-
cai workflow list|create|get|rename|
|
|
12
|
+
cai workflow list|create|get|rename|set-description|duplicate|delete
|
|
13
13
|
cai workflow state|status|versions|releases|history|save|restore|publish
|
|
14
14
|
cai use <workflowId>
|
|
15
15
|
```
|
package/skills/manifest.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"skillSetVersion": "2026.08.
|
|
3
|
+
"skillSetVersion": "2026.08.30.3",
|
|
4
4
|
"minCliVersion": "0.2.0",
|
|
5
|
-
"latestCliVersion": "0.2.
|
|
5
|
+
"latestCliVersion": "0.2.14",
|
|
6
6
|
"skills": [
|
|
7
7
|
{
|
|
8
8
|
"name": "controllerai-start",
|
|
9
9
|
"files": [
|
|
10
10
|
{
|
|
11
11
|
"path": "controllerai-start/SKILL.md",
|
|
12
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
13
|
-
"sha256": "
|
|
14
|
-
"size":
|
|
12
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-start/SKILL.md",
|
|
13
|
+
"sha256": "d48a58c71c3910f0d969d50a60f35c7d8e2f88a33c1593a8cf68887bf8a370ec",
|
|
14
|
+
"size": 5089
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
"path": "controllerai-start/agents/openai.yaml",
|
|
18
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
18
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-start/agents/openai.yaml",
|
|
19
19
|
"sha256": "3240c24df8ba5ebfb67bc3e9dbce97f4a78384c352123210197a2dbf27c51150",
|
|
20
20
|
"size": 226
|
|
21
21
|
}
|
|
@@ -26,21 +26,21 @@
|
|
|
26
26
|
"files": [
|
|
27
27
|
{
|
|
28
28
|
"path": "controllerai-workflows/SKILL.md",
|
|
29
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
30
|
-
"sha256": "
|
|
31
|
-
"size":
|
|
29
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-workflows/SKILL.md",
|
|
30
|
+
"sha256": "8abbfc663c5d34f8bca40535ce226cd41fcbfddae693d114e48fd896182b7259",
|
|
31
|
+
"size": 11015
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"path": "controllerai-workflows/agents/openai.yaml",
|
|
35
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
35
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-workflows/agents/openai.yaml",
|
|
36
36
|
"sha256": "6fb00a93a5f83fc2664679eb633ab07b477105472f8790fcf6dbcca913921a84",
|
|
37
37
|
"size": 251
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"path": "controllerai-workflows/references/command-map.md",
|
|
41
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
42
|
-
"sha256": "
|
|
43
|
-
"size":
|
|
41
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-workflows/references/command-map.md",
|
|
42
|
+
"sha256": "7f8e44536730bec29088803d2bb64d5d6128485101876f396ae111e22ccce66e",
|
|
43
|
+
"size": 2907
|
|
44
44
|
}
|
|
45
45
|
]
|
|
46
46
|
},
|
|
@@ -49,19 +49,19 @@
|
|
|
49
49
|
"files": [
|
|
50
50
|
{
|
|
51
51
|
"path": "controllerai-node-config/SKILL.md",
|
|
52
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
53
|
-
"sha256": "
|
|
54
|
-
"size":
|
|
52
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-node-config/SKILL.md",
|
|
53
|
+
"sha256": "035804a884506a95543de96eba72531d0c6dc9d5f4750d217a31fe3a5202f4f4",
|
|
54
|
+
"size": 9587
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
"path": "controllerai-node-config/agents/openai.yaml",
|
|
58
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
58
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-node-config/agents/openai.yaml",
|
|
59
59
|
"sha256": "7fbd6f0c1f9ea40c41051d532736a4718895cfa397608a2c716300bcf4256df1",
|
|
60
60
|
"size": 242
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"path": "controllerai-node-config/references/prop-and-readiness.md",
|
|
64
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
64
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-node-config/references/prop-and-readiness.md",
|
|
65
65
|
"sha256": "411dd946180d89119c87d2407d178b3b4c5cb1ea7c1eb459b2f207181bac1ef6",
|
|
66
66
|
"size": 7081
|
|
67
67
|
}
|
|
@@ -72,19 +72,19 @@
|
|
|
72
72
|
"files": [
|
|
73
73
|
{
|
|
74
74
|
"path": "controllerai-expressions/SKILL.md",
|
|
75
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
76
|
-
"sha256": "
|
|
77
|
-
"size":
|
|
75
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-expressions/SKILL.md",
|
|
76
|
+
"sha256": "22857c18432c8ae542f936c9a2730827ed70c937f11ddbced010f84482a30e23",
|
|
77
|
+
"size": 8008
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"path": "controllerai-expressions/agents/openai.yaml",
|
|
81
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
81
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-expressions/agents/openai.yaml",
|
|
82
82
|
"sha256": "280d1f4d0a44cb5cfd3e5649e0a123b91b57b1484dcbc3a02ace988233234bc3",
|
|
83
83
|
"size": 249
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
86
|
"path": "controllerai-expressions/references/dsl-and-recipes.md",
|
|
87
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
87
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-expressions/references/dsl-and-recipes.md",
|
|
88
88
|
"sha256": "2bfb219a5e3e0f2bc6d4407ff509d4df5a4b3ba1e6f90c02fa4398142f815757",
|
|
89
89
|
"size": 3677
|
|
90
90
|
}
|
|
@@ -95,19 +95,19 @@
|
|
|
95
95
|
"files": [
|
|
96
96
|
{
|
|
97
97
|
"path": "controllerai-flow-control/SKILL.md",
|
|
98
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
99
|
-
"sha256": "
|
|
100
|
-
"size":
|
|
98
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-flow-control/SKILL.md",
|
|
99
|
+
"sha256": "ad46e9cc3c3a61e49b8da884b6b8aba59acd3c2c1fcb75dd9bd8b3c118693dea",
|
|
100
|
+
"size": 8443
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
"path": "controllerai-flow-control/agents/openai.yaml",
|
|
104
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
104
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-flow-control/agents/openai.yaml",
|
|
105
105
|
"sha256": "164adf3b887bf9f67bba9cd210b5b49935c29ea0f52f76325fe5df517d279592",
|
|
106
106
|
"size": 229
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
"path": "controllerai-flow-control/references/patterns.md",
|
|
110
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
110
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-flow-control/references/patterns.md",
|
|
111
111
|
"sha256": "a3bb4c02fd431c29393a8172713eb9bce0b4042df11725489c923fd97ef9296b",
|
|
112
112
|
"size": 2877
|
|
113
113
|
}
|
|
@@ -118,19 +118,19 @@
|
|
|
118
118
|
"files": [
|
|
119
119
|
{
|
|
120
120
|
"path": "controllerai-runs/SKILL.md",
|
|
121
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
122
|
-
"sha256": "
|
|
123
|
-
"size":
|
|
121
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-runs/SKILL.md",
|
|
122
|
+
"sha256": "69ba75501ff5962bc03a0bcbd1f8c9e7e5b072f067a88dd45f6748fff052b949",
|
|
123
|
+
"size": 7324
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
126
|
"path": "controllerai-runs/agents/openai.yaml",
|
|
127
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
127
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-runs/agents/openai.yaml",
|
|
128
128
|
"sha256": "63180f12974e19ce7b714695944608760e4132bfb88947543e52616098a88f5c",
|
|
129
129
|
"size": 234
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
"path": "controllerai-runs/references/debugging.md",
|
|
133
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
133
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-runs/references/debugging.md",
|
|
134
134
|
"sha256": "8c511d3f006c669af2afc7867356487b6de2404e0fd62c54da048c7acb635c41",
|
|
135
135
|
"size": 2097
|
|
136
136
|
}
|
|
@@ -141,19 +141,19 @@
|
|
|
141
141
|
"files": [
|
|
142
142
|
{
|
|
143
143
|
"path": "controllerai-triggers/SKILL.md",
|
|
144
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
145
|
-
"sha256": "
|
|
146
|
-
"size":
|
|
144
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-triggers/SKILL.md",
|
|
145
|
+
"sha256": "ba0de04e5bf06b5880c45f68e2d5bfe645642111924db3c2550763421874267a",
|
|
146
|
+
"size": 8409
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
"path": "controllerai-triggers/agents/openai.yaml",
|
|
150
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
150
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-triggers/agents/openai.yaml",
|
|
151
151
|
"sha256": "56aa1bd33e54045d88002ade0c420be7bca37ac39433e6eedccef2e22bbd9515",
|
|
152
152
|
"size": 239
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
"path": "controllerai-triggers/references/lifecycle.md",
|
|
156
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
156
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-triggers/references/lifecycle.md",
|
|
157
157
|
"sha256": "06e0edcd5c36d7f4f005831f08b2c9f44898f075a911a2bbd471b6c9c00986e8",
|
|
158
158
|
"size": 1890
|
|
159
159
|
}
|
|
@@ -164,19 +164,19 @@
|
|
|
164
164
|
"files": [
|
|
165
165
|
{
|
|
166
166
|
"path": "controllerai-data/SKILL.md",
|
|
167
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
168
|
-
"sha256": "
|
|
169
|
-
"size":
|
|
167
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-data/SKILL.md",
|
|
168
|
+
"sha256": "31454ed12e92da5b21ecab31884df998b70dd3640933190dd2f2ef15ea85cacb",
|
|
169
|
+
"size": 8063
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
"path": "controllerai-data/agents/openai.yaml",
|
|
173
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
173
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-data/agents/openai.yaml",
|
|
174
174
|
"sha256": "5c54b0a714086088213c679fb904a69a599374847f9aa1d6c0756172c2a2f227",
|
|
175
175
|
"size": 219
|
|
176
176
|
},
|
|
177
177
|
{
|
|
178
178
|
"path": "controllerai-data/references/data-rails.md",
|
|
179
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
179
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-data/references/data-rails.md",
|
|
180
180
|
"sha256": "5eee23d08322823ca1a989382e707302be02fe34e01da9c2be6c14c385899bd0",
|
|
181
181
|
"size": 1744
|
|
182
182
|
}
|
|
@@ -187,19 +187,19 @@
|
|
|
187
187
|
"files": [
|
|
188
188
|
{
|
|
189
189
|
"path": "controllerai-ai-nodes/SKILL.md",
|
|
190
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
191
|
-
"sha256": "
|
|
192
|
-
"size":
|
|
190
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-ai-nodes/SKILL.md",
|
|
191
|
+
"sha256": "d9a670082ea8dfe116342443270f222410e9468ba60f9d34682405027deeb556",
|
|
192
|
+
"size": 4091
|
|
193
193
|
},
|
|
194
194
|
{
|
|
195
195
|
"path": "controllerai-ai-nodes/agents/openai.yaml",
|
|
196
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
196
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-ai-nodes/agents/openai.yaml",
|
|
197
197
|
"sha256": "3ba8b8bb6f0cd4b0d5675ebda0af10bb79dc7a42e394eb98479343c83da92599",
|
|
198
198
|
"size": 256
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
"path": "controllerai-ai-nodes/references/selection-and-testing.md",
|
|
202
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
202
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-ai-nodes/references/selection-and-testing.md",
|
|
203
203
|
"sha256": "12fb32c422f9cec34c5830ce7dc2cf4f482b9d8b200bb11c45581a108ee81abe",
|
|
204
204
|
"size": 1639
|
|
205
205
|
}
|
|
@@ -210,13 +210,13 @@
|
|
|
210
210
|
"files": [
|
|
211
211
|
{
|
|
212
212
|
"path": "controllerai-integration-actions/SKILL.md",
|
|
213
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
214
|
-
"sha256": "
|
|
215
|
-
"size":
|
|
213
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-integration-actions/SKILL.md",
|
|
214
|
+
"sha256": "5f9d3780dc70cda31915fef88bdf0537e8e2a0b5ed014bf34784d6dd62f478ac",
|
|
215
|
+
"size": 5590
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
"path": "controllerai-integration-actions/agents/openai.yaml",
|
|
219
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
219
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-integration-actions/agents/openai.yaml",
|
|
220
220
|
"sha256": "82ee62aa48a644e658c9bb6a78c417dc15eb4f3ec9f4abc9081b6d24d16fe92d",
|
|
221
221
|
"size": 262
|
|
222
222
|
}
|
|
@@ -227,19 +227,19 @@
|
|
|
227
227
|
"files": [
|
|
228
228
|
{
|
|
229
229
|
"path": "controllerai-agents/SKILL.md",
|
|
230
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
231
|
-
"sha256": "
|
|
232
|
-
"size":
|
|
230
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-agents/SKILL.md",
|
|
231
|
+
"sha256": "555026e3739e8045524e657ff6982bbf1c799c6a3c7137e91e6478e7dad6646b",
|
|
232
|
+
"size": 12290
|
|
233
233
|
},
|
|
234
234
|
{
|
|
235
235
|
"path": "controllerai-agents/agents/openai.yaml",
|
|
236
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
236
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-agents/agents/openai.yaml",
|
|
237
237
|
"sha256": "f4684ec904f3ebb051bb48460375756899c3316fbb16304aad5fff3d89692b09",
|
|
238
238
|
"size": 293
|
|
239
239
|
},
|
|
240
240
|
{
|
|
241
241
|
"path": "controllerai-agents/references/instructions-and-versioning.md",
|
|
242
|
-
"url": "https://getcontroller.ai/skills/2026.08.
|
|
242
|
+
"url": "https://getcontroller.ai/skills/2026.08.30.3/controllerai-agents/references/instructions-and-versioning.md",
|
|
243
243
|
"sha256": "2dbd41d262c40776f4a8cb99537814e70d2ed4aedab327fa7b1cc7cfbf74064c",
|
|
244
244
|
"size": 5086
|
|
245
245
|
}
|