rainskills 0.1.41 → 0.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/README.md +109 -229
  2. package/SKILL.md +3 -3
  3. package/bin/delivery-probe.js +306 -0
  4. package/bin/handoff-context.js +151 -0
  5. package/bin/protected-poll.js +116 -0
  6. package/bin/rainskills-tools.js +132 -8
  7. package/bin/read-snapshot.js +82 -0
  8. package/contracts/ai-engine-skills-prerequisites-v1.json +175 -0
  9. package/contracts/handoff-context.schema.yaml +62 -0
  10. package/contracts/runtime/cli-base.md +43 -0
  11. package/contracts/runtime/embedded-base.md +20 -0
  12. package/contracts/runtime/overlay.schema.json +24 -0
  13. package/contracts/runtime/routing-modes.yaml +30 -0
  14. package/contracts/runtime/skills/rainbond-ai-assistant.yaml +13 -0
  15. package/contracts/runtime/skills/rainbond-app-assistant.yaml +12 -0
  16. package/contracts/runtime/skills/rainbond-app-version-assistant.yaml +11 -0
  17. package/contracts/runtime/skills/rainbond-delivery-verifier.yaml +12 -0
  18. package/contracts/runtime/skills/rainbond-env-sync.yaml +12 -0
  19. package/contracts/runtime/skills/rainbond-fullstack-bootstrap.yaml +12 -0
  20. package/contracts/runtime/skills/rainbond-fullstack-troubleshooter.yaml +12 -0
  21. package/contracts/runtime/skills/rainbond-opensource-app-deploy.yaml +12 -0
  22. package/contracts/runtime/skills/rainbond-platform-plugin-manager.yaml +12 -0
  23. package/contracts/runtime/skills/rainbond-platform-query.yaml +12 -0
  24. package/contracts/runtime/skills/rainbond-project-init.yaml +12 -0
  25. package/contracts/runtime/skills/rainbond-template-installer.yaml +12 -0
  26. package/contracts/shared/user-result.md +14 -0
  27. package/dsh/cordis.patch.yml +6 -0
  28. package/dsh/index.mjs +73 -0
  29. package/install.sh +99 -36
  30. package/marketplace/rainskills/.claude-plugin/plugin.json +1 -1
  31. package/marketplace/rainskills/.codex-plugin/plugin.json +1 -1
  32. package/marketplace/rainskills/skills/rainskills/SKILL.md +4 -4
  33. package/package.json +48 -9
  34. package/rainbond-ai-assistant/SKILL.md +45 -0
  35. package/rainbond-ai-assistant/agents/openai.yaml +5 -0
  36. package/rainbond-ai-assistant/evals/scenarios.yaml +196 -0
  37. package/rainbond-ai-assistant/references/advanced-vllm-arguments.md +10 -0
  38. package/rainbond-ai-assistant/references/context-and-permissions.md +9 -0
  39. package/rainbond-ai-assistant/references/cpu-deployment.md +22 -0
  40. package/rainbond-ai-assistant/references/deletion-policy.md +8 -0
  41. package/rainbond-ai-assistant/references/deployment-diagnostics.md +18 -0
  42. package/rainbond-ai-assistant/references/error-recovery.md +17 -0
  43. package/rainbond-ai-assistant/references/generated/runtime-gate.md +189 -0
  44. package/rainbond-ai-assistant/references/generated/runtime-routing.md +15 -0
  45. package/rainbond-ai-assistant/references/generated/user-result.md +16 -0
  46. package/rainbond-ai-assistant/references/gpu-provider-and-capacity.md +44 -0
  47. package/rainbond-ai-assistant/references/instance-deployment.md +32 -0
  48. package/rainbond-ai-assistant/references/instance-lifecycle.md +10 -0
  49. package/rainbond-ai-assistant/references/model-discovery.md +16 -0
  50. package/rainbond-ai-assistant/references/model-download.md +31 -0
  51. package/rainbond-ai-assistant/references/model-selection.md +24 -0
  52. package/rainbond-ai-assistant/references/output-contract.md +21 -0
  53. package/rainbond-ai-assistant/references/parameter-decision-guide.md +122 -0
  54. package/rainbond-ai-assistant/references/throughput-tuning.md +12 -0
  55. package/rainbond-ai-assistant/schemas/ai-engine-result.schema.yaml +85 -0
  56. package/rainbond-ai-assistant/scripts/validate_ai_engine_output.py +42 -0
  57. package/rainbond-ai-assistant/scripts/validate_progressive_loading.py +28 -0
  58. package/rainbond-app-assistant/SKILL.md +9 -5
  59. package/rainbond-app-assistant/evals/04-delivered-stop-without-promotion.expected.yaml +0 -5
  60. package/rainbond-app-assistant/evals/04-delivered-stop-without-promotion.response.md +4 -25
  61. package/rainbond-app-assistant/evals/11-delivered-with-proxy-and-local-binding.expected.yaml +0 -9
  62. package/rainbond-app-assistant/evals/11-delivered-with-proxy-and-local-binding.response.md +4 -28
  63. package/rainbond-app-assistant/evals/16-source-delivered-manual-validation.expected.yaml +0 -6
  64. package/rainbond-app-assistant/evals/16-source-delivered-manual-validation.response.md +4 -23
  65. package/rainbond-app-assistant/evals/17-local-package-existing-app-needs-init.expected.yaml +26 -0
  66. package/rainbond-app-assistant/evals/17-local-package-existing-app-needs-init.response.md +46 -0
  67. package/rainbond-app-assistant/references/generated/runtime-gate.md +227 -0
  68. package/rainbond-app-assistant/references/generated/runtime-routing.md +29 -0
  69. package/rainbond-app-assistant/references/generated/user-result.md +16 -0
  70. package/rainbond-app-assistant/references/local-project-analysis.md +46 -0
  71. package/rainbond-app-assistant/references/output-contract.md +23 -47
  72. package/rainbond-app-assistant/references/product-object-model.md +9 -29
  73. package/rainbond-app-assistant/references/workflow-rules.md +33 -21
  74. package/rainbond-app-assistant/schemas/generated/handoff-context.schema.yaml +64 -0
  75. package/rainbond-app-assistant/scripts/validate_app_assistant_output.py +1 -0
  76. package/rainbond-app-assistant/scripts/validate_cross_skill_routing.py +50 -58
  77. package/rainbond-app-assistant/scripts/validate_progressive_loading.py +39 -9
  78. package/rainbond-app-version-assistant/SKILL.md +43 -560
  79. package/rainbond-app-version-assistant/references/generated/runtime-gate.md +174 -0
  80. package/rainbond-app-version-assistant/references/generated/runtime-routing.md +15 -0
  81. package/rainbond-app-version-assistant/references/generated/user-result.md +16 -0
  82. package/rainbond-app-version-assistant/references/output-contract.md +156 -0
  83. package/rainbond-app-version-assistant/references/version-operations.md +50 -0
  84. package/rainbond-app-version-assistant/references/version-workflow.md +168 -0
  85. package/rainbond-delivery-verifier/SKILL.md +45 -522
  86. package/rainbond-delivery-verifier/evals/01-delivered-verified.expected.yaml +24 -0
  87. package/rainbond-delivery-verifier/evals/01-delivered-verified.response.md +21 -1
  88. package/rainbond-delivery-verifier/evals/02-delivered-manual-validation.response.md +1 -0
  89. package/rainbond-delivery-verifier/evals/03-partially-delivered-building.response.md +1 -0
  90. package/rainbond-delivery-verifier/evals/04-blocked-capacity.response.md +1 -0
  91. package/rainbond-delivery-verifier/evals/05-blocked-no-usable-url.response.md +1 -0
  92. package/rainbond-delivery-verifier/evals/06-blocked-runtime-unhealthy.response.md +19 -0
  93. package/rainbond-delivery-verifier/references/delivery-workflow.md +89 -0
  94. package/rainbond-delivery-verifier/references/generated/runtime-gate.md +242 -0
  95. package/rainbond-delivery-verifier/references/generated/runtime-routing.md +15 -0
  96. package/rainbond-delivery-verifier/references/generated/user-result.md +16 -0
  97. package/rainbond-delivery-verifier/references/output-contract.md +154 -0
  98. package/rainbond-delivery-verifier/references/verification-rules.md +103 -0
  99. package/rainbond-delivery-verifier/schemas/delivery-probe-input.schema.yaml +20 -0
  100. package/rainbond-delivery-verifier/schemas/delivery-probe-policy.schema.yaml +40 -0
  101. package/rainbond-delivery-verifier/schemas/delivery-probe-result.schema.yaml +82 -0
  102. package/rainbond-delivery-verifier/schemas/delivery-verification-result.schema.yaml +65 -0
  103. package/rainbond-delivery-verifier/schemas/generated/handoff-context.schema.yaml +64 -0
  104. package/rainbond-delivery-verifier/scripts/validate_delivery_verifier_output.py +27 -0
  105. package/rainbond-env-sync/SKILL.md +42 -617
  106. package/rainbond-env-sync/evals/db-name-source-cases.yaml +25 -0
  107. package/rainbond-env-sync/references/generated/runtime-gate.md +175 -0
  108. package/rainbond-env-sync/references/generated/runtime-routing.md +15 -0
  109. package/rainbond-env-sync/references/generated/user-result.md +16 -0
  110. package/rainbond-env-sync/references/output-contract.md +212 -0
  111. package/rainbond-env-sync/references/sync-policy.md +148 -0
  112. package/rainbond-env-sync/references/sync-workflow.md +94 -0
  113. package/rainbond-fullstack-bootstrap/SKILL.md +55 -433
  114. package/rainbond-fullstack-bootstrap/evals/07-provider-connection-contract.expected.yaml +9 -0
  115. package/rainbond-fullstack-bootstrap/evals/07-provider-connection-contract.response.md +1 -1
  116. package/rainbond-fullstack-bootstrap/evals/18-existing-package-update.expected.yaml +28 -0
  117. package/rainbond-fullstack-bootstrap/evals/18-existing-package-update.prompt.md +1 -0
  118. package/rainbond-fullstack-bootstrap/evals/18-existing-package-update.response.md +39 -0
  119. package/rainbond-fullstack-bootstrap/modules/30-creation-rules.md +4 -232
  120. package/rainbond-fullstack-bootstrap/modules/35-runtime-topology-rules.md +194 -0
  121. package/rainbond-fullstack-bootstrap/modules/40-source-rules.md +94 -0
  122. package/rainbond-fullstack-bootstrap/modules/42-source-topology.md +70 -0
  123. package/rainbond-fullstack-bootstrap/modules/44-source-build-rules.md +55 -0
  124. package/rainbond-fullstack-bootstrap/modules/45-package-rules.md +83 -0
  125. package/rainbond-fullstack-bootstrap/modules/50-workflow.md +135 -0
  126. package/rainbond-fullstack-bootstrap/modules/55-convergence-rules.md +93 -0
  127. package/rainbond-fullstack-bootstrap/modules/60-verification-and-handoffs.md +1 -1
  128. package/rainbond-fullstack-bootstrap/modules/70-output-contract.md +2 -0
  129. package/rainbond-fullstack-bootstrap/references/generated/runtime-gate.md +262 -0
  130. package/rainbond-fullstack-bootstrap/references/generated/runtime-routing.md +24 -0
  131. package/rainbond-fullstack-bootstrap/references/generated/user-result.md +16 -0
  132. package/rainbond-fullstack-bootstrap/references/manifest-v1-reference.md +1 -1
  133. package/rainbond-fullstack-bootstrap/references/sql-init-recipe.md +1 -1
  134. package/rainbond-fullstack-bootstrap/schemas/generated/handoff-context.schema.yaml +64 -0
  135. package/rainbond-fullstack-bootstrap/scripts/validate_bootstrap_output.py +10 -0
  136. package/rainbond-fullstack-troubleshooter/SKILL.md +47 -1030
  137. package/rainbond-fullstack-troubleshooter/evals/10-config-file-configmap-missing.expected.yaml +6 -0
  138. package/rainbond-fullstack-troubleshooter/evals/10-config-file-configmap-missing.response.md +8 -7
  139. package/rainbond-fullstack-troubleshooter/references/diagnosis-context.md +211 -0
  140. package/rainbond-fullstack-troubleshooter/references/diagnosis-workflow.md +118 -0
  141. package/rainbond-fullstack-troubleshooter/references/generated/runtime-gate.md +227 -0
  142. package/rainbond-fullstack-troubleshooter/references/generated/runtime-routing.md +15 -0
  143. package/rainbond-fullstack-troubleshooter/references/generated/troubleshoot-contract.md +127 -0
  144. package/rainbond-fullstack-troubleshooter/references/generated/user-result.md +16 -0
  145. package/rainbond-fullstack-troubleshooter/references/output-contract.md +3 -67
  146. package/rainbond-fullstack-troubleshooter/references/root-cause-rules.md +3 -2
  147. package/rainbond-fullstack-troubleshooter/schemas/generated/handoff-context.schema.yaml +64 -0
  148. package/rainbond-fullstack-troubleshooter/scripts/generate_troubleshoot_contract.mjs +100 -0
  149. package/rainbond-fullstack-troubleshooter/scripts/validate_troubleshoot_output.py +0 -17
  150. package/rainbond-opensource-app-deploy/SKILL.md +8 -4
  151. package/rainbond-opensource-app-deploy/references/deployment-workflow.md +2 -2
  152. package/rainbond-opensource-app-deploy/references/generated/runtime-gate.md +188 -0
  153. package/rainbond-opensource-app-deploy/references/generated/runtime-routing.md +24 -0
  154. package/rainbond-opensource-app-deploy/references/generated/user-result.md +16 -0
  155. package/rainbond-platform-installer/SKILL.md +2 -2
  156. package/rainbond-platform-installer/scripts/installed-version.js +1 -1
  157. package/rainbond-platform-installer/scripts/user-message.js +7 -9
  158. package/rainbond-platform-plugin-manager/SKILL.md +38 -0
  159. package/rainbond-platform-plugin-manager/agents/openai.yaml +5 -0
  160. package/rainbond-platform-plugin-manager/evals/scenarios.yaml +28 -0
  161. package/rainbond-platform-plugin-manager/references/generated/runtime-gate.md +188 -0
  162. package/rainbond-platform-plugin-manager/references/generated/runtime-routing.md +15 -0
  163. package/rainbond-platform-plugin-manager/references/generated/user-result.md +16 -0
  164. package/rainbond-platform-plugin-manager/references/output-contract.md +14 -0
  165. package/rainbond-platform-plugin-manager/references/plugin-discovery.md +12 -0
  166. package/rainbond-platform-plugin-manager/references/plugin-lifecycle.md +25 -0
  167. package/rainbond-platform-plugin-manager/references/recovery.md +13 -0
  168. package/rainbond-platform-plugin-manager/scripts/validate_progressive_loading.py +31 -0
  169. package/rainbond-platform-query/SKILL.md +49 -178
  170. package/rainbond-platform-query/references/generated/runtime-gate.md +109 -0
  171. package/rainbond-platform-query/references/generated/runtime-routing.md +15 -0
  172. package/rainbond-project-init/SKILL.md +49 -1132
  173. package/rainbond-project-init/references/generated/runtime-gate.md +201 -0
  174. package/rainbond-project-init/references/generated/runtime-routing.md +24 -0
  175. package/rainbond-project-init/references/generated/user-result.md +16 -0
  176. package/rainbond-project-init/references/manifest-inference.md +274 -0
  177. package/rainbond-project-init/references/manifest-rules.md +2 -271
  178. package/rainbond-project-init/references/operational-reference.md +1 -1
  179. package/rainbond-project-init/references/output-contract.md +6 -23
  180. package/rainbond-project-init/references/workflow-and-verification.md +8 -2
  181. package/rainbond-project-init/schemas/generated/handoff-context.schema.yaml +64 -0
  182. package/rainbond-project-init/schemas/project-init-result.schema.yaml +122 -0
  183. package/rainbond-template-installer/SKILL.md +43 -544
  184. package/rainbond-template-installer/references/generated/runtime-gate.md +201 -0
  185. package/rainbond-template-installer/references/generated/runtime-routing.md +24 -0
  186. package/rainbond-template-installer/references/generated/user-result.md +16 -0
  187. package/rainbond-template-installer/references/output-contract.md +168 -0
  188. package/rainbond-template-installer/references/template-resolution.md +55 -0
  189. package/rainbond-template-installer/references/template-workflow.md +129 -0
  190. package/rainbond-template-installer/schemas/generated/handoff-context.schema.yaml +64 -0
  191. package/scripts/install-local-cli.mjs +4 -0
  192. package/scripts/sync-ai-engine-contract.mjs +27 -0
  193. package/scripts/validate_customer_output.py +21 -14
  194. package/rainbond-app-assistant/references/runtime-gate.md +0 -178
  195. package/rainbond-fullstack-bootstrap/modules/40-source-and-package-rules.md +0 -273
  196. package/rainbond-fullstack-bootstrap/modules/50-workflow-and-convergence.md +0 -220
  197. package/rainbond-opensource-app-deploy/references/runtime-gate.md +0 -158
