@controllerai/cli 0.2.15 → 0.2.17

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.
Files changed (35) hide show
  1. package/dist/assistantHosts.js +234 -0
  2. package/dist/assistantHosts.js.map +1 -0
  3. package/dist/commands/agent.js +2 -0
  4. package/dist/commands/agent.js.map +1 -1
  5. package/dist/commands/agentSetup.js +627 -0
  6. package/dist/commands/agentSetup.js.map +1 -0
  7. package/dist/commands/connect.js +29 -26
  8. package/dist/commands/connect.js.map +1 -1
  9. package/dist/commands/docs.js +95 -0
  10. package/dist/commands/docs.js.map +1 -0
  11. package/dist/commands/doctor.js +357 -13
  12. package/dist/commands/doctor.js.map +1 -1
  13. package/dist/commands/node.js +93 -39
  14. package/dist/commands/node.js.map +1 -1
  15. package/dist/commands/skills.js +2 -3
  16. package/dist/commands/skills.js.map +1 -1
  17. package/dist/commands/upgrade.js +69 -0
  18. package/dist/commands/upgrade.js.map +1 -0
  19. package/dist/index.js +4 -0
  20. package/dist/index.js.map +1 -1
  21. package/package.json +1 -1
  22. package/skills/controllerai-agents/SKILL.md +53 -38
  23. package/skills/controllerai-ai-nodes/SKILL.md +19 -3
  24. package/skills/controllerai-data/SKILL.md +33 -1
  25. package/skills/controllerai-expressions/SKILL.md +41 -9
  26. package/skills/controllerai-expressions/references/dsl-and-recipes.md +10 -0
  27. package/skills/controllerai-flow-control/SKILL.md +31 -7
  28. package/skills/controllerai-flow-control/references/patterns.md +65 -0
  29. package/skills/controllerai-integration-actions/SKILL.md +18 -0
  30. package/skills/controllerai-node-config/SKILL.md +3 -1
  31. package/skills/controllerai-start/SKILL.md +16 -1
  32. package/skills/controllerai-triggers/SKILL.md +38 -8
  33. package/skills/controllerai-triggers/references/lifecycle.md +16 -1
  34. package/skills/controllerai-workflows/SKILL.md +31 -15
  35. package/skills/manifest.json +60 -60
@@ -7,6 +7,15 @@ description: Build, inspect, edit, test, recover, and publish Controller AI work
7
7
 
8
8
  The `cai ...` examples are canonical grammar. Follow the transport rules and MCP map in `controllerai-start`; never mix transports within one task. Do not call private REST endpoints or invoke MCP routes outside the typed tools. When the selected transport lacks a capability, say so and name the UI path instead of bypassing it.
9
9
 
10
+ ## Rules that break tasks when skipped
11
+
12
+ - Lock the effective workflow ID and exact flow ID; see Establish context.
13
+ - Repair the selected workflow and flow instead of creating replacements; see Build protocol.
14
+ - Keep workflow, flow, node, input, and output IDs distinct; see Lifecycle rules.
15
+ - Preserve contract fields in place and refresh their dependents; see Lifecycle rules.
16
+ - Use save, history, and restore for recovery instead of rebuilding; see Lifecycle rules.
17
+ - Treat validation counts as status; prove the requested rail and stop. See Lifecycle rules and Before you finish.
18
+
10
19
  ## Establish context
11
20
 
12
21
  ```bash
@@ -24,11 +33,11 @@ If no workflow exists, create it with its final name:
24
33
  cai workflow create --name "<clear outcome-oriented name>" --json
25
34
  ```
26
35
 
27
- On the CLI, read `selected`, `effectiveWorkflowId`, and `pinSource` from the result; creation does not guarantee that the new workflow won the effective pin. If `selected` is false, rerun without `--workflow` when `pinSource` is `flag`; otherwise run `cai use <id>` for a stored pin or clear an inherited `CAI_WORKFLOW` pin in the parent environment, then re-check context. Use `cai config reset` to clear stale stored pins; it cannot clear an environment pin. `cai doctor` verifies that the effective workflow pin and its development head are readable. On MCP, capture the created `workflowId` and pass it explicitly thereafter. Do not create and then rename: `workflow create --name` submits the name directly.
36
+ Read `selected`, `effectiveWorkflowId`, and `pinSource`; creation may not win the pin. If unselected, remove a command flag, use `cai use <id>` for a stored pin, or clear inherited `CAI_WORKFLOW`, as `pinSource` directs, then re-check. `cai config reset` clears only stored pins. `cai doctor` verifies the effective pin and development head. On MCP, capture and pass the new `workflowId`. Create with the final name.
28
37
 
