用途:在项目中实现统一、用户友好的 CLI 交互,包括命令输出格式化、异步操作进度提示、交互式用户提示,以及部署/差异/重复检查等结果报告的输出设计。不适用于业务逻辑、GraphQL 操作或服务层代码。
主要能力与技术栈:彩色终端输出使用 chalk,经 src/cli/console.ts 提供;加载指示器使用 ora,位于 src/cli/progress.ts,单次操作用 .start()/.succeed()/.fail(),批量操作可用 BulkOperationProgress;交互提示使用 @inquirer/prompts;结构化日志使用 tslog。
控制台模块:必须使用 src/cli/console.ts 替代原始 console.log,方法包括 error(红,x)、success(绿,check)、warning(黄,warn)、hint(青,bulb)、important(加粗)、info(蓝,i)、code(灰底),导入方式为 import { console } from '@/cli/console';。
交互提示:@inquirer/prompts 提供 confirm(是否确认、破坏性操作保护)、select(单选)、checkbox(多选,如实体选择)、input(带校验文本输入)、password(令牌/密钥掩码输入)。
报告模式:src/cli/reporters/ 中有 deployment-reporter(创建/更新/删除/失败计数表格)、diff reporter(+ 创建绿色、~ 更新蓝色、- 删除红色)、duplicate reporter(含位置的重复标识符校验问题)。错误格式化提供 formatError 与 formatGraphQLError,先显示消息,再以灰色显示代码/上下文,最后用 console.hint() 给出建议。
退出码:使用命名常量 ExitCodes,含 SUCCESS:0、GENERAL_ERROR:1、VALIDATION_ERROR:2、NETWORK_ERROR:3、AUTH_ERROR:4、CONFLICT_ERROR:5,禁止使用裸数字。
最佳实践与限制:所有输出经 console.ts;超过约 1 秒的操作提供进度反馈;错误附带可执行建议;破坏性操作用 confirm 确认;支持非交互模式(CI/无头环境跳过提示,如 --yes 或 CI 环境变量);统一颜色语义。常见错误包括使用原始 console.log、缺少进度反馈、使用裸退出码、CI 中阻塞式提示、错误无建议、生产环境输出调试信息。相关技能:adding-entity-types、reviewing-typescript-code;快速参考见 .claude/rules/cli-development.md。