---
name: wecomcli-shared
description: 何时用:任何 wecomcli-* 技能准备执行 wecom-cli 命令前必须同时读取本技能(公共前置检查),本技能不处理具体业务请求。检查 CLI 已安装且版本 ≥1.1.0、企微凭证已授权(缺失时按品悟代管口径引导,勿自行 npm 安装);获取机器人/授权真人身份(identity whoami);定义通用的 ID 类字段禁止外露输出约束。
metadata:
  requires:
    bins: ["wecom-cli"]
---

# wecom-cli 公共前置检查

本技能提供所有 `wecomcli-*` 业务技能共用的 CLI 安装、版本与授权检查，以及通用输出约束。**每次准备执行任意 `wecom-cli` 命令前，先完成本技能；检查通过后，再回到对应业务技能执行。**

> 本技能不能代替具体业务技能。处理联系人、文档、表格、日程、会议、待办、邮件、微盘、消息或媒体请求时，必须同时读取对应业务技能。

## Step 1：检查 CLI 安装与版本

```bash
wecom-cli --version
```

- 命令成功，且输出中的版本号不低于 `1.1.0` → 继续 Step 2。
- 命令不存在、执行报错或版本号低于 `1.1.0` → **不要自行安装或升级**：`wecom-cli` 由品悟应用代为安装与管理，随应用更新自动就位。此时提示用户在品悟「插件中心 → 企业微信」卡片重新点「连接」，由品悟触发安装/升级；完成后重新执行 `wecom-cli --version` 复查。

仍失败或版本仍低于 `1.1.0` 时停止业务操作，并把错误告知用户。

## Step 2：检查授权状态

```bash
wecom-cli auth show --status
```

- 输出 `authorized` → 前置检查完成，可以执行具体业务命令。
- 输出 `unauthorized` → 执行 Step 3。
- 命令报错或输出不是上述状态 → 停止业务操作，并把错误告知用户，不要猜测授权状态。

## Step 3：初始化凭证（仅未授权时）

```bash
wecom-cli auth init
```

该命令会展示授权链接和二维码，并等待用户使用企业微信扫码。授权成功后命令自动退出，仅需初始化一次。

初始化完成后重新执行：

```bash
wecom-cli auth show --status
```

仅当输出 `authorized` 时，才能继续执行具体业务命令。

## 通用输出约束：ID 类字段禁止外露

本约束对所有 `wecomcli-*` 技能生效，优先级高于各业务技能的输出格式，且不因用户主动索要而放宽。

- **禁止**：你的最终回复禁止出现 `userid` / `open_vid` / `department_id` / `chat_id` 等 ID 标识。凡是接口返回的内部标识（含 `mail_id` / `media_id` / `file_id` / `space_id` / `folder_id` / `docid` / `content_id` / `msg_id` / `cursor` / `next_cursor` 等，命名上以 `_id` 结尾或语义上属于机器标识的字段一律视为 ID）都只能在内部流转，用于后续接口调用。
- **必须**：你的思考过程和最终回复必须使用可读名称，如 `name` / `username` / `external_username` / 部门名 / 邮箱 / `subject` / `doc_name` / `chat_name` / `title` 等 `tool_result` 返回的内容。
- 接口只返回 ID 而没有可读名称时，先调用对应技能（如 `wecomcli-contact` 解析人员）换取可读名称；确实无法换取时，用自然语言描述该对象（如「上一封日报邮件」「你刚上传的那个文件」）来指代，禁止退化为展示 ID。
- 需要用户在多个候选中选择时，用序号 + 可读信息（名称 / 主题 / 时间 / 路径等）构造候选列表，禁止用 ID 作为区分依据让用户辨认。
- 用户直接要求「把 ID 给我」「打印 mail_id」时，说明该标识属于内部字段不便提供，并改用可读信息或继续帮其完成实际操作。
- 可读链接（如文档 `doc_url`、微盘分享链接）不属于本约束限制范围，可按各业务技能规定正常展示，即使链接本身包含标识字符串。

## 执行规则

- 已安装、版本达标且已授权时，不重复安装或初始化。
- 安装、升级、初始化或复查失败时，不执行后续业务命令。
- 本技能不定义任何联系人、文档、表格、日程、会议、待办、邮件、微盘、消息或媒体接口参数；具体命令必须回到对应业务技能读取。
- 执行任何业务命令并组织回复时，同时遵守上方「通用输出约束：ID 类字段禁止外露」。

## 获取个人身份

如果操作流程必须获取机器人或授权人身份（姓名、userid等），需要调用 `wecom-cli identity whoami` 获取。