29
38
  A new workflow already ships with one empty flow. Rename that flow and build in it — do not add a second flow for the first piece of work; only add flows for genuinely separate canvases. A stray empty "Flow 1" left behind is clutter the user has to clean up.
30
39
 
31
- Use IDs returned by the selected transport. Never invent workflow, flow, node, prop, event, field, route, or connection identifiers.
40
+ Use IDs returned by the selected transport. For account-wide lists, filter by exact ID or name and owning workflow; never choose the first or latest similar result. Read the selected object's ID, name, and owner once, reuse those IDs, and never rediscover the target by name. A missing projected create field is not failure: inspect the complete result and exact inventory before retrying. Never invent identifiers.
32
41
 
33
42
  To orient inside a workflow, prefer one call over many:
34
43
 
@@ -36,16 +45,12 @@ To orient inside a workflow, prefer one call over many:
36
45
  cai workflow outline --json
37
46
  ```
38
47
 
39
- `cai workflow state --json` is the bounded state projection; add `--flow <flowId>` for that
40
- flow's node and edge identities. Use `cai workflow document --json` only when the complete opaque
41
- workflow JSON is actually needed.
42
-
43
- It returns the whole map compactly — every flow with typed inputs/outputs, its nodes with upstream `deps` (the graph shape), triggers with source/enabled/armed state, and data types with per-rail record counts. Drill into a specific flow with `cai flow get <flowId>` only when you need props and expressions.
48
+ `cai workflow state --json` is bounded; add `--flow <flowId>` for node and edge identities. Use `workflow document` only for complete opaque JSON. `workflow outline` shows flows, contracts, graph `deps`, triggers, and data inventory. Use `flow get` for props and expressions.
44
49
 
45
50
  ## Build protocol
46
51
 
47
52
  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.
48
- 2. Inspect the current workflow before editing: `cai workflow outline`, then `cai flow get <flowId>` for the flows you will touch.
53
+ 2. Inspect the current workflow before editing: `cai workflow outline`, then `cai flow get <flowId>`. Repair those IDs; do not create replacements for a repair.
49
54
  3. Create or select a flow. Define flow inputs and outputs before nodes that derive props from them.
50
55
  4. Build in execution order. After each material change, read it back with the corresponding `get`, `props`, `status`, or `list` command.
51
56
  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.
@@ -73,23 +78,32 @@ Load the narrow skill when the task reaches that surface:
73
78
  - 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.
74
79
  - On the CLI, prefer `--json` for decisions and IDs; human tables are for presentation. MCP tools return typed JSON. If human output looks odd, re-run the same read with `--json` before acting.
75
80
  - A workflow contains flows; a flow is one canvas. Do not confuse their IDs.
76
- - 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.
81
+ - For flow inputs, pass a human `--display` label and use the current binding from `flow get` (`jsBinding`) or `workflow outline` (`binding`). Rename an existing contract input or output in place; do not delete and recreate it. After any rename or deletion, re-read the flow and repair every expression and subflow mapping before validation or execution. `legacyBinding` is diagnostic-only.
77
82
  - Name nodes after the data they produce. Downstream input bindings are seeded from that name when wired.
78
83
  - Use `cai workflow save --name "<checkpoint>"` before a risky rewrite. Named saves and state renames work on every plan.
79
- - **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.
80
- - **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.
84
+
85
+ ```bash
86
+ cai workflow history --json
87
+ cai workflow history --group <groupId> --json
88
+ cai workflow restore --state <stateId> --json
89
+ ```
90
+
91
+ - **Use version history for recovery.** Each save is a state. History retention is unlimited on Free, Max, and custom plans and 90 days on Pro/Starter; restore eligibility is 7 days on Free, 90 on Pro/Starter, and unlimited on Max/custom. Expand groups to capture state IDs. Restore rolls back the definition only; records and external effects remain.
92
+ - **Validate after structural edits and before publish.** Fix every listed prop, wire, expression, type, subflow, branch, and trigger error. Publish refuses errors; use `--acknowledge-validation-errors` only after explicit approval of the listed issues. Flow deletion also removes its contract, graph, and triggers and breaks callers; validation shows each break.
93
+ - Treat validation warning and error counts as status only. Never write them or their messages into unrelated workflow properties.
81
94
  - On a conflict, re-read current state and reapply intent. Do not replay stale IDs or whole documents.
82
95
  - Never delete a workflow without the user's explicit intent; the CLI requires `--yes` but that is not a substitute for authorization. MCP: `workflow_delete` has no `yes` parameter, but still requires the same explicit intent. `cai workflow delete` tears down deployed triggers and soft-deletes the workflow row. Historical workflow/version data remains stored, but there is currently no restore command for the deleted row.
83
- - **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.
84
- - **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 label 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.
85
- - **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), and after `agent publish`/`test` (agent and conversation pages). On the CLI, `connection connect` prints the link; share it with `--no-open` before optionally adding `--wait`. MCP: `connection_connect_url` returns the link immediately and has no `open` or `wait` parameter. 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.
96
+ - **Check dependencies before shared-resource changes.** `cai deps` shows attached agents, workflow callers, and connections; `cai deps --account` maps the account. Deleting a workflow with agent dependents is refused server-side, and `--force` is a deprecated, inert compatibility flag. Detach draft tools with `cai agent remove-tool <agentId> --tool <toolId>`. If still LIVE, use `cai agent publish <agentId>` after explicit approval. A dependent agent publish or delete is its own live/destructive decision. Then retry deletion.
97
+ - **Use the account feed only for recorded history.** Filter `cai events` by type, time, workflow, and cursor. It omits deletions, settings, member removals, and labels. For an unrecorded past change, say it is not recorded and change nothing; names and current state are not proof.
98
+ - **Share real product links.** Relevant publish, development run, agent, connection, workflow get/status, and agent get outputs include `appUrl` when known. Share returned links; never guess one. MCP `connection_connect_url` returns its link immediately.
86
99
  - Never silently weaken the request to make a test pass. Report an unsupported capability or ask about a real product decision.
87
100
 
88
- ## Completion gate
101
+ ## Before you finish
89
102
 
90
103
  Before claiming success, verify all of the following:
91
104
 
92
105
  ```bash