package/README.md CHANGED
@@ -1,285 +1,165 @@
1
- # Rainskills
1
+ # RainSkills
2
2
 
3
- Rainskills 是一组面向应用识别、部署、排障和交付的 AI Skills,支持 Codex、Claude Code、Pi Agent、DeepSeek Harness、WorkBuddy 和 Hermes Agent。用户在市场中只会看到一个 `Rainskills` 产品,安装后 11 个 `rainbond-*` Skill 仍会独立触发。
3
+ > 让你的 AI Agent 把当前项目部署上线,并验证页面和 API。
4
4
 
5
- ## 安装
5
+ RainSkills 是一组开源 Agent Skills,让 Codex、Claude Code、Pi Agent、
6
+ DeepSeek Harness、WorkBuddy 和 Hermes Agent 能够继续完成应用部署、
7
+ 故障排查、交付验证、版本管理和回滚。
6
8
 
7
- 从 Skill 市场安装:
9
+ 它从 Agent 已经理解的当前项目出发,把前端、后端、数据库、缓存、
10
+ 端口和存储组织成 Rainbond 应用。应用可以运行在 Rainbond Cloud、
11
+ 你自己的服务器或 Kubernetes 中。
8
12
 
9
- ```bash
10
- npx skills add goodrain/rainskills
11
- ```
12
-
13
- Skill 市场当前要求 Node.js 22.20.0 或更高版本。直接运行 npx 安装器最低支持 Node.js 18:
14
-
15
- ```bash
16
- npx --yes rainskills
17
- ```
18
-
19
- 没有合适的 Node.js 时可使用 CDN 入口:
13
+ **AI 负责生成,RainSkills 负责交付,Rainbond 负责持续运行。**
20
14
 
