test-bk-cli

交互式测试和探索蓝鲸 CLI(bk-cli)命令。当用户希望测试 bk-cli、探索蓝鲸平台 API、验证 bk-cli 功能,或对蓝鲸各系统(cmdb、gse、job、sops、nodeman、devops 等)执行只读命令时,使用此 skill。触发短语包括"测试 bk-cli"、"test bk-cli"、"探索 bk-cli 命令"、"查看 bk-cli 接口",或任何涉及 bk-cli 子命令测试的场景。

tencentblueking/bk-cli3 installsMITSynced Aug 26

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI

Agent Skills format with YAML frontmatter. Claude Code reads it as-is.

---
name: "test-bk-cli"
description: "交互式测试和探索蓝鲸 CLI(bk-cli)命令。当用户希望测试 bk-cli、探索蓝鲸平台 API、验证 bk-cli 功能,或对蓝鲸各系统(cmdb、gse、job、sops、nodeman、devops 等)执行只读命令时,使用此 skill。触发短语包括\"测试 bk-cli\"、\"test bk-cli\"、\"探索 bk-cli 命令\"、\"查看 bk-cli 接口\",或任何涉及 bk-cli 子命令测试的场景。"
license: "MIT"
---

# test-bk-cli Skill

本 skill 指导对 `bk-cli`(蓝鲸平台命令行工具)进行系统性、安全的探索。目标是测试所有可用的只读命令,**绝不修改任何现有配置**,**绝不执行破坏性命令**。

## 前置条件(开始前确认)

执行任何命令前,先与用户确认以下两点:

1. **bk-cli 已安装**:`bk-cli version` 或 `bk-cli -h` 能正常执行。
2. **现有 context 安全**:测试过程中**绝不**切换、覆盖或删除用户已有的 context。

若任一条件不满足,停下来引导用户修复后再继续。

---

## 第一阶段:基础命令

测试 `help`、`version`、`update`、`completion` 这类内置命令,验证 CLI 基本可用性。

```bash
bk-cli -h         # 获取完整子命令列表,作为后续阶段的依据
bk-cli version    # 查看版本信息
bk-cli update -h  # 查看 update 用法(不执行实际更新)
bk-cli completion -h  # 查看 completion 用法(不执行安装)
```

**注意**:`update` 和 `completion` 只查看 `-h`,不实际执行,避免修改本地环境。

---

## 第二阶段:认证与 Context

先分别查看帮助,然后按完整流程测试 context 和 auth 的各项子命令。

### 查看帮助
```bash
bk-cli context -h
bk-cli auth -h
```

### 完整测试流程

本阶段通过创建一个临时 context 来完整测试所有子命令,测试结束后清理干净,**不影响用户原有的 default context**。

执行前先从 default context 获取 `bk_api_url_tmpl`(`bk-cli context list`),新 context 使用相同的 URL。认证参数使用以下固定测试值,无需询问用户:

- context 名称:`test-ctx`
- bk_app_code:`test_bk_app_code`
- bk_app_secret:`test_bk_app_secret`
- bk_token:`test_bk_token`

```bash
# 1. 创建临时 context
bk-cli context create test-ctx --bk_api_url_tmpl="<default 的 url_tmpl>"

# 2. 切换到新 context
bk-cli context use test-ctx

# 3. 在新 context 下登录
bk-cli auth login --bk_app_code="test_bk_app_code" --bk_app_secret="test_bk_app_secret" --bk_token="test_bk_token"

# 4. 查看认证状态(应已认证)
bk-cli auth status

# 5. 登出
bk-cli auth logout

# 6. 再次查看认证状态(应未认证)
bk-cli auth status

# 7. 重新登录(恢复认证)
bk-cli auth login --bk_app_code="test_bk_app_code" --bk_app_secret="test_bk_app_secret" --bk_token="test_bk_token"

# 8. 列出所有 context(确认新 context 存在且 active)
bk-cli context list

# 9. 切回 default context
bk-cli context use default

# 10. 删除临时 context(清理)
bk-cli context delete test-ctx
```

流程结束后验证:`bk-cli context list` 中不再有 `test-ctx`,active 仍为 `default`。

---

## 第三阶段:API 工具命令

测试 `api` 和 `apigateway` 命令,了解可用的网关和接口。

### `bk-cli apigateway`
```bash
bk-cli apigateway -h                            # 查看子命令
bk-cli apigateway list_gateways                 # 列出所有网关
bk-cli apigateway list_gateway_apis --gateway_name <name>   # 列出网关下的所有接口
bk-cli apigateway retrieve_gateway_api_details --gateway_name <name> --api_name <api>  # 查看接口详情
```

### `bk-cli api`

`bk-cli api` 是原始 HTTP 客户端,本阶段结合 `apigateway` 一起测试:通过 `apigateway` 查询某个系统命令对应的真实 API 路径,再用 `bk-cli api` 直接调用验证。

