用途:当需要在 lib/commands/ 目录下新增、重命名或删除命令文件,或构建因 manifest-drift 报错、命令 require 无法解析时使用;不适合与此无关的场景。
主要能力:把一条命令视为五个需同步维护的“面”。命令清单(Manifest):重新生成静态 require 图,node scripts/gen-command-manifest.js 写入变更,node scripts/gen-command-manifest.js --check 在过期时返回退出码 1;lib/commands/_manifest.js 为生成文件,不可手改,漂移由 test/structural/command-manifest-drift.test.js 强制检查。注册表(Registry):命令须能通过 CLI 注册表解析,相关测试为 test/forge-cli-registry.test.js 与 test/cli-flags.test.js。技能覆盖(Skill coverage):skills/coverage.json 将每个注册的用户可见命令映射到负责的技能,或显式写 { exempt: <reason> },由 lib/skill-eval.js 的 evaluateCoverage 执行、test/skill-eval.test.js 把关。测试通道(Test lane):在 DIRECT_TEST_CANDIDATES(lib/commands/test.js)中登记,使新文件走定向测试而非全量套件。文档(Documentation):更新命令帮助文本,若为阶段或工具类命令,还需更新 AGENTS.md 中的对应行。
规则:清单必须重新生成而非手写;开发模式的自动发现会本地掩盖过期清单,但 bun build --compile 与漂移检查不会。exempt 表示已完成而非推迟,只有在命令真正完成映射、可路由且有文档时才可移除,且仅限负责该命令的 PR。应使用 Forge 自带的生成器,不要重复实现技能 CLI 已做的事。命令名保持简短,如 status、ready、ship、trace。
完成条件:node scripts/gen-command-manifest.js --check 退出码为 0,注册表与覆盖测试通过,classifyPushTests 报告出定向通道,并能指出负责该新命令的技能。资料未提供具体版本要求、收费或其他平台信息。