106
+ cai workflow outline --json
93
107
  cai workflow validate --json
94
108
  cai workflow status --json
95
109
  cai flow get <flowId> --json
@@ -106,5 +120,7 @@ Then confirm:
106
120
  - Expected branch or error paths were exercised where practical.
107
121
  - Flow outputs contain the promised values.
108
122
  - The reported live/dev state matches what the user asked for.
123
+ - Final outline inventory matches the request. Remove only scratch schemas, flows, nodes, and triggers created during abandoned attempts.
124
+ - After fixing requested blockers and testing each changed path once, stop. Do not redesign for non-blocking warnings.
109
125
 
110
126
  State what was built, what was tested, whether it was published, and any user-owned connection or product choice still pending.
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "skillSetVersion": "2026.09.03.1",
3
+ "skillSetVersion": "2026.09.04.3",
4
4
  "minCliVersion": "0.2.0",
5
- "latestCliVersion": "0.2.15",
5
+ "latestCliVersion": "0.2.17",
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.09.03.1/controllerai-start/SKILL.md",
13
- "sha256": "00204818498de99c73a710e9390d7377611819157426a50d6d3e2f0a76a3e595",
14
- "size": 7673
12
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-start/SKILL.md",
13
+ "sha256": "ecd3423f5e1886a88b4e11f20f42c7abc525f775590b8538a67d8fa25f544b1d",
14
+ "size": 9135
15
15
  },
16
16
  {
17
17
  "path": "controllerai-start/agents/openai.yaml",
18
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-start/agents/openai.yaml",
18
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-start/agents/openai.yaml",
19
19
  "sha256": "3240c24df8ba5ebfb67bc3e9dbce97f4a78384c352123210197a2dbf27c51150",
20
20
  "size": 226
21
21
  },
22
22
  {
23
23
  "path": "controllerai-start/references/mcp-tool-map.md",
24
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-start/references/mcp-tool-map.md",
24
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-start/references/mcp-tool-map.md",
25
25
  "sha256": "2721fc321886d043f8fa89b81371425f8ebfd8f3d4ab971629ff84ca77ea7cd7",
26
26
  "size": 25905
27
27
  }