21
- ```bash
22
- bash <(curl -fsSL https://get.rainbond.com/rainskills/install.sh)
23
- ```
15
+ [产品介绍](https://www.rainbond.com/rainskills) ·
16
+ [安装与使用](https://www.rainbond.com/docs/ai/rainskills) ·
17
+ [视频教程](https://www.rainbond.com/videos/rainskills-ai-deploy) ·
18
+ [Rainbond Cloud](https://run.rainbond.com)
24
19
 
25
- 仅安装 Skills 文件不需要 Node.js,CDN 入口在无 Node.js 时仍可完成这部分安装;这不代表应用部署、运行环境连接或私有平台安装已经可执行。用户首次提出需要运行环境的动作时,Rainskills 执行组件才要求 Node.js 18 或更高版本。
20
+ ## 为什么使用 RainSkills
26
21
 
27
- 也可以使用客户端 Plugin 市场。
22
+ AI Agent 已经理解了代码、依赖和项目结构。进入部署阶段后,如果改用临时脚本或直接 SSH,
23
+ 这些上下文通常需要重新整理,部署结果也很难沉淀为可以持续维护的应用。
28
24
 
29
- Codex:
25
+ | 对比维度 | Agent 直接 SSH / 临时脚本 | RainSkills + Rainbond |
26
+ | --- | --- | --- |
27
+ | 工作起点 | 重新整理服务器、端口、依赖和命令 | 直接复用当前项目上下文 |
28
+ | 应用结构 | 人工拼装进程、数据库、网络和存储 | 用应用拓扑管理组件与依赖 |
29
+ | 失败排查 | 手工寻找构建、容器和网关日志 | Agent 读取构建日志、运行日志、Pod 和平台事件 |
30
+ | 完成标准 | 命令成功或进程已经启动 | 页面和 API 完成实际访问验证 |
31
+ | 权限边界 | Agent 通常直接持有 SSH 或生产凭据 | 浏览器授权、受控工具调用和高风险操作确认 |
32
+ | 后续维护 | 继续维护脚本和服务器差异 | 在同一应用上升级、快照、发布和回滚 |
30
33
 
31
- ```bash
32
- codex plugin marketplace add goodrain/rainskills
33
- codex plugin add rainskills@goodrain
34
- ```
34
+ RainSkills 更适合多组件应用、自托管环境、私有化交付,以及需要持续排障和版本管理的项目。
35
35
 
36
- Claude Code:
36
+ ## RainSkills 如何工作
37
37
 
38
38
  ```text
39
- /plugin marketplace add goodrain/rainskills
40
- /plugin install rainskills@goodrain
41
- /reload-plugins
39
+ 当前项目或部署目标
40
+ → Codex、Claude Code 等 AI Agent
41
+ → RainSkills 选择对应的部署、排障或验证 Skill
42
+ → 首次需要时选择并连接一个 Rainbond 运行环境
43
+ → Rainbond 构建并运行应用
44
+ → RainSkills 验证页面、API 和最终访问地址
42
45
  ```
43
46
 
44
- DeepSeek Harness:
45
-
46
- ```bash
47
- npx --yes rainskills dsh
48
- ```
49
-
50
- 默认安装到 `${DSH_HOME:-~/.dsh}/skills`。DeepSeek Harness 使用原生 Skill catalog 和 `skill` loader 加载,不配置客户端 MCP。
51
-
52
- WorkBuddy:
47
+ RainSkills 安装与运行环境连接是两个阶段。安装完成后可以直接提出部署任务;
48
+ 第一次需要 Rainbond 时,Agent 再引导你选择 Cloud、已有私有环境、本机或服务器。
53
49
 
54
- ```bash
55
- npx --yes rainskills workbuddy
56
- ```
50
+ ![RainSkills 在 AI Agent 中完成应用部署并返回访问地址](https://grstatic.tos-cn-beijing.volces.com/wechat/rainskills/rainskills-deploy.png)
57
51
 
58
- 默认安装到 `${WORKBUDDY_CONFIG_DIR:-~/.workbuddy-ai}/skills`。如果安装发生在一个已经打开的 WorkBuddy 任务中,先刷新 Skill 列表或新建任务;部署时明确指定 Rainbond/Rainskills,或让项目保留 `rainbond.app.json`、`.rainbond/local.json` 标记,以避免被内置 Sites 路由抢占。
52
+ ## 快速开始
59
53
 
60
- Hermes Agent:
54
+ 使用 Skill 市场安装:
61
55
 
62
56
  ```bash
63
- npx --yes rainskills hermes
64
- ```
65
-
66
- 默认安装到 `${HERMES_HOME:-~/.hermes}/skills`,与其他宿主共用同一 CLI profile 和本地 Rainskills CLI,不配置客户端 MCP。如果安装发生在一个已经打开的 Hermes 会话中,执行 `/reset` 或新建会话后再使用新安装的 Skills。
67
-
68
- 安装流程支持 Codex、Claude Code、Pi Agent、DeepSeek Harness、WorkBuddy 和 Hermes Agent;所有 Agent 共用同一组 Skills、CLI profile 和本地 Rainskills CLI,不提供单独的客户端 MCP adapter。macOS、Linux 和 WSL 不支持 OpenClaw 安装。不要手工复制 Skill、拼接凭据或修改 Agent 配置。
69
-
70
- 测试或发布烟测可在安装命令末尾追加 `--no-telemetry`,仅关闭当前进程的匿名安装遥测;普通安装不传该参数时保持默认遥测行为。
71
-
72
- 非交互安装必须明确指定 `codex`、`claude`、`pi`、`dsh`、`workbuddy`、`hermes` 或 `all`;`all` 不再作为无 target 时的默认值。发布后验证统一执行 `npm run verify:published -- <version>`,该脚本会在临时 HOME 中显式安装全部目标并强制关闭遥测。
73
-
74
- ## 安装完成时用户会看到什么
75
-
76
- 安装完成后只完成 Skills 和受保护本地 CLI 的安装并展示能力列表,不选择运行环境、不登录 Rainbond,也不配置 Agent MCP:
77
-
78
- ```text
79
- Rainskills 安装完成,下一条消息即可直接使用。
80
-
81
- 下一步可以直接说:
82
-
83
- - 帮我部署当前项目
84
- - 帮我部署一个 Git 仓库
85
- - 帮我通过镜像或安装包部署应用
86
- - 帮我安装一个应用模板
87
- - 帮我分析当前项目应该如何部署
88
-
89
- 也可以直接告诉我你想部署什么应用。
90
- ```
91
-
92
- 用户第一次提出部署、查询、排障、验证、快照或模板安装等需要运行环境的动作时,Rainskills 才检查和连接运行环境。
93
-
94
- ## 按需连接应用运行环境
95
-
96
- 每个业务 Skill 都必须先通过相同门禁:
97
-
98
- 0. 第一步检查 Node.js 是否存在且主版本不低于 18。缺失或低于 18 时,只说明 Rainskills 执行组件需要 Node.js 18 或更高版本并停止;不连接运行环境、不调用 CLI、不猜测替代命令。
99
-
100
- 固定 launcher 来自当前 `package.json` 版本:
101
-
102
- ```json
103
- ["node", "<home>/.rainbond/lib/rainskills/bin/rainskills.js"]
57
+ npx skills add goodrain/rainskills
104
58
  ```
105
59
 
106
- 所有调用都把 launcher 与参数合并成 argv 数组后直接执行;不得使用 `rainskills@latest`,不得把参数拼成 shell 字符串。
107
-
108
- 1. 本会话首次使用时执行 launcher + `["runtime", "status", "--json"]`。只有返回 `connected` 且 `usable=true` 才进入业务流程。
109
- 2. 本机只保存一个 Rainbond 运行环境。没有环境时使用 `runtime connect` 连接 Cloud、已有私有 Rainbond,或安装一个私有 Rainbond;重新授权使用 `runtime reconnect <target>`。
110
- 3. 所有 Rainbond 查询和变更都直接通过 `~/.rainbond/bin/rainskills-tools.js`。不配置客户端 MCP,不创建业务 runtime operation,不传环境 ID、operation ID 或 intent JSON。
111
- 4. 写操作仍由 CLI 生成 confirmation ID;只有完全相同的输入追加 `--confirm` 后才执行一次。
112
- 5. 安装私有环境时,只消费完成 schema、action、onboarding id 和参数边界校验的 `rainskills.next-action.v1.argv`;onboarding id 只属于平台安装断点。
113
-
114
- `deploy`/`create` 允许先只保存动作类型。选择私有环境后,先完整完成本地单机、服务器单机、主机集群或已有 Kubernetes 的平台安装和验收;此阶段不得询问本地项目路径、Git 仓库 URL、镜像地址或安装包路径。恢复到 `project-analysis` 后才识别当前项目或询问缺失的应用来源。
115
-
116
- ### 新应用环境选择
117
-
118
- 新应用场景使用以下说明:
119
-
120
- > 可以,我会帮你完成应用识别、构建、部署和访问验证。
121
- >
122
- > 不过目前还没有可用的应用运行环境。
123
- >
124
- > 你刚安装的 Rainskills 是负责“部署”的 AI 助手,它会分析项目并执行部署流程;Rainbond 负责为应用提供稳定运行环境。
125
- >
126
- #### 选择运行环境
127
-
128
- 提示“请选择应用要运行的环境:”,并只显示:
129
-
130
- 1) 云端环境(免费体验)
131
- 2) 本机环境
132
- 3) 独立服务器
133
- 4) 已有 Rainbond
134
-
135
- 选择 1 时执行 `saas` route;选择 2 时执行 `install-private` route 并传入 `--location local`;选择 3 时执行 `install-private` route 并传入 `--location server`;选择 4 时询问已有 Rainbond 地址并执行 `private-existing` route。不得显示“私有环境”中间层,不得在进入平台安装器后重复询问部署位置,也不得在环境准备完成前询问应用来源。
136
-
137
- 选择“部署到独立服务器”后,只显示:
138
-
139
- 请选择服务器类型:
140
-
141
- 1、单台服务器(Linux)
142
- 2、三台及以上服务器(Linux)
143
- 3、已有 Kubernetes 集群
144
-
145
- ### 服务器 SSH 固定流程
146
-
147
- 部署到独立服务器或主机集群时,流程不再根据 Agent 是否提供可见终端而变化:
148
-
149
- 1. Rainskills 先使用 `BatchMode=yes` 检查 SSH 免密连接。
150
- 2. 已可连接时直接继续安装流程;不可连接时固定停止,不在 Agent 任务终端里等待密码。
151
- 3. 单台服务器时,用户在系统终端执行一条版本锁定的 `ssh prepare --ssh <user@host> --ssh-port <port>` 命令。
152
- 4. 主机集群时,Rainskills 先检查全部节点,一次列出所有待处理节点的名称、IP 和端口,再只给出一条版本锁定的 `ssh prepare-cluster --cluster-config <path>` 命令。该命令依次处理全部节点,已可免密连接的节点自动跳过;不得逐台显示命令或逐台等待用户回复。
153
- 5. 指纹和一次服务器密码均由系统 SSH 读取;两种命令都只准备公钥连接,不安装 Rainbond。全部节点处理完后,用户统一回复一次“已完成”。
154
- 6. Agent 使用同一版本、同一 `onboarding-id` 和原安装参数继续。不得重新询问环境、安装模式、节点或应用来源。
155
- 7. 后续传输、安装和验收全部使用免密 SSH;系统终端不会继续安装或授权。
156
- 8. Rainbond 验收通过后只进行一次浏览器授权;授权成功后由当前 Agent 会话继续应用任务。
157
-
158
- 主机密钥发生变化时直接阻断并要求人工核对,不自动替换 `known_hosts`。聊天中永远不接收密码、私钥或 Token。
159
-
160
- ## 单运行环境
161
-
162
- - 本机只保存一个 Rainbond Console origin 和对应凭据。
163
- - 更换环境时,新凭据通过 live probe 后才覆盖当前运行环境。
164
- - 连接和重新授权始终进入浏览器 Device Flow,不复用 Shell 中缓存的 JWT。
165
- - Agent 始终执行受保护的本地 Rainskills CLI,不配置或直接调用客户端 MCP。
166
- - 项目的 preview/production 配置仍属于应用配置投影,与本机连接的 Rainbond 运行环境不是同一概念。
167
-
168
- 业务 CLI 默认忽略 Shell 中遗留的 `RAINBOND_URL` / `RAINBOND_JWT`。CI 需要使用环境变量凭据时,显式设置:
60
+ 或者直接运行官方安装器:
169
61
 
170
62
  ```bash
171
- RAINSKILLS_CREDENTIAL_SOURCE=environment \
172
- RAINBOND_URL=https://rainbond.example.com \
173
- RAINBOND_JWT="$RAINBOND_JWT" \
174
- node ~/.rainbond/bin/rainskills-tools.js status --skill-id rainbond-platform-query
63
+ npx --yes rainskills
175
64
  ```
176
65
 
177
- 常用命令:
66
+ DeepSeek Harness 用户也可以把 RainSkills bootstrap 作为 profile bundle 安装:
178
67
 
179
68
  ```bash
180
- node ~/.rainbond/lib/rainskills/bin/rainskills.js runtime status --json
181
- node ~/.rainbond/lib/rainskills/bin/rainskills.js runtime reconnect codex
69
+ dsh plugin --profile web add rainskills
182
70
  ```
183
71
 
184
- `runtime status` 会通过当前唯一环境执行 live probe。业务 Tool 继续通过 `~/.rainbond/bin/rainskills-tools.js` 调用。
72
+ 安装后调用 `/rainskills`,或直接告诉 Agent“安装 RainSkills”。该 bundle 只注册
73
+ bootstrap Skill;完整的 `rainbond-*` Skills 仍由官方安装器统一安装和更新。
185
74
 
186
- ### 已有应用环境选择
75
+ `npx` 安装方式需要 Node.js 18 或更高版本。建议使用仍在维护的 Node.js 22 或 24。
187
76
 
188
- 查询、排障、修改、交付验证、快照、发布和回滚属于已有应用操作,只让用户选择 Rainbond Cloud 或承载目标应用的已有私有 Rainbond,绝不执行 `install-private`,也不安装一个空的新平台代替目标应用。每个 Skill 的第一句话应匹配当前动作,例如“验证应用交付状态和访问地址”,不要全部写成“部署当前项目”。
77
+ 安装完成后,在项目目录告诉 Agent:
189
78
 
190
- ### 认证与权限恢复
191
-
192
- Rainbond CLI 返回 401 时执行:
193
-
194
- ```json
195
- ["runtime", "reconnect", "<target>"]
79
+ ```text
80
+ 帮我部署当前项目,并验证页面和 API。
196
81
  ```
197
82
 
198
- 只读调用可在重新授权后重试一次。写调用不得自动重放,必须先查询平台真实状态。403 立即停止,不 reconnect。
199
-
200
- 凭据只由受保护的本地状态和客户端配置处理。不要在聊天、intent、日志或命令行参数中发送密码、JWT、Token 或私钥。
83
+ 如果还没有可用的 Rainbond,Agent 会在第一次需要运行环境时让你选择 Cloud、
84
+ 已有私有环境、本机或服务器,不会在安装 Skill 时替你决定目标环境。
201
85
 
202
- ## 私有 Rainbond 安装
86
+ ## 可以直接告诉 Agent 什么
203
87
 
204
- 环境选择按渐进流程展示:
88
+ - `帮我部署当前项目`
89
+ - `帮我部署这个 Git 仓库`
90
+ - `帮我通过镜像或安装包部署应用`
91
+ - `帮我安装一个应用模板`
92
+ - `帮我部署 Dify、n8n 或 Harbor`
93
+ - `帮我检查 backend 为什么构建失败`
94
+ - `确认当前应用是否已经交付成功,并给我访问地址`
95
+ - `给当前应用创建快照`
96
+ - `把当前应用回滚到上一个快照`
205
97
 
206
- 1. 用户选择“私有环境”后,直接选择部署到本机、独立服务器或已有 Rainbond。
207
- 2. 部署到已有 Rainbond 只询问环境地址,不执行平台安装。
208
- 3. 部署到本机直接进入单机版,不展示 ROI 或 Kubernetes;只有选择独立服务器后,再选择单台 Linux、三台及以上 Linux 或已有 Kubernetes。
98
+ ## 支持范围
209
99
 
210
- 主机集群支持 1、2 或 N 台 Linux 服务器,不要求固定三台;etcd 节点数必须是正奇数。首次进入该分支时,Rainskills 会生成一份受保护的 `cluster.yaml` 示例文件。用户一次性修改服务器地址、SSH 端口和节点角色后回复“已完成”,Rainskills 会一次列出全部可确定的配置问题;校验通过后只准备全部节点的 SSH 免密连接,再展示拓扑和安装变更供用户确认,不再执行额外的 CPU、内存、磁盘、端口、网络或已有安装检查。生成的文件中不得填写密码、私钥或 Token,SSH 密码仍只由系统 `ssh` 在终端中读取。确认后仅查询 bootstrap 节点架构以选择对应的 ROI 文件,实际安装条件由 ROI 判断。已有 Kubernetes 分支使用指定 kubeconfig 和 context 安装,要求 Kubernetes 1.24 或更高版本。
211
-
212
- Windows 本地安装是预览能力,也可以改选 Linux 服务器。它要求 Windows 10 build 19041+ 或 Windows 11 x64、已开启虚拟化并允许 UAC;安装器使用受管 WSL2 环境。macOS 本地路径使用 OrbStack。用户不需要理解这些底层实现。
213
-
214
- 常用固定参数:
215
-
216
- ```bash
217
- # 本地单机
218
- node ~/.rainbond/lib/rainskills/bin/rainskills.js platform install --onboarding-id <id> \
219
- --location local --mode single-node
220
-
221
- # Linux 服务器单机
222
- node ~/.rainbond/lib/rainskills/bin/rainskills.js platform install --onboarding-id <id> \
223
- --location server --mode single-node --ssh <user@host>
224
-
225
- # 服务器主机集群(自动生成受保护示例文件)
226
- node ~/.rainbond/lib/rainskills/bin/rainskills.js platform install --onboarding-id <id> \
227
- --location server --mode host-cluster
228
-
229
- # 已有高级 ROI cluster.yaml 才追加:--cluster-config <path>
230
-
231
- # 已有 Kubernetes
232
- node ~/.rainbond/lib/rainskills/bin/rainskills.js platform install --onboarding-id <id> \
233
- --location server --mode existing-kubernetes \
234
- --kubeconfig <path> --kube-context <name> --chart-version <version>
235
- ```
100
+ ### AI Agent
236
101
 
237
- 可以为已有 Kubernetes 追加 `--values <path>`。非交互流程只有在展示预检和系统变更、用户明确同意后才追加 `--yes`。
102
+ - Codex
103
+ - Claude Code
104
+ - Pi Agent
105
+ - DeepSeek Harness
106
+ - WorkBuddy
107
+ - Hermes Agent
238
108
 
239
- ### 安全与恢复边界
109
+ ### 项目来源
240
110
 
241
- - Console origin 会先规范化、探测并锁定。HTTPS 跨 origin 跳转必须重新确认;明文 HTTP 只允许用户明确确认的可信内网。
242
- - ROI 和 Helm 制品只从固定官方 HTTPS 来源获取,限制跳转和大小,并锁定版本与摘要;恢复时复用已验证字节。
243
- - kubeconfig、values、ROI 配置和断点使用受保护文件;所有 kubectl/Helm 调用都绑定固定 kubeconfig、context 和集群 identity。
244
- - 执行安装前必须完成只读预检和 dry-run(适用时),并单独确认真实下载/安装效果。
245
- - 取消会停止活动子进程但保留断点。失败或取消后只执行安装器输出的固定重试 argv;不要凭记忆改写命令。
246
- - 检测到目标、配置、集群 identity、版本或摘要漂移时停止,不静默换目标。
111
+ - 当前本地项目
112
+ - 普通 Git 仓库
113
+ - 本地软件包
114
+ - 私有容器镜像或单镜像组件
115
+ - Compose、Helm 或多镜像描述
116
+ - Dify、n8n、Harbor 等第三方开源应用
117
+ - Rainbond 应用模板
247
118
 
248
- 平台安装成功必须验证节点/平台组件、`rbd-app-ui` 和 Console 可访问,再恢复原始应用动作。详细规则见 `rainbond-platform-installer/references/installation-policy.md`。
119
+ Compose、Helm 和第三方应用中的特权容器、Operator、CRD、Job、主机网络或主机目录等语义,
120
+ 需要根据当前 Rainbond 能力单独判断,不承诺原样转换所有 Kubernetes 配置。
249
121
 
250
- ## 更新
122
+ ### 运行环境
251
123
 
252
- Rainskills 会在用户下一次发起业务动作时,由本地运行时立即返回环境查询结果,并另行启动后台任务静默检查更新。更新只跟随 npm `latest` 指向的正式版。当前版本是 RC 或其他预发布版本时不会查询、不会自动升级;npm 上的新 RC 版本也不参与正式版自动升级。
124
+ - Rainbond Cloud
125
+ - 已经运行的私有 Rainbond
126
+ - 本机 Rainbond
127
+ - 独立服务器上的 Rainbond
128
+ - 已有 Kubernetes 集群中的 Rainbond
253
129
 
254
- 发现更高的正式版后,后台任务只委托到经过校验的精确版本,例如 `rainskills@0.1.41`,不会执行浮动的 `@latest` 业务代码。新版本原子刷新已经安装的 Rainskills Skills;当前业务继续使用启动时已经加载的版本,最迟从下一条新任务开始使用新版。npm 超时、版本检查失败、安装位置不安全或文件迁移失败时会保留旧版本,且不会阻塞或改变当前操作。
130
+ ## 安全和权限边界
255
131
 
256
- 升级只更新 Rainskills 自身,不触发 Rainbond 安装、运行环境选择、登录授权或重新对接,也不会新增 Agent MCP 配置。更新内容仅包括 Skills 和本地 CLI。原始业务操作会继续执行;只有该业务操作本身需要运行环境时,才按既有门禁检查当前连接。可用连接直接复用,401 只重新授权一次,403 立即停止,从未连接过运行环境时才进入环境选择。
132
+ - 通过浏览器完成 Rainbond 授权,不要求在聊天中粘贴 JWT、密码或私钥。
133
+ - 创建、更新和删除资源前核对目标企业、团队、应用和组件。
134
+ - 删除资源、平台安装、数据变更和其他高风险操作需要明确确认。
135
+ - Rainbond 授权凭据保存在受保护的本地状态中,不写入项目文件。
136
+ - 部署完成后继续验证组件、页面和 API,不把命令成功当作交付完成。
257
137
 
258
- 正在执行的部署、私有平台安装和授权流程继续使用启动时锁定的旧版本,自动升级不会插入这些流程。操作完成后会再次静默调度更新检查;检查进程有固定超时且不向用户输出远程 npx 命令。
138
+ 用户明确选择在独立服务器安装 Rainbond 时,受控安装流程可能使用 SSH。
139
+ 应用部署和后续管理仍通过 Rainbond 应用模型完成,而不是依赖散落的服务器命令。
259
140
 
260
- 如需手工恢复安装,可执行 `npx --yes rainskills@latest --force`;正常使用不需要主动运行更新命令。
141
+ ## 适合哪些场景
261
142
 
262
- ## 包含的 Skill
143
+ - AI Agent 已经写完或修改了项目,需要继续部署。
144
+ - 项目包含前端、后端、数据库、缓存或异步任务。
145
+ - 应用需要运行在自己的服务器、私有云或 Kubernetes 中。
146
+ - 部署完成后仍需日志、升级、快照、发布和回滚。
147
+ - 团队需要复用私有化或客户现场的交付流程。
263
148
 
264
- - `rainbond-app-assistant`
265
- - `rainbond-app-version-assistant`
266
- - `rainbond-delivery-verifier`
267
- - `rainbond-env-sync`
268
- - `rainbond-fullstack-bootstrap`
269
- - `rainbond-fullstack-troubleshooter`
270
- - `rainbond-opensource-app-deploy`
271
- - `rainbond-platform-installer`
272
- - `rainbond-platform-query`
273
- - `rainbond-project-init`
274
- - `rainbond-template-installer`
149
+ ## 哪些场景可能不需要 RainSkills
275
150
 
276
- ## 部署类 skill 怎么选
151
+ - 只发布一个接受完全托管的纯静态页面。
152
+ - 团队已经有成熟的内部开发平台和 GitOps 流程。
153
+ - 只是一次性的本地实验,不需要持续运行、排障或回滚。
277
154
 
278
- - 已确认的 Rainbond 市场模板 → `rainbond-template-installer`(一键安装商店模板)
279
- - 只说“部署 Harbor / Dify / n8n”等第三方开源套件也可以 → `rainbond-opensource-app-deploy` 会自动联网获取官方仓库、文档和 Release 中的部署资料,固定版本并推导组件拓扑;用户已提供 Compose、Helm 或镜像集合时也走这里
280
- - 部署当前项目、普通 Git 仓库或私有镜像项目 → `rainbond-app-assistant`
155
+ ## 文档与支持
281
156
 
282
- Open-source Deploy 将 Compose、Helm 和安装器生成结果作为建模证据,默认创建独立 Rainbond 镜像组件,不依赖 Helm 黑盒导入或用户手工上传 Compose。当前/本地项目线索优先于同名软件,避免把用户自己的 Harbor fork 误判为上游套件。
157
+ - [RainSkills 产品介绍](https://www.rainbond.com/rainskills)
158
+ - [安装与使用文档](https://www.rainbond.com/docs/ai/rainskills)
159
+ - [安装与连接视频教程](https://www.rainbond.com/videos/rainskills-ai-deploy)
160
+ - [市场上架 Runbook](https://github.com/goodrain/rainskills/blob/main/docs/marketplace-publishing.md)
161
+ - [Rainbond 安装文档](https://www.rainbond.com/docs/installation)
162
+ - [提交问题](https://github.com/goodrain/rainskills/issues)
283
163
 
284
164
  ## License
285
165
 
package/SKILL.md CHANGED
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: rainskills
3
- description: Use when a user asks to install, set up, initialize, update, repair, start using Rainskills, or connect, reconnect, inspect, or replace the single Rainskills runtime.
3
+ description: Install, update, repair, connect, reconnect, inspect, or replace the single Rainskills runtime. Use for Rainskills setup and onboarding, not application deployment.
4
4
  ---
5
5
 
6
6
  # Rainskills
7
7
 
8
- This is the single marketplace entry for the complete Rainskills product. The installer deploys every bundled `rainbond-*` Skill as an independent Skill with its own trigger and responsibility, including the lightweight read-only `rainbond-platform-query` skill. Do not ask the user to choose only one of them.
8
+ This is the single marketplace entry for the complete Rainskills product. The installer deploys every bundled `rainbond-*` Skill as an independent Skill with its own trigger and responsibility, including `rainbond-platform-plugin-manager`, `rainbond-ai-assistant`, and the lightweight read-only `rainbond-platform-query` skill. Do not ask the user to choose only one of them.
9
9
 
10
10
  ## Initialize
11
11
 
@@ -54,7 +54,7 @@ Hermes Agent 中必须使用 `terminal` 以 `background=true` 启动授权命令
54
54
 
55
55
  DeepSeek Harness 和 WorkBuddy 也必须保持原命令附着直到退出;如果宿主把长命令转成持久终端或后台任务,只能轮询该原始命令句柄,不得另起 `runtime status` 推测授权结果。WorkBuddy 安装后若当前任务的 Skill 清单尚未刷新,在下一条业务动作前先刷新 Skill 列表或新建任务,不得退回内置 Sites 代替 Rainbond 部署。
56
56
 
57
- Rainskills 只保存一个全局运行环境,不维护环境列表、名称、默认值或环境 ID。使用固定 launcher `node <home>/.rainbond/lib/rainskills/bin/rainskills.js`(运行包版本 `rainskills@0.1.41`):
57
+ Rainskills 只保存一个全局运行环境,不维护环境列表、名称、默认值或环境 ID。使用固定 launcher `node <home>/.rainbond/lib/rainskills/bin/rainskills.js`(运行包版本 `rainskills@0.1.43`):
58
58
 
59
59
  - 状态:执行 `runtime status --json`。
60
60
  - 首次连接:执行 `runtime connect <target> --saas` 或 `runtime connect <target> --rainbond-url <Console origin>`。