rainskills 0.1.18 → 0.1.19
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/README.md +1 -1
- package/SKILL.md +1 -1
- package/marketplace/rainskills/.claude-plugin/plugin.json +1 -1
- package/marketplace/rainskills/.codex-plugin/plugin.json +1 -1
- package/marketplace/rainskills/skills/rainskills/SKILL.md +2 -2
- package/package.json +7 -4
- package/rainbond-app-assistant/SKILL.md +91 -15
- package/rainbond-app-version-assistant/SKILL.md +75 -10
- package/rainbond-delivery-verifier/SKILL.md +45 -8
- package/rainbond-env-sync/SKILL.md +46 -8
- package/rainbond-fullstack-bootstrap/SKILL.md +50 -9
- package/rainbond-fullstack-troubleshooter/SKILL.md +45 -8
- package/rainbond-opensource-app-deploy/SKILL.md +45 -13
- package/rainbond-platform-installer/SKILL.md +1 -1
- package/rainbond-platform-installer/scripts/installed-version.js +1 -1
- package/rainbond-platform-installer/scripts/runtime-context-resolver.js +6 -1
- package/rainbond-platform-installer/scripts/runtime-intents.js +132 -7
- package/rainbond-platform-query/SKILL.md +29 -6
- package/rainbond-project-init/SKILL.md +45 -8
- package/rainbond-template-installer/SKILL.md +43 -8
package/README.md
CHANGED
|
@@ -228,7 +228,7 @@ node ~/.rainbond/lib/rainskills/bin/rainskills.js platform install --onboarding-
|
|
|
228
228
|
|
|
229
229
|
Rainskills 会在用户下一次发起业务动作时,由本地运行时立即返回环境查询结果,并另行启动后台任务静默检查更新。更新只跟随 npm `latest` 指向的正式版。当前版本是 RC 或其他预发布版本时不会查询、不会自动升级;npm 上的新 RC 版本也不参与正式版自动升级。
|
|
230
230
|
|
|
231
|
-
发现更高的正式版后,后台任务只委托到经过校验的精确版本,例如 `rainskills@0.1.
|
|
231
|
+
发现更高的正式版后,后台任务只委托到经过校验的精确版本,例如 `rainskills@0.1.19`,不会执行浮动的 `@latest` 业务代码。新版本原子刷新已经安装的 Rainskills Skills;当前业务继续使用启动时已经加载的版本,最迟从下一条新任务开始使用新版。npm 超时、版本检查失败、安装位置不安全或文件迁移失败时会保留旧版本,且不会阻塞或改变当前操作。
|
|
232
232
|
|
|
233
233
|
升级只更新 Rainskills 自身,不触发 Rainbond 安装、运行环境选择、登录授权或重新对接,也不会新增 Agent MCP 配置。更新内容仅包括 Skills 和本地 CLI。原始业务操作会继续执行;只有该业务操作本身需要运行环境时,才按既有门禁检查当前连接。可用连接直接复用,401 只重新授权一次,403 立即停止,从未连接过运行环境时才进入环境选择。
|
|
234
234
|
|
package/SKILL.md
CHANGED
|
@@ -44,7 +44,7 @@ Rainskills 安装完成,下一条消息即可直接使用。
|
|
|
44
44
|
|
|
45
45
|
涉及浏览器或设备授权的 `runtime connect`,以及恢复/安装场景中的 `rainskills <target> --self-hosted`,必须在附加交互终端(TTY)中运行;在 Codex 中设置 `tty: true` 并保持进程附着直到授权完成。禁止通过非交互命令要求用户粘贴 JWT;非交互模式只可复用已存在的受保护凭据。
|
|
46
46
|
|
|
47
|
-
环境是全局列表,不是项目绑定。本地状态命令必须定位已安装的同级 `rainbond-platform-installer/scripts/local-runtime.js`,解析为绝对路径后通过 `node` 以 argv 数组执行;不得为了查询本地环境访问 npm。只有连接或安装环境时才使用与当前技能包一致的固定 launcher `node <home>/.rainbond/lib/rainskills/bin/rainskills.js`(运行包版本 `rainskills@0.1.
|
|
47
|
+
环境是全局列表,不是项目绑定。本地状态命令必须定位已安装的同级 `rainbond-platform-installer/scripts/local-runtime.js`,解析为绝对路径后通过 `node` 以 argv 数组执行;不得为了查询本地环境访问 npm。只有连接或安装环境时才使用与当前技能包一致的固定 launcher `node <home>/.rainbond/lib/rainskills/bin/rainskills.js`(运行包版本 `rainskills@0.1.19`)。
|
|
48
48
|
|
|
49
49
|
- 列表:用本地 launcher 执行 `environment list --json`,只展示名称、类型、状态、是否默认和最近验证时间。
|
|
50
50
|
- 重命名:用本地 launcher 执行 `environment rename --environment-id <uuid> --name <name>`。
|
|
@@ -14,7 +14,7 @@ This is the single marketplace entry for the complete Rainskills product. The in
|
|
|
14
14
|
3. Keep stdin, stdout, and stderr attached. When `RAINSKILLS_USER_INPUT_REQUIRED` appears, pause for that installer choice. If the installer emits `rainskills.next-action.v1`, execute only its fixed `argv` through the same launcher; never evaluate output as a shell command. If the adjacent `bin/rainskills.js` exists, use it for fixed next actions; otherwise use the same versioned npm package fallback described below.
|
|
15
15
|
4. Stay attached until every independent Skill is installed. Do not select, connect, or configure an application runtime during installation. In the user-facing response, output only the fixed completion message below.
|
|
16
16
|
|
|
17
|
-
If the adjacent installer is missing, check the local Node.js version before choosing the fallback. With `npx` and Node.js 18 or newer, use `npx --yes rainskills@0.1.
|
|
17
|
+
If the adjacent installer is missing, check the local Node.js version before choosing the fallback. With `npx` and Node.js 18 or newer, use `npx --yes rainskills@0.1.19 <target>`. With no Node.js or a version below 18, use `bash <(curl -fsSL https://get.rainbond.com/rainskills/install.sh) <target>` instead. Omit `<target>` only when the host cannot be determined reliably. Keep either command attached to the interactive terminal. For an update or repair, refresh this marketplace Skill first, then run the installer again; it compares and updates every independent internal Skill.
|
|
18
18
|
|
|
19
19
|
Skills-only 安装不需要 Node.js;CDN fallback 只负责安装 Skill 文件,不代表运行环境连接、应用部署或平台安装已经可执行。用户首次提出需要运行环境的动作时,对应业务 Skill 才检查 Node.js;固定 Rainskills launcher 需要 Node.js 18 或更高版本。缺失或版本过低时保留原始 intent 并停止,等待用户或 agent 明确同意安装或升级 Node.js,安装完成消息不得提前提示 Node.js。
|
|
20
20
|
|
|
@@ -44,7 +44,7 @@ Rainskills 安装完成,下一条消息即可直接使用。
|
|
|
44
44
|
|
|
45
45
|
涉及浏览器或设备授权的 `runtime connect`,以及恢复/安装场景中的 `rainskills <target> --self-hosted`,必须在附加交互终端(TTY)中运行;在 Codex 中设置 `tty: true` 并保持进程附着直到授权完成。禁止通过非交互命令要求用户粘贴 JWT;非交互模式只可复用已存在的受保护凭据。
|
|
46
46
|
|
|
47
|
-
环境是全局列表,不是项目绑定。本地状态命令必须定位已安装的同级 `rainbond-platform-installer/scripts/local-runtime.js`,解析为绝对路径后通过 `node` 以 argv 数组执行;不得为了查询本地环境访问 npm。只有连接或安装环境时才使用与当前技能包一致的固定 launcher `node <home>/.rainbond/lib/rainskills/bin/rainskills.js`(运行包版本 `rainskills@0.1.
|
|
47
|
+
环境是全局列表,不是项目绑定。本地状态命令必须定位已安装的同级 `rainbond-platform-installer/scripts/local-runtime.js`,解析为绝对路径后通过 `node` 以 argv 数组执行;不得为了查询本地环境访问 npm。只有连接或安装环境时才使用与当前技能包一致的固定 launcher `node <home>/.rainbond/lib/rainskills/bin/rainskills.js`(运行包版本 `rainskills@0.1.19`)。
|
|
48
48
|
|
|
49
49
|
- 列表:用本地 launcher 执行 `environment list --json`,只展示名称、类型、状态、是否默认和最近验证时间。
|
|
50
50
|
- 重命名:用本地 launcher 执行 `environment rename --environment-id <uuid> --name <name>`。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rainskills",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"description": "Interactive Rainbond skill installer for Codex, Claude Code, and Pi Agent",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/goodrain/rainskills#readme",
|
|
@@ -56,10 +56,13 @@
|
|
|
56
56
|
"check:marketplace": "node scripts/build-marketplace-package.mjs --check",
|
|
57
57
|
"sync:runtime-version": "node scripts/sync-runtime-version.mjs",
|
|
58
58
|
"check:runtime-version": "node scripts/sync-runtime-version.mjs --check",
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
59
|
+
"sync:runtime-contracts": "node scripts/sync-runtime-contracts.mjs",
|
|
60
|
+
"check:runtime-contracts": "node scripts/sync-runtime-contracts.mjs --check",
|
|
61
|
+
"version": "npm run sync:runtime-version && npm run sync:runtime-contracts && npm run build:marketplace",
|
|
62
|
+
"prepack": "node scripts/sync-runtime-version.mjs --check && node scripts/sync-runtime-contracts.mjs --check && node scripts/build-marketplace-package.mjs --check --quiet",
|
|
63
|
+
"test": "npm run test:runtime-version && npm run test:runtime-contracts && npm run test:auto-update && npm run test:launcher && npm run test:api-bridge && npm run test:console-contract && npm run test:skill-profile && npm run test:marketplace && npm run test:runtime-routing && npm run test:telemetry && npm run test:platform && npm run test:windows && npm run test:package-upload && npm run test:package && npm run test:installer && npm run test:signal && npm run test:npx-pty",
|
|
62
64
|
"test:runtime-version": "node --test tests/runtime-version-sync.test.js",
|
|
65
|
+
"test:runtime-contracts": "node scripts/sync-runtime-contracts.mjs --check",
|
|
63
66
|
"test:auto-update": "node --test tests/auto-update.test.js",
|
|
64
67
|
"test:launcher": "node --test tests/console-origin.test.js tests/environment-credentials.test.js tests/environment-registry.test.js tests/local-runtime-cli.test.js tests/local-cli-installer.test.js tests/npx-launcher.test.js tests/runtime-credentials.test.js tests/runtime-intents.test.js tests/runtime-operations.test.js tests/runtime-state.test.js tests/cli-only-transport.test.js tests/skill-manifest-builder.test.js",
|
|
65
68
|
"test:api-bridge": "node --test tests/api-bridge.test.js",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rainbond-app-assistant
|
|
3
|
-
description: "Use whenever a user asks to deploy, run, deliver, publish, inspect, repair, or troubleshoot the current project, regardless of whether a runtime or MCP connection is configured and whether Rainbond is named. This includes a named open-source suite such as Harbor when no Compose, Helm, or image descriptor has been supplied. Trigger phrases include: 帮我把当前项目部署到 Rainbond 上 / 帮我把这个项目跑起来 / 帮我看看当前项目卡在哪 / 如果还没初始化就先初始化,然后自动继续到应该停止的位置 / 帮我处理一下这个应用 / deploy this project / run this app / publish this app / troubleshoot this project."
|
|
3
|
+
description: "Use whenever a user asks to deploy, run, deliver, publish, inspect, repair, or troubleshoot the current project, regardless of whether a runtime or MCP connection is configured and whether Rainbond is named. This includes a named open-source suite such as Harbor when no Compose, Helm, or image descriptor has been supplied. Trigger phrases include: 帮我把当前项目部署到 Rainbond 上 / 帮我把这个项目跑起来 / 帮我看看当前项目卡在哪 / 如果还没初始化就先初始化,然后自动继续到应该停止的位置 / 帮我处理一下这个应用 / deploy this project / run this app / publish this app / troubleshoot this project. Not for third-party public image or open-source stack deployments with a descriptor; use rainbond-opensource-app-deploy."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Rainbond App Assistant
|
|
@@ -104,13 +104,13 @@ description: "Use whenever a user asks to deploy, run, deliver, publish, inspect
|
|
|
104
104
|
|
|
105
105
|
第一步检查 Node.js 是否存在且主版本不低于 18。Node.js 缺失或低于 18 时,只说明“Rainskills 执行组件需要 Node.js 18 或更高版本”并停止:不选择运行环境,不调用 MCP,不猜测替代命令。只有用户或 agent 明确同意后才安装或升级 Node.js,再从同一原始 intent 继续。
|
|
106
106
|
|
|
107
|
-
固定 launcher 是 `["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]`;运行包版本标记为 `rainskills@0.1.
|
|
107
|
+
固定 launcher 是 `["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]`;运行包版本标记为 `rainskills@0.1.19`,且必须与本技能包 `package.json` 一致。把 launcher 与参数拼成 argv 数组直接执行,禁止使用 `rainskills@latest`,禁止拼接或执行 shell 字符串。
|
|
108
108
|
|
|
109
109
|
本地 launcher 必须从当前 Skill 所在目录的同级目录定位 `rainbond-platform-installer/scripts/local-runtime.js`,解析为绝对路径后使用 `["node", "<绝对路径>"]` 执行。`environment list`、`operation begin`、`operation complete` 和 `runtime message` 只能使用本地 launcher;本地 launcher 只读取已安装文件和本机受保护状态,不得访问 npm 或其它网络。只有用户选定连接或安装运行环境后,才使用上面的固定本地 launcher。
|
|
110
110
|
|
|
111
111
|
所有 Rainbond 查询和变更必须通过本地 `~/.rainbond/bin/rainskills-tools.js` 执行,并绑定本次 operation ID。禁止 Agent 直接调用 Rainbond MCP,也不得启动本地 Rainskills MCP 服务;只允许执行 CLI 返回的结构化结果与确认续接 argv。
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
业务操作开始后,必须使用 runtime contract 的 `input_commands.context-resolve` 完整 argv 和配套 stdin。返回 `resolved` 时只使用该 operation 已保存的企业、工作空间和集群上下文;返回 `needs-selection` 时,把 CLI 返回的“工作空间 + 集群”组合选项一次性列给用户,不得逐项询问,也不得让用户提供 enterprise_id。用户选择后必须使用 `input_commands.context-select` 的完整 argv 和配套 stdin;选择成功后继续原操作,同一 operation 不再重复查询上下文。
|
|
114
114
|
|
|
115
115
|
只有 CLI 返回并通过校验的 `rainskills.next-action.v1` argv 才能执行续接。普通失败一律禁止自动重试:不得再次执行原命令,不得执行 `--help`、`sleep`、`rg`、`grep`,不得搜索 Rainskills 源码;同一 `operation complete` 最多执行一次。
|
|
116
116
|
|
|
@@ -118,26 +118,79 @@ description: "Use whenever a user asks to deploy, run, deliver, publish, inspect
|
|
|
118
118
|
```json
|
|
119
119
|
{
|
|
120
120
|
"schema": "rainskills.skill-runtime-contract.v1",
|
|
121
|
-
"package_version": "rainskills@0.1.
|
|
122
|
-
"intent_schema": {"required": ["type"]},
|
|
121
|
+
"package_version": "rainskills@0.1.19",
|
|
123
122
|
"launcher": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"],
|
|
124
123
|
"local_launcher": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js"],
|
|
125
124
|
"local_argv": {
|
|
126
125
|
"environment-list": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "environment", "list", "--json"],
|
|
127
|
-
"operation-begin": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--intent-json", "<intent-json>"],
|
|
126
|
+
"operation-begin-default": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--intent-json", "<intent-json>"],
|
|
127
|
+
"operation-begin-selected": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--environment-id", "<environment-id>", "--intent-json", "<intent-json>"],
|
|
128
128
|
"operation-complete": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "complete", "--operation-id", "<uuid>"],
|
|
129
129
|
"runtime-message": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "runtime", "message", "--id", "<message-id>"]
|
|
130
130
|
},
|
|
131
131
|
"intents": {
|
|
132
|
-
"deploy": {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
132
|
+
"deploy": {
|
|
133
|
+
"type": "deploy",
|
|
134
|
+
"required": ["type"],
|
|
135
|
+
"optional": ["project_root", "source_kind", "source_url", "image_ref", "service_id"],
|
|
136
|
+
"enums": {
|
|
137
|
+
"source_kind": ["local", "git", "image", "package"]
|
|
138
|
+
},
|
|
139
|
+
"example": {
|
|
140
|
+
"type": "deploy"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"create": {
|
|
144
|
+
"type": "create",
|
|
145
|
+
"required": ["type"],
|
|
146
|
+
"optional": ["project_root", "source_kind", "source_url", "image_ref", "service_id"],
|
|
147
|
+
"enums": {
|
|
148
|
+
"source_kind": ["local", "git", "image", "package"]
|
|
149
|
+
},
|
|
150
|
+
"example": {
|
|
151
|
+
"type": "create"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"query": {
|
|
155
|
+
"type": "query",
|
|
156
|
+
"required": ["type", "operation"],
|
|
157
|
+
"optional": ["team_id", "app_id", "service_id"],
|
|
158
|
+
"enums": {
|
|
159
|
+
"operation": ["summary", "components", "events", "logs", "access"]
|
|
160
|
+
},
|
|
161
|
+
"example": {
|
|
162
|
+
"type": "query",
|
|
163
|
+
"operation": "summary",
|
|
164
|
+
"app_id": "app"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"troubleshoot": {
|
|
168
|
+
"type": "troubleshoot",
|
|
169
|
+
"required": ["type", "operation"],
|
|
170
|
+
"optional": ["team_id", "app_id", "service_id"],
|
|
171
|
+
"enums": {
|
|
172
|
+
"operation": ["auto", "build", "runtime", "access"]
|
|
173
|
+
},
|
|
174
|
+
"example": {
|
|
175
|
+
"type": "troubleshoot",
|
|
176
|
+
"operation": "build",
|
|
177
|
+
"app_id": "app"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"modify": {
|
|
181
|
+
"type": "modify",
|
|
182
|
+
"required": ["type", "team_id", "app_id", "operation"],
|
|
183
|
+
"optional": ["service_id"],
|
|
184
|
+
"enums": {
|
|
185
|
+
"operation": ["component-config", "build-source", "ports", "env", "storage", "dependency"]
|
|
186
|
+
},
|
|
187
|
+
"example": {
|
|
188
|
+
"type": "modify",
|
|
189
|
+
"team_id": "team",
|
|
190
|
+
"app_id": "app",
|
|
191
|
+
"operation": "env"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
141
194
|
},
|
|
142
195
|
"routes": {
|
|
143
196
|
"new": ["saas", "private-existing", "install-private"],
|
|
@@ -147,6 +200,29 @@ description: "Use whenever a user asks to deploy, run, deliver, publish, inspect
|
|
|
147
200
|
"saas": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--saas", "--intent-json", "<intent-json>"],
|
|
148
201
|
"private-existing": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--rainbond-url", "<rainbond-url>", "--intent-json", "<intent-json>"],
|
|
149
202
|
"install-private": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--install-private", "--location", "<private-location>", "--intent-json", "<intent-json>"]
|
|
203
|
+
},
|
|
204
|
+
"input_commands": {
|
|
205
|
+
"context-resolve": {
|
|
206
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "context", "resolve", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-app-assistant"],
|
|
207
|
+
"stdin": {
|
|
208
|
+
"required": ["enterprise", "workspace"]
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
"context-select": {
|
|
212
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "context", "select", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-app-assistant"],
|
|
213
|
+
"stdin": {
|
|
214
|
+
"selection_id": "<selection-id>",
|
|
215
|
+
"option_id": "<option-id>"
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
"read": {
|
|
219
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "read", "<tool>", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-app-assistant"],
|
|
220
|
+
"stdin_schema_source": "tool-catalog"
|
|
221
|
+
},
|
|
222
|
+
"call": {
|
|
223
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "call", "<tool>", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-app-assistant"],
|
|
224
|
+
"stdin_schema_source": "tool-catalog"
|
|
225
|
+
}
|
|
150
226
|
}
|
|
151
227
|
}
|
|
152
228
|
```
|
|
@@ -18,13 +18,13 @@ description: "Use when a user explicitly asks for an existing Rainbond app versi
|
|
|
18
18
|
|
|
19
19
|
第一步检查 Node.js 是否存在且主版本不低于 18。Node.js 缺失或低于 18 时,只说明“Rainskills 执行组件需要 Node.js 18 或更高版本”并停止:不选择运行环境,不调用 MCP,不猜测替代命令。只有用户或 agent 明确同意后才安装或升级 Node.js,再从同一原始 intent 继续。
|
|
20
20
|
|
|
21
|
-
固定 launcher 是 `["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]`;运行包版本标记为 `rainskills@0.1.
|
|
21
|
+
固定 launcher 是 `["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]`;运行包版本标记为 `rainskills@0.1.19`,且必须与本技能包 `package.json` 一致。把 launcher 与参数拼成 argv 数组直接执行,禁止 `rainskills@latest` 或执行 shell 字符串。
|
|
22
22
|
|
|
23
23
|
本地 launcher 必须从当前 Skill 所在目录的同级目录定位 `rainbond-platform-installer/scripts/local-runtime.js`,解析为绝对路径后使用 `["node", "<绝对路径>"]` 执行。`environment list`、`operation begin`、`operation complete` 和 `runtime message` 只能使用本地 launcher;本地 launcher 只读取已安装文件和本机受保护状态,不得访问 npm 或其它网络。只有用户选定连接运行环境后,才使用上面的固定本地 launcher。
|
|
24
24
|
|
|
25
25
|
所有 Rainbond 查询和变更必须通过本地 `~/.rainbond/bin/rainskills-tools.js` 执行,并绑定本次 operation ID。禁止 Agent 直接调用 Rainbond MCP,也不得启动本地 Rainskills MCP 服务;只允许执行 CLI 返回的结构化结果与确认续接 argv。
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
业务操作开始后,必须使用 runtime contract 的 `input_commands.context-resolve` 完整 argv 和配套 stdin。返回 `resolved` 时只使用该 operation 已保存的企业、工作空间和集群上下文;返回 `needs-selection` 时,把 CLI 返回的“工作空间 + 集群”组合选项一次性列给用户,不得逐项询问,也不得让用户提供 enterprise_id。用户选择后必须使用 `input_commands.context-select` 的完整 argv 和配套 stdin;选择成功后继续原操作,同一 operation 不再重复查询上下文。
|
|
28
28
|
|
|
29
29
|
只有 CLI 返回并通过校验的 `rainskills.next-action.v1` argv 才能执行续接。普通失败一律禁止自动重试:不得再次执行原命令,不得执行 `--help`、`sleep`、`rg`、`grep`,不得搜索 Rainskills 源码;同一 `operation complete` 最多执行一次。
|
|
30
30
|
|
|
@@ -32,25 +32,90 @@ description: "Use when a user explicitly asks for an existing Rainbond app versi
|
|
|
32
32
|
```json
|
|
33
33
|
{
|
|
34
34
|
"schema": "rainskills.skill-runtime-contract.v1",
|
|
35
|
-
"package_version": "rainskills@0.1.
|
|
36
|
-
"
|
|
37
|
-
"launcher": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"],
|
|
35
|
+
"package_version": "rainskills@0.1.19",
|
|
36
|
+
"launcher": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"],
|
|
38
37
|
"local_launcher": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js"],
|
|
39
38
|
"local_argv": {
|
|
40
39
|
"environment-list": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "environment", "list", "--json"],
|
|
41
|
-
"operation-begin": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--intent-json", "<intent-json>"],
|
|
40
|
+
"operation-begin-default": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--intent-json", "<intent-json>"],
|
|
41
|
+
"operation-begin-selected": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--environment-id", "<environment-id>", "--intent-json", "<intent-json>"],
|
|
42
42
|
"operation-complete": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "complete", "--operation-id", "<uuid>"],
|
|
43
43
|
"runtime-message": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "runtime", "message", "--id", "<message-id>"]
|
|
44
44
|
},
|
|
45
45
|
"intents": {
|
|
46
|
-
"snapshot": {
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
"snapshot": {
|
|
47
|
+
"type": "snapshot",
|
|
48
|
+
"required": ["type", "team_id", "app_id", "operation"],
|
|
49
|
+
"optional": ["snapshot_id"],
|
|
50
|
+
"enums": {
|
|
51
|
+
"operation": ["create", "inspect"]
|
|
52
|
+
},
|
|
53
|
+
"example": {
|
|
54
|
+
"type": "snapshot",
|
|
55
|
+
"team_id": "team",
|
|
56
|
+
"app_id": "app",
|
|
57
|
+
"operation": "create"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"publish": {
|
|
61
|
+
"type": "publish",
|
|
62
|
+
"required": ["type", "team_id", "app_id", "destination"],
|
|
63
|
+
"optional": ["snapshot_id", "market_id", "version"],
|
|
64
|
+
"enums": {
|
|
65
|
+
"destination": ["local-library", "cloud-market"]
|
|
66
|
+
},
|
|
67
|
+
"example": {
|
|
68
|
+
"type": "publish",
|
|
69
|
+
"team_id": "team",
|
|
70
|
+
"app_id": "app",
|
|
71
|
+
"destination": "local-library"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"rollback": {
|
|
75
|
+
"type": "rollback",
|
|
76
|
+
"required": ["type", "team_id", "app_id", "snapshot_id", "operation"],
|
|
77
|
+
"optional": [],
|
|
78
|
+
"enums": {
|
|
79
|
+
"operation": ["preview", "apply"]
|
|
80
|
+
},
|
|
81
|
+
"example": {
|
|
82
|
+
"type": "rollback",
|
|
83
|
+
"team_id": "team",
|
|
84
|
+
"app_id": "app",
|
|
85
|
+
"snapshot_id": "snapshot",
|
|
86
|
+
"operation": "preview"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"routes": {
|
|
91
|
+
"existing": ["saas", "private-existing"]
|
|
49
92
|
},
|
|
50
|
-
"routes": {"existing": ["saas", "private-existing"]},
|
|
51
93
|
"connect_argv": {
|
|
52
94
|
"saas": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--saas", "--intent-json", "<intent-json>"],
|
|
53
95
|
"private-existing": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--rainbond-url", "<rainbond-url>", "--intent-json", "<intent-json>"]
|
|
96
|
+
},
|
|
97
|
+
"input_commands": {
|
|
98
|
+
"context-resolve": {
|
|
99
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "context", "resolve", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-app-version-assistant"],
|
|
100
|
+
"stdin": {
|
|
101
|
+
"required": ["enterprise", "workspace"]
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"context-select": {
|
|
105
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "context", "select", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-app-version-assistant"],
|
|
106
|
+
"stdin": {
|
|
107
|
+
"selection_id": "<selection-id>",
|
|
108
|
+
"option_id": "<option-id>"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"read": {
|
|
112
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "read", "<tool>", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-app-version-assistant"],
|
|
113
|
+
"stdin_schema_source": "tool-catalog"
|
|
114
|
+
},
|
|
115
|
+
"call": {
|
|
116
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "call", "<tool>", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-app-version-assistant"],
|
|
117
|
+
"stdin_schema_source": "tool-catalog"
|
|
118
|
+
}
|
|
54
119
|
}
|
|
55
120
|
}
|
|
56
121
|
```
|
|
@@ -50,13 +50,13 @@ description: "Use only when the user explicitly asks for final delivery or acces
|
|
|
50
50
|
|
|
51
51
|
第一步检查 Node.js 是否存在且主版本不低于 18。Node.js 缺失或低于 18 时,只说明“Rainskills 执行组件需要 Node.js 18 或更高版本”并停止:不选择运行环境,不调用 MCP,不猜测替代命令。只有用户或 agent 明确同意后才安装或升级 Node.js,再从同一原始 intent 继续。
|
|
52
52
|
|
|
53
|
-
固定 launcher 是 `["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]`;运行包版本标记为 `rainskills@0.1.
|
|
53
|
+
固定 launcher 是 `["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]`;运行包版本标记为 `rainskills@0.1.19`,且必须与本技能包 `package.json` 一致。把 launcher 与参数拼成 argv 数组直接执行,禁止 `rainskills@latest` 或执行 shell 字符串。
|
|
54
54
|
|
|
55
55
|
本地 launcher 必须从当前 Skill 所在目录的同级目录定位 `rainbond-platform-installer/scripts/local-runtime.js`,解析为绝对路径后使用 `["node", "<绝对路径>"]` 执行。`environment list`、`operation begin`、`operation complete` 和 `runtime message` 只能使用本地 launcher;本地 launcher 只读取已安装文件和本机受保护状态,不得访问 npm 或其它网络。只有用户选定连接运行环境后,才使用上面的固定本地 launcher。
|
|
56
56
|
|
|
57
57
|
所有 Rainbond 查询和变更必须通过本地 `~/.rainbond/bin/rainskills-tools.js` 执行,并绑定本次 operation ID。禁止 Agent 直接调用 Rainbond MCP,也不得启动本地 Rainskills MCP 服务;只允许执行 CLI 返回的结构化结果与确认续接 argv。
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
业务操作开始后,必须使用 runtime contract 的 `input_commands.context-resolve` 完整 argv 和配套 stdin。返回 `resolved` 时只使用该 operation 已保存的企业、工作空间和集群上下文;返回 `needs-selection` 时,把 CLI 返回的“工作空间 + 集群”组合选项一次性列给用户,不得逐项询问,也不得让用户提供 enterprise_id。用户选择后必须使用 `input_commands.context-select` 的完整 argv 和配套 stdin;选择成功后继续原操作,同一 operation 不再重复查询上下文。
|
|
60
60
|
|
|
61
61
|
只有 CLI 返回并通过校验的 `rainskills.next-action.v1` argv 才能执行续接。普通失败一律禁止自动重试:不得再次执行原命令,不得执行 `--help`、`sleep`、`rg`、`grep`,不得搜索 Rainskills 源码;同一 `operation complete` 最多执行一次。
|
|
62
62
|
|
|
@@ -64,23 +64,60 @@ description: "Use only when the user explicitly asks for final delivery or acces
|
|
|
64
64
|
```json
|
|
65
65
|
{
|
|
66
66
|
"schema": "rainskills.skill-runtime-contract.v1",
|
|
67
|
-
"package_version": "rainskills@0.1.
|
|
68
|
-
"
|
|
69
|
-
"launcher": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"],
|
|
67
|
+
"package_version": "rainskills@0.1.19",
|
|
68
|
+
"launcher": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"],
|
|
70
69
|
"local_launcher": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js"],
|
|
71
70
|
"local_argv": {
|
|
72
71
|
"environment-list": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "environment", "list", "--json"],
|
|
73
|
-
"operation-begin": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--intent-json", "<intent-json>"],
|
|
72
|
+
"operation-begin-default": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--intent-json", "<intent-json>"],
|
|
73
|
+
"operation-begin-selected": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--environment-id", "<environment-id>", "--intent-json", "<intent-json>"],
|
|
74
74
|
"operation-complete": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "complete", "--operation-id", "<uuid>"],
|
|
75
75
|
"runtime-message": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "runtime", "message", "--id", "<message-id>"]
|
|
76
76
|
},
|
|
77
77
|
"intents": {
|
|
78
|
-
"delivery-verify": {
|
|
78
|
+
"delivery-verify": {
|
|
79
|
+
"type": "delivery-verify",
|
|
80
|
+
"required": ["type", "operation"],
|
|
81
|
+
"optional": ["team_id", "app_id", "service_id"],
|
|
82
|
+
"enums": {
|
|
83
|
+
"operation": ["full", "runtime", "access"]
|
|
84
|
+
},
|
|
85
|
+
"example": {
|
|
86
|
+
"type": "delivery-verify",
|
|
87
|
+
"operation": "full",
|
|
88
|
+
"app_id": "app"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"routes": {
|
|
93
|
+
"existing": ["saas", "private-existing"]
|
|
79
94
|
},
|
|
80
|
-
"routes": {"existing": ["saas", "private-existing"]},
|
|
81
95
|
"connect_argv": {
|
|
82
96
|
"saas": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--saas", "--intent-json", "<intent-json>"],
|
|
83
97
|
"private-existing": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--rainbond-url", "<rainbond-url>", "--intent-json", "<intent-json>"]
|
|
98
|
+
},
|
|
99
|
+
"input_commands": {
|
|
100
|
+
"context-resolve": {
|
|
101
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "context", "resolve", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-delivery-verifier"],
|
|
102
|
+
"stdin": {
|
|
103
|
+
"required": ["enterprise", "workspace"]
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"context-select": {
|
|
107
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "context", "select", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-delivery-verifier"],
|
|
108
|
+
"stdin": {
|
|
109
|
+
"selection_id": "<selection-id>",
|
|
110
|
+
"option_id": "<option-id>"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"read": {
|
|
114
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "read", "<tool>", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-delivery-verifier"],
|
|
115
|
+
"stdin_schema_source": "tool-catalog"
|
|
116
|
+
},
|
|
117
|
+
"call": {
|
|
118
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "call", "<tool>", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-delivery-verifier"],
|
|
119
|
+
"stdin_schema_source": "tool-catalog"
|
|
120
|
+
}
|
|
84
121
|
}
|
|
85
122
|
}
|
|
86
123
|
```
|
|
@@ -18,13 +18,13 @@ description: "Use when a user explicitly asks to sync non-sensitive preview or p
|
|
|
18
18
|
|
|
19
19
|
第一步检查 Node.js 是否存在且主版本不低于 18。Node.js 缺失或低于 18 时,只说明“Rainskills 执行组件需要 Node.js 18 或更高版本”并停止:不选择运行环境,不调用 MCP,不猜测替代命令。只有用户或 agent 明确同意后才安装或升级 Node.js,再从同一原始 intent 继续。
|
|
20
20
|
|
|
21
|
-
固定 launcher 是 `["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]`;运行包版本标记为 `rainskills@0.1.
|
|
21
|
+
固定 launcher 是 `["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]`;运行包版本标记为 `rainskills@0.1.19`,且必须与本技能包 `package.json` 一致。把 launcher 与参数拼成 argv 数组直接执行,禁止 `rainskills@latest` 或执行 shell 字符串。
|
|
22
22
|
|
|
23
23
|
本地 launcher 必须从当前 Skill 所在目录的同级目录定位 `rainbond-platform-installer/scripts/local-runtime.js`,解析为绝对路径后使用 `["node", "<绝对路径>"]` 执行。`environment list`、`operation begin`、`operation complete` 和 `runtime message` 只能使用本地 launcher;本地 launcher 只读取已安装文件和本机受保护状态,不得访问 npm 或其它网络。只有用户选定连接运行环境后,才使用上面的固定本地 launcher。
|
|
24
24
|
|
|
25
25
|
所有 Rainbond 查询和变更必须通过本地 `~/.rainbond/bin/rainskills-tools.js` 执行,并绑定本次 operation ID。禁止 Agent 直接调用 Rainbond MCP,也不得启动本地 Rainskills MCP 服务;只允许执行 CLI 返回的结构化结果与确认续接 argv。
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
业务操作开始后,必须使用 runtime contract 的 `input_commands.context-resolve` 完整 argv 和配套 stdin。返回 `resolved` 时只使用该 operation 已保存的企业、工作空间和集群上下文;返回 `needs-selection` 时,把 CLI 返回的“工作空间 + 集群”组合选项一次性列给用户,不得逐项询问,也不得让用户提供 enterprise_id。用户选择后必须使用 `input_commands.context-select` 的完整 argv 和配套 stdin;选择成功后继续原操作,同一 operation 不再重复查询上下文。
|
|
28
28
|
|
|
29
29
|
只有 CLI 返回并通过校验的 `rainskills.next-action.v1` argv 才能执行续接。普通失败一律禁止自动重试:不得再次执行原命令,不得执行 `--help`、`sleep`、`rg`、`grep`,不得搜索 Rainskills 源码;同一 `operation complete` 最多执行一次。
|
|
30
30
|
|
|
@@ -32,23 +32,61 @@ description: "Use when a user explicitly asks to sync non-sensitive preview or p
|
|
|
32
32
|
```json
|
|
33
33
|
{
|
|
34
34
|
"schema": "rainskills.skill-runtime-contract.v1",
|
|
35
|
-
"package_version": "rainskills@0.1.
|
|
36
|
-
"
|
|
37
|
-
"launcher": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"],
|
|
35
|
+
"package_version": "rainskills@0.1.19",
|
|
36
|
+
"launcher": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"],
|
|
38
37
|
"local_launcher": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js"],
|
|
39
38
|
"local_argv": {
|
|
40
39
|
"environment-list": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "environment", "list", "--json"],
|
|
41
|
-
"operation-begin": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--intent-json", "<intent-json>"],
|
|
40
|
+
"operation-begin-default": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--intent-json", "<intent-json>"],
|
|
41
|
+
"operation-begin-selected": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "begin", "--operation-id", "<uuid>", "--environment-id", "<environment-id>", "--intent-json", "<intent-json>"],
|
|
42
42
|
"operation-complete": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "operation", "complete", "--operation-id", "<uuid>"],
|
|
43
43
|
"runtime-message": ["node", "<installed-skills-root>/rainbond-platform-installer/scripts/local-runtime.js", "runtime", "message", "--id", "<message-id>"]
|
|
44
44
|
},
|
|
45
45
|
"intents": {
|
|
46
|
-
"env-sync": {
|
|
46
|
+
"env-sync": {
|
|
47
|
+
"type": "env-sync",
|
|
48
|
+
"required": ["type", "project_root", "environment"],
|
|
49
|
+
"optional": ["team_id", "app_id", "service_id"],
|
|
50
|
+
"enums": {
|
|
51
|
+
"environment": ["preview", "production"]
|
|
52
|
+
},
|
|
53
|
+
"example": {
|
|
54
|
+
"type": "env-sync",
|
|
55
|
+
"project_root": "/workspace/app",
|
|
56
|
+
"environment": "production",
|
|
57
|
+
"app_id": "app"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"routes": {
|
|
62
|
+
"existing": ["saas", "private-existing"]
|
|
47
63
|
},
|
|
48
|
-
"routes": {"existing": ["saas", "private-existing"]},
|
|
49
64
|
"connect_argv": {
|
|
50
65
|
"saas": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--saas", "--intent-json", "<intent-json>"],
|
|
51
66
|
"private-existing": ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js", "runtime", "connect", "<target>", "--rainbond-url", "<rainbond-url>", "--intent-json", "<intent-json>"]
|
|
67
|
+
},
|
|
68
|
+
"input_commands": {
|
|
69
|
+
"context-resolve": {
|
|
70
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "context", "resolve", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-env-sync"],
|
|
71
|
+
"stdin": {
|
|
72
|
+
"required": ["enterprise", "workspace"]
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"context-select": {
|
|
76
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "context", "select", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-env-sync"],
|
|
77
|
+
"stdin": {
|
|
78
|
+
"selection_id": "<selection-id>",
|
|
79
|
+
"option_id": "<option-id>"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"read": {
|
|
83
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "read", "<tool>", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-env-sync"],
|
|
84
|
+
"stdin_schema_source": "tool-catalog"
|
|
85
|
+
},
|
|
86
|
+
"call": {
|
|
87
|
+
"argv": ["node", "<home>/.rainbond/bin/rainskills-tools.js", "call", "<tool>", "--input", "-", "--operation-id", "<uuid>", "--skill-id", "rainbond-env-sync"],
|
|
88
|
+
"stdin_schema_source": "tool-catalog"
|
|
89
|
+
}
|
|
52
90
|
}
|
|
53
91
|
}
|
|
54
92
|
```
|