@@ -32,19 +32,19 @@
32
32
  "files": [
33
33
  {
34
34
  "path": "controllerai-workflows/SKILL.md",
35
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-workflows/SKILL.md",
36
- "sha256": "558ae53649aefc1219b2b0882b66b8141827095131a499c4694d9c466f19a753",
37
- "size": 11776
35
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-workflows/SKILL.md",
36
+ "sha256": "3b381e04b25b60df2e22c381dac9106940964cfdd3c766e366629024d3bca1fa",
37
+ "size": 10482
38
38
  },
39
39
  {
40
40
  "path": "controllerai-workflows/agents/openai.yaml",
41
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-workflows/agents/openai.yaml",
41
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-workflows/agents/openai.yaml",
42
42
  "sha256": "6fb00a93a5f83fc2664679eb633ab07b477105472f8790fcf6dbcca913921a84",
43
43
  "size": 251
44
44
  },
45
45
  {
46
46
  "path": "controllerai-workflows/references/command-map.md",
47
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-workflows/references/command-map.md",
47
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-workflows/references/command-map.md",
48
48
  "sha256": "0911a52ac5d107d23c785343de537d31ef50982468f6ecdc720197fcb658f419",
49
49
  "size": 4183
50
50
  }
@@ -55,19 +55,19 @@
55
55
  "files": [
56
56
  {
57
57
  "path": "controllerai-node-config/SKILL.md",
58
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-node-config/SKILL.md",
59
- "sha256": "351769bbaf47dbe3d1dc4f3237a7656226cec00ff14b6bcb177cf262c27a6646",
60
- "size": 10721
58
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-node-config/SKILL.md",
59
+ "sha256": "2bdcdd89bf5c14fbfdc6cf4d56ac5a4c308c4a078baf556c8c5de9e89b0d65e9",
60
+ "size": 11302
61
61
  },
62
62
  {
63
63
  "path": "controllerai-node-config/agents/openai.yaml",
64
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-node-config/agents/openai.yaml",
64
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-node-config/agents/openai.yaml",
65
65
  "sha256": "7fbd6f0c1f9ea40c41051d532736a4718895cfa397608a2c716300bcf4256df1",
66
66
  "size": 242
67
67
  },
68
68
  {
69
69
  "path": "controllerai-node-config/references/prop-and-readiness.md",
70
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-node-config/references/prop-and-readiness.md",
70
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-node-config/references/prop-and-readiness.md",
71
71
  "sha256": "9ac3cf181af585244689508d7999600f5c0059ae41caa30e07696a352e62cabe",
72
72
  "size": 7371
73
73
  }
@@ -78,21 +78,21 @@
78
78
  "files": [
79
79
  {
80
80
  "path": "controllerai-expressions/SKILL.md",
81
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-expressions/SKILL.md",
82
- "sha256": "60b2ca0d2b8c866334294a6264f255ec0c37af07ccae89952f433ccfe5434f1e",
83
- "size": 8768
81
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-expressions/SKILL.md",
82
+ "sha256": "e75036c16ab47af8340945222a2c108f36126a784fbfddb7afb0a6a0c7f442c0",
83
+ "size": 10603
84
84
  },
85
85
  {
86
86
  "path": "controllerai-expressions/agents/openai.yaml",
87
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-expressions/agents/openai.yaml",
87
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-expressions/agents/openai.yaml",
88
88
  "sha256": "280d1f4d0a44cb5cfd3e5649e0a123b91b57b1484dcbc3a02ace988233234bc3",
89
89
  "size": 249
90
90
  },
91
91
  {
92
92
  "path": "controllerai-expressions/references/dsl-and-recipes.md",
93
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-expressions/references/dsl-and-recipes.md",
94
- "sha256": "785a96ce661af20ac814eaf898f7af1a621f246084d5bf13d0b71da6d03e5127",
95
- "size": 3914
93
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-expressions/references/dsl-and-recipes.md",
94
+ "sha256": "68c37021abdfc3584ee57365c0826dbe3debdc664626d50c34bf65998776e1ab",
95
+ "size": 4363
96
96
  }
97
97
  ]
98
98
  },
@@ -101,21 +101,21 @@
101
101
  "files": [
102
102
  {
103
103
  "path": "controllerai-flow-control/SKILL.md",
104
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-flow-control/SKILL.md",
105
- "sha256": "b9730d9de8c5d32bac99c9d536a47be96990ae530d3aef2dcedd12338a5d936c",
106
- "size": 8715
104
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-flow-control/SKILL.md",
105
+ "sha256": "395a51b4cf627f0710af75c14d9d8dfba44e650fd2f979544fe2387e3867302f",
106
+ "size": 10580
107
107
  },
108
108
  {
109
109
  "path": "controllerai-flow-control/agents/openai.yaml",
110
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-flow-control/agents/openai.yaml",
110
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-flow-control/agents/openai.yaml",
111
111
  "sha256": "164adf3b887bf9f67bba9cd210b5b49935c29ea0f52f76325fe5df517d279592",
112
112
  "size": 229
113
113
  },
114
114
  {
115
115
  "path": "controllerai-flow-control/references/patterns.md",
116
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-flow-control/references/patterns.md",
117
- "sha256": "42657736133adce32238f39497714a588c12dab28d98ee627941c8818ff4c2ca",
118
- "size": 3042
116
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-flow-control/references/patterns.md",
117
+ "sha256": "21db644561770d97306bb16951f46b959c058bf489d104ffac78779ed9b57da5",
118
+ "size": 5631
119
119
  }
120
120
  ]
121
121
  },
