skills/feishu-cli-doctor/SKILL.md
--- name: feishu-cli-doctor description: >- feishu-cli 环境健康检查。6 项检查:config 文件 / user_token 有效性 / endpoints 联通 / proxy 设置 / 二进制依赖(go/git)/ 配置完整性。 支持 --offline(跳过网络检查)/--only <check>(只跑指定项)/--json(机器可读)。 当用户报"feishu-cli 不工作"、"配置出问题"、"突然连不上"、"诊断"、"健康检查"时使用。 argument-hint: [--offline] [--json] [--only config,token,...] user-invocable: true allowed-tools: Bash, Read --- # feishu-cli 健康检查(doctor) `feishu-cli doctor` 跑一组本地诊断,快速验证 CLI 是否处于可用状态。对齐 lark-cli 的 `doctor` 体验,适合在「突然连不上 / 报错莫名其妙 / 新机器
npx skillsauth add riba2534/feishu-cli skills/feishu-cli-doctorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
feishu-cli doctor 跑一组本地诊断,快速验证 CLI 是否处于可用状态。对齐 lark-cli 的 doctor 体验,适合在「突然连不上 / 报错莫名其妙 / 新机器初始化后想一把验」等场景使用。
feishu-cli:如尚未安装,请前往 riba2534/feishu-cli 获取安装方式。
| 场景 | 触发命令 |
|------|----------|
| 用户报「feishu-cli 不工作」「突然连不上」 | feishu-cli doctor |
| 新机器/新容器初始化后一把验 | feishu-cli doctor |
| AI Agent 自检环境是否就绪 | feishu-cli doctor --json |
| CI/无外网环境验证本地配置 | feishu-cli doctor --offline |
| 只想确认某一项(如 token) | feishu-cli doctor --only user_token |
| 排查代理/NO_PROXY 配错 | feishu-cli doctor --only proxy |
不适用:
/feishu-cli-authfeishu-cli auth check --scope "..."| 检查名 | 验证内容 | 失败原因 | 修复建议 |
|--------|----------|----------|----------|
| config_file | ~/.feishu-cli/config.yaml 或环境变量提供 app_id + app_secret | 未初始化 / 凭证缺失 | feishu-cli config create-app --save 或 feishu-cli config init |
| user_token | ~/.feishu-cli/token.json 存在 + access/refresh 状态 | 未登录 / 都过期 / 文件损坏 | feishu-cli auth login(搜索/邮件/妙记等命令必需) |
| endpoint_open | https://open.feishu.cn HTTPS HEAD 可达 | 网络不通 / 代理拦截 / DNS 异常 | 检查网络 / 配 HTTPS_PROXY / 加 NO_PROXY |
| endpoint_larksuite | https://open.larksuite.com HTTPS HEAD 可达 | 同上 | 同上 |
| proxy | HTTPS_PROXY 配置时,NO_PROXY 是否包含飞书三域 | NO_PROXY 缺 .feishu.cn / .larkoffice.com / .larksuite.com | 把缺失的域加进 NO_PROXY 避免代理拦截 |
| dependencies | Go runtime 版本 + larksuite/oapi-sdk-go/v3 版本 | 不会失败(信息展示) | — |
网络检查并发执行,两个 endpoint 同时探测,超时 10s,整体上下文超时 30s。
feishu-cli doctor
输出示例:
config_file ✓ app_id=cli_a7xx****xxx baseURL=https://open.feishu.cn
user_token ✓ access_token 有效
endpoint_open ✓ https://open.feishu.cn 可达 (RTT 142ms, status 200)
endpoint_larksuite ✓ https://open.larksuite.com 可达 (RTT 198ms, status 200)
proxy ✓ 未设置 HTTP(S)_PROXY
dependencies ✓ go=go1.22.3 larksuite-sdk=v3.5.3
全部通过 ✓
任一项 fail 时,会在结尾 stderr 打印 doctor: 有检查未通过,详见 fail 项的 hint,并以 exit 1 退出。
feishu-cli doctor --json
输出:
{
"ok": true,
"checks": [
{"name": "config_file", "status": "pass", "message": "app_id=cli_a7xx****xxx baseURL=https://open.feishu.cn"},
{"name": "user_token", "status": "pass", "message": "access_token 有效"},
{"name": "endpoint_open", "status": "pass", "message": "https://open.feishu.cn 可达 (RTT 142ms, status 200)"},
{"name": "endpoint_larksuite", "status": "pass", "message": "https://open.larksuite.com 可达 (RTT 198ms, status 200)"},
{"name": "proxy", "status": "pass", "message": "未设置 HTTP(S)_PROXY"},
{"name": "dependencies", "status": "pass", "message": "go=go1.22.3 larksuite-sdk=v3.5.3"}
]
}
字段说明:
ok:true = 全部通过(含 warn/skip);false = 至少一项 failstatus:pass / fail / warn / skiphint:仅在 fail 或 warn 时出现,给出修复建议--offline)feishu-cli doctor --offline
endpoint_open 与 endpoint_larksuite 显示为 skip,其余正常跑。适用:
--only)# 只跑 user_token
feishu-cli doctor --only user_token
# 多项用逗号
feishu-cli doctor --only user_token,proxy
# 与 --json 组合
feishu-cli doctor --only endpoint_open --json
有效检查名(与表格里 检查名 列严格对应):config_file / user_token / endpoint_open / endpoint_larksuite / proxy / dependencies
未在 --only 列出的检查不会执行(不会出现在结果里)。
| 状态 | 图标(pretty) | 含义 | 影响退出码 |
|------|---------------|------|------------|
| pass | ✓ | 通过 | 否 |
| warn | ⚠️ | 不影响主流程但建议修复(典型:proxy 缺飞书域、token 未登录但仅可选命令需要) | 否 |
| fail | ✗ | 阻断性失败 | 是(exit 1) |
| skip | - | 跳过(典型:--offline / 不在 --only 列表里被排除项;当前未在 --only 列出的项不会出现,仅 endpoint 在 --offline 时显式 skip) | 否 |
退出码契约:
0 = 全部通过(含 warn/skip)1 = 至少一项 failAI Agent 写脚本判定环境就绪时,判 ok 字段或 exit code 即可,无需逐项解析。
feishu-cli doctor
按从上到下顺序看第一个 ✗ 项的 hint,照着做即可。常见首项失败:
config_file ✗ → 没初始化 → feishu-cli config create-app --saveuser_token ✗ → 没登录或都过期 → feishu-cli auth loginendpoint_open ✗ → 网络/代理问题 → 检查 HTTPS_PROXY 与 NO_PROXY公司有强制代理时,常见症状是 endpoint_* 慢/失败 + proxy ⚠️。修复:
# 把飞书三域加进 NO_PROXY
export NO_PROXY="$NO_PROXY,.feishu.cn,.larkoffice.com,.larksuite.com"
# 再跑一遍
feishu-cli doctor --only proxy,endpoint_open,endpoint_larksuite
# 跳过网络,只验本地配置(写在 CI 启动步骤)
feishu-cli doctor --offline --json | jq -e '.ok == true'
任一项 fail,exit 1 让 CI 直接挂掉,避免后续业务命令报莫名其妙的错。
# 跑业务前先确认 token 有效 + 网络可达
feishu-cli doctor --only user_token,endpoint_open --json
ok=false 时根据 checks[].name 路由到对应修复 skill:
user_token fail/warn → 走 /feishu-cli-auth 处理登录endpoint_* fail → 提示用户检查网络| 场景 | 用 doctor 还是别的? |
|------|------------------------|
| 整体环境是否就绪 | doctor |
| 单独验 token + scope | /feishu-cli-auth 的 auth check --scope "..."(精确到 scope 维度) |
| 登录 / 拿 token | /feishu-cli-auth |
| 业务命令报错(99991672/1069303 等) | 各业务模块 skill(msg/doc/drive/bitable 等) |
| 新建飞书应用 | /feishu-cli-auth 的 config create-app |
doctor 的定位:一把验环境是否就绪,不解决任何业务级问题。业务级问题应该已经在 doctor pass 的前提下排查。
源文件 cmd/doctor.go:
checkResult struct 统一表达每项结果(name/status/message/hint)checkPass / checkFail / checkWarn / checkSkipparseOnly 解析 --only 字符串为 map[string]bool,空字符串返回 nil(表示全跑)shouldRun(name, only):only == nil 时永远 true;否则查 mapcheckEndpoints 用 sync.WaitGroup 并发探测两个 endpoint,每个超时 10soutputJSON / outputPretty 两个出口;fail 时返回 error 让 cobra exit 1单测 cmd/doctor_test.go 覆盖:parseOnly 5 case / shouldRun 边界 / checkProxy 三种 env 组合 / checkDependencies smoke。
不引入新依赖,全部用标准库 + 已有 internal/auth + internal/config。
--only 校验未知 name:合法 check 名为 config_file / user_token / endpoint_open / endpoint_larksuite / proxy / dependencies。typo(如 --only user_tokn)会 报错 + 列出合法清单,不再 silent pass(避免 CI 静默通过空检查)HTTPS_PROXY=https://user:[email protected] 在 doctor 输出里会 mask 成 https://user:***@proxy.example,避免 doctor 报告被 paste 时泄露 proxy 密码tools
飞书多维表格(Bitable/Base)操作。底层使用 base/v3 新 API,支持视图完整配置写入、 记录 upsert、记录批量获取、记录附件上传下载、记录修改历史、角色 CRUD + 协作者增删、 多维表格本体重命名/高级权限开关、数据聚合查询、 仪表盘 + 仪表盘块 CRUD、表单 + 表单问题 CRUD、工作流 CRUD 等。 当用户请求"创建多维表格"、"操作数据表"、"添加记录"、"查询记录"、"管理字段"、 "多维表格"、"base"、"bitable"、"数据表"、"视图排序"、"视图过滤"、"视图分组"、 "角色"、"role"、"高级权限"、"advperm"、"数据聚合"、"data query"、 "仪表盘"、"dashboard"、"表单"、"form"、"工作流"、"workflow"、"记录附件"、 "复制多维表格"时使用。 支持 --as bot|user|auto 身份切换:默认 auto(User 优先、Tenant 兜底), --as bot 用 App Token 操作多维表格,无需 auth login、永不过期, 适合 cron / 无人值守 / 脚本自动抓取多维表格内容。 凡涉及"App Token 读写 bitable"、"不登录抓多维表格"、"cron 定时同步多维表格"、 "bitable 报需要 User Token / 91403 没权限"时也应使用本技能。
tools
在飞书云文档里画**会动的图 / 可交互图表 / 数据大屏**——妙笔BOX 是飞书文档里唯一能真实跑 CSS/JS 的载体 (iframe 沙箱)。能画:ECharts 全家桶(折线/柱/饼/雷达/散点/热力/桑基/漏斗/仪表/K线/箱线/平行坐标/旭日/treemap/ 力导向关系图/时序/甘特)、真实地图与经纬度飞线、echarts-gl 3D(map3D/3D柱/3D散点/3D曲面)、Three.js 真 3D 场景、 词云、水球、纯 CSS 动画、Canvas 粒子、SVG 矢量动画、KPI 滚动大屏。 当用户要"在飞书文档里画图/做动画/能动的图/可交互图表/数据大屏/Dashboard/折线图/柱状图/地图/飞线图/3D图/ 关系图/流程动画/ECharts/可视化",或要做**能调 AI / 读写多维表 / 持久化状态 / 拿用户身份的交互式文档小程序**, 或提到"妙笔BOX/HTML 小组件/让飞书文档里的图动起来/嵌入网页到飞书文档/window.magic"时, **必须用本技能**。注意:要"动"只能用妙笔BOX;画板(feishu-cli-board)的 SVG 节点会被服务端栅格化成静态图、不会动。
tools
飞书 OpenAPI 裸调。api GET/POST/PUT/DELETE/PATCH <path> 直接调用任意飞书 OpenAPI 接口, 覆盖 feishu-cli 尚未封装的接口(对齐 lark-cli 的 api 能力)。支持 --params(query)/--data(body JSON)/--data-file(从文件读 body)/ --as auto|user|bot 身份/--dry-run 预览/-o 二进制下载/--format/--jq。 当用户请求"调用 X API"、"裸调飞书接口"、"feishu-cli 没封装的接口怎么调"、"raw api"、 "用 api 命令发请求"、"下载飞书媒体/文件 binary"时使用。 不适用:仅查 schema 不调用(用 feishu-cli schema);已有专用命令的高频场景(用对应 feishu-cli <模块>)。
tools
飞书电子表格高级能力(筛选视图 + 筛选条件 + 下拉单元格 + 浮动图片 + 批量样式)。 filter-view CRUD 管理筛选视图,filter-view condition CRUD 写筛选条件(V3 API); dropdown set/get/update/delete 管理单元格下拉框(V2 dataValidation); image get/update/media-upload/write-image 操作浮动图片与单元格写图; batch-set-style 批量设置多范围单元格样式。 基础读写(read/write/style/add-rows/add-sheet)仍在 feishu-cli 主命令 sheet/bitable, 本 skill 专注高级能力。 当用户请求"筛选视图"、"筛选条件"、"加下拉框"、"数据验证"、"列下拉"、"浮动图片"、"插入图片"、"批量样式"时使用。