SuperAPI AI 工具集

create-bk-cli-system

编程与开发

查看项目

更新于 10-16 08:54

技能介绍

用途

该技能用于为 bk-cli 扩展 system 能力,统一覆盖三类工作:新增一个顶层 system 命令;给已有 system 新增一个或多个 action;给已有 system 新增一层 subsystem,并在 subsystem 下新增 YAML 或 Go actions。技能强调先判断 system 是否已存在,再决定走哪条分支,不要先写代码再回头补注册或补结构。

主要能力

技能提供创建/扩展 system 时必查的共享契约摘要,详细规则以 docs/design.md 为准。它规定了 system 存在性检查顺序、subsystem 层级限制(当前只允许一层)、action 选型规则(优先 YAML,满足本地校验、分支、编排、分页聚合、本地专属 flags、body 合成或返回结构调整等条件时使用 Go-implemented action)、YAML action 字段与 authConfig 约束、params 规则、body_schema 与 body_required 用法,以及共享 helper 地图(运行时解析、请求执行、flags 注册、校验、序列化、测试 helper)。

使用方式

推荐读取顺序为:先读 AGENTS.md 和 docs/design.md 确认仓库边界与设计基线;再读技能中的“扩展 system 必查摘要”;最后按分支流程判断是新建 system 还是给已有 system 增加 action。第零步先判断是否需要 subsystem,若需求天然分成多个模块,给用户扁平 action 或一层 subsystem 两个选项。第一步按顺序检查 system 是否已存在:阅读 AGENTS.md、docs/design.md,查看 cmd/system/register.go 的 systemCatalog(),检查 cmd/system/<system>.go、cmd/system/<system>/spec.go、cmd/system/<system>/actions.yaml、cmd/system/<system>/<subsystem>/spec.go、cmd/system/<system>/<subsystem>/actions.yaml 是否存在,搜索 new<System>SystemSpec() 或 NewSystemSpec() 确认是否已接入 catalog。

分支 A(system 不存在):新增 cmd/system/<system>.go 薄包装、cmd/system/<system>/spec.go、在 register.go 的 systemCatalog() 中注册;按需新增 actions.yaml、Go action 文件、common.go、Ginkgo suite、skills/bk-cli-<system>/SKILL.md。

分支 B(system 已存在,新增 action):YAML action 在 cmd/system/<system>/actions.yaml 的 actions 列表中追加;Go-implemented action 需修改 <action>.go、spec.go 注册、<action>_test.go,可选 common.go。

分支 C(新增 subsystem):新增 cmd/system/<system>/<subsystem>/spec.go、actions.yaml、Go action 文件、common.go、suite 文件,并在父 system 的 SystemSpec.Subsystems 中注册。subsystem YAML 的 gateway_name 必须独立声明,不从父 system 继承。

适用场景

适用于维护 bk-cli 命令体系的开发者,尤其是需要按仓库设计基线新增或扩展命令、新增 subsystem、补充测试与文档的场景。

限制

当前只允许一层 subsystem,不允许更深层级;若用户需要更深层级,应停止实现并给出公共契约变更 proposal 建议。YAML params 只支持 in: path、in: query 和帮助用途的 in: header,不要声明 in: body。param 名不能与保留 flag 冲突(body、body-schema、header、stage、help、context、dry-run、format、verbose、insecure)。同一 action 内 path 和 query param 名不能重复。resourcePermissionRequired: true 时必须同时设置 appVerifiedRequired: true。--body-schema 是 help modifier,不带 -h 单独使用时必须快速失败。即使用户用 --header 覆盖 X-Bkapi-Authorization,--dry-run / --verbose 仍必须脱敏展示认证内容。路径占位符值按单个 URL path segment 转义,不能依赖它注入 / 或 ?。Go-implemented action 必须通过 systemcmd.ResolveRuntime(deps) 和 systemcmd.ExecuteRequest(...) 或 syslib.ExecuteRequest(...) 走共享执行路径。