@@ -124,19 +124,19 @@
124
124
  "files": [
125
125
  {
126
126
  "path": "controllerai-runs/SKILL.md",
127
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-runs/SKILL.md",
127
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-runs/SKILL.md",
128
128
  "sha256": "563a1a53aa819eacee207c569ec5c71781afa4cef22efc5f977059420e83550f",
129
129
  "size": 7950
130
130
  },
131
131
  {
132
132
  "path": "controllerai-runs/agents/openai.yaml",
133
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-runs/agents/openai.yaml",
133
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-runs/agents/openai.yaml",
134
134
  "sha256": "63180f12974e19ce7b714695944608760e4132bfb88947543e52616098a88f5c",
135
135
  "size": 234
136
136
  },
137
137
  {
138
138
  "path": "controllerai-runs/references/debugging.md",
139
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-runs/references/debugging.md",
139
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-runs/references/debugging.md",
140
140
  "sha256": "8e4bdb686b766d1babf02a2a688e7f43c63b3a09430c2695b18515f3c6a36daa",
141
141
  "size": 2375
142
142
  }
@@ -147,21 +147,21 @@
147
147
  "files": [
148
148
  {
149
149
  "path": "controllerai-triggers/SKILL.md",
150
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-triggers/SKILL.md",
151
- "sha256": "d3012dd64ca0fd03515fd86439c1cbc931e8074c4f6c5623a52efa3fae89b498",
152
- "size": 8763
150
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-triggers/SKILL.md",
151
+ "sha256": "826222c41ee516428f20a3d6a7b61384b82685c06651f82d239f54606955e289",
152
+ "size": 10478
153
153
  },
154
154
  {
155
155
  "path": "controllerai-triggers/agents/openai.yaml",
156
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-triggers/agents/openai.yaml",
156
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-triggers/agents/openai.yaml",
157
157
  "sha256": "56aa1bd33e54045d88002ade0c420be7bca37ac39433e6eedccef2e22bbd9515",
158
158
  "size": 239
159
159
  },
160
160
  {
161
161
  "path": "controllerai-triggers/references/lifecycle.md",
162
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-triggers/references/lifecycle.md",
163
- "sha256": "3acb70d2ef6b9a22a99e04f58894c255c06c7c68446f3e9dddd9f78ebbcbff13",
164
- "size": 1967
162
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-triggers/references/lifecycle.md",
163
+ "sha256": "8bfdb644c6e8aefca0a33f8c184a1b86060733c6de4b02b5c3ff174801d6a8aa",
164
+ "size": 2954
165
165
  }
166
166
  ]
167
167
  },
