@controllerai/cli 0.2.16 → 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.
- package/dist/commands/node.js +93 -39
- package/dist/commands/node.js.map +1 -1
- package/package.json +1 -1
- package/skills/controllerai-agents/SKILL.md +53 -38
- package/skills/controllerai-ai-nodes/SKILL.md +19 -3
- package/skills/controllerai-data/SKILL.md +33 -1
- package/skills/controllerai-expressions/SKILL.md +41 -9
- package/skills/controllerai-expressions/references/dsl-and-recipes.md +10 -0
- package/skills/controllerai-flow-control/SKILL.md +31 -7
- package/skills/controllerai-flow-control/references/patterns.md +65 -0
- package/skills/controllerai-integration-actions/SKILL.md +18 -0
- package/skills/controllerai-node-config/SKILL.md +3 -1
- package/skills/controllerai-start/SKILL.md +8 -0
- package/skills/controllerai-triggers/SKILL.md +38 -8
- package/skills/controllerai-triggers/references/lifecycle.md +16 -1
- package/skills/controllerai-workflows/SKILL.md +31 -15
- package/skills/manifest.json +60 -60
|
@@ -64,6 +64,12 @@ Prefer a ready integration action when one existing operation completes the capa
|
|
|
64
64
|
|
|
65
65
|
If the user's outcome does not reveal whether they want an agent or an automation that runs on an event, ask one short clarifying question. Otherwise proceed with the smallest suitable surface.
|
|
66
66
|
|
|
67
|
+
## Lock targets before mutation
|
|
68
|
+
|
|
69
|
+
Before the first write, resolve every existing target against the effective workflow. Prefer an explicit ID or an object already connected to the pinned workflow. When a list is account-wide, filter it by exact name or ID; never take the first, latest, or similarly named result. Read back the chosen object's ID, name, and owning workflow or flow. Keep those IDs for the task and never rediscover the target by name.
|
|
70
|
+
|
|
71
|
+
Check `ok` and the complete `data` object from every mutation before projecting fields. A missing projected field is not proof that the mutation failed. Read back the returned ID or list the exact target before retrying. Never repeat a create until readback proves the first call created nothing.
|
|
72
|
+
|
|
67
73
|
## Platform docs
|
|
68
74
|
|
|
69
75
|
The platform reference lives at https://docs.getcontroller.ai. Fetch https://docs.getcontroller.ai/llms.txt for the machine-readable index of every page; append `.md` to any page path for raw markdown (for example https://docs.getcontroller.ai/start/safety.md), or fetch /llms-full.txt for the whole corpus at once. Skills remain the procedural authority — consult the docs for what they do not carry: the execution and cost models, type-system and version-rail contracts, the full CLI and expression-operation references, and the workflow API. When a docs page and a skill disagree, prefer the skill and its live platform queries (`cai expr ops`, `cai integration actions`).
|
|
@@ -76,6 +82,8 @@ The platform reference lives at https://docs.getcontroller.ai. Fetch https://doc
|
|
|
76
82
|
- Coding-agent subscriptions cover builder reasoning, not Controller AI hosted-agent runtime usage.
|
|
77
83
|
- Provider actions can send messages, mutate or delete records, and incur provider charges. Decide the per-action confirmation policy before attaching one.
|
|
78
84
|
- Never publish, share with the organization, replay a live trigger, or perform a consequential external test without clear user intent.
|
|
85
|
+
- A missing business rule is a blocker, not permission to infer one from names or sample data. Ask the user and leave the affected state unchanged.
|
|
86
|
+
- Stop when the requested state and its required evidence are reached. Do not add objects, publish, or keep probing beyond that boundary.
|
|
79
87
|
- When a platform limitation blocks the outcome, STOP and report the partial result with the blocking error; never keep probing until the clock expires.
|
|
80
88
|
|
|
81
89
|
At completion, report what was created, what is still draft or live, the evidence actually observed, and any connection or user decision still required.
|
|
@@ -9,6 +9,15 @@ The `cai ...` examples are canonical grammar. Use the transport selected in `con
|
|
|
9
9
|
|
|
10
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.
|
|
11
11
|
|
|
12
|
+
## Rules that break tasks when skipped
|
|
13
|
+
|
|
14
|
+
- Preserve trigger ID and source during repair; see Create and map.
|
|
15
|
+
- Delete a retired start; disable a reversible pause. See Remove or disable an automatic start.
|
|
16
|
+
- Lifecycle uses `--enable|--disable`; test events use `--allow|--disallow`. See Remove or disable an automatic start and Finish trigger setup.
|
|
17
|
+
- Disarm capture when setup ends; see Finish trigger setup.
|
|
18
|
+
- Lifecycle edits are development-only; publish only for Live. See Verify development, then publish.
|
|
19
|
+
- Replay with `--target dev`; Live also requires `--confirm-live`. See Verify development, then publish.
|
|
20
|
+
|
|
12
21
|
## Require a real source decision
|
|
13
22
|
|
|
14
23
|
Determine how the trigger choice was established:
|
|
@@ -91,9 +100,7 @@ or
|
|
|
91
100
|
{"cron":{"intervalSeconds":900}}
|
|
92
101
|
```
|
|
93
102
|
|
|
94
|
-
Do not
|
|
95
|
-
choose, not yours to assume: when they say "at 9am" without one, ask — a schedule in the
|
|
96
|
-
wrong timezone runs at the wrong time every single day, and nothing ever errors.
|
|
103
|
+
Do not pass a bare cron string or assume a timezone. Ask when the user says "at 9am" without one.
|
|
97
104
|
|
|
98
105
|
## Create and map
|
|
99
106
|
|
|
@@ -109,7 +116,9 @@ cai trigger create \
|
|
|
109
116
|
--json
|
|
110
117
|
```
|
|
111
118
|
|
|
112
|
-
Capture all returned IDs. `triggerId` is the canvas ID used for get/rename/set-enabled/delete. `backendTriggerId` is numeric and used for captured events and replay. They are not interchangeable.
|
|
119
|
+
Capture all returned IDs. `triggerId` is the canvas ID used for get/rename/set-enabled/delete/test-events. `backendTriggerId` is numeric and used for captured events and replay. They are not interchangeable.
|
|
120
|
+
|
|
121
|
+
When repairing an existing trigger, preserve its canvas ID and source. Repair its mapping in place; do not delete and recreate it merely to clear readiness. Replacement changes captured IDs and may change a webhook URL. Replace only when the requested source itself must change, then recapture every returned ID.
|
|
113
122
|
|
|
114
123
|
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).
|
|
115
124
|
|
|
@@ -117,11 +126,11 @@ Follow returned `nextSteps` in order. Trigger payload does not automatically pop
|
|
|
117
126
|
|
|
118
127
|
## Remove or disable an automatic start
|
|
119
128
|
|
|
120
|
-
`cai trigger delete <triggerId>` removes the automatic start from the development canvas; use it when the start should no longer exist. `cai trigger set-enabled <triggerId> --enable|--disable` changes the enabled state reversibly and idempotently; pass exactly one state flag.
|
|
129
|
+
`cai trigger delete <triggerId>` removes the automatic start from the development canvas; use it when the start should no longer exist. Never delete its owning flow merely to remove the trigger. `cai trigger set-enabled <triggerId> --enable|--disable` changes the enabled state reversibly and idempotently; pass exactly one state flag.
|
|
121
130
|
|
|
122
131
|
MCP: call `trigger_set_enabled` with `enabled: true` or `enabled: false`.
|
|
123
132
|
|
|
124
|
-
Both are development edits. Publish
|
|
133
|
+
Both are development edits. Publish only for an authorized Live change; otherwise the prior Live trigger remains active.
|
|
125
134
|
|
|
126
135
|
## Establish a typed sample
|
|
127
136
|
|
|
@@ -145,9 +154,13 @@ cai trigger test-events --id <triggerId> --disallow
|
|
|
145
154
|
|
|
146
155
|
MCP: call `trigger_test_events_set` with `allowed: false`, or `allowed: true` to arm it.
|
|
147
156
|
|
|
148
|
-
|
|
157
|
+
Do not mix the flag families. `set-enabled` takes `--enable` or `--disable`; `test-events` takes `--allow` or `--disallow`; replay takes `--target dev` or `--target live`, with `--confirm-live` for Live.
|
|
158
|
+
|
|
159
|
+
The acknowledgements are distinct: `--acknowledge-dual-run` applies only while arming, `--acknowledge-dual-dispatch` only while publishing an armed trigger, and `--confirm-live` only to one Live replay.
|
|
149
160
|
|
|
150
|
-
|
|
161
|
+
Arming is sticky and independent from enablement. Armed plus live dispatch runs each real event twice; a schedule does so every interval. Disabling does not clear the allow flag, so always disallow after capture.
|
|
162
|
+
|
|
163
|
+
Keeping both rails armed is an uncommon user decision, never a default.
|
|
151
164
|
|
|
152
165
|
## Verify development, then publish
|
|
153
166
|
|
|
@@ -160,6 +173,8 @@ cai exec tree <workflowExecutionId> --json
|
|
|
160
173
|
|
|
161
174
|
A development replay never dispatches live, but nodes still call real providers and can create side effects or spend usage. Publish only after mappings and development behavior pass.
|
|
162
175
|
|
|
176
|
+
A draft-only request stops after development proof. Do not publish merely because the trigger is ready.
|
|
177
|
+
|
|
163
178
|
Before publishing, audit EVERY trigger in the workflow — not just the one you worked on. Users forget triggers left enabled or armed in other flows. Read each row's lifecycle fields from `cai trigger list --json` (`devCanvasEnabled`, `deployment.liveCanvasEnabled`, `deployment.inLiveVersion`, `deployment.devDispatchArmed`, `deployment.dualDispatchLive`) and confirm with the user which triggers should be starting this workflow live:
|
|
164
179
|
|
|
165
180
|
```bash
|
|
@@ -190,3 +205,18 @@ cai exec tree <workflowExecutionId> --json
|
|
|
190
205
|
It executes the published workflow, calls live third-party actions, and spends usage. Obtain appropriate user intent before replaying a side-effectful event.
|
|
191
206
|
|
|
192
207
|
Read [references/lifecycle.md](references/lifecycle.md) for trigger state and debugging.
|
|
208
|
+
|
|
209
|
+
## Before you finish
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
cai trigger get <triggerId> --json
|
|
213
|
+
cai trigger list --json
|
|
214
|
+
cai workflow status --json
|
|
215
|
+
# Only after an authorized create or mapping test:
|
|
216
|
+
cai exec tree <workflowExecutionId> --json
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
- Read-back must retain the intended trigger, source, target flow, connection, props, and mapping.
|
|
220
|
+
- `devCanvasEnabled`, `liveCanvasEnabled`, and `inLiveVersion` must match the requested rail state.
|
|
221
|
+
- `devDispatchArmed` must be false unless the user explicitly chose dual dispatch; report `dualDispatchLive`.
|
|
222
|
+
- For authorized create/mapping work, the development test must produce the expected tree. Never replay for delete/disable-only work. Live replay needs separate authorization.
|
|
@@ -23,7 +23,7 @@ Skipping capture/sample selection commonly leaves downstream output untyped. Ski
|
|
|
23
23
|
|
|
24
24
|
| ID | Used by |
|
|
25
25
|
| --- | --- |
|
|
26
|
-
| Canvas `triggerId` | `trigger get`, `rename`, `set-enabled`, `delete` |
|
|
26
|
+
| Canvas `triggerId` | `trigger get`, `rename`, `set-enabled`, `delete`, `test-events` |
|
|
27
27
|
| Numeric `backendTriggerId` | `trigger events`, `replay` |
|
|
28
28
|
| `triggerNodeId` | `trigger select-event` |
|
|
29
29
|
| Captured `eventId` | `trigger event`, `select-event`, `replay --event` |
|
|
@@ -44,6 +44,21 @@ Use `--target live --confirm-live` only for an intentional post-publish live ver
|
|
|
44
44
|
|
|
45
45
|
MCP: call `trigger_set_enabled` with `enabled: true` or `enabled: false`.
|
|
46
46
|
|
|
47
|
+
## Lifecycle flag families
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
cai trigger set-enabled <triggerId> --enable|--disable --json
|
|
51
|
+
cai trigger test-events <triggerId> --allow [--acknowledge-dual-run] --json
|
|
52
|
+
cai trigger test-events <triggerId> --disallow --json
|
|
53
|
+
cai trigger replay --trigger <backendTriggerId> --target dev --json
|
|
54
|
+
cai trigger replay --trigger <backendTriggerId> --target live --confirm-live --json
|
|
55
|
+
cai workflow publish --acknowledge-dual-dispatch --json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Use enable/disable for the trigger definition, allow/disallow for ambient development capture, and target for replay rail. `--acknowledge-dual-run` applies only while arming. `--acknowledge-dual-dispatch` applies only when publishing an armed trigger. `--confirm-live` applies only to one Live replay. These acknowledgements are not interchangeable.
|
|
59
|
+
|
|
60
|
+
The allow flag is sticky even when the trigger is disabled. Always disallow after capture or an abandoned setup so later re-enablement cannot silently rearm development dispatch.
|
|
61
|
+
|
|
47
62
|
## Debugging a missing run
|
|
48
63
|
|
|
49
64
|
1. `cai trigger list --json`: enabled, correct flow, recoverable backend ID.
|
|
@@ -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
|
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
80
|
-
|
|
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
|
-
- **
|
|
84
|
-
- **
|
|
85
|
-
- **Share
|
|
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
|
-
##
|
|
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.
|
package/skills/manifest.json
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"skillSetVersion": "2026.09.
|
|
3
|
+
"skillSetVersion": "2026.09.04.3",
|
|
4
4
|
"minCliVersion": "0.2.0",
|
|
5
|
-
"latestCliVersion": "0.2.
|
|
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.
|
|
13
|
-
"sha256": "
|
|
14
|
-
"size":
|
|
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.
|
|
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.
|
|
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.
|
|
36
|
-
"sha256": "
|
|
37
|
-
"size":
|
|
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.
|
|
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.
|
|
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.
|
|
59
|
-
"sha256": "
|
|
60
|
-
"size":
|
|
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.
|
|
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.
|
|
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.
|
|
82
|
-
"sha256": "
|
|
83
|
-
"size":
|
|
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.
|
|
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.
|
|
94
|
-
"sha256": "
|
|
95
|
-
"size":
|
|
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.
|
|
105
|
-
"sha256": "
|
|
106
|
-
"size":
|
|
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.
|
|
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.
|
|
117
|
-
"sha256": "
|
|
118
|
-
"size":
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
151
|
-
"sha256": "
|
|
152
|
-
"size":
|
|
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.
|
|
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.
|
|
163
|
-
"sha256": "
|
|
164
|
-
"size":
|
|
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.
|
|
174
|
-
"sha256": "
|
|
175
|
-
"size":
|
|
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.
|
|
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.
|
|
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.
|
|
197
|
-
"sha256": "
|
|
198
|
-
"size":
|
|
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.
|
|
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.
|
|
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.
|
|
220
|
-
"sha256": "
|
|
221
|
-
"size":
|
|
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.
|
|
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.
|
|
237
|
-
"sha256": "
|
|
238
|
-
"size":
|
|
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.
|
|
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.
|
|
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
|
}
|