关于 huawei-cloud-skill-creator
Huawei Cloud Skill Creator 通过强制的六阶段流程创建华为云管理技能,涵盖需求分析、技术研究、文档生成、测试、清理和合规检查。它只生成技能包,不直接操作云资源。
主要功能
- 01六阶段技能创建流程
- 02逐步问答式需求分析
- 03CLI、SDK、API 研究回退
- 04生成技能文档
- 05测试、清理与合规检查
适用场景
- 01为华为云服务创建技能
- 02将确认的需求整理为技能包
- 03研究 CLI、SDK 或 API 操作支持情况
- 04测试并验证生成的技能
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-skill-creator安装后在 Claude Code 中输入/huawei-cloud-skill-creator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/acceptance-criteria.mdcli-installation-guide.mddataflow-diagram.mdiam-policies.mdrelated-commands.mdverification-method.mdscripts/ensure_cli.shinstall_cli.shtest-cli-commands.shvalidate-skill.shyaml-check-frontmatter.pytemplates/test-defaults.jsontest-vars.json详细介绍
Huawei Cloud Skill Creator v2
六阶段严格流水线 — 每个阶段都依赖上一阶段的输出,且不能跳过。如果缺少任何阶段,请从缺失的阶段重新开始。
概述
Huawei Cloud Skill Creator v2 基于六阶段严格流水线:从苏格拉底式问答需求分析开始,接着进行技术调研(CLI→SDK→API 三级回退)、文档生成、测试准备、详细测试、资源清理和合规检查,最终生成符合 Huawei Cloud Skill Specification 的完整 Skill 包。它只创建和打包 Skill,不会直接操作云资源(不会创建、删除或修改 ECS、VPC、OBS 等);请用它生成管理 Skill,或使用其他专用管理 Skill 执行云资源操作。
依赖项:质量遥测数据会通过 skill-quality-cli 自动收集(如果未安装,则由 scripts/ensure_cli.sh 安装)。
预检查:需要 Huawei Cloud 凭证
强制门槛。 在调用任何 hcloud / huaweicloudsdk 命令之前,必须通过此预检查,包括 Phase 2 调研、Phase 4/5 测试和 Phase 6 验证。如果未检测到有效的凭证配置文件,请停止并通过带外方式获取凭证。
安全规则
- 绝不读取、回显或打印 AK/SK 值(例如,打印 HUAWEI_ACCESS_KEY 风格的环境变量值是禁止的)。
- 绝不读取或使用 cat 查看 hcloud、obsutil、SDK 或任何其他存储机密的位置中的凭证文件。所有此类文件都应视为机密。
- 绝不要求用户在对话或命令行中直接输入 AK/SK。
- 绝不通过 CLI 的 cli- / cli- 参数或任何等效的带内机密输入形式,调用 hcloud configure set 并传入明文凭证字符串。
- 仅使用 hcloud configure list 检查凭证状态 — 非交互、只读、不回显机密。
步骤 0:确保已安装 skill-quality-cli
在全新环境中运行任何封装后的 hcloud 命令之前,先运行幂等安装程序:
bash scripts/ensure_cli.sh
ensure_cli.sh 的设计是非阻塞的(即使失败也会发出警告并以状态码 0 退出),因此请确认它确实正常工作;如果 CLI 仍未安装,请运行失败即关闭的手动安装程序:
command -v skill-quality-cli >/dev/null 2>&1 && skill-quality-cli version >/dev/null 2>&1 || bash scripts/install_cli.sh
失败处理:如果运行 install_cli.sh 后 skill-quality-cli 仍不可用(网络 / 校验和 / 平台问题),请终止预检查 — 不要回退到裸用 hcloud(下方的强制包装器适用于每次 hcloud 调用;随附的 quality-CLI 安装程序会以 scripts/ensure_cli.sh + scripts/install_cli.sh 的形式包含在创建的 Skill 中)。
验证步骤
⚠️ 强制要求:此技能中的每条
hcloud命令都必须使用skill-quality-cli run --skill-name huawei-cloud-skill-creator --包装——严禁直接调用hcloud。
skill-quality-cli run --skill-name huawei-cloud-skill-creator -- hcloud configure list
skill-quality-cli run --skill-name huawei-cloud-skill-creator -- hcloud ECS ListFlavors --cli-region=cn-north-4 --help
检查输出中是否包含有效配置文件(AK/SK,或临时安全凭证 / 代入身份的委托角色)。
如果不存在有效配置文件,请在此处停止。
-
从 Huawei Cloud Console → 身份与访问管理(IAM)→ 我的凭证 → 新增访问密钥获取凭证。
-
向用户输出以下可直接复制粘贴的环境变量设置代码块(真实值须在本会话之外填写,切勿在聊天中填写)。Agent 绝不能要求用户在对话中输入 AK/SK 值——只能输出以下模板:
# Set Huawei Cloud credentials using the standard HUAWEICLOUD_SDK_* names # (read by hcloud CLI and huaweicloudsdk). The secret key is entered silently. export HUAWEICLOUD_SDK_AK="<your-access-key-id>" read -rs HUAWEICLOUD_SDK_SK; export HUAWEICLOUD_SDK_SK export HUAWEICLOUD_SDK_REGION="cn-north-4" # 临时凭证(可选): export HUAWEICLOUD_SDK_SECURITY_TOKEN="<temporary-token>"可选替代方案(仅限交互式的会话外步骤,绝不填写明文值):在用户的终端中交互式运行 hcloud configure,然后通过 hcloud configure list 验证结果。
-
用户确认已配置环境变量(或已运行 hcloud configure)后,重新运行 skill-quality-cli run --skill-name huawei-cloud-skill-creator -- hcloud configure list。如果配置文件有效 → 恢复第 1 阶段。如果仍然缺失 → 终止,不要继续。
**后续所有 hcloud 和 huaweicloudsdk 调用均复用当前激活的 CLI 配置文件。**不得打印或硬编码机密。不得以 obsutil config、带明文参数的 hcloud configure set、填入明文字符串而非环境变量构建的 SDK 凭证(例如,使用字符串字面量而非环境变量构建 SDK 的 BasicCredentials),或任何其他会话内输入机密的流程替代此检查关卡。
凭证来源优先级
后续调用命令时(第 2/4/5 阶段),技能按以下优先级接受凭证:
- 环境变量——自动扫描所有以 HUAWEI / HW / HWC 为前缀且名称包含 ACCESS_KEY / _AK / SECRET_KEY / _SK 的变量。
- hcloud configure list 配置文件——激活的 CLI 配置文件(在预检查中通过 hcloud configure list 验证);调用 hcloud 时优先使用。
- IAM 委托 / 临时凭证——AK/SK + SecurityToken(程序化访问)。
如果第 4/5 阶段测试开始时以上凭证来源均不可用,提示用户在会话外配置一次,然后重新运行预检查。如果仍不可用,终止流程——严禁跳过需要凭证的步骤。
前置条件
- 已安装并完成身份验证的 hcloud CLI——参考:https://support.huaweicloud.com/qs-hcli/hcli_02_003.html
- 通过上述预检查(hcloud configure list)验证身份验证状态。
- Python 3.8+,并安装 huaweicloudsdk 软件包——按需安装:pip install huaweicloudsdkcore huaweicloudsdkecs。第 2/4/5 阶段开始前,使用 python3 -c "import huaweicloudsdkcore" 验证。SDK 参考:https://console.huaweicloud.com/apiexplorer/#/sdkcenter
- 可用的 Node.js + npx
- Huawei Cloud AK/SK——自动扫描所有以 HUAWEI / HW / HWC 为前缀且名称匹配 ACCESS_KEY / _AK / SECRET_KEY / _SK 的环境变量。严禁在脚本、文档或命令行中硬编码 AK/SK。
- API 参考:https://console.huaweicloud.com/apiexplorer/#/openapi
- skill-quality-cli——由 bash scripts/ensure_cli.sh 确保可用(幂等;已存在时跳过)
- 升级:手动运行 skill-quality-cli upgrade(不自动升级)
- 禁用遥测报告:设置 SKILL_QUALITY_REPORT=0
工作流——六阶段严格流程
Phase 1 (Q&A) → Phase 2 (Tech Research) → Phase 3 (Generate MD)
→ Phase 4 (Test Prep) → Phase 5 (Detailed Testing) → Phase 6 (Cleanup & Report)
严格规则:
- 每个阶段必须输出阶段摘要(phase-N-summary)
- 开始每个阶段前,必须确认上一阶段的摘要文件存在
- 完成全部 6 个阶段后,执行最终检查,确认是否有遗漏的阶段。如有遗漏,从缺失阶段重新开始
- 严禁跳过任何阶段
- 开始任何第 2 阶段的调研或第 4/5 阶段的执行前,必须通过「预检查:需要 Huawei Cloud 凭证」关卡
阶段 1:需求分析(苏格拉底式问答)
目标: 通过逐个提问的对话明确用户需求。
- 每次只问 一个问题,等待用户回复
- 涵盖以下维度:
- 目标服务 — 要使用哪个华为云服务?(ECS、VPC、OBS、RDS、BSS 等)
- 功能范围 — Skill 应执行什么操作?(查询、诊断、部署、监控、管理)
- 执行模式 — 首选 CLI / SDK / API?
- CLI 操作 — 涉及哪些操作?(List、Show、Create、Delete、Update)
- 触发场景 — Agent 何时会调用此 Skill?(日常巡检、故障排查、自动扩缩容)
- 每提问 5 次或涵盖所有维度后 → 显示需求摘要表 → 等待用户确认
- 🛑 在用户明确确认前,不得进入阶段 2
输出: phase-1-summary.json — 经用户确认的需求说明
阶段 2:技术调研(CLI→SDK→API 三级回退)
依赖: 已完成阶段 1 需求分析(存在 phase-1-summary.json)
针对阶段 1 确认的每个功能点,按以下顺序调研其可用性:
- CLI — hcloud 命令。运行 hcloud --cli-region=cn-north-4 --help;参数通过验证即表示该命令存在。
- SDK — huaweicloudsdk。运行 python3 -c "from huaweicloudsdk{service}.v2 import ...”;类导入成功即表示该 SDK 包可用。
- API — 仅限以下两个来源;端点必须来自可信来源,绝不可推断。
核心规则:API 端点取证(严禁猜测)
API 端点仅允许来自以下两个来源。严格禁止通过命名模式推断:
| 可信来源 | 方法 |
|---|---|
| ① SDK 源码 _http_info / resource_path | 在 {service}_client.py 中 grep -A8 _http_info 方法,然后读取 resource_path 值 |
| ② 华为云 API Explorer(api-explorer.huaweicloud.com) | 用户在该网站上搜索并确认 |
❌ 严格禁止的操作:
- 根据其他 API 路径模式推断新端点(例如,根据 coupons 端点推断 claim-vouchers 端点)
- 根据文档描述自行构造 URI
- 使用“常见命名模式”猜测 API 路径
- 如果 SDK 可用,但对应功能在
_http_info中没有方法 → 标记为 ⛔,不得推断
执行规则:
Research feature point N
├── CLI available → Record as CLI mode, record specific command
├── CLI unavailable → Check SDK
│ ├── SDK available → Record as SDK mode
│ │ ├── Read all _http_info methods from SDK source to obtain real REST paths
│ │ │ grep "resource_path" <sdk_path>/{service}_client.py
│ │ └── Feature point's corresponding method has _http_info in SDK → Record real API endpoint
│ │ Feature point's corresponding method has no _http_info in SDK → Mark ⛔, do not infer
│ ├── SDK unavailable → Ask user to confirm endpoint from API Explorer
│ │ ├── User finds endpoint from API Explorer → Record as API mode, note the source
│ │ ├── User provides endpoint (other source) → Record as API mode, mark ⚠ user-provided
│ │ └── User cannot provide → Mark ⛔
│ └── SDK partially available (some methods missing and no corresponding _http_info) → Mark missing features as ⛔
└── Generate feature point research result (including execution mode + real API path if available)
🛑 严禁 Agent 自行猜测或编造 API 路径。如果 SDK 源码和 API Explorer 中都没有该端点,则标记为 ⛔——该端点不存在。
查找 SDK 客户端源码路径的提示:
python3 -c "import huaweicloudsdk{service}.v2 as m; import os; print(os.path.dirname(m.__file__))" # package path
grep "_http_info" <path>/{service}_client.py # all API endpoints
grep -A8 "_{method}_http_info" <path>/{service}_client.py # "resource_path" = real REST endpoint
输出: phase-2-summary.json — 每个功能点的执行模式(CLI/SDK/API/⛔)及相应命令/代码/API 路径
阶段 3:文档生成
依赖: 已完成阶段 2 技术调研(存在 phase-2-summary.json)
根据阶段 2 的结论生成 Skill 文件:
-
为 Skill 命名 — 使用 huawei-cloud-{product}-{function},并使 frontmatter 中的 name 与目录名一致。
-
语言 — 默认使用英语生成 SKILL.md。可在 references/ 中添加中文文档作为补充。主 SKILL.md 的 frontmatter description、章节标题、命令示例和所有说明内容都必须使用英语。
-
Frontmatter — 包含 name、带有功能摘要和触发条件的 description,以及不超过五个标签。不要生成 version 字段。
-
创建目录结构:
skills/{skill-name}/ → SKILL.md, references/ (iam-policies.md recommended; cli-installation-guide.md recommended when CLI is used; verification-method.md / dataflow-diagram.md / acceptance-criteria.md recommended), scripts/test-cli-commands.sh, scripts/ensure_cli.sh + scripts/install_cli.sh (quality CLI, required — see rule 14), templates/test-vars.json -
SKILL.md 内容生成规则:
- CLI — 命令格式:hcloud --cli-region={region} [--params](模板;执行前请将占位符替换为实际值)
- SDK — Python 脚本示例(python3 -c "..."),使用实际的 SDK 客户端调用
- API — curl 命令 + 用户提供的端点(标明由用户提供)
- Unavailable — 标明需要手动验证,不要生成具体命令
-
SKILL.md 必需章节:
- YAML Frontmatter(关键)——必须可通过 yaml.safe_load 解析为有效 YAML:name + description(功能摘要 + 触发条件)+ tags(列表,≤5);不得包含 version 字段
- Overview(高优先级)——功能概述、架构、适用场景
- Prerequisites(高优先级)——CLI 版本、身份验证配置、IAM 权限
- Workflow(高优先级)——技能工作流步骤
- Core Commands(高优先级)——按功能分组的命令示例(仅包含真实、可执行的命令)
- Parameter Confirmation(高优先级)——用户可配置参数表
- Reference Documents(关键)——指向 references/ 下文档的链接
- KooCLI Command Format Standard(低优先级)——涉及 CLI 时必需;包含服务、操作、区域和参数语法
-
生成 Mermaid 数据流图 → references/dataflow-diagram.md。
-
生成 IAM 策略 → 使用最小权限原则,生成 references/iam-policies.md。IAM 编写规则(强制):
- 严禁虚构伪造 — 切勿虚构、猜测或编造 IAM Action 名称、系统策略名称或语法。
- 必须通过官方来源核实 — 至少通过以下一种官方来源进行核实:
- KooCLI Schema 查询:hcloud IAM GetAuthorizationSchemaV5 --cli-region=cn-north-4 --service_code=<service_code> — 从响应中复制准确的 name 和 urn_template 值;不得重新调整大小写或规范化。
- 核对官方文档 — 查阅华为云《权限及授权项说明》/《API参考》,确认标准的 service:resource_type:action 命名方式。
- 查询系统策略 — 通过 hcloud IAM ListPoliciesV5 + hcloud IAM GetPolicyVersionV5 核实真实的系统策略名称和准确的 JSON 语法(document 字段)。
- 策略版本(Version)标准:
- IAM 5.0 身份策略使用 "Version": "5.0"(系统策略与现代自定义策略标准;已验证格式如 {"Version":"5.0","Statement":[{"Effect":"Allow","Action":[...]}]})。
- 仅在兼容传统 IAM v3 模板时使用 "Version": "1.1"。
- 禁止书写未经官方验证的版本号(如 "1.0")。
-
记录 API 参考 — 在 phase-2-summary.json 中保留已核实的 API 路径。如果生成的 Skill 需要可复用的 API 文档,请在 references/ 下添加一个使用允许的 kebab-case 文件名的参考文件。
-
文件包限制 — 文件内容总大小 ≤ 40 MB,文件总数 ≤ 30,且 SKILL.md ≤ 500 行。将超出大小限制的 SKILL.md 内容拆分到 references/ 中。
-
文件扩展名允许列表 — 每个文件必须使用以下 46 种扩展名之一: .md、.mdx、.txt、.json、.json5、.yaml、.yml、.toml、.js、.cjs、.mjs、.ts、.tsx、.jsx、.py、.sh、.ps1、.psm1、.psd1、.r、.rb、.go、.rs、 .swift、.kt、.java、.cs、.cpp、.c、.h、.hpp、 .sql、.csv、.tsv、.ini、.cfg、.conf、.env、.properties、.dat、.xml、.html、.css、.scss、.sass、.svg。 无扩展名或扩展名不在允许列表中的文件必须删除或重命名。
-
YAML frontmatter 格式检查 — SKILL.md frontmatter 必须是有效的 YAML 文档:根节点为映射,name/description 非空,tags ≤5,不含 version,description 使用块标量格式。 多余的 :/引号/错误缩进都会导致 frontmatter 无效(严重问题);继续操作前必须重新生成。
-
变更范围 — 一个拉取请求只能修改一个 Skill 目录。存在 base ref 时,使用 bash scripts/validate-skill.sh -s {skill-path} -b 验证 PR 差异。
-
Quality-CLI 集成(每个生成的 Skill 均为必需) — 生成的 Skill 必须具备与此创建器 Skill 本身相同的质量报告能力(skill-quality-cli 遥测,可通过 SKILL_QUALITY_REPORT=0 选择退出):
- 脚本:将此 Skill 的 scripts/ 中的 scripts/ensure_cli.sh 和 scripts/install_cli.sh 复制到生成的 Skill 的 scripts/ 中(内容必须完全相同;不得手动重写)。
- SKILL.md 四点嵌入(幂等 — 已存在的部分跳过):
a. 在 Overview 末尾添加 1 句:Dependency:遥测数据通过 skill-quality-cli 自动收集(如果尚未安装,将由 scripts/ensure_cli.sh 安装)。
b. 在 Prerequisites 中追加:- skill-quality-cli — 由 bash scripts/ensure_cli.sh 确保就绪(幂等,已存在时跳过),另加 2 行 - 升级:手动运行 skill-quality-cli upgrade(不自动升级)与 - 禁用遥测报告:设置 SKILL_QUALITY_REPORT=0
c. 在核心流程第一个
bash 代码块内前置强制指令(用生成的 Skill 自己的 name 替换 <name>):> **⚠️ 强制要求:此 Skill 中的每个 hcloud 命令都必须使用 skill-quality-cli run --skill-name <name> -- 封装** — 严禁直接调用 hcloud 命令。 d. 将 SKILL.md 所有bash 代码块内的裸 hcloud ... 命令封装为 skill-quality-cli run --skill-name -- hcloud ...(已封装的跳过; 模板行不封装) - references:在生成的 references/cli-installation-guide.md 中合并 skill-quality-cli 章节(ensure_cli.sh 幂等地确保就绪 / 手动安装 install_cli.sh / 手动升级 / 设置 SKILL_QUALITY_REPORT=0 关闭)— 不得删除既有 KooCLI 安装与认证内容。
- 执行名称:所有嵌入内容均使用生成的 Skill 自身的 frontmatter name;禁止使用此创建器的 name。
- 重新验证:注入后重新运行 bash scripts/validate-skill.sh -s {skill-path},确认 SKILL.md ≤ 500 行、文件 ≤ 30。 🛑 严禁生成臆造的 URI / 虚构的 API 路径。第 2 阶段未验证的功能点不得编写具体命令。
输出: phase-3-summary.json — 生成的文件列表和结构验证结果
第 4 阶段:测试准备
依赖项: 第 3 阶段文档生成已完成(phase-3-summary.json 已存在)
- 生成测试用例 — 根据第 2/3 阶段的功能点拆分测试用例
- CLI 用例 — 每条 hcloud 命令对应一个用例;例如,
hcloud ECS ListServersDetails --cli-region=cn-north-4 --limit=1- SDK 用例 — 每次 SDK 调用对应一个用例;例如,list_sub_customer_coupons(limit=1) — 注意:BSS SDK 仅支持 cn-north-1 等区域,BSS 示例请使用 --cli-region=cn-north-1(或 HUAWEI_REGION=cn-north-1)
- API 用例 — 每个用户提供的端点对应一个用例;例如,curl -X GET {endpoint}
- 自带脚本冒烟用例 — 每个自带脚本至少有 1 条正例:有 --help/-h 的脚本使用 --help 进行冒烟测试;否则使用 bash -n <脚本绝对路径> 进行语法检查。脚本路径必须解析为绝对路径(如 bash $PWD/scripts/ensure_cli.sh --help),避免执行时相对路径失效。示例:bash $PWD/scripts/ensure_cli.sh --help / bash -n $PWD/scripts/validate-skill.sh
-
将测试用例保存为 JSON → templates/test-vars.json:
{"test_cases": [{"id": "TC-01", "name": "...", "command": "...", "expected": "..."}]} -
向用户展示所有测试用例以供确认
-
运行测试:
- 从环境变量读取 AK/SK:自动扫描所有以 HUAWEI / HW / HWC 开头的环境变量,匹配其中包含 ACCESS_KEY / _AK / SECRET_KEY / _SK 的键值对
- 如果没有有效的 AK/SK 环境变量或 CLI 配置文件:重新运行 Pre-check 模板并停止 — 绝不在聊天中索要 AK/SK;如果用户不提供环境变量,则终止。
- 逐个执行测试用例
- 执行变更命令(Create/Update/Delete)之前,必须提示用户并等待确认
-
测试验证流程:
Each case → Try CLI execution ├── ✅ Success → Record PASS └── ❌ Failure → Check syntax issues ├── ✅ Syntax issue → Fix and retry └── ❌ Non-syntax issue → Fallback to SDK ├── ✅ Success → Record PASS (SDK) └── ❌ Failure → Fallback to API (user-provided endpoint) ├── ✅ Success → Record PASS (API) └── ❌ Failure → Record FAIL ⛔ requires manual verification
输出: phase-4-summary.json — 测试用例列表 + 每个用例的执行结果
第 5 阶段:详细测试
依赖项: 第 4 阶段测试准备已完成(phase-4-summary.json 已存在)
- 完整回归测试: 执行第 4 阶段生成的所有测试用例 — 必须真实执行所有 CLI 回归用例
- 资源生命周期测试(涉及资源创建/修改/删除的 Skills):
- 创建资源 → 验证创建成功(通过查询确认)→ 运行时查询 → 销毁资源 → 验证释放
- 测试报告需输出已创建/修改/删除资源的信息
- 每个步骤执行前都要提示用户并等待确认
- 管理类 Skills:CRUD → 端到端完整测试;仅查询 → 将查询结果输出到测试报告
- 生成报告: 按用例汇总测试结果;记录详细的资源变更;为失败用例提供详细错误信息
输出: phase-5-summary.json — 详细测试结果 + 资源操作记录
第 6 阶段:资源清理与合规性检查
依赖项: 第 5 阶段详细测试已完成(phase-5-summary.json 已存在)
-
资源清理:
- 检查第 5 阶段创建的所有资源是否均已释放
- 未释放的资源 → 提示用户并尝试清理
- 记录清理结果
-
华为云 Skill 规范合规性检查(依据华为云Skill检查规范):
- 存在 SKILL.md(Critical)— 检查文件是否存在
- Skill 目录位于 skills/ 下(Low)— 路径格式:skills/{category}/{subcategory}/{skill-name}/
- Skill 包命名约定(High)— 目录名称与 huawei-cloud-{product}-{function} 匹配
- 每个 PR 仅提交一个 Skill(Critical)— 使用 git diff 检查 PR 更改是否仅影响单个 Skill 目录
- 存在 YAML Frontmatter(Critical)— 搜索 --- 分隔符
- 存在 name 字段(Critical)— frontmatter 中存在 name 字段,且与目录名称匹配
- 存在 description 字段(Critical)— frontmatter 中存在 description 字段,且包含功能摘要和触发词
- description 包含触发词(Medium)— 接受 Triggers include:、Use when 或等效的触发条件
- 不应包含 version 字段(Low)— frontmatter 中没有 version 字段
- Overview 部分(High)— 匹配 Overview 或 概述
- Prerequisites 部分(High)— 匹配 Prerequisites 或 前置条件
- Workflow 部分(High)— 匹配 Workflow 或 工作流
- Core Commands 部分(High)— 匹配 Core Commands 或 核心命令
- Parameter Confirmation 部分(High)— 匹配 Parameter Confirmation 或 参数确认
- Reference Documents 部分(Critical)— 匹配 Reference Documents、References 或 参考文档
- KooCLI Command Format Standard 部分(Low)— 涉及 CLI 时必需;匹配英文或中文标题
- references/cli-installation-guide.md(Medium)— 涉及 CLI 时建议提供,检查文件是否存在(可选)
- Quality-CLI 集成(High)— scripts/ensure_cli.sh + scripts/install_cli.sh 存在;SKILL.md 包含 skill-quality-cli run Mandatory 要求和经过封装的 hcloud 命令
- references/iam-policies.md(Medium)— 建议提供,检查文件是否存在(可选)
- references/verification-method.md(Medium)— 建议检查文件是否存在
- references/acceptance-criteria.md(Low)— 建议检查文件是否存在
- 参考文档采用 kebab-case 命名(Low)— references/ 下的文件名均为小写 kebab-case
- 凭据硬编码(Critical)— 搜索凭据硬编码模式和 CLI 凭据配置
- 跨 Skill 直接调用(Critical)— 搜索其他 Skill 名称
- CLI 写入操作需确认(Low)— 检查是否会提示用户确认
- 服务名称要求(Medium)— 每个具体的 hcloud 服务名称均与 KooCLI 服务名称匹配,且以大写或标题格式开头,例如 ECS、CloudPond 或 IAMAccessAnalyzer
- 操作名称采用 PascalCase(Medium)— 每个具体的操作名称均使用 PascalCase
- 包含 --cli-region(Medium)— 每个具体的 CLI 命令均包含 region 参数
- Skill 总大小 ≤ 40 MB(Medium)— 汇总 Skill 目录下所有文件的内容大小
- 文件总数 ≤ 30(Medium)— 统计 SKILL.md 和所有子目录中的文件
- SKILL.md 行数 ≤ 500(Medium)— 将超出部分拆分到 references/
- 文件扩展名在允许列表中(Medium)— 拒绝无扩展名的文件以及不在 46 种类型允许列表中的扩展名
-
最终报告:
- 合并阶段 1-6 的阶段摘要
- 输出完整的创建报告
- 标记所有未完成的项目
-
最终六阶段完整性检查:
Check phase-1-summary.json exists → If missing, restart from Phase 1 Check phase-2-summary.json exists → If missing, restart from Phase 2 Check phase-3-summary.json exists → If missing, restart from Phase 3 Check phase-4-summary.json exists → If missing, restart from Phase 4 Check phase-5-summary.json exists → If missing, restart from Phase 5 Check phase-6-summary.json exists → If missing, restart from Phase 6所有阶段均已完成 → 创建完成。若有阶段缺失 → 从缺失阶段重新开始。
-
清理阶段摘要文件: 完整性检查通过后,删除 Skill 目录下所有 phase--summary.json 文件。只有在完整性检查完全通过且已验证 后,才能执行删除(该路径必须是正在测试的 Skill 的合法目录)。不要将删除操作与其他检查串联;仅对 phase--summary.json 使用受保护的带引号单条命令。
注意: 只有在完整性检查完全通过后才能执行清理。如果存在缺失阶段,请勿清理;从缺失阶段重新开始。 输出: phase-6-summary.json — 最终创建报告 + 合规性检查结果
KooCLI 命令格式标准
hcloud --cli-region= [--key=value ...] — 底层语法格式。
- 服务名称 — 精确的 KooCLI 服务名称,以大写或首字母大写形式开头,例如 ECS、VPC、CloudPond、IAMAccessAnalyzer
- 操作名称 — PascalCase,例如 ListServers、ShowServer
- 区域参数 — --cli-region=,例如 --cli-region=cn-north-4
- 简单参数 — --key=value,例如 --server_id=xxx
- 索引参数 — --key.1=value1,例如 --servers.1.id=xxx
核心命令
真实命令区(可直接执行验证)
以下为真实可执行的只读命令,用于 Pre-check 与 Phase 2/4/5 真实验证({path} 等为占位符,实际执行时替换为真实路径,见参数确认):
| Command | Purpose |
|---|---|
hcloud ECS ListFlavors --cli-region=cn-north-4 --limit=1 | Phase 2/5:查询 ECS 规格(只读,真实可执行) |
hcloud ECS ListServersDetails --cli-region=cn-north-4 --limit=1 | Phase 4/5:查询 ECS 列表(只读,真实可执行) |
hcloud configure list | Pre-check:校验 CLI 凭据配置(只读,真实可执行) |
python3 -c "import huaweicloudsdkcore" | 前置检查:SDK 可用性(真实可执行) |
命令说明区(格式说明,非直接执行)
以下行仅作格式说明,命令行提取器只提取以 bash / hcloud / python3 / curl 开头的真实命令;以 # 开头的行是说明,会被跳过:
- hcloud CLI 通用格式:hcloud --cli-region= [--key=value ...],详见 KooCLI 命令格式标准。
- 结构/规范校验(Phase 3/6):执行 bash scripts/validate-skill.sh 并传入 -s 参数指向目标 skill 目录(如 -s skills/devtools/common/huawei-cloud-skill-creator)。
- 功能测试(Phase 4/5):执行 bash scripts/test-cli-commands.sh,传入 -s 参数指向 skill 目录、-e 参数选择执行模式(cli/sdk/api/auto)。
- 质量 CLI 就绪:执行 bash scripts/ensure_cli.sh(幂等;缺失时自动安装 skill-quality-cli),手动安装用 bash scripts/install_cli.sh。
test-cli-commands.sh 仅执行白名单命令(以 hcloud/python3/curl/bash 开头),其他命令会被拒绝且不会执行。validate-skill.sh 对不存在的 skill 目录会明确报错(exit 1)。
参数确认
| Parameter | Required | Description | Example |
|---|---|---|---|
| skill-path | 是 | 目标 Skill 目录路径 | 例如,huawei-cloud-ecs-manage |
| region | 否 | 华为云区域(BSS 仅支持 cn-north-1 等区域) | cn-north-4(BSS:cn-north-1) |
| executor | 否 | 执行模式(cli/sdk/api) | cli |
边缘情况
| 场景 | 处理方式 |
|---|---|
| 用户跳过问题,直接说“开始” | 提醒:必须先完成需求分析,从阶段 1 的问题开始 |
| 未设置 AK/SK 环境变量 | 重新执行上方的 预检查。输出环境变量设置模板(export HUAWEI_ACCESS_KEY=... / export HUAWEI_SECRET_KEY=...),让用户在聊天之外填写。绝不要求用户在聊天中粘贴 AK/SK。如果用户不进行配置,则终止流程,严格禁止跳过 |
| hcloud CLI 不支持目标服务 | 阶段 2 回退到 SDK → 阅读 SDK 源码中的 _http_info → 如果仍未找到,则标记 ⛔ |
| SDK 包不存在 | 检查包名变体,如果仍未找到,则告知用户,不要推断 API |
| 用户不确定 API 端点 | 标记 ⛔,需要手动验证,不要捏造端点。如果 SDK 中有该方法,则读取 _http_info 获取真实路径 |
| SDK 有方法,但 _http_info 中没有 resource_path | 标记 ⛔,此 API 在 SDK 中不存在,不要推断 |
| 尝试通过路径模式推断 API(例如从 coupons 推断 claim-vouchers) | ❌ 严格禁止。该 API 不存在 |
| 资源创建测试失败 | 分析错误原因(权限/配额/参数)→ 修复并重试 |
| 资源释放失败 | 重试 3 次,如果仍然失败,则告知用户手动清理 |
| 运行测试时缺少 templates/test-vars.json | test-cli-commands.sh 会报告 FATAL 并以 1 退出(不执行测试)。测试前重新执行阶段 4,生成 templates/test-vars.json |
| 用户拒绝资源生命周期测试 | 告知用户:资源生命周期测试是必需步骤,不能跳过;如果用户仍然拒绝,则终止流程 |
| 阶段 6 发现缺少阶段 | 从缺少的阶段重新开始,直到全部 6 个阶段完成 |
| SDK 有方法,但实际 API 路径未知 | 阅读 SDK 源码,通过 grep _http_info {service}_client.py 获取真实路径 |
| BSS 服务 SDK 初始化失败(GlobalCredentials) | BSS 是全局服务,必须使用 GlobalCredentials 和 with_endpoints,而不能使用 BasicCredentials 和 with_region;BSS 仅支持 cn-north-1 等区域(--cli-region=cn-north-1 / HUAWEI_REGION=cn-north-1) |
| list_sub_customer_coupons 查询返回 400 | BSS 的 limit 参数最大值为 100,而非默认的 200;BSS SDK 示例使用区域 cn-north-1 |
验证方法
规范合规性验证
bash scripts/validate-skill.sh -s {skill-path} # Check against 华为云Skill检查规范
功能测试
bash scripts/test-cli-commands.sh -s {skill-path} -e {cli|sdk|api} # CLI priority → SDK fallback → API fallback
参考文档
- references/iam-policies.md — 最小权限 IAM 策略
- references/verification-method.md — 验证方法详情
- references/dataflow-diagram.md — Mermaid 数据流图
- references/acceptance-criteria.md — 验收标准
- references/related-commands.md — 命令快速参考
备注与设计原则
- 严格的六阶段流水线 — 各阶段相互依赖、按顺序执行,不可跳过
- 阶段 2/3 以事实为依据 — 端点仅取自 SDK _http_info/API Explorer(不推断);命令依据阶段 2 的结论;没有端点 → 标记 ⛔
- 阶段 4-6 验证 — 每条命令都必须实际执行(变更操作需要确认);阶段 6:清理 + 合规性 + 完整性;修复失败项并重新验证
- 凭据安全 — 不得硬编码 AK/SK;从环境变量(HUAWEI_/HW_/HWC_* AK/SK 标记)或当前活动的 CLI 配置文件读取;不得使用带有明文密钥的 hcloud configure set
- 凭据必需 — 如果预检查后仍缺少 AK/SK,输出环境变量设置模板,供用户在聊天之外填写;绝不要求用户在聊天中粘贴 AK/SK;如果仍未配置,则终止
- BSS SDK 必须使用 GlobalCredentials + with_endpoints,不得使用 BasicCredentials 和 with_region。
- BSS 区域:BSS 服务仅支持 cn-north-1 等区域;涉及 BSS 的示例命令应标注 --cli-region=cn-north-1(SDK 初始化也用 cn-north-1),test-defaults.json 中 region: cn-north-1 即为此口径。
- 清理 — 生命周期测试期间创建的资源必须在阶段 6 释放
- 最小权限 — iam-policies.md 提供最小权限策略 JSON;skills-lock.json 中的 skillPath 为 skills/devtools/common/huawei-cloud-skill-creator/SKILL.md
- IAM 编写(仅限官方依据) — IAM 操作名称必须通过 GetAuthorizationSchemaV5 / docs / ListPoliciesV5 验证;绝不推断;IAM 5.0 使用 Version 5.0,1.1 仅用于旧版 v3