用途
Command Optimization 是一个 CLI 命令开发专项技能,围绕命令设计模式、参数解析、任务自动化和 CLI 最佳实践展开。它适用于创建新 CLI 命令、设计命令接口、优化现有命令、实现参数解析、通过 CLI 自动化任务以及改进命令用户体验。
主要能力
- 命令设计:创建结构良好的 CLI 命令。
- 参数解析:设计直观的参数与选项结构。
- 任务自动化:通过命令自动化重复性任务。
- 用户体验:改善命令可用性与反馈。
- 错误处理:实现健壮的错误处理与校验。
- 文档:生成清晰的命令文档与帮助文本。
使用方式
资料给出的触发式用法示例包括:
- 创建命令:如“Create a command to generate React components”“Design a CLI command for database migrations”。
- 优化命令:如“Improve the user experience of this command”。
命令设计模式
任务导向命令
结构包括:清晰的动作动词(generate、create、build)、目标对象(component、migration、test)、用于定制的选项、有帮助的输出与反馈。
示例对比:
# Good: Clear and actionable
npm run generate:component UserProfile
# Bad: Unclear purpose
npm run make UserProfile
分析类命令
结构包括:分析类型(analyze、check、audit)、被分析目标、输出格式选项、可执行的建议。
示例对比:
# Good: Clear analysis command
npm run analyze:dependencies -- --outdated
# Bad: Vague command
npm run check
参数处理
文件/目录参数
模式:接受单个文件或目录、支持 glob 模式、校验存在性、处理权限。
示例:
# Single file
lint src/utils.js
# Directory
lint src/
# Glob pattern
lint "src/**/*.js"
配置选项
常见选项:
- --config:自定义配置文件
- --output:输出目录或格式
- --verbose:详细日志
- --dry-run:仅预览不执行
- --force:覆盖安全检查
错误处理
输入校验
检查内容包括:文件/目录存在性、读写权限、文件格式有效性、所需依赖、配置语法。
错误信息
好的错误信息应包含:问题的清晰描述、具体位置(文件、行)、建议的修复方式、失败原因的背景。
示例:
# Good
Error: Configuration file not found: .eslintrc.json
Run 'npm run init:config' to create it.
# Bad
Error: File not found
示例
示例 1:组件生成命令
输入:创建一个生成 React 组件的命令。
输出:
命令名:generate:component
用法:
npm run generate:component ComponentName [options]
选项:
- --path <path>:输出路径(默认:src/components)
- --type <type>:组件类型(functional|class)(默认:functional)
- --with-tests:生成测试文件
- --with-styles:生成样式表
示例:
# Basic component
npm run generate:component UserCard
# With options
npm run generate:component UserCard --path src/features/users --with-tests --with-styles
实现片段:
// scripts/generate-component.js
const componentName = process.argv[2];
const options = parseArgs(process.argv.slice(3));
if (!componentName) {
console.error('Error: Component name required');
console.log('Usage: npm run generate:component <Name>');
process.exit(1);
}
generateComponent(componentName, options);
示例 2:数据库迁移命令
输入:创建一个数据库迁移命令。
输出:
命令名:db:migrate
用法:
npm run db:migrate [migration-name] [options]
选项:
- --create <table>:为表创建新迁移
- --rollback:回滚上一次迁移
- --status:显示迁移状态
- --to <version>:迁移到指定版本
示例:
# Create migration
npm run db:migrate --create users
# Run migrations
npm run db:migrate
# Check status
npm run db:migrate --status
# Rollback
npm run db:migrate --rollback
参考文件
- references/SLASH_COMMAND.template.md:带 frontmatter、动态上下文和工作流结构的斜杠命令模板。
最佳实践
命令设计
- 清晰的命名:使用描述性、面向动作的名称。
- 一致的风格:遵循项目约定。
- 有用的默认值:为常见用例设置合理默认。
- 良好的反馈:清晰的输出和进度指示。
- 错误处理:优雅失败并提供有帮助的信息。
用户体验
- 渐进式披露:展示基本用法,在帮助中提供高级选项。
- 校验:尽早校验输入并给出清晰错误。
- 确认:破坏性操作需请求确认。
- 试运行:支持 --dry-run 预览。
- 详细模式:--verbose 输出详细信息。
文档
- 帮助文本:为每个命令提供清晰简洁的帮助。
- 示例:包含实用示例。
- 错误信息:说明出错原因及修复方式。
- README:在项目 README 中记录命令。
相关使用场景
- 创建项目专用命令
- 自动化开发任务
- 构建 CLI 工具
- 改善命令可用性
- 统一命令模式
限制
资料未说明该技能的收费、价格、支持平台、具体安装步骤或量化效果,这些信息暂未提供。