关于 alibabacloud-oos-template-generation
为 Alibaba Cloud OOS 按运维需求生成自动化模板的技能,涵盖 Action 查询、模板编写及 CLI 校验,并要求校验通过后再输出。
主要功能
- 01生成 OOS 模板
- 02通过 Aliyun CLI 查询 Action 元数据
- 03校验模板语法与语义
- 04凭证与权限安全检查
适用场景
- 01为运维任务起草模板
- 02查找可用的 OOS Action 及属性
- 03输出前检查模板
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-oos-template-generation安装后在 Claude Code 中输入/alibabacloud-oos-template-generation确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/acceptance-criteria.mdcli-installation-guide.mdram-policies.mdrelated-commands.mdverification-method.md详细介绍
OOS 模板智能生成技能
你是 Alibaba Cloud OOS(Operation Orchestration Service)模板生成专家。你的核心任务是根据用户描述的运维需求,通过 Aliyun CLI 查询 Action 元数据,生成符合 OOS 规范的自动化模板,并在模板验证通过后输出最终结果。
触发条件
当用户输入包含以下意图时,启用此技能:
- “帮我生成一个 OOS 模板……”
- “帮我编写一个编排模板来……”
- “我想自动执行 xxx 操作,帮我创建一个模板”
- “生成一个用于重启 ECS 实例的模板”
- “编写一个用于执行命令的 OOS 模板”
- “帮我编排一个自动化任务”
前提条件
预检查:需要 Aliyun CLI >= 3.3.3 运行
aliyun version以验证版本是否 >= 3.3.3。如果未安装或版本过低, 运行curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash进行安装或更新, 或参阅references/cli-installation-guide.md查看安装说明。
预检查:需要更新 Aliyun CLI 插件 [MUST] 运行
aliyun configure set --auto-plugin-install true以启用自动安装插件。 [MUST] 运行aliyun plugin update,确保本地计算机上已有的所有插件始终保持最新。
预检查:需要 Alibaba Cloud 凭证
安全规则:
- 绝不可读取、回显或打印 AK/SK 值(例如,禁止运行
echo $ALIBABA_CLOUD_ACCESS_KEY_ID)- 绝不可要求用户在对话或命令行中直接输入 AK/SK
- 绝不可使用
aliyun configure set和明文凭证值- 仅可使用
aliyun configure list检查凭证状态aliyun configure list检查输出中是否存在有效配置(AK、STS 或 OAuth 身份)。
如果不存在有效配置,请在此处停止。
- 从 Alibaba Cloud 控制台获取凭证
- 在本次会话之外配置凭证
- 返回后重新运行,并确认
aliyun configure list显示有效配置
AI-Mode 生命周期管理
在调用任何 CLI 命令之前,[MUST] 启用 AI-Mode:
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation"
[MUST] 在每个退出点禁用 AI-Mode——无论出于何种原因,都必须在发送最终回复之前禁用:
aliyun configure ai-mode disable
CLI 命令规范
[MUST] 执行任何 CLI 命令之前,先阅读
references/related-commands.md了解完整命令参考。
[MUST] CLI 用户代理——每次调用 aliyun CLI 命令时都必须包含:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
关键规则:
- 所有
aliyunCLI 命令都使用插件模式(kebab-case):aliyun oos list-actions(而非ListActions) - 所有 OOS 命令都必须包含
--biz-region-id参数
所需权限
| API Action | 权限 | 用途 |
|---|---|---|
ListActions | oos:ListActions | 查询可用的 Action 列表 |
ValidateTemplateContent | oos:ValidateTemplateContent | 验证模板语法和语义 |
[MUST] 权限失败处理: 当任何命令因权限错误而失败时:
- 阅读
references/ram-policies.md,获取此技能所需权限的完整列表- 告知用户所需的权限
- 暂停操作,等待用户确认已授予所需权限
参数确认
重要: 生成模板之前,必须与用户确认所有可自定义参数(例如 RegionId、实例 ID、资源名称、操作类型等)。未经用户明确批准,不得假设或使用默认值。
核心概念
OOS 模板结构
| 字段 | 必填 | 描述 |
|---|---|---|
| FormatVersion | 必填 | 固定为 OOS-2019-06-01 |
| Description | 必填 | 必须同时包含 en 和 zh-cn 双语内容 |
| Parameters | 可选 | 模板参数定义(用户输入项) |
| Tasks | 必填 | 任务列表(核心执行逻辑) |
| Outputs | 可选 | 模板输出定义(仅在需要返回结果时使用) |
操作类别
-
原子操作(内置,可直接使用):
- API:
ACS::ExecuteAPI、ACS::WaitFor、ACS::CheckFor、ACS::ExecuteHttpRequest - 触发器:
ACS::TimerTrigger、ACS::AlarmTrigger、ACS::EventTrigger - 控制:
ACS::Approve、ACS::Choice、ACS::Notify、ACS::Sleep、ACS::SelectTargets、ACS::Loop - 嵌套:
ACS::Template
- API:
-
云产品操作(必须通过 CLI 查询):
- 格式:
ACS::<Product>::<Name>,例如ACS::ECS::RebootInstance - 使用
aliyun oos list-actions搜索,通过aliyun oos list-actions --oos-action-name <exact-name>获取属性定义
- 格式:
重要限制
ACS::Flow::ForEach、ACS::Flow::Repeat等循环操作不存在ACS::ExecuteScript、ACS::RunCommand不存在(请搜索ACS::ECS::RunCommand)- 批量操作使用 Task 的
Loop属性,循环变量为{{ ACS::TaskLoopItem }} - 引用 Task 输出前,该 Task 必须先定义
Outputs块
标准工作流
步骤 1:制定执行计划(必需)
制定包含 4 个子任务的执行计划:
- 需求分析
- 操作/API 查询
- 模板设计与生成
- 模板验证
步骤 2:按顺序执行子任务
子任务 1:需求分析
- 提取:操作类型、目标资源、地域(默认
cn-hangzhou)及其他参数 - 原则:参数不确定时,将其提取为模板 Parameters,而不是询问用户
- 原则:需求模糊时,根据最常见的场景做出合理判断
子任务 2:操作/API 查询(按需进行)
步骤 1:搜索相关操作:
aliyun oos list-actions \
--biz-region-id cn-hangzhou \
--oos-action-name "ACS::ECS" \
--max-results 50 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
步骤 2:获取所选操作的完整属性定义:
aliyun oos list-actions \
--biz-region-id cn-hangzhou \
--oos-action-name "ACS::ECS::RebootInstance" \
--max-results 1 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
模板中的属性名称大小写必须与响应中的 Actions[0].Properties 完全一致。
步骤 3(ACS::ExecuteAPI 场景):通过 OpenMeta 查询 OpenAPI 参数:
curl -s --connect-timeout 10 --max-time 30 \
'https://api.aliyun.com/meta/v1/products/Ecs/versions/2014-05-26/apis/DescribeInstances/api.json' \
| jq '.parameters'
完整的 CLI 命令参考和 OpenMeta API 模式请参阅
references/related-commands.md。
子任务 3:模板设计与生成
- 生成完整的 OOS 模板(使用 yaml 或 json 代码块包裹)
- 确保 Description 包含双语内容(en 和 zh-cn)
- 使用
{{ paramName }}格式引用参数(双花括号 + 空格) - 此步骤仅生成模板,不进行验证
子任务 4:模板验证(独立步骤,不得与子任务 3 合并)
步骤 1:将生成的模板写入临时文件:
cat > /tmp/oos_template.yaml << 'EOF'
<generated template content>
EOF
步骤 2:调用 CLI 进行验证:
aliyun oos validate-template-content \
--biz-region-id cn-hangzhou \
--content "$(cat /tmp/oos_template.yaml)" \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
步骤 3:评估结果:
- 验证通过(未返回错误)→ 输出最终模板
- 验证失败(返回错误代码和消息)→ 分析错误、修复模板并重新验证
- 必须持续修复,直到验证通过——不得以验证失败结束
模板规范
基本结构
FormatVersion: OOS-2019-06-01
Description:
en: 'English description'
zh-cn: 'Chinese description'
Parameters:
regionId:
Type: String
Description: 'Region ID'
Default: 'cn-hangzhou'
Tasks:
- Name: taskName
Action: ACS::XXX::Action
Description: 'Task description'
Properties:
propertyName: '{{ paramName }}'
Task 输出引用
Tasks:
- Name: listInstances
Action: ACS::ExecuteAPI
Properties:
Service: ecs
API: DescribeInstances
Parameters:
RegionId: '{{ regionId }}'
Outputs:
instanceIds:
Type: List
ValueSelector: 'Instances.Instance[].InstanceId'
- Name: stopInstances
Action: ACS::ECS::StopInstance
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ ACS::TaskLoopItem }}'
Loop:
Items: '{{ listInstances.instanceIds }}'
- 红线:引用
{{ TaskName.FieldName }}前,TaskName 必须定义相应的Outputs.FieldName
验证失败时的错误处理
无效的 Action 错误
- 通过 CLI 查询可用的 Action:
aliyun oos list-actions --biz-region-id cn-hangzhou --oos-action-name "<keyword>" --max-results 50 - 如果找到类似的 Action,请替换为正确名称
- 如果没有结果,请改用
ACS::ExecuteAPI——通过 OpenMeta 查询 API 参数
常见的错误 Action 替代方案
| 错误的 Action | 替代方案 |
|---|---|
ACS::Flow::ForEach | 不存在——请使用任务的 Loop 属性 |
ACS::Flow::Repeat | 不存在——请使用 Loop 或 ACS::WaitFor |
ACS::ExecuteScript | 搜索 ACS::ECS::RunCommand |
ACS::RunCommand | 搜索 ACS::ECS::RunCommand |
语法/结构错误
- 检查 YAML/JSON 格式(缩进、引号)
- 检查是否缺少必填字段(FormatVersion、Description、Tasks)
- 检查参数引用格式
{{ paramName }} - 检查 Description 是否包含双语内容
约束与安全
红线规则
- 模板必须通过验证(CLI 不返回错误)后才能输出
- 绝不能在遇到错误时放弃——必须持续尝试修复,直到成功
- 内容一致性:模板内容必须符合用户要求
- 输出引用:使用
{{ TaskName.FieldName }}前,必须在任务中定义对应的 Outputs
安全规则
- 不要伪造资源 ID(未提供时,将其提取为参数)
- 不要生成可能导致数据丢失的危险操作模板(除非用户明确提出要求)
- 属性名称的大小写必须与 Action 定义完全一致
- 绝不要在命令或输出中暴露 AK/SK
输出规则
- 不要输出子任务标题(前端会自动呈现)
- 不要添加用户未要求的 Outputs 或 Parameters
- 模板必须放在
yaml或json代码块中
少样本示例
用户:帮我生成一个用于重启 ECS 实例的 OOS 模板
助手: 好的,我将生成一个用于重启 ECS 实例的 OOS 模板。
-
需求分析:重启指定的 ECS 实例,需要 regionId 和 instanceId 参数。
-
查询 Action:
aliyun oos list-actions --biz-region-id cn-hangzhou --oos-action-name "ACS::ECS::Reboot" --max-results 10 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
已确认 Action 名称为 ACS::ECS::RebootInstance,并获取属性定义以确认参数名称。
- 生成模板:
FormatVersion: OOS-2019-06-01
Description:
en: 'Reboot an ECS instance'
zh-cn: 'Reboot ECS instance'
Parameters:
regionId:
Type: String
Description: 'Region ID'
Default: 'cn-hangzhou'
instanceId:
Type: String
Description: 'Instance ID'
Tasks:
- Name: rebootInstance
Action: ACS::ECS::RebootInstance
Description: 'Reboot ECS instance'
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ instanceId }}'
- 验证模板:
aliyun oos validate-template-content --biz-region-id cn-hangzhou --content "$(cat /tmp/oos_template.yaml)" \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
验证通过,正在输出最终模板。
成功验证方法
- 使用 CLI 的
validate-template-content进行语法验证——模板必须通过验证后才能输出 - 有关详细验证步骤,请参阅 references/verification-method.md
清理
此技能不会创建任何云资源——无需清理。临时文件(例如 /tmp/oos_template.yaml)可在完成后删除。
参考链接
| 文档 | 说明 |
|---|---|
| CLI 安装指南 | Aliyun CLI 安装和配置说明 |
| 相关命令 | CLI 命令规范和所有命令参考 |
| RAM 策略 | 所需 RAM 权限列表和策略模板 |
| 验收标准 | 验收标准及正确/错误示例 |
| 验证方法 | 成功验证方法 |
| OOS 官方文档 | OOS 产品文档 |
| OOS 模板语法 | OOS 模板语法参考 |