测试流程示例:
```bash
# 1. 查询某网关下某个命令的真实 API 路径
bk-cli apigateway retrieve_gateway_api_details --gateway_name bk-apigateway --api_name v2_open_list_gateways

# 2. 从返回结果中提取 path、method
# 例如得到:GET /api/v2/open/gateways/

# 3. 用 bk-cli api 直接调用,可附加过滤参数
bk-cli api bk-apigateway GET "/api/v2/open/gateways/?name=bk-iam"
```

选取 2~3 个有代表性的只读接口(GET/POST)进行验证即可,不需要穷举所有接口。**`bk-cli api` 仅在本阶段使用,第四阶段测试系统子命令时禁止用它绕过**。

---

## 第四阶段:系统子命令(仅只读)

对每个系统子命令(cmdb、gse、job、sops、nodeman、devops 等)按以下步骤操作:

### 每个系统的测试步骤

1. **执行 `bk-cli <system> -h`** ——获取完整子命令列表。
2. **识别只读命令**:包含 `get_*`、`list_*`、`search_*`、`find_*`、`query_*`、`retrieve_*`。跳过 `create_*`、`delete_*`、`update_*`、`transfer_*`、`operate_*`、`start_*`、`push_*`、`fast_execute_*`、`install_*` 等。
3. **对每个只读命令执行 `bk-cli <system> <command> -h`** ——了解所需参数。
4. **收集必要参数**——优先从本次会话中已执行命令的结果中推导;实在无法推导时再询问用户。
5. **执行 `bk-cli <system> <command>` 并展示原始输出**。若命令失败,如实上报错误,等待用户指示。

### 参数来源策略

尽量从已有命令结果中推导参数,减少对用户的打扰:
- 执行 `search_business` 后,得到 `bk_biz_id`。
- 执行 `list_biz_hosts` 后,得到主机 IP 和 `bk_agent_id`。
- 执行 `search_set` 后,得到 `bk_set_id`,可用于 `search_module`。
- 执行 `get_job_instance_status` 后,得到 `step_instance_id`,可用于日志查询。

只有真正无法推导的参数(如用户自己作业历史中的 `job_instance_id`、devops 的 `project_id`)才询问用户。

---

## 处理 403 错误

**当 API 网关返回 403**(`X-Bkapi-Error-Code: 1640301`,消息:`App has no permission`):

**立即停止。** 不要尝试其他路径,不要重试。告知用户:
> "遇到了 403 权限不足。需要在 API 网关管理后台给应用 `<bk_app_code>` 授权访问 **`<gateway_name>`** 网关的权限。
> 请前往:API 网关 → 网关管理 → `<gateway_name>` → 权限管理 → 应用权限 → 添加 `<bk_app_code>`。
> 完成授权后告诉我,我会重新执行。"

`bk_app_code` 和 `gateway_name` 可从 403 响应头和错误消息中获取。

**当业务系统返回 403**(如 `bk_error_code: 9900403`,IAM 权限错误):

**立即停止。** 告知用户:
> "遇到了业务权限不足(IAM 9900403)。需要在权限中心给应用 `<bk_app_code>` 申请 **`<system_name>`** 系统的 **`<action_name>`** 权限。
> 请前往:蓝鲸权限中心 → 申请权限 → 选择系统 `<system_name>` → 操作 `<action_name>`。"

---

## 安全规则(绝对禁止)

以下规则不得违反:

1. **绝不执行**名称中含有以下词的命令:`create`、`delete`、`update`(系统子命令中)、`transfer`、`install`、`start`、`operate`、`push`、`fast_execute`、`revoke`、`retry`。
2. **保护 default context**——第二阶段只在临时 context 上做 auth 测试,最终必须切回 `default` 并删除临时 context;禁止对 `default` context 执行任何修改或删除操作。
3. **第四阶段只能使用 `bk-cli <system> <command>`**——禁止用 `bk-cli api` 绕过系统子命令,无论遇到任何错误都不例外。
4. **绝不凭训练知识猜测 API 路径或参数**——始终通过 `-h` 输出发现可用命令和参数。
5. **遇到 403 立即停止**——不尝试其他端点或替代路径。
6. **不主动使用 `--dry-run`**——除非用户明确要求预览命令。

---

## 输出格式

每个命令测试后展示:
1. 实际执行的命令。
2. 原始 CLI 输出(若 `info`/`data` 数组超过 10 条,截断为前 3 条并注明总数)。
3. 一行结果说明(成功 / 错误类型)。

每个阶段或系统测试结束后,给出汇总表:

| 命令 | 状态 | 备注 |
|------|------|------|
| search_business | ✅ | 返回 1 条业务 |
| list_biz_hosts | ✅ | 共 52 台主机 |
| list_hosts_without_biz | ❌ IAM 403 | 需要 view_resource_pool_host 权限 |

---

## 示例:处理 403

```
收到 403:App has no permission [bk_app_code=bk_apigw_test, gateway=bk-sops]

→ 立即停止,告知用户:
"遇到了 403。请在 API 网关后台给 bk_apigw_test 授权 bk-sops 网关权限后告诉我,我重新执行。"
```

More General & Other skills

← All General & Other skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY