用途:这是一份开发指南,面向为 todoist-cli 添加新命令或子命令的开发者,也用于新增 SDK 端点或在既有命令组下添加子命令。
主要步骤与能力:在 src/tests/helpers/mock-api.ts 的 createMockApi() 中按实体分组新增 mock;在 src/lib/api/core.ts 的 API_SPINNER_MESSAGES 中新增条目(蓝色读取、绿色创建/加入、黄色更新/删除/归档);对只读 SDK 方法在 src/lib/permissions.ts 的 KNOWN_SAFE_API_METHODS 中登记,未登记方法默认被视为变更操作并被只读令牌阻止。
无交互设计:命令需非交互式,通过 flag、位置参数或 --stdin 输入,不用 readline/prompt 或等待 TTY;缺少必需参数时调用 cmd.help() 并返回。数据命令需支持 --json(列表支持 --ndjson),结果输出到 stdout,诊断信息到 stderr,成功返回 0,失败返回非零。
命令结构:多子命令使用文件夹结构,index.ts 注册父命令并连接子命令,每个子命令一个文件;子命令文件只导出异步处理函数,不导入 Commander。单子命令保持为扁平文件。
约定:读取类用 --json;变更类返回实体用 --json 与 --dry-run;破坏性且不可逆需 --yes 与 --dry-run;列表分页用 --limit、--cursor、--all、--json、--ndjson;-q/--quiet 抑制成功信息,create 命令在 quiet 模式仅输出实体 ID。
错误与测试:使用 src/lib/errors.ts 的 CliError,消息需指明具体问题并提供正确调用语法、有效值或示例;测试覆盖正常路径、INVALID_REF 拒绝、--dry-run 与 --json。代码完成后运行 npm run sync:skill 同步技能文件,并运行 type-check、test 与 check 验证。限制:以上为贡献者指南,不涉及终端用户收费或平台信息。