huaweicloud-devkit 1.1.2-next.1 → 1.1.2-next.3

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 (33) hide show
  1. package/README.md +24 -6
  2. package/README.zh-CN.md +24 -6
  3. package/integrations/hermes/skills-snapshot.json +175 -0
  4. package/package.json +3 -1
  5. package/plugins/huaweicloud-core/.claude-plugin/plugin.json +1 -1
  6. package/plugins/huaweicloud-core/.codex-plugin/plugin.json +1 -1
  7. package/plugins/huaweicloud-core/.cursor-plugin/plugin.json +1 -1
  8. package/plugins/huaweicloud-core/.hermes-plugin/plugin.json +1 -1
  9. package/plugins/huaweicloud-core/.workbuddy-plugin/plugin.json +1 -1
  10. package/plugins/huaweicloud-core/openclaw.plugin.json +1 -1
  11. package/plugins/huaweicloud-core/skills/huawei-apig/SKILL.md +1 -1
  12. package/plugins/huaweicloud-core/skills/huawei-dew/SKILL.md +6 -7
  13. package/plugins/huaweicloud-core/skills/huawei-dew/references/csms-usage.md +7 -6
  14. package/plugins/huaweicloud-core/skills/huawei-dew/references/kms-usage.md +1 -1
  15. package/plugins/huaweicloud-core/skills/huawei-ecs/SKILL.md +1 -1
  16. package/plugins/huaweicloud-core/skills/huawei-ecs/references/evs.md +3 -1
  17. package/plugins/huaweicloud-core/skills/huawei-ecs/references/troubleshooting.md +10 -10
  18. package/plugins/huaweicloud-core/skills/huawei-functiongraph/references/create-function.md +2 -2
  19. package/plugins/huaweicloud-core/skills/huawei-functiongraph/references/deploy-workflow.md +1 -1
  20. package/plugins/huaweicloud-core/skills/huawei-getting-started/SKILL.md +15 -9
  21. package/plugins/huaweicloud-core/skills/huawei-iac/SKILL.md +1 -1
  22. package/plugins/huaweicloud-core/skills/huawei-iac/references/resource-catalog.md +1 -1
  23. package/plugins/huaweicloud-core/skills/huawei-iam/references/quick-ref.md +3 -3
  24. package/plugins/huaweicloud-core/skills/huawei-obs/SKILL.md +15 -15
  25. package/plugins/huaweicloud-core/skills/huawei-vpc/references/network.md +1 -1
  26. package/plugins/huaweicloud-core/skills/huaweicloud-cli-and-auth/SKILL.md +18 -16
  27. package/plugins/huaweicloud-core/src/hcloud-cli.mjs +11 -0
  28. package/plugins/huaweicloud-core/src/koocli-version.mjs +47 -0
  29. package/plugins/huaweicloud-core/src/mcp-protocol.mjs +88 -0
  30. package/plugins/huaweicloud-core/src/mcp-server-remote.mjs +107 -0
  31. package/plugins/huaweicloud-core/src/mcp-server.mjs +125 -183
  32. package/plugins/huaweicloud-core/src/setup-cli.mjs +42 -15
  33. package/plugins/huaweicloud-core/src/tools.mjs +17 -2
package/README.md CHANGED
@@ -11,12 +11,6 @@ Help AI coding agents use Huawei Cloud safely and accurately — a single integr
11
11
 
12
12
  Supports OpenCode, Codex, CodeArts Agent, WorkBuddy, DeepSeek Harness (DSH), OfficeAce, Hermes, OpenClaw, and AtomCode.
13
13
 
14
- ## Cursor Directory Plugin
15
-
16
- This repository also acts as an [Open Plugins](https://open-plugins.com) package for the [Cursor Directory](https://cursor.directory) marketplace. The root-level `plugin.json`, `mcp.json`, `skills/`, and `rules/` files are used **only** for Cursor Directory repository-scan discovery and are **not** shipped in the npm tarball (the `package.json` `files` whitelist excludes them). The npm package's manifests live under `plugins/huaweicloud-core/`.
17
-
18
- The `mcp.json` MCP server launches via `npx -y -p huaweicloud-devkit huaweicloud-devkit-mcp`, which tracks the npm `latest` tag. During pre-release this may differ from the manifest `version`; it can be pinned after a stable release.
19
-
20
14
  ## Prerequisites
21
15
 
22
16
  - Node.js >= 22
@@ -226,6 +220,30 @@ No installation required — `npx` handles everything.
226
220
 
227
221
  > Set `HW_ACCESS_KEY`/`HW_SECRET_KEY` in the MCP config `env` field for project-level credentials.
228
222
 
223
+ #### Connecting over Remote (HTTP)
224
+
225
+ If your agent supports `type: "remote"` (Streamable HTTP) instead of stdio, start the devkit remote MCP server locally first:
226
+
227
+ ```bash
228
+ npx --yes huaweicloud-devkit-mcp --transport remote
229
+ ```
230
+
231
+ It listens on `127.0.0.1:9528` by default (no conflict with the IACMCPServer port 9527). Then connect with a remote config (opencode example):
232
+
233
+ ```jsonc
234
+ {
235
+ "mcp": {
236
+ "huaweicloud-devkit": {
237
+ "type": "remote",
238
+ "url": "http://localhost:9528",
239
+ "enabled": true,
240
+ },
241
+ },
242
+ }
243
+ ```
244
+
245
+ > Use `--port <port>` if 9528 is taken and update `url` accordingly; add `--host 0.0.0.0` for LAN access. The remote server has no built-in auth — do not expose it anonymously to the public internet.
246
+
229
247
  ### Install KooCLI
230
248
 
231
249
  ```bash
package/README.zh-CN.md CHANGED
@@ -11,12 +11,6 @@
11
11
 
12
12
  支持 OpenCode、Codex、码道(CodeArts Agent)、WorkBuddy、DeepSeek Harness(DSH)、OfficeAce、Hermes、OpenClaw、AtomCode。
13
13
 
14
- ## Cursor Directory 插件
15
-
16
- 本仓库同时作为 [Open Plugins](https://open-plugins.com) 包挂载到 [Cursor Directory](https://cursor.directory) 市场。根目录的 `plugin.json`、`mcp.json`、`skills/`、`rules/` 仅用于 Cursor Directory 的仓库扫描发现,**不会**打入 npm 包(`package.json` 的 `files` 白名单未包含它们)。npm 包的 manifests 位于 `plugins/huaweicloud-core/`。
17
-
18
- `mcp.json` 中的 MCP 服务通过 `npx -y -p huaweicloud-devkit huaweicloud-devkit-mcp` 启动,跟踪的是 npm 的 `latest` tag。预发布阶段可能与 manifest 中的 `version` 不一致,稳定发版后可以固定版本。
19
-
20
14
  ## 前置条件
21
15
 
22
16
  - Node.js >= 22
@@ -226,6 +220,30 @@ npx --yes huaweicloud-devkit uninstall --target atomcode
226
220
 
227
221
  > 项目级 AK/SK 可通过 MCP 配置的 `env` 字段设置 `HW_ACCESS_KEY`/`HW_SECRET_KEY`。
228
222
 
223
+ #### 通过 Remote(HTTP)连接
224
+
225
+ 若 Agent 支持 `type: "remote"`(Streamable HTTP)而非 stdio,可在本地先启动 devkit 的远程 MCP 服务器:
226
+
227
+ ```bash
228
+ npx --yes huaweicloud-devkit-mcp --transport remote
229
+ ```
230
+
231
+ 默认监听 `127.0.0.1:9528`(与预置的 IACMCPServer 端口 9527 不冲突)。随后以远程方式连接(以 opencode 为例):
232
+
233
+ ```jsonc
234
+ {
235
+ "mcp": {
236
+ "huaweicloud-devkit": {
237
+ "type": "remote",
238
+ "url": "http://localhost:9528",
239
+ "enabled": true,
240
+ },
241
+ },
242
+ }
243
+ ```
244
+
245
+ > 端口被占用时用 `--port <端口>` 换端口,`url` 同步修改;需要局域网访问时加 `--host 0.0.0.0`。remote 服务器不内置鉴权,请勿匿名暴露到公网。
246
+
229
247
  ### 安装 KooCLI
230
248
 
231
249
  ```bash
@@ -0,0 +1,175 @@
1
+ {
2
+ "hermes_version": "0.1.0",
3
+ "exported_at": "2026-09-07T00:00:00Z",
4
+ "skills": [
5
+ {
6
+ "name": "huawei-apig",
7
+ "source": "official",
8
+ "identifier": "official/huaweicloud/huawei-apig",
9
+ "category": "huaweicloud"
10
+ },
11
+ {
12
+ "name": "huawei-billing",
13
+ "source": "official",
14
+ "identifier": "official/huaweicloud/huawei-billing",
15
+ "category": "huaweicloud"
16
+ },
17
+ {
18
+ "name": "huawei-cbr",
19
+ "source": "official",
20
+ "identifier": "official/huaweicloud/huawei-cbr",
21
+ "category": "huaweicloud"
22
+ },
23
+ {
24
+ "name": "huawei-cce",
25
+ "source": "official",
26
+ "identifier": "official/huaweicloud/huawei-cce",
27
+ "category": "huaweicloud"
28
+ },
29
+ {
30
+ "name": "huawei-cloud-eye",
31
+ "source": "official",
32
+ "identifier": "official/huaweicloud/huawei-cloud-eye",
33
+ "category": "huaweicloud"
34
+ },
35
+ {
36
+ "name": "huawei-cloud-find-skills",
37
+ "source": "official",
38
+ "identifier": "official/huaweicloud/huawei-cloud-find-skills",
39
+ "category": "huaweicloud"
40
+ },
41
+ {
42
+ "name": "huawei-cts",
43
+ "source": "official",
44
+ "identifier": "official/huaweicloud/huawei-cts",
45
+ "category": "huaweicloud"
46
+ },
47
+ {
48
+ "name": "huawei-dds-dcs",
49
+ "source": "official",
50
+ "identifier": "official/huaweicloud/huawei-dds-dcs",
51
+ "category": "huaweicloud"
52
+ },
53
+ {
54
+ "name": "huawei-deployment",
55
+ "source": "official",
56
+ "identifier": "official/huaweicloud/huawei-deployment",
57
+ "category": "huaweicloud"
58
+ },
59
+ {
60
+ "name": "huawei-dew",
61
+ "source": "official",
62
+ "identifier": "official/huaweicloud/huawei-dew",
63
+ "category": "huaweicloud"
64
+ },
65
+ {
66
+ "name": "huawei-ecs",
67
+ "source": "official",
68
+ "identifier": "official/huaweicloud/huawei-ecs",
69
+ "category": "huaweicloud"
70
+ },
71
+ {
72
+ "name": "huawei-functiongraph",
73
+ "source": "official",
74
+ "identifier": "official/huaweicloud/huawei-functiongraph",
75
+ "category": "huaweicloud"
76
+ },
77
+ {
78
+ "name": "huawei-gaussdb",
79
+ "source": "official",
80
+ "identifier": "official/huaweicloud/huawei-gaussdb",
81
+ "category": "huaweicloud"
82
+ },
83
+ {
84
+ "name": "huawei-getting-started",
85
+ "source": "official",
86
+ "identifier": "official/huaweicloud/huawei-getting-started",
87
+ "category": "huaweicloud"
88
+ },
89
+ {
90
+ "name": "huawei-iam",
91
+ "source": "official",
92
+ "identifier": "official/huaweicloud/huawei-iam",
93
+ "category": "huaweicloud"
94
+ },
95
+ {
96
+ "name": "huawei-modelarts",
97
+ "source": "official",
98
+ "identifier": "official/huaweicloud/huawei-modelarts",
99
+ "category": "huaweicloud"
100
+ },
101
+ {
102
+ "name": "huawei-obs",
103
+ "source": "official",
104
+ "identifier": "official/huaweicloud/huawei-obs",
105
+ "category": "huaweicloud"
106
+ },
107
+ {
108
+ "name": "huawei-rds",
109
+ "source": "official",
110
+ "identifier": "official/huaweicloud/huawei-rds",
111
+ "category": "huaweicloud"
112
+ },
113
+ {
114
+ "name": "huawei-sandbox",
115
+ "source": "official",
116
+ "identifier": "official/huaweicloud/huawei-sandbox",
117
+ "category": "huaweicloud"
118
+ },
119
+ {
120
+ "name": "huawei-smn-dms",
121
+ "source": "official",
122
+ "identifier": "official/huaweicloud/huawei-smn-dms",
123
+ "category": "huaweicloud"
124
+ },
125
+ {
126
+ "name": "huawei-vpc",
127
+ "source": "official",
128
+ "identifier": "official/huaweicloud/huawei-vpc",
129
+ "category": "huaweicloud"
130
+ },
131
+ {
132
+ "name": "huawei-waf-aad",
133
+ "source": "official",
134
+ "identifier": "official/huaweicloud/huawei-waf-aad",
135
+ "category": "huaweicloud"
136
+ },
137
+ {
138
+ "name": "huaweicloud-api-and-sdk",
139
+ "source": "official",
140
+ "identifier": "official/huaweicloud/huaweicloud-api-and-sdk",
141
+ "category": "huaweicloud"
142
+ },
143
+ {
144
+ "name": "huaweicloud-capability-discovery",
145
+ "source": "official",
146
+ "identifier": "official/huaweicloud/huaweicloud-capability-discovery",
147
+ "category": "huaweicloud"
148
+ },
149
+ {
150
+ "name": "huaweicloud-cli-and-auth",
151
+ "source": "official",
152
+ "identifier": "official/huaweicloud/huaweicloud-cli-and-auth",
153
+ "category": "huaweicloud"
154
+ },
155
+ {
156
+ "name": "huaweicloud-core",
157
+ "source": "official",
158
+ "identifier": "official/huaweicloud/huaweicloud-core",
159
+ "category": "huaweicloud"
160
+ },
161
+ {
162
+ "name": "huaweicloud-safety",
163
+ "source": "official",
164
+ "identifier": "official/huaweicloud/huaweicloud-safety",
165
+ "category": "huaweicloud"
166
+ },
167
+ {
168
+ "name": "huaweicloud-troubleshooting",
169
+ "source": "official",
170
+ "identifier": "official/huaweicloud/huaweicloud-troubleshooting",
171
+ "category": "huaweicloud"
172
+ }
173
+ ],
174
+ "taps": []
175
+ }
package/package.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "name": "huaweicloud-devkit",
3
- "version": "1.1.2-next.1",
3
+ "mcpName": "io.github.huaweicloud/huaweicloud-devkit",
4
+ "version": "1.1.2-next.3",
5
+ "kooCliVersion": "7.2.12",
4
6
  "description": "Agent toolkit that helps coding agents use Huawei Cloud Skills, KooCLI, APIs, SDKs, and future MCP capabilities safely and accurately.",
5
7
  "type": "module",
6
8
  "files": [
@@ -17,7 +17,7 @@
17
17
  "mcpServers": "./.mcp.json",
18
18
  "description": "Guide coding agents to use Huawei Cloud Skills, KooCLI, APIs, SDKs, and future MCP capabilities with safer execution and less context.",
19
19
  "skills": "./skills/",
20
- "version": "1.1.2-next.1",
20
+ "version": "1.1.2-next.3",
21
21
  "author": {
22
22
  "name": "HuaweiCloud Mate",
23
23
  "url": "https://github.com/huaweicloud"
@@ -20,7 +20,7 @@
20
20
  "mcpServers": "./.mcp.json",
21
21
  "description": "Agent toolkit that helps coding agents use Huawei Cloud Skills, KooCLI, APIs, SDKs, and future MCP capabilities safely and accurately.",
22
22
  "skills": "./skills/",
23
- "version": "1.1.2-next.1",
23
+ "version": "1.1.2-next.3",
24
24
  "author": {
25
25
  "name": "HuaweiCloud Mate",
26
26
  "url": "https://github.com/huaweicloud"
@@ -17,7 +17,7 @@
17
17
  "mcpServers": "./.mcp.json",
18
18
  "description": "Guide coding agents to use Huawei Cloud Skills, KooCLI, APIs, SDKs, and future MCP capabilities with safer execution and less context.",
19
19
  "skills": "./skills/",
20
- "version": "1.1.2-next.1",
20
+ "version": "1.1.2-next.3",
21
21
  "author": {
22
22
  "name": "HuaweiCloud Mate",
23
23
  "url": "https://github.com/huaweicloud"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "huaweicloud-devkit",
3
- "version": "1.1.2-next.1",
3
+ "version": "1.1.2-next.3",
4
4
  "description": "Guide coding agents to use Huawei Cloud Skills, KooCLI, APIs, SDKs, and future MCP capabilities with safer execution and less context.",
5
5
  "author": {
6
6
  "name": "HuaweiCloud Mate",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "huaweicloud-devkit",
3
- "version": "1.1.2-next.1",
3
+ "version": "1.1.2-next.3",
4
4
  "description": "Guide coding agents to use Huawei Cloud Skills, KooCLI, APIs, SDKs, and future MCP capabilities with safer execution and less context.",
5
5
  "author": {
6
6
  "name": "HuaweiCloud Mate",
@@ -2,7 +2,7 @@
2
2
  "name": "huaweicloud-devkit",
3
3
  "id": "huaweicloud-devkit",
4
4
  "displayName": "HuaweiCloud DevKit",
5
- "version": "1.1.2-next.1",
5
+ "version": "1.1.2-next.3",
6
6
  "family": "bundle-plugin",
7
7
  "bundleFormat": "codex",
8
8
  "description": "Guide coding agents to use Huawei Cloud safely — KooCLI, APIs, SDKs, 28 MCP tools, skills, and safety guardrails.",
@@ -119,7 +119,7 @@ hcloud APIG BatchPublishOrOfflineApiV2 \
119
119
  ## Throttling
120
120
 
121
121
  ```bash
122
- hcloud APIG CreateThrottlingPolicyV2 --name=<n> --api_call_limits=1000
122
+ hcloud APIG CreateRequestThrottlingPolicyV2 --instance_id=<id> --name=<n> --api_call_limits=1000
123
123
  ```
124
124
 
125
125
  ## Common Workflows
@@ -31,16 +31,15 @@ Domain expertise for Huawei Cloud Data Encryption Workshop (DEW). Covers CSMS fo
31
31
  | Operation | Description |
32
32
  | ------------------ | ------------------------------------------------------ |
33
33
  | ListSecrets | List all secrets (names only, no values) |
34
- | DescribeSecret | Get secret metadata (rotation config, KMS key, status) |
34
+ | ShowSecret | Get secret metadata (rotation config, KMS key, status) |
35
35
  | ListSecretVersions | List version IDs and stages (no values) |
36
36
 
37
37
  ### Secret Value (blocked by policy — use runtime injection)
38
38
 
39
- | Operation | Safe Alternative |
40
- | ----------------- | --------------------------------------------- |
41
- | DownloadSecret | Use {{resolve:csms:secret-id}} in IaC or SDK |
42
- | ShowSecretVersion | Use runtime injection, never in agent context |
43
- | GetSecretValue | Blocked. Use MCP proxy resolve pattern |
39
+ | Operation | Safe Alternative |
40
+ | ------------------ | --------------------------------------------- |
41
+ | DownloadSecretBlob | Use {{resolve:csms:secret-id}} in IaC or SDK |
42
+ | ShowSecretVersion | Use runtime injection, never in agent context |
44
43
 
45
44
  ## KMS Operations
46
45
 
@@ -80,7 +79,7 @@ hcloud CSMS DownloadSecretBlob --secret_name=<name>
80
79
  | Error | Root Cause -> Fix |
81
80
  | -------------------- | --------------------------------------------------------------------------- |
82
81
  | Secret not found | Wrong region or project -> Verify secret ARN includes region/project |
83
- | AccessDenied on CSMS | Missing IAM CSMS policy -> Add csms:DescribeSecret + kms:Decrypt |
82
+ | AccessDenied on CSMS | Missing IAM CSMS policy -> Add csms:ShowSecret + kms:Decrypt |
84
83
  | KMS key disabled | Key scheduled for deletion or manually disabled -> Enable or create new key |
85
84
  | Rotation stuck | Lambda/Python function error -> Check rotation function logs |
86
85
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Create Secret
4
4
 
5
- hcloud CSMS CreateSecret --secret_name=prod-db-password --secret_string='{"password":"CHANGE_ME"}'
5
+ hcloud CSMS CreateSecret --name=prod-db-password --secret_string='{"password":"CHANGE_ME"}'
6
6
 
7
7
  ## List Secrets (metadata only)
8
8
 
@@ -10,7 +10,7 @@ hcloud CSMS ListSecrets
10
10
 
11
11
  ## Describe Secret
12
12
 
13
- hcloud CSMS DescribeSecret --secret_name=prod-db-password
13
+ hcloud CSMS ShowSecret --secret_name=prod-db-password
14
14
 
15
15
  ## List Versions
16
16
 
@@ -25,12 +25,13 @@ Use: data.huaweicloud_csms_secret.db.secret_string
25
25
 
26
26
  ## Rotation
27
27
 
28
- - Enable auto-rotation: hcloud CSMS EnableSecretRotation --secret_name=<name> --rotation_interval=30
29
- - Rotation function ARN: provide Lambda to generate new secret value
28
+ - Enable auto-rotation: `hcloud CSMS UpdateSecret --secret_name=<name> --auto_rotation=true --rotation_period=<days> --rotation_func_urn=<fn>` (or set at CreateSecret time)
29
+ - Trigger rotation now: `hcloud CSMS RotateSecret --secret_name=<name>`
30
+ - Rotation function ARN: provide a FunctionGraph rotation function to generate new secret values
30
31
 
31
32
  ## Policy Rules
32
33
 
33
- - hcloud CSMS DownloadSecret -> BLOCKED (use runtime injection)
34
+ - hcloud CSMS DownloadSecretBlob -> BLOCKED (use runtime injection)
34
35
  - hcloud CSMS ShowSecretVersion -> BLOCKED
35
36
  - hcloud CSMS ListSecrets -> ALLOWED (metadata only)
36
- - hcloud CSMS DescribeSecret -> ALLOWED (metadata only)
37
+ - hcloud CSMS ShowSecret -> ALLOWED (metadata only)
@@ -24,6 +24,6 @@ Use SDK with KMS client in application runtime.
24
24
 
25
25
  ## Key Deletion
26
26
 
27
- - Schedule: hcloud KMS ScheduleKeyDeletion --key_id=<key-id> --pending_days=7
27
+ - Schedule: hcloud KMS DeleteKey --key_id=<key-id> --pending_days=7
28
28
  - Cancel during pending window: hcloud KMS CancelKeyDeletion --key_id=<key-id>
29
29
  - WARNING: After deletion window passes, data encrypted with this key is UNRECOVERABLE
@@ -59,7 +59,7 @@ Flavor families are **region-dependent**. Always run `hcloud ECS ListFlavors --c
59
59
  | Find by name | See "How to search for instances" below | |
60
60
  | Bind EIP | hcloud EIP AssociatePublicips --publicip_id=<id> --publicip.associate_instance_id=<port-id> --publicip.associate_instance_type=PORT | Get port ID from `hcloud ECS ListServersDetails --server_id=<id>` → `OS-EXT-IPS:port_id` |
61
61
  | Security group rule | hcloud VPC CreateSecurityGroupRule --security_group_id=<id> --direction=<direction> --protocol=<protocol> | references/sg.md |
62
- | Attach disk | hcloud EVS AttachVolume --volume_id=<id> --server_id=<id> | references/evs.md |
62
+ | Attach disk | hcloud ECS AttachServerVolume --server_id=<id> --volumeAttachment.volumeId=<id> | references/evs.md |
63
63
  | Delete instance | hcloud ECS DeleteServers --servers.1.id=<id> --delete_publicip=true --delete_volume=true | references/create-instance.md |
64
64
  | Reboot instance | hcloud ECS BatchRebootServers --reboot.servers.1.id=<id> --reboot.type=SOFT | NOT `RebootServer` — that operation does not exist |
65
65
  | HC活动部署 | 按量付费购买ECS+Nginx部署后端服务 | references/hc-activity.md |
@@ -18,9 +18,11 @@ hcloud EVS CreateVolume \
18
18
  ## Attach to ECS
19
19
 
20
20
  ```bash
21
- hcloud EVS AttachVolume --volume_id=<vol-id> --server_id=<ecs-id>
21
+ hcloud ECS AttachServerVolume --server_id=<ecs-id> --volumeAttachment.volumeId=<vol-id>
22
22
  ```
23
23
 
24
+ > The attach operation lives under `ECS` (not `EVS`), and the volume id uses the nested `--volumeAttachment.volumeId` parameter.
25
+
24
26
  ## List / Delete
25
27
 
26
28
  ```bash
@@ -4,16 +4,16 @@
4
4
 
5
5
  ## 错误码映射
6
6
 
7
- | 错误 | 根因 | 修复 |
8
- | --------------------------------------- | ------------------------------- | -------------------------------------------------------------------------------------------------------- |
9
- | `Ecs.0005` flavor-image 不匹配 | 镜像虚拟化类型与规格不兼容 | 检查 image `__support_amd`/`__support_xen` 与 flavor `os_extra_specs`。BareMetal 镜像不兼容标准 ECS 规格 |
10
- | `[USE_ERROR]不正确的参数:imagetype` | 参数名错误 | KooCLI 使用双下划线前缀:`--__imagetype=gold`(不是 `--imagetype`) |
11
- | `[USE_ERROR]不正确的参数:chargingMode` | 参数路径错误 | 计费模式参数路径:`--server.extendparam.chargingMode=postPaid`。不传默认按需付费 |
12
- | `[USE_ERROR]不正确的参数:__support_amd` | 参数无效 | `IMS ListImages` 某些版本不支持此过滤。去掉该参数,使用 client-side 过滤 |
13
- | Cannot SSH | 安全组未开放22端口 或 未绑定EIP | 1) 添加入方向规则 tcp 22。2) `hcloud EIP BindPublicIp` |
14
- | Flavor unavailable | 区域不支持该规格 | `hcloud ECS ListFlavors --cli-region=<r>` 先查。不硬编码 s6/m6 等规格名 |
15
- | Insufficient resources | AZ 库存不足 | 换规格、换 AZ、或等待资源释放 |
16
- | AuthFailure | AK/SK 过期或无效 | `npx huaweicloud-devkit auth init` 重新配置统一凭据 |
7
+ | 错误 | 根因 | 修复 |
8
+ | --------------------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
9
+ | `Ecs.0005` flavor-image 不匹配 | 镜像虚拟化类型与规格不兼容 | 检查 image `__support_amd`/`__support_xen` 与 flavor `os_extra_specs`。BareMetal 镜像不兼容标准 ECS 规格 |
10
+ | `[USE_ERROR]不正确的参数:imagetype` | 参数名错误 | KooCLI 使用双下划线前缀:`--__imagetype=gold`(不是 `--imagetype`) |
11
+ | `[USE_ERROR]不正确的参数:chargingMode` | 参数路径错误 | 计费模式参数路径:`--server.extendparam.chargingMode=postPaid`。不传默认按需付费 |
12
+ | `[USE_ERROR]不正确的参数:__support_amd` | 参数无效 | `IMS ListImages` 某些版本不支持此过滤。去掉该参数,使用 client-side 过滤 |
13
+ | Cannot SSH | 安全组未开放22端口 或 未绑定EIP | 1) 添加入方向规则 tcp 22。2) `hcloud EIP AssociatePublicips --publicip_id=<id> --publicip.associate_instance_id=<port-id> --publicip.associate_instance_type=PORT` |
14
+ | Flavor unavailable | 区域不支持该规格 | `hcloud ECS ListFlavors --cli-region=<r>` 先查。不硬编码 s6/m6 等规格名 |
15
+ | Insufficient resources | AZ 库存不足 | 换规格、换 AZ、或等待资源释放 |
16
+ | AuthFailure | AK/SK 过期或无效 | `npx huaweicloud-devkit auth init` 重新配置统一凭据 |
17
17
 
18
18
  ## 创建失败诊断流程
19
19
 
@@ -62,9 +62,9 @@ To access VPC-internal resources from FunctionGraph:
62
62
 
63
63
  ```bash
64
64
  # 1. Create agency (see huawei-iam skill)
65
- hcloud IAM CreateAgency --agency_name=<name> --trust_domain_name=functiongraph
65
+ hcloud IAM CreateAgency --agency.name=<name> --agency.trust_domain_name=functiongraph --agency.domain_id=<id>
66
66
  # 2. Grant role (e.g., VPC Administrator)
67
- hcloud IAM GrantRoleToAgency --agency_name=<name> --role_id=<role-id>
67
+ hcloud IAM AssociateAgencyWithDomainPermission --agency_id=<id> --domain_id=<id> --role_id=<role-id>
68
68
  # 3. Use in CreateFunction
69
69
  hcloud FunctionGraph CreateFunction --func_vpc.vpc_id=<vpc> --func_vpc.subnet_id=<subnet> --app_xrole=<name> ...
70
70
  ```
@@ -88,7 +88,7 @@ hcloud FunctionGraph CreateFunctionTrigger \
88
88
  --trigger_status=ACTIVE \
89
89
  --event_data.name=test-timer \
90
90
  --event_data.schedule_type=Rate \
91
- --event_data.schedule="5m"
91
+ --event_data.schedule="1m"
92
92
  ```
93
93
 
94
94
  ## DEDICATEDGATEWAY Pre-Flight Checklist
@@ -10,11 +10,15 @@ version: 1
10
10
 
11
11
  ## KooCLI Installation
12
12
 
13
- | OS | Command |
14
- | -------------------- | --------------------------------------------------------------------------------------------------------------------- |
15
- | Windows (PowerShell) | See https://support.huaweicloud.com/qs-hcli/hcli_02_003.html for MSI download |
16
- | Linux | curl -LO "https://hwcloudcli.obs.cn-north-1.myhuaweicloud.com/cli/latest/hcloud_install.sh" && bash hcloud_install.sh |
17
- | macOS | curl -LO "https://hwcloudcli.obs.cn-north-1.myhuaweicloud.com/cli/latest/hcloud_install.sh" && bash hcloud_install.sh |
13
+ This plugin is paired with **KooCLI v7.2.12**. Install the pinned version:
14
+
15
+ | OS | Command |
16
+ | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
17
+ | Windows (PowerShell) | See https://support.huaweicloud.com/qs-hcli/hcli_02_003.html for MSI download |
18
+ | Linux | curl -LO "https://cn-north-4-hdn-koocli.obs.cn-north-4.myhuaweicloud.com/cli/7.2.12/huaweicloud-cli-linux-amd64.tar.gz" && tar -zxvf huaweicloud-cli-linux-amd64.tar.gz |
19
+ | macOS | curl -LO "https://cn-north-4-hdn-koocli.obs.cn-north-4.myhuaweicloud.com/cli/7.2.12/huaweicloud-cli-mac-amd64.tar.gz" && tar -zxvf huaweicloud-cli-mac-amd64.tar.gz |
20
+
21
+ > See `huaweicloud-cli-and-auth` skill for arm64 variants and the one-liner (latest) option.
18
22
 
19
23
  ## First-Time Setup
20
24
 
@@ -24,20 +28,22 @@ version: 1
24
28
  4. **Verify**: `hcloud configure list` to confirm profile, then `hcloud ECS ListServersDetails --cli-region=cn-north-4`
25
29
  5. For detailed auth guidance, see `huaweicloud-cli-and-auth` skill
26
30
 
27
- > **Security**: Never pass AK/SK as command-line arguments (`--ak=...`). Always use `npx huaweicloud-devkit auth init` (unified, interactive, recommended) or `hcloud configure init` (KooCLI only) to avoid secrets in shell history.
31
+ > **Security**: Never pass AK/SK as command-line arguments (`--ak=...`). Always use `npx huaweicloud-devkit auth init` (unified, interactive) or `hcloud configure init` (KooCLI only) to avoid secrets in shell history.
28
32
 
29
33
  ### Non-Interactive Setup (Agent/CI Environments)
30
34
 
31
- When the interactive TUI is unavailable (Agent tools, CI/CD), use `hcloud configure set` — this must be run outside agent chat by the user:
35
+ When the interactive TUI is unavailable (Agent tools, CI/CD), configure credentials outside agent chat using the unified entry point:
32
36
 
33
37
  ```bash
34
38
  # User executes in their terminal (NOT in agent chat):
35
- hcloud configure set --cli-access-key=<AK> --cli-secret-key=<SK> --cli-region=<region>
39
+ npx huaweicloud-devkit auth init
36
40
 
37
- # Agent verifies:
41
+ # Agent verifies through redacted tooling only:
38
42
  hcloud configure list
39
43
  ```
40
44
 
45
+ > Do **not** instruct the user to run `hcloud configure set --cli-access-key=... --cli-secret-key=...` — AK/SK would enter shell history. Use `npx huaweicloud-devkit auth init` instead.
46
+
41
47
  ## Critical Warnings
42
48
 
43
49
  | Trap | Why |
@@ -34,7 +34,7 @@ Always run `hcloud <Service> <Operation> --help` before constructing commands to
34
34
  ## Provisioning Rules (Stage 6)
35
35
 
36
36
  1. Generate `deployment_id` (`d-xxx`), initialize the session state file (path and schema: `references/state-file.md`).
37
- 2. **Batch approval: show the RESOURCE LIST (name / type / purpose), never the raw commands.** After the user approves, execute each resource via `huaweicloud_run_approved_command`. Never execute anything outside the approved list.
37
+ 2. **Batch approval: show the RESOURCE LIST (name / type / purpose), never the raw commands.** Present the numbered manifest BEFORE any `huaweicloud_plan_cli_command` call and get ONE explicit list-level approval. After the user approves the manifest, execute each resource via `huaweicloud_plan_cli_command` → `huaweicloud_run_approved_command` without re-asking list-level consent (per-command approval tokens are still required by the tool gate). Never execute anything outside the approved list.
38
38
  3. Create in dependency-topological order (network → compute/db → bindings). After each success, extract the resource ID and write it to state immediately.
39
39
  4. Any failure: stop immediately, mark state `partial`, report the error, offer destroy of already-created resources. No automatic rollback.
40
40
 
@@ -22,7 +22,7 @@ Every resource type the orchestration flow can purchase, bind, and destroy. This
22
22
  | Resource | Create | Delete | Skill | Depends on |
23
23
  | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ---------- | -------------------------------------------------------------------------- |
24
24
  | ECS instance | `hcloud ECS CreateServers --server.name=<n> --server.flavorRef=<id> --server.imageRef=<id> --server.vpcid=<id> --server.nics.1.subnet_id=<id> --server.security_groups.1.id=<id> --server.availability_zone=<az> --server.root_volume.volumetype=<type>` (hidden required: `vpcid` + `root_volume.volumetype`; check flavor family vs image arch, e.g. kc1 = ARM needs an ARM image) | `hcloud ECS DeleteServers --servers.1.id=<id> --delete_publicip=true --delete_volume=true` | huawei-ecs | VPC + Subnet + SG. Set both delete flags true on teardown or EIP/disk leak |
25
- | EVS data disk | `hcloud EVS CreateVolume` | `hcloud EVS DeleteVolume` | huawei-ecs | - (attach with `hcloud EVS AttachVolume`) |
25
+ | EVS data disk | `hcloud EVS CreateVolume` | `hcloud EVS DeleteVolume` | huawei-ecs | - (attach with `hcloud ECS AttachServerVolume`) |
26
26
 
27
27
  ## Databases
28
28
 
@@ -15,9 +15,9 @@ hcloud IAM KeystoneShowUser # show user detail
15
15
  ## Credential Management
16
16
 
17
17
  ```bash
18
- hcloud IAM KeystoneListAccessKeys --user_id=<id> # list AK/SK for user
19
- hcloud IAM CreateLoginToken # create login token
20
- hcloud IAM GetAccountSummary # account summary
18
+ hcloud IAM ListAccessKeysV5 --user_id=<id> # list AK/SK for user
19
+ hcloud IAM CreateLoginToken # create login token
20
+ hcloud IAM GetAccountSummaryV5 # account summary
21
21
  ```
22
22
 
23
23
  ## Security Best Practices
@@ -62,21 +62,21 @@ hcloud OBS config -e=<endpoint> -i=<AK> -k=<SK> -t=token
62
62
 
63
63
  ## Common Workflows
64
64
 
65
- | Task | Command |
66
- | ---------------------------- | ---------------------------------------------------------------------- |
67
- | Create bucket | `hcloud OBS mb obs://<bucket> -location=<region>` |
68
- | List buckets/objects | `hcloud OBS ls [obs://<bucket>]` |
69
- | Upload file | `hcloud OBS cp <file> obs://<bucket>/<key>` |
70
- | Upload directory (recursive) | `hcloud OBS cp <dir>/ obs://<bucket>/ -r -f -flat` |
71
- | Download object | `hcloud OBS cp obs://<bucket>/<key> <local-path>` |
72
- | Set bucket ACL | `hcloud OBS chattri obs://<bucket> -acl=public-read` |
73
- | Set object ACL | `hcloud OBS chattri obs://<bucket>/<key> -acl=public-read` | Bucket ACL does NOT cascade — anonymous reads need both |
74
- | Set lifecycle | `hcloud OBS lifecycle obs://<bucket> -method=put -localfile=<json>` |
75
- | Set bucket policy | `hcloud OBS bucketpolicy obs://<bucket> -method=put -localfile=<json>` |
76
- | Set CORS | `hcloud OBS cors obs://<bucket> -method=put -localfile=<json>` |
77
- | Delete bucket | `hcloud OBS rm obs://<bucket> -r` (must be empty) |
78
- | Presigned URL | `hcloud OBS sign obs://<bucket>/<key> -e=<seconds>` |
79
- | Object metadata | `hcloud OBS stat obs://<bucket>/<key>` |
65
+ | Task | Command |
66
+ | ---------------------------- | ------------------------------------------------------------------------- |
67
+ | Create bucket | `hcloud OBS mb obs://<bucket> -location=<region>` |
68
+ | List buckets/objects | `hcloud OBS ls [obs://<bucket>]` |
69
+ | Upload file | `hcloud OBS cp <file> obs://<bucket>/<key>` |
70
+ | Upload directory (recursive) | `hcloud OBS cp <dir>/ obs://<bucket>/ -r -f -flat` |
71
+ | Download object | `hcloud OBS cp obs://<bucket>/<key> <local-path>` |
72
+ | Set bucket ACL | `hcloud OBS chattri obs://<bucket> -acl=public-read` |
73
+ | Set object ACL | `hcloud OBS chattri obs://<bucket>/<key> -acl=public-read` | Bucket ACL does NOT cascade — anonymous reads need both |
74
+ | Set lifecycle | `hcloud OBS lifecycle obs://<bucket> -method=put -localfile=<json>` |
75
+ | Set bucket policy | `hcloud OBS bucketpolicy obs://<bucket> -method=put -localfile=<json>` |
76
+ | Set CORS | Not available via `hcloud OBS` — use API/SDK (`SetBucketCors`) or console |
77
+ | Delete bucket | `hcloud OBS rm obs://<bucket> -r` (must be empty) |
78
+ | Presigned URL | `hcloud OBS sign obs://<bucket>/<key> -e=<seconds>` |
79
+ | Object metadata | `hcloud OBS stat obs://<bucket>/<key>` |
80
80
 
81
81
  ## Static Website Deployment Workflow
82
82