cli-self-check
检测新合并到 te-cli 的 CLI 功能是否合理。从命令注册、业务域↔skill 配对、skill 文档覆盖、skill 内部一致性、用户文档同步、工程健壮性六个维度扫描,定位会导致命令加载失败、AI agent 读空文档瞎猜参数、用户文档滞后等问题。当合并了新命令域/命令、新增或修改 skill、做发版前自检、或需要评估 CLI 功能完整性时使用。
How do I install this agent skill?
npx skills add https://github.com/thinkingaiagenticengine/ae-cli --skill cli-self-checkIs this agent skill safe to install?
- Gen Agent Trust Hubpass
This skill is a developer utility designed to perform automated audits on a CLI repository. It scans source code and markdown files for consistency, documentation coverage, and safety violations using Node.js scripts.
- Socketwarn
1 alert: gptSecurity
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
cli-self-check
te-cli 的「新功能合理性」自检 skill。把一次人工 code review 中反复用到的结构化检查固化成可重复执行的脚本 + 判读规则。
何时用
- 合并了新的命令域(
src/commands/te-*)或新命令 - 新增 / 修改了
skills/下的 skill - 发版前自检、或评估某分支 CLI 功能是否「做完整了」
怎么跑
# 全量扫描(推荐发版前用)
node self-check/scan.mjs
# 只看相对某分支的变更域(推荐合并/提 PR 后用,聚焦本次改动)
node self-check/scan.mjs --since master
# 机器可读,便于接 CI
node self-check/scan.mjs --json
退出码:存在 P1 时返回 1,否则 0,可直接用于 CI 卡口。
脚本是纯 Node、零新依赖、只读不改仓库。判读和修复由你(agent)依据下方规则完成——脚本负责「发现」,你负责「确认 + 修」。
六个检测维度
| 维度 | 名称 | 查什么 | 漏了会怎样 |
|---|---|---|---|
| D1 | 命令注册 | 新域是否在 src/index.ts 注册;MCP service 是否注册了 mapping | 命令根本不加载;buildMcpUrl 运行时抛错 |
| D2 | 域↔skill 配对 | 每个业务域是否有对应 skill;工具命令不应有 skill | agent 不知道怎么用新命令 |
| D3 | skill 文档覆盖 | 命令 ↔ references/*.md 是否一一对应 | agent 缺命令文档,被迫猜参数 |
| D4 | skill 内部一致性 | CRITICAL 规则「+cmd→cmd.md」是否与真实文件名相符;SKILL.md 内链接是否失效 | agent 按规则去读文档却读空,瞎猜 ID/参数 |
| D5 | 文档同步 | README(中/英)是否覆盖所有 service;版本号 vs CHANGELOG | 用户照 README 用,以为新功能不存在 |
| D6 | 工程健壮性 | 每个域是否有 verify 脚本;是否接入 tsc --noEmit | 回归无自动拦截;类型错误只在 build 暴露 |
严重度与处理原则
- 🔴 P1(阻断):会导致命令加载失败、或 agent 行为出错(读空文档→瞎猜)。必须改,CI 应卡。
- 🟡 P2(面向用户/agent 的明显偏差):文档缺失/滞后、失效链接。发版前应改。
- 🟢 P3(工程健壮性):verify/typecheck 缺口,风格不统一。择期补,不阻断发版。
- ℹ️ info:符合约定的确认项(如工具命令无 skill),无需处理。
各维度判读 + 修复指引
D1 命令注册
- 「域未在 src/index.ts 注册」:在
src/index.ts的loadCommands()(业务域)或registerXxxCommand()(工具命令)补上import('./commands/<dir>/index.js')。 - 「MCP service 未注册 mapping」:在仍使用 MCP transport 的域
index.ts顶部调registerMcpMappings({ '<service>': { componentName, mappingPath } })(参考te-community/index.ts)。Analysis 域只允许 Capability Gateway,不应注册 MCP mapping。 - 注意区分两种 "service":commander 分组名(如
engage)≠ MCP 路由 key(如engage_config)。脚本只检查后者,且只提取字面量传参;变量传参不报(宁可漏报不误报)。
D2 域↔skill 配对
- 约定:业务域配 skill,工具命令(交互式/运维)不配。
sync、model、auth、config、api无 skill 是正确的。 - 若新增业务域,需在
scan.mjs顶部DOMAIN_TO_SKILL里登记映射;新增工具命令登记到TOOL_DIRS。漏登记会被报 P2,提醒你补映射或确认归类。
D3 skill 文档覆盖
- 判定用「归一化 + 包含」匹配,能识别
create-team.md覆盖+create,所以这里报的是真·缺文档。 - 修法:在对应 skill 的
references/补.md,并在 SKILL.md 命令清单里挂上链接。 - 采用「分组/内联文档」策略的 skill(
ae-dataops、ae-kb)在GROUPED_DOC_SKILLS中豁免逐命令检查——若新 skill 也走这种策略,加进去。
D4 skill 内部一致性(最易出 P1)
- 规则矛盾:SKILL.md 顶部若写「reference filename equals the command name(+cmd → references/cmd.md)」,则每个命令都必须有严格同名文件。若
+list的文档叫list-teams.md,agent 会去读不存在的list.md。- 两种修法(择一):① 把文件重命名为与命令严格同名(
list.md)——推荐,规则最自洽;② 改写顶部规则为「以下方命令清单中的链接为准」,删掉「filename = command name」的断言。
- 两种修法(择一):① 把文件重命名为与命令严格同名(
- 失效链接:SKILL.md 里
references/xxx.md指向的文件不存在——补文件或修链接。
D5 文档同步
- 新域/新命令要同步进
README.md和README.zh.md的命令表。 - 发版时版本号要在 CHANGELOG.md 有对应条目。
D6 工程健壮性
- 新域建议补一个
scripts/verify-te-<domain>.mjs(参考现有verify-te-analysis-tools.mjs:遍历命令源码并校验注册、flag、description 和文档契约),并在package.json加verify:<domain>脚本。 - 建议加
"typecheck": "tsc --noEmit",把类型检查从 build 前移。
维护脚本
scan.mjs 顶部有可调配置,新增模块时按需更新:
DOMAIN_TO_SKILL:业务域目录 → skill 名映射COMMAND_SKILL_OVERRIDES:同一命令域内由 overlay skill 负责的命令路径 → skill 名映射TOOL_DIRS:工具命令目录(豁免 skill 检查)GROUPED_DOC_SKILLS:走分组/内联文档策略的 skill(豁免逐命令 reference 检查)
判读哲学:脚本只报「值得人看一眼」的线索,确认与修复由 agent 结合源码做。新增检测维度时,优先保证零误报——一个假 P1 比漏报更伤工具可信度。
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/thinkingaiagenticengine/ae-cli/cli-self-check">View cli-self-check on skillZs</a>