@@ -170,19 +170,19 @@
170
170
  "files": [
171
171
  {
172
172
  "path": "controllerai-data/SKILL.md",
173
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-data/SKILL.md",
174
- "sha256": "be2388e55d7c492548d6757ab20f81e3f9e69ed90ed0588cfb3a0ec53a0c3767",
175
- "size": 8969
173
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-data/SKILL.md",
174
+ "sha256": "a159298625e140a8897be8a3df1bc1bee0f946db74034d4a39de66cb80437166",
175
+ "size": 10548
176
176
  },
177
177
  {
178
178
  "path": "controllerai-data/agents/openai.yaml",
179
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-data/agents/openai.yaml",
179
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-data/agents/openai.yaml",
180
180
  "sha256": "5c54b0a714086088213c679fb904a69a599374847f9aa1d6c0756172c2a2f227",
181
181
  "size": 219
182
182
  },
183
183
  {
184
184
  "path": "controllerai-data/references/data-rails.md",
185
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-data/references/data-rails.md",
185
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-data/references/data-rails.md",
186
186
  "sha256": "28bd3d6d82b3fec4c74eaaf869a6f9c3cede3e3e3620fb8f45f2b38a48a1e0aa",
187
187
  "size": 1886
188
188
  }
@@ -193,19 +193,19 @@
193
193
  "files": [
194
194
  {
195
195
  "path": "controllerai-ai-nodes/SKILL.md",
196
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-ai-nodes/SKILL.md",
197
- "sha256": "a9b7d9a15d983c8f0c2d89b29505aa08dbd66819c319efe780c2a8fcd6d7c5f5",
198
- "size": 4270
196
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-ai-nodes/SKILL.md",
197
+ "sha256": "b7569f5b5a742de4b68b332763f89eea2d0198efdea98d41b2a5c040d78b6d58",
198
+ "size": 5115
199
199
  },
200
200
  {
201
201
  "path": "controllerai-ai-nodes/agents/openai.yaml",
202
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-ai-nodes/agents/openai.yaml",
202
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-ai-nodes/agents/openai.yaml",
203
203
  "sha256": "3ba8b8bb6f0cd4b0d5675ebda0af10bb79dc7a42e394eb98479343c83da92599",
204
204
  "size": 256
205
205
  },
206
206
  {
207
207
  "path": "controllerai-ai-nodes/references/selection-and-testing.md",
208
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-ai-nodes/references/selection-and-testing.md",
208
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-ai-nodes/references/selection-and-testing.md",
209
209
  "sha256": "f14e3f95aa241b9cb4f7ea4b32777e105ce0e38568e186adce2f01b4234c7484",
210
210
  "size": 1705
211
211
  }
@@ -216,13 +216,13 @@
216
216
  "files": [
217
217
  {
218
218
  "path": "controllerai-integration-actions/SKILL.md",
219
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-integration-actions/SKILL.md",
220
- "sha256": "50fb07006f19f977d85bca061039968f9b5e7650105cc7879da6bd98b9f2ead6",
221
- "size": 6618
219
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-integration-actions/SKILL.md",
220
+ "sha256": "d9e6a838c487fd6fbd92b8b080960d41dd634455fd3db4ee1e0ad20770b1ff1f",
221
+ "size": 7585
222
222
  },
223
223
  {
224
224
  "path": "controllerai-integration-actions/agents/openai.yaml",
225
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-integration-actions/agents/openai.yaml",
225
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-integration-actions/agents/openai.yaml",
226
226
  "sha256": "82ee62aa48a644e658c9bb6a78c417dc15eb4f3ec9f4abc9081b6d24d16fe92d",
227
227
  "size": 262
228
228
  }
@@ -233,19 +233,19 @@
233
233
  "files": [
234
234
  {
235
235
  "path": "controllerai-agents/SKILL.md",
236
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-agents/SKILL.md",
237
- "sha256": "68cee49bb8f93d7b4c76525547b7ce4943a7c557bdc612100c20a478a73332e7",
238
- "size": 12428
236
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-agents/SKILL.md",
237
+ "sha256": "606ddaa92b715d393d43dde7735ce2ae994931b93611a55ee74b05ae4c224472",
238
+ "size": 12003
239
239
  },
240
240
  {
241
241
  "path": "controllerai-agents/agents/openai.yaml",
242
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-agents/agents/openai.yaml",
242
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-agents/agents/openai.yaml",
243
243
  "sha256": "f4684ec904f3ebb051bb48460375756899c3316fbb16304aad5fff3d89692b09",
244
244
  "size": 293
245
245
  },
246
246
  {
247
247
  "path": "controllerai-agents/references/instructions-and-versioning.md",
248
- "url": "https://getcontroller.ai/skills/2026.09.03.1/controllerai-agents/references/instructions-and-versioning.md",
248
+ "url": "https://getcontroller.ai/skills/2026.09.04.3/controllerai-agents/references/instructions-and-versioning.md",
249
249
  "sha256": "28b7220b292d42ae6b5e7cc522c0a7f00709f3a2b0fc9db9bb23126e4fac7ca9",
250
250
  "size": 5166
251
251
  }