@controllerai/cli 0.2.20 → 0.2.21
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 +0 -32
- package/dist/api/client.js.map +1 -1
- package/dist/commands/agent.js +8 -101
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/expr.js +10 -3
- package/dist/commands/expr.js.map +1 -1
- package/dist/commands/integration.js +2 -8
- package/dist/commands/integration.js.map +1 -1
- package/dist/commands/workflow.js +6 -7
- package/dist/commands/workflow.js.map +1 -1
- package/dist/errors.js +2 -5
- package/dist/errors.js.map +1 -1
- package/package.json +6 -4
- package/skills/controllerai-agents/SKILL.md +107 -26
- package/skills/controllerai-agents/references/instructions-and-versioning.md +32 -34
- package/skills/controllerai-ai-nodes/SKILL.md +83 -10
- package/skills/controllerai-ai-nodes/references/selection-and-testing.md +44 -26
- package/skills/controllerai-data/SKILL.md +106 -34
- package/skills/controllerai-data/references/data-rails.md +24 -26
- package/skills/controllerai-expressions/SKILL.md +82 -29
- package/skills/controllerai-expressions/references/dsl-and-recipes.md +42 -40
- package/skills/controllerai-flow-control/SKILL.md +104 -21
- package/skills/controllerai-flow-control/references/patterns.md +23 -60
- package/skills/controllerai-integration-actions/SKILL.md +84 -11
- package/skills/controllerai-node-config/SKILL.md +108 -18
- package/skills/controllerai-node-config/references/prop-and-readiness.md +28 -78
- package/skills/controllerai-runs/SKILL.md +82 -25
- package/skills/controllerai-runs/references/debugging.md +24 -22
- package/skills/controllerai-start/SKILL.md +61 -35
- package/skills/controllerai-start/references/mcp-tool-map.md +20 -21
- package/skills/controllerai-triggers/SKILL.md +113 -16
- package/skills/controllerai-triggers/references/lifecycle.md +36 -48
- package/skills/controllerai-workflows/SKILL.md +105 -25
- package/skills/controllerai-workflows/references/command-map.md +19 -44
- package/skills/manifest.json +80 -137
- package/skills-mcp/controllerai-agents/SKILL.md +121 -0
- package/skills-mcp/controllerai-agents/references/instructions-and-versioning.md +76 -0
- package/skills-mcp/controllerai-ai-nodes/SKILL.md +92 -0
- package/skills-mcp/controllerai-ai-nodes/references/selection-and-testing.md +66 -0
- package/skills-mcp/controllerai-data/SKILL.md +119 -0
- package/skills-mcp/controllerai-data/references/data-rails.md +45 -0
- package/skills-mcp/controllerai-expressions/SKILL.md +98 -0
- package/skills-mcp/controllerai-expressions/references/dsl-and-recipes.md +136 -0
- package/skills-mcp/controllerai-flow-control/SKILL.md +114 -0
- package/skills-mcp/controllerai-flow-control/references/patterns.md +83 -0
- package/skills-mcp/controllerai-integration-actions/SKILL.md +89 -0
- package/skills-mcp/controllerai-node-config/SKILL.md +106 -0
- package/skills-mcp/controllerai-node-config/references/prop-and-readiness.md +49 -0
- package/skills-mcp/controllerai-runs/SKILL.md +88 -0
- package/skills-mcp/controllerai-runs/references/debugging.md +53 -0
- package/skills-mcp/controllerai-start/SKILL.md +80 -0
- package/skills-mcp/controllerai-start/references/mcp-tool-map.md +175 -0
- package/skills-mcp/controllerai-triggers/SKILL.md +112 -0
- package/skills-mcp/controllerai-triggers/references/lifecycle.md +59 -0
- package/skills-mcp/controllerai-workflows/SKILL.md +109 -0
- package/skills-mcp/controllerai-workflows/references/command-map.md +1 -0
- package/skills-mcp/manifest.json +189 -0
- package/skills/controllerai-agents/references/command-reference.md +0 -205
- package/skills/controllerai-ai-nodes/references/command-reference.md +0 -98
- package/skills/controllerai-data/references/command-reference.md +0 -177
- package/skills/controllerai-expressions/references/command-reference.md +0 -166
- package/skills/controllerai-flow-control/references/command-reference.md +0 -171
- package/skills/controllerai-integration-actions/references/command-reference.md +0 -118
- package/skills/controllerai-node-config/references/command-reference.md +0 -186
- package/skills/controllerai-runs/references/command-reference.md +0 -113
- package/skills/controllerai-triggers/references/command-reference.md +0 -215
- package/skills/controllerai-workflows/references/command-reference.md +0 -118
|
@@ -1,40 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
<!-- generated from .claude/skills by cli/scripts/render-skills.mjs; edit the source -->
|
|
2
|
+
# Workflow command families
|
|
2
3
|
|
|
3
|
-
Read
|
|
4
|
+
Read the family you need; `cai <domain> --help` lists flags, and the [generated tool map](../../controllerai-start/references/mcp-tool-map.md) gives the MCP tool and parameter names.
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## Lifecycle
|
|
6
7
|
|
|
7
8
|
```text
|
|
8
|
-
cai connect
|
|
9
|
-
cai doctor
|
|
10
|
-
cai config reset [--local|--global]
|
|
11
|
-
cai auth status
|
|
12
9
|
cai workflow list|create|get|rename|set-description|duplicate|delete
|
|
13
|
-
cai workflow document|state|status|versions|releases|history|save|restore|publish
|
|
14
|
-
cai use <workflowId>
|
|
10
|
+
cai workflow outline|document|state|status|versions|releases|history|save|restore|publish
|
|
15
11
|
```
|
|
16
12
|
|
|
17
|
-
|
|
13
|
+
`outline` is the compact inventory; `state --flow <flowId>` adds node and edge identities; `document` is the complete JSON. `save` creates a named checkpoint, `restore --state <stateId>` rolls the definition back, `publish` creates the live release and refuses validation errors unless the user has accepted them explicitly. `delete --yes` undeploys triggers and soft-deletes; it is refused while a draft or live agent depends on the workflow.
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
## Canvas and graph
|
|
15
|
+
## Canvas
|
|
22
16
|
|
|
23
17
|
```text
|
|
24
18
|
cai flow list|get|create|rename|duplicate|delete|reorder|layout
|
|
25
19
|
cai flow input add|update|delete
|
|
26
20
|
cai flow output add|update|delete
|
|
27
21
|
cai integration search|actions|action
|
|
28
|
-
cai node
|
|
22
|
+
cai node add|status|get|props|set|connect|disconnect|delete
|
|
29
23
|
```
|
|
30
24
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
Declare flow outputs before adding a Return response node. Its props are derived from those outputs.
|
|
34
|
-
|
|
35
|
-
`cai flow input add <flowId> --display "<human label>" --type <type>` returns the compiler-current `jsBinding`. Use the latest value from `flow get` (`jsBinding`) or `workflow outline` (`binding`), re-read it after every input rename, and never cache its spelling across renames. `legacyBinding` is diagnostic-only.
|
|
36
|
-
|
|
37
|
-
## Conditions and composition
|
|
25
|
+
## Composition
|
|
38
26
|
|
|
39
27
|
```text
|
|
40
28
|
cai node only-when
|
|
@@ -43,38 +31,25 @@ cai flow for-each
|
|
|
43
31
|
cai node set-flow
|
|
44
32
|
```
|
|
45
33
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Use branch-specific connection commands for Router and If/Else outputs. Generic `node connect` supports only `main` and `error` outputs.
|
|
34
|
+
Router and If/Else outputs connect through the branch commands; generic `node connect` handles only `main` and `error` outputs.
|
|
49
35
|
|
|
50
36
|
## Verification
|
|
51
37
|
|
|
52
38
|
```text
|
|
53
39
|
cai run inputs|node|flow|discover
|
|
54
|
-
cai exec list|get|flow|node|
|
|
40
|
+
cai exec list|get|flow|node|tree
|
|
55
41
|
```
|
|
56
42
|
|
|
57
|
-
|
|
43
|
+
`run discover` executes the real action in a scratch flow and can cause third-party effects or charges; do not use it casually on mutating actions.
|
|
58
44
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
## Product surfaces
|
|
45
|
+
## Other domains
|
|
62
46
|
|
|
63
47
|
```text
|
|
64
|
-
cai connection list|
|
|
65
|
-
cai trigger list|get|
|
|
66
|
-
cai schema list|
|
|
67
|
-
cai data collections|
|
|
68
|
-
cai agent
|
|
69
|
-
cai agent conversation list|create|status|history|send|approve|deny
|
|
48
|
+
cai connection list|update|delete
|
|
49
|
+
cai trigger list|get|create|search|replay|test-events
|
|
50
|
+
cai schema list|create|update|delete
|
|
51
|
+
cai data collections|query|create|update|delete|import
|
|
52
|
+
cai agent create|get|list|update|add-workflow|add-action|add-file|remove-tool|publish|conversation
|
|
70
53
|
```
|
|
71
54
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
MCP: `trigger_set_enabled` takes the same explicit enabled state as the CLI setter.
|
|
75
|
-
|
|
76
|
-
MCP: every data write requires explicit `env`; pass CSV text inline as `content` to `data_record_import`, and pass `env: "live"` to `data_copy_to_live`.
|
|
77
|
-
|
|
78
|
-
MCP: `agent update` splits into `agent_update` and `agent_set_enabled`; `agent add-file` splits into `agent_knowledge_file_add` and `agent_workspace_file_add` with inline `content`. `agent_conversation_send` takes `waitSeconds`.
|
|
79
|
-
|
|
80
|
-
Agent visibility supports only `private` and `organization`; organization is an explicit live access change after agent publish.
|
|
55
|
+
Each family has its own skill; the map above covers CLI-to-MCP names for all of them.
|
package/skills/manifest.json
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"skillSetVersion": "2026.09.
|
|
3
|
+
"skillSetVersion": "2026.09.07.1",
|
|
4
4
|
"minCliVersion": "0.2.0",
|
|
5
|
-
"latestCliVersion": "0.2.
|
|
5
|
+
"latestCliVersion": "0.2.21",
|
|
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.07.1/controllerai-start/SKILL.md",
|
|
13
|
+
"sha256": "0d79439019310289d9f1a19ceb153756f6cec6d6cf80e46c9da1caf33cc6b183",
|
|
14
|
+
"size": 11209
|
|
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.07.1/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.
|
|
25
|
-
"sha256": "
|
|
26
|
-
"size":
|
|
24
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-start/references/mcp-tool-map.md",
|
|
25
|
+
"sha256": "f08325ad01ada76a2fac75c0969367167441931638dd9d91c87cce94cbf9620b",
|
|
26
|
+
"size": 26595
|
|
27
27
|
}
|
|
28
28
|
]
|
|
29
29
|
},
|
|
@@ -32,27 +32,21 @@
|
|
|
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.07.1/controllerai-workflows/SKILL.md",
|
|
36
|
+
"sha256": "a2419265809b6f822ed22be4cfbfc1c56107e7afffffc41a0f527fd93018dc8a",
|
|
37
|
+
"size": 9472
|
|
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.07.1/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.
|
|
48
|
-
"sha256": "
|
|
49
|
-
"size":
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"path": "controllerai-workflows/references/command-reference.md",
|
|
53
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-workflows/references/command-reference.md",
|
|
54
|
-
"sha256": "47af388e64fe90c8801ae01d036c4bce732bd85f6887198c15d9e86317c838d4",
|
|
55
|
-
"size": 9732
|
|
47
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-workflows/references/command-map.md",
|
|
48
|
+
"sha256": "81cc467172c5e431f4d9a9b833e24dfed42392d679f766d4fc6d1ac0722c71e7",
|
|
49
|
+
"size": 2091
|
|
56
50
|
}
|
|
57
51
|
]
|
|
58
52
|
},
|
|
@@ -61,27 +55,21 @@
|
|
|
61
55
|
"files": [
|
|
62
56
|
{
|
|
63
57
|
"path": "controllerai-node-config/SKILL.md",
|
|
64
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
65
|
-
"sha256": "
|
|
66
|
-
"size":
|
|
58
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-node-config/SKILL.md",
|
|
59
|
+
"sha256": "fb7ad0999e772079d7ce94f25d9fddca9b483b81a11bbaba47d618825d5585fe",
|
|
60
|
+
"size": 11614
|
|
67
61
|
},
|
|
68
62
|
{
|
|
69
63
|
"path": "controllerai-node-config/agents/openai.yaml",
|
|
70
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
64
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-node-config/agents/openai.yaml",
|
|
71
65
|
"sha256": "7fbd6f0c1f9ea40c41051d532736a4718895cfa397608a2c716300bcf4256df1",
|
|
72
66
|
"size": 242
|
|
73
67
|
},
|
|
74
|
-
{
|
|
75
|
-
"path": "controllerai-node-config/references/command-reference.md",
|
|
76
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-node-config/references/command-reference.md",
|
|
77
|
-
"sha256": "ab71dc4bb614003b44496fb8bdf4661ebe6fc379337ced927268c5ceaaa6d284",
|
|
78
|
-
"size": 10761
|
|
79
|
-
},
|
|
80
68
|
{
|
|
81
69
|
"path": "controllerai-node-config/references/prop-and-readiness.md",
|
|
82
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
83
|
-
"sha256": "
|
|
84
|
-
"size":
|
|
70
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-node-config/references/prop-and-readiness.md",
|
|
71
|
+
"sha256": "6a1aa046bac6c5f1a68cbe242bdeb584f9a01e2de7248742460064a4d2708f75",
|
|
72
|
+
"size": 5583
|
|
85
73
|
}
|
|
86
74
|
]
|
|
87
75
|
},
|
|
@@ -90,27 +78,21 @@
|
|
|
90
78
|
"files": [
|
|
91
79
|
{
|
|
92
80
|
"path": "controllerai-expressions/SKILL.md",
|
|
93
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
94
|
-
"sha256": "
|
|
95
|
-
"size":
|
|
81
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-expressions/SKILL.md",
|
|
82
|
+
"sha256": "01240f493ec5bbd1ed562f988d243e3797577eee5ccc9d207f8bc45485b99108",
|
|
83
|
+
"size": 10310
|
|
96
84
|
},
|
|
97
85
|
{
|
|
98
86
|
"path": "controllerai-expressions/agents/openai.yaml",
|
|
99
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
87
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-expressions/agents/openai.yaml",
|
|
100
88
|
"sha256": "280d1f4d0a44cb5cfd3e5649e0a123b91b57b1484dcbc3a02ace988233234bc3",
|
|
101
89
|
"size": 249
|
|
102
90
|
},
|
|
103
|
-
{
|
|
104
|
-
"path": "controllerai-expressions/references/command-reference.md",
|
|
105
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-expressions/references/command-reference.md",
|
|
106
|
-
"sha256": "46701b5fbd5ccfaf56e84efde4f3725332d4585f6cbafb99ce8909f60f3b4507",
|
|
107
|
-
"size": 10015
|
|
108
|
-
},
|
|
109
91
|
{
|
|
110
92
|
"path": "controllerai-expressions/references/dsl-and-recipes.md",
|
|
111
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
112
|
-
"sha256": "
|
|
113
|
-
"size":
|
|
93
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-expressions/references/dsl-and-recipes.md",
|
|
94
|
+
"sha256": "efe4a5eba0ea7636387443af0a6cc082a41209404b92c3af5c8a029075db70f6",
|
|
95
|
+
"size": 5197
|
|
114
96
|
}
|
|
115
97
|
]
|
|
116
98
|
},
|
|
@@ -119,27 +101,21 @@
|
|
|
119
101
|
"files": [
|
|
120
102
|
{
|
|
121
103
|
"path": "controllerai-flow-control/SKILL.md",
|
|
122
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
123
|
-
"sha256": "
|
|
124
|
-
"size":
|
|
104
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-flow-control/SKILL.md",
|
|
105
|
+
"sha256": "c535a1ff61cc65cca53af083081935dc8672f7ce5d048dbb29334808428feec3",
|
|
106
|
+
"size": 11563
|
|
125
107
|
},
|
|
126
108
|
{
|
|
127
109
|
"path": "controllerai-flow-control/agents/openai.yaml",
|
|
128
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
110
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-flow-control/agents/openai.yaml",
|
|
129
111
|
"sha256": "164adf3b887bf9f67bba9cd210b5b49935c29ea0f52f76325fe5df517d279592",
|
|
130
112
|
"size": 229
|
|
131
113
|
},
|
|
132
|
-
{
|
|
133
|
-
"path": "controllerai-flow-control/references/command-reference.md",
|
|
134
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-flow-control/references/command-reference.md",
|
|
135
|
-
"sha256": "cfcf9bfeb1a613ad8187c7cdb5262e59787d50d2dcc20ef6e99dc822c3a31a79",
|
|
136
|
-
"size": 9968
|
|
137
|
-
},
|
|
138
114
|
{
|
|
139
115
|
"path": "controllerai-flow-control/references/patterns.md",
|
|
140
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
141
|
-
"sha256": "
|
|
142
|
-
"size":
|
|
116
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-flow-control/references/patterns.md",
|
|
117
|
+
"sha256": "f1a718de837dc541e58914f40b4a89e6e81ba80afac37731e381db73a4712d90",
|
|
118
|
+
"size": 4901
|
|
143
119
|
}
|
|
144
120
|
]
|
|
145
121
|
},
|
|
@@ -148,27 +124,21 @@
|
|
|
148
124
|
"files": [
|
|
149
125
|
{
|
|
150
126
|
"path": "controllerai-runs/SKILL.md",
|
|
151
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
152
|
-
"sha256": "
|
|
153
|
-
"size":
|
|
127
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-runs/SKILL.md",
|
|
128
|
+
"sha256": "5eeda1f95f8c18c12b968d6c2ea9008c2dd99d8953268c4ffd06652f43a91516",
|
|
129
|
+
"size": 9196
|
|
154
130
|
},
|
|
155
131
|
{
|
|
156
132
|
"path": "controllerai-runs/agents/openai.yaml",
|
|
157
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
133
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-runs/agents/openai.yaml",
|
|
158
134
|
"sha256": "63180f12974e19ce7b714695944608760e4132bfb88947543e52616098a88f5c",
|
|
159
135
|
"size": 234
|
|
160
136
|
},
|
|
161
|
-
{
|
|
162
|
-
"path": "controllerai-runs/references/command-reference.md",
|
|
163
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-runs/references/command-reference.md",
|
|
164
|
-
"sha256": "3da84da5b6978ae5db60d131b39c2128fde5a54ad0760309dc497fdfd50aea23",
|
|
165
|
-
"size": 6459
|
|
166
|
-
},
|
|
167
137
|
{
|
|
168
138
|
"path": "controllerai-runs/references/debugging.md",
|
|
169
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
170
|
-
"sha256": "
|
|
171
|
-
"size":
|
|
139
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-runs/references/debugging.md",
|
|
140
|
+
"sha256": "341f9e056445bdffdcc67771fd62b28fb2125a661d5d8a5c4fb16bcac57417c0",
|
|
141
|
+
"size": 3127
|
|
172
142
|
}
|
|
173
143
|
]
|
|
174
144
|
},
|
|
@@ -177,27 +147,21 @@
|
|
|
177
147
|
"files": [
|
|
178
148
|
{
|
|
179
149
|
"path": "controllerai-triggers/SKILL.md",
|
|
180
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
181
|
-
"sha256": "
|
|
182
|
-
"size":
|
|
150
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-triggers/SKILL.md",
|
|
151
|
+
"sha256": "c8a88bb69a0e032f1fd2716e1a2cd0690e62ae0b9bb996bf30643d4bd3b8fab2",
|
|
152
|
+
"size": 11800
|
|
183
153
|
},
|
|
184
154
|
{
|
|
185
155
|
"path": "controllerai-triggers/agents/openai.yaml",
|
|
186
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
156
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-triggers/agents/openai.yaml",
|
|
187
157
|
"sha256": "56aa1bd33e54045d88002ade0c420be7bca37ac39433e6eedccef2e22bbd9515",
|
|
188
158
|
"size": 239
|
|
189
159
|
},
|
|
190
|
-
{
|
|
191
|
-
"path": "controllerai-triggers/references/command-reference.md",
|
|
192
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-triggers/references/command-reference.md",
|
|
193
|
-
"sha256": "1984522b3883624fe1e174bc5394cb5923e27916cf95dda9536040a36fdd1563",
|
|
194
|
-
"size": 9943
|
|
195
|
-
},
|
|
196
160
|
{
|
|
197
161
|
"path": "controllerai-triggers/references/lifecycle.md",
|
|
198
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
199
|
-
"sha256": "
|
|
200
|
-
"size":
|
|
162
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-triggers/references/lifecycle.md",
|
|
163
|
+
"sha256": "4dce6484b6abaa0eaf4ddbe366e60480180fc5b5aeb7e3c975bbe316b88dc0e5",
|
|
164
|
+
"size": 3340
|
|
201
165
|
}
|
|
202
166
|
]
|
|
203
167
|
},
|
|
@@ -206,27 +170,21 @@
|
|
|
206
170
|
"files": [
|
|
207
171
|
{
|
|
208
172
|
"path": "controllerai-data/SKILL.md",
|
|
209
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
210
|
-
"sha256": "
|
|
211
|
-
"size":
|
|
173
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-data/SKILL.md",
|
|
174
|
+
"sha256": "1418b287af30968634c69dbdbd54d22354f5f79f52389e6d1c94a87421c20e78",
|
|
175
|
+
"size": 12059
|
|
212
176
|
},
|
|
213
177
|
{
|
|
214
178
|
"path": "controllerai-data/agents/openai.yaml",
|
|
215
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
179
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-data/agents/openai.yaml",
|
|
216
180
|
"sha256": "5c54b0a714086088213c679fb904a69a599374847f9aa1d6c0756172c2a2f227",
|
|
217
181
|
"size": 219
|
|
218
182
|
},
|
|
219
|
-
{
|
|
220
|
-
"path": "controllerai-data/references/command-reference.md",
|
|
221
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-data/references/command-reference.md",
|
|
222
|
-
"sha256": "aa51cc377ca808f5ec53ddaba3f97f860df16b13511ed0d1c648c7783afb3cc1",
|
|
223
|
-
"size": 10057
|
|
224
|
-
},
|
|
225
183
|
{
|
|
226
184
|
"path": "controllerai-data/references/data-rails.md",
|
|
227
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
228
|
-
"sha256": "
|
|
229
|
-
"size":
|
|
185
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-data/references/data-rails.md",
|
|
186
|
+
"sha256": "0c03f25a099d168b8ae1fe54087ce59d06fcfc8631046927a996a88f0c4f9835",
|
|
187
|
+
"size": 2819
|
|
230
188
|
}
|
|
231
189
|
]
|
|
232
190
|
},
|
|
@@ -235,27 +193,21 @@
|
|
|
235
193
|
"files": [
|
|
236
194
|
{
|
|
237
195
|
"path": "controllerai-ai-nodes/SKILL.md",
|
|
238
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
239
|
-
"sha256": "
|
|
240
|
-
"size":
|
|
196
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-ai-nodes/SKILL.md",
|
|
197
|
+
"sha256": "4e4bdf53e300adedf5e03f282687d0d20e200baf056cd59bf8df98d7b8b21403",
|
|
198
|
+
"size": 8940
|
|
241
199
|
},
|
|
242
200
|
{
|
|
243
201
|
"path": "controllerai-ai-nodes/agents/openai.yaml",
|
|
244
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
202
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-ai-nodes/agents/openai.yaml",
|
|
245
203
|
"sha256": "3ba8b8bb6f0cd4b0d5675ebda0af10bb79dc7a42e394eb98479343c83da92599",
|
|
246
204
|
"size": 256
|
|
247
205
|
},
|
|
248
|
-
{
|
|
249
|
-
"path": "controllerai-ai-nodes/references/command-reference.md",
|
|
250
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-ai-nodes/references/command-reference.md",
|
|
251
|
-
"sha256": "faca6d19e5fd81a615838fccdd92591ecc8c3b2d1272a623f00cf119180125ba",
|
|
252
|
-
"size": 4520
|
|
253
|
-
},
|
|
254
206
|
{
|
|
255
207
|
"path": "controllerai-ai-nodes/references/selection-and-testing.md",
|
|
256
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
257
|
-
"sha256": "
|
|
258
|
-
"size":
|
|
208
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-ai-nodes/references/selection-and-testing.md",
|
|
209
|
+
"sha256": "66b235b9e81645ab877b31443505c7b07ea3f2e5a357053f266c121415f8cf5c",
|
|
210
|
+
"size": 3111
|
|
259
211
|
}
|
|
260
212
|
]
|
|
261
213
|
},
|
|
@@ -264,21 +216,15 @@
|
|
|
264
216
|
"files": [
|
|
265
217
|
{
|
|
266
218
|
"path": "controllerai-integration-actions/SKILL.md",
|
|
267
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
268
|
-
"sha256": "
|
|
269
|
-
"size":
|
|
219
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-integration-actions/SKILL.md",
|
|
220
|
+
"sha256": "855556937687acc9dbfc22f65f75e98fb9974838776b5c53414193e19b490b7b",
|
|
221
|
+
"size": 8764
|
|
270
222
|
},
|
|
271
223
|
{
|
|
272
224
|
"path": "controllerai-integration-actions/agents/openai.yaml",
|
|
273
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
225
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-integration-actions/agents/openai.yaml",
|
|
274
226
|
"sha256": "82ee62aa48a644e658c9bb6a78c417dc15eb4f3ec9f4abc9081b6d24d16fe92d",
|
|
275
227
|
"size": 262
|
|
276
|
-
},
|
|
277
|
-
{
|
|
278
|
-
"path": "controllerai-integration-actions/references/command-reference.md",
|
|
279
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-integration-actions/references/command-reference.md",
|
|
280
|
-
"sha256": "9ab30427d89e5567b24c1f32d8105378baf9473c722845f2dff5d5eab4ed5768",
|
|
281
|
-
"size": 7023
|
|
282
228
|
}
|
|
283
229
|
]
|
|
284
230
|
},
|
|
@@ -287,29 +233,26 @@
|
|
|
287
233
|
"files": [
|
|
288
234
|
{
|
|
289
235
|
"path": "controllerai-agents/SKILL.md",
|
|
290
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
291
|
-
"sha256": "
|
|
292
|
-
"size":
|
|
236
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-agents/SKILL.md",
|
|
237
|
+
"sha256": "5dadcac767c9f2e7a701081d38e1e1d5350fd2cf2f273dd3ee6d5be818371124",
|
|
238
|
+
"size": 11539
|
|
293
239
|
},
|
|
294
240
|
{
|
|
295
241
|
"path": "controllerai-agents/agents/openai.yaml",
|
|
296
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
242
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-agents/agents/openai.yaml",
|
|
297
243
|
"sha256": "f4684ec904f3ebb051bb48460375756899c3316fbb16304aad5fff3d89692b09",
|
|
298
244
|
"size": 293
|
|
299
245
|
},
|
|
300
|
-
{
|
|
301
|
-
"path": "controllerai-agents/references/command-reference.md",
|
|
302
|
-
"url": "https://getcontroller.ai/skills/2026.09.06.4/controllerai-agents/references/command-reference.md",
|
|
303
|
-
"sha256": "496146921b57de7ce7cf27a86dcc3746784120b7e5d497015657cacbb5f223b5",
|
|
304
|
-
"size": 10918
|
|
305
|
-
},
|
|
306
246
|
{
|
|
307
247
|
"path": "controllerai-agents/references/instructions-and-versioning.md",
|
|
308
|
-
"url": "https://getcontroller.ai/skills/2026.09.
|
|
309
|
-
"sha256": "
|
|
310
|
-
"size":
|
|
248
|
+
"url": "https://getcontroller.ai/skills/2026.09.07.1/controllerai-agents/references/instructions-and-versioning.md",
|
|
249
|
+
"sha256": "88b059e74aef03ccb12a53815d1090e5449090ff6dfd863b6cef5a12b434cb65",
|
|
250
|
+
"size": 5644
|
|
311
251
|
}
|
|
312
252
|
]
|
|
313
253
|
}
|
|
314
|
-
]
|
|
254
|
+
],
|
|
255
|
+
"surfaces": {
|
|
256
|
+
"mcp": "skills-mcp"
|
|
257
|
+
}
|
|
315
258
|
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: controllerai-agents
|
|
3
|
+
description: Design, assemble, test, publish and share user-facing Controller AI agents built from instructions, knowledge files, workflow tools and ready integration actions. Use when creating or editing an agent, choosing its tool architecture, attaching tools, verifying draft or live conversations, or publishing and sharing it.
|
|
4
|
+
---
|
|
5
|
+
<!-- generated from .claude/skills by cli/scripts/render-skills.mjs; edit the source -->
|
|
6
|
+
|
|
7
|
+
# Agents
|
|
8
|
+
|
|
9
|
+
## Use this when
|
|
10
|
+
|
|
11
|
+
- The user wants something people chat with: an assistant, a copilot, a file-enrichment helper, an internal tool with judgment.
|
|
12
|
+
- An existing agent needs new instructions, tools or knowledge, or must be verified, published or shared.
|
|
13
|
+
- A capability must be placed: in the agent's instructions, in a workflow tool, in a direct action, or in a knowledge file.
|
|
14
|
+
|
|
15
|
+
Direct actions belong to `controllerai-integration-actions`; the workflows behind workflow tools to `controllerai-workflows`; the wider deliverable choice to `controllerai-start`.
|
|
16
|
+
|
|
17
|
+
## How it works
|
|
18
|
+
|
|
19
|
+
**What an agent is.** A person chats with it; it reasons, reads conversation attachments and reference knowledge, calls tools, and creates files for the user. It is the right shape for judgment, conversation and file handling; deterministic business rules, custom workflow data and multi-step processing belong in workflow tools it calls, and one existing app operation is a direct action.
|
|
20
|
+
|
|
21
|
+
**One draft, immutable versions.** Editing changes only the mutable draft, and saving the draft updates the owner-only Test environment at once. Publishing snapshots the display name, instructions, tool identities, descriptions, approval policies and knowledge files into a new immutable version, moves the live pointer, and restamps every existing live conversation to it; that cutover interrupts in-flight answers and expires pending approvals. The runtime model is not part of the snapshot. There is no rollback: a bad version is corrected forward.
|
|
22
|
+
|
|
23
|
+
**Test versus Live.**
|
|
24
|
+
|
|
25
|
+
| Context | Test (draft) conversation | Live (shared) conversation |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| Agent configuration | Current mutable draft | Latest published immutable agent version |
|
|
28
|
+
| Workflow tools | Each workflow's current development head | Each workflow's latest live release; never pinned |
|
|
29
|
+
| Reference files | Current draft knowledge files | Knowledge frozen into the published agent version |
|
|
30
|
+
| Runtime files | Current live runtime files, overlaid by development/test runtime files at the same path | Current live runtime files only |
|
|
31
|
+
| Access | Owner only | Owner, plus organization members when shared; non-owners never see the draft |
|
|
32
|
+
|
|
33
|
+
**Three kinds of files.** Conversation attachments belong to one chat. Knowledge is versioned reference material in the draft: text types only (`txt`, `md`, `json`, `csv`, `html`, `xml`), each added once under the name the agent should see. When the user asks for a PDF or another unsupported format, store a supported text type under the plain requested name and say why; a name that still carries the wrong extension is not the same document. Shared runtime files are live workspace state, visible without a publish, and no substitute for an upload. Paths come from returned metadata; runtime mounts can prefix them.
|
|
34
|
+
|
|
35
|
+
**Live-bound state.** Enabling or disabling is runtime state, independent of publication: disabling pauses live use, while the owner's Test conversations still work. A workflow publish changes every live agent that follows that workflow without an agent publish, and live workflow resolution is cached per session, so an in-flight turn may finish on the prior release. A direct action's connection is a live grant: rebinding redirects it and revocation or detachment blocks it immediately; detachment still needs a later agent publish to remove the tool from the published list.
|
|
36
|
+
|
|
37
|
+
**Runtime usage.** Test and live conversations consume the organization's runtime usage and cause the connected providers' side effects; the builder's own subscription pays only for building.
|
|
38
|
+
|
|
39
|
+
## Rules
|
|
40
|
+
|
|
41
|
+
1. **Instructions hold judgment; tools hold work; knowledge holds sources.** Each tool description says when to use it, what to pass, what comes back.
|
|
42
|
+
2. **Test every workflow tool on development before attaching it**, with a non-empty output contract the run actually returns, unless the user declined that test and asked for the attachment anyway.
|
|
43
|
+
3. **Decide the approval policy before attaching a consequential tool.** The default is no approval, which is right for reads and searches; for a tool that sends, posts, spends or deletes, choose `requireConfirmation` or explicitly tell the user it will run unattended, and mention the choice in the report to the user. The policy is a runtime setting for the agent's users, not a permission gate on your own work, so honor a policy the user already specified.
|
|
44
|
+
4. **Never promise a pinned workflow tool.** Live tools follow the latest release and nothing else is supported; when asked to freeze one, explain that, ask whether following the latest release is acceptable, and finish the independent work meanwhile.
|
|
45
|
+
5. **One conversation per verification task, on an explicit rail.** Reuse its ID for follow-ups and approvals; never resend the request or open a replacement after an approval pause, and never approve merely to continue.
|
|
46
|
+
6. **Resolve the task's pending requests, in its conversation and within the user's scope, before publishing**, because a publish expires the unexecuted requests in the affected live conversations.
|
|
47
|
+
7. **Draft-only means stop at Test evidence.** Readiness authorizes nothing; a draft never proves the live agent.
|
|
48
|
+
8. **Publish in dependency order**: attached workflows the user authorized, then agent preflight, then the agent, then one fresh live conversation. A preflight blocker on an unfinished workflow tool is cleared by detaching that tool; never delete its flow or publish the workflow to make preflight pass, because both release or destroy work the user did not ask to ship.
|
|
49
|
+
9. **Failure instructions are specific.** Say what failed and what was attempted, retry at most once, distinguish reads from rejected validation from uncertain mutations, and name the integration when a connection breaks.
|
|
50
|
+
10. **Keep internals out of the runtime user's view**: no workflow, flow, node, rail, prop or version names in instructions or replies.
|
|
51
|
+
|
|
52
|
+
## Recipes
|
|
53
|
+
|
|
54
|
+
### Create the draft
|
|
55
|
+
|
|
56
|
+
- `agent_list` — `ownership`, `search`
|
|
57
|
+
- `agent_create` — `disabled`, `instructions`, `name`
|
|
58
|
+
- `agent_get` — `agentId`
|
|
59
|
+
|
|
60
|
+
`agent_create` takes the complete Markdown in `instructions`; there is no file to read.
|
|
61
|
+
A draft is private and by default enabled on creation, so the user can open it and start testing at once; nothing is live until a publish. Write instructions from the template in [references/instructions-and-versioning.md](references/instructions-and-versioning.md) and delete every sentence that does not change behavior.
|
|
62
|
+
|
|
63
|
+
### Attach tools and knowledge
|
|
64
|
+
|
|
65
|
+
- `run_flow` — `flowId`, `confirmLive`, `inputs`, `target`, `waitSeconds`, `workflowId`
|
|
66
|
+
- `agent_tool_workflow_add` — `agentId`, `description`, `flow`, `requireConfirmation`, `workflowId`
|
|
67
|
+
- `agent_tool_workflow_add` — `agentId`, `description`, `flow`, `requireConfirmation`, `workflowId`
|
|
68
|
+
- `agent_knowledge_file_add` — `agentId`, `content`, `name`, `type` / `agent_workspace_file_add` — `agentId`, `content`, `name`, `space`, `type`
|
|
69
|
+
- `agent_tool_list` — `agentId`
|
|
70
|
+
- `agent_file_list` — `agentId`, `cursor`, `environment`, `folderPrefix`, `limit`, `live`, `search`, `space`
|
|
71
|
+
|
|
72
|
+
`agent_tool_workflow_add` and `agent_tool_action_add` take `requireConfirmation`, optional and `false` by default. Files travel inline: `agent_knowledge_file_add` (`name`, `type`, `content`) for knowledge, `agent_workspace_file_add` with `space` for shared runtime files (live immediately); each call creates another file, so read the result before a second call. `agent_file_list` filters runtime files by `environment`.
|
|
73
|
+
Flow inputs become the tool's parameters and its outputs the result.
|
|
74
|
+
|
|
75
|
+
### Verify in Test
|
|
76
|
+
|
|
77
|
+
- `agent_test` — `agentId`, `message`, `model`, `waitSeconds`, `title`, `rail`
|
|
78
|
+
- `agent_conversation_create` — `agentId`, `model`, `title`, `rail`
|
|
79
|
+
- `agent_conversation_send` — `conversationId`, `message`, `waitSeconds`
|
|
80
|
+
- `agent_conversation_history` — `conversationId`, `last`
|
|
81
|
+
- `agent_conversation_approve` — `conversationId`, `requestId`
|
|
82
|
+
- `agent_conversation_deny` — `conversationId`, `message`, `requestId`
|
|
83
|
+
|
|
84
|
+
`agent_test` takes `rail: "draft"` or `"live"` and `waitSeconds`; `agent_conversation_send` takes `waitSeconds`; when a wait returns unfinished, poll `agent_conversation_status` and read `agent_conversation_history` for that conversation instead of sending again; approve and deny take the `requestId` of the pending request.
|
|
85
|
+
`agent_test` is a one-shot that always creates a conversation; use `agent_conversation_create` and `agent_conversation_send` when follow-up or an approval may be needed.
|
|
86
|
+
Test positive and negative tool selection, exact arguments, results, errors and knowledge. A workflow tool's side effect is proved by its terminal workflow execution; a direct action by its persisted action events, result and external effect, never by an execution ID it does not have. After removing a tool, test one request that must no longer use it and one that still uses a retained tool. Say before the first test that it consumes runtime usage and may reach providers.
|
|
87
|
+
|
|
88
|
+
### Publish and share
|
|
89
|
+
|
|
90
|
+
- `workflow_status` — `workflowId`
|
|
91
|
+
- `workflow_publish` — `acknowledgeDualDispatch`, `acknowledgeValidationErrors`, `name`, `workflowId`
|
|
92
|
+
- `agent_get` — `agentId`
|
|
93
|
+
- `agent_publish_preflight` — `agentId`
|
|
94
|
+
- `agent_publish` — `agentId`, `name`
|
|
95
|
+
- `agent_version_list` — `agentId`
|
|
96
|
+
- `agent_test` — `agentId`, `message`, `model`, `waitSeconds`, `title`, `rail`
|
|
97
|
+
- `agent_visibility_set` — `agentId`, `value`
|
|
98
|
+
|
|
99
|
+
`workflow_status` and `workflow_publish` take the explicit `workflowId` of each attached workflow; `agent_get` reports `hasUnpublishedChanges`; `agent_version_list` is the release history; `agent_visibility_set` takes `value`.
|
|
100
|
+
Publish an attached workflow only when its verified development state must go live and the user authorized it. `hasUnpublishedChanges` on the agent read says whether a publish would change anything; do not publish an unchanged draft. Preflight is the arbiter of structural readiness: report blockers and stop; with none and an authorized release, publish unless an error you watched happen remains. Then verify with a fresh live conversation. Agents stay private unless the user asks for organization access: members use the published version through the owner's connected accounts and the organization's usage pool, and private visibility revokes access immediately. After a publish, offer the product's Slack setup.
|
|
101
|
+
|
|
102
|
+
### Runtime state
|
|
103
|
+
|
|
104
|
+
- `agent_update` — `agentId`, `instructions`, `name` / `agent_set_enabled` — `agentId`, `enabled`
|
|
105
|
+
- `agent_update` — `agentId`, `instructions`, `name` / `agent_set_enabled` — `agentId`, `enabled`
|
|
106
|
+
- `agent_delete` — `agentId`
|
|
107
|
+
|
|
108
|
+
`agent_set_enabled` takes `enabled: false` to pause or `enabled: true` to resume; `agent_update` edits the draft; `agent_delete` has no confirmation parameter.
|
|
109
|
+
Disable pauses live use without a publish; the owner's Test conversations keep working. Delete is a soft delete that revokes access and asks active sessions to stop; there is no restore.
|
|
110
|
+
|
|
111
|
+
### Hand over
|
|
112
|
+
|
|
113
|
+
Call `agent_present` for the finished agent and relay the returned card with its name, purpose, tools and link.
|
|
114
|
+
|
|
115
|
+
## Verify
|
|
116
|
+
|
|
117
|
+
The tool list shows the intended tools with exact identities, descriptions and confirmation policies; the knowledge list shows the intended files; the agent read-back matches the instructions; the captured conversation exists on the requested rail without duplicates, its history shows the intended arguments, terminal results and no unresolved request, and stateful behavior is proved by a same-rail record query; a release shows a clean preflight, the new version in the version list, and one fresh live conversation.
|
|
118
|
+
|
|
119
|
+
## Report
|
|
120
|
+
|
|
121
|
+
The agent ID and version, its tools with their confirmation policies, what the Test and live conversations proved, connections and access, and what is still unverified or unpublished.
|