Agentic Awesome Skills CLI 工具开发实战:Commander.js 驱动的 Node.js CLI 模板全解
AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载本篇技术指南围绕 AASAgentic Awesome Skills仓库中 app-builder 技能体系下的 cli-tool 模板展开系统讲解如何用 Node.js 20 与 TypeScript 从零搭建一个生产可用的命令行工具涵盖 Commander.js 命令解析、Inquirer.js 交互提示、chalk/ora 输出体验、cosmiconfig 配置发现以及发布与最佳实践。读完本文你将掌握一套可直接复制运行、同时支持交互与非交互两种模式的 CLI 脚手架方法并能将其嵌入 Agent 驱动的应用搭建流程中。模板定位13 套应用模板中的 CLI 一员在 app-builder 这一主应用搭建编排器中Agent 会根据用户的自然语言请求判定项目类型、选择技术栈并协调多个专职 Agent 完成搭建。cli-tool是它维护的 13 套快速脚手架模板之一专门服务命令行工具这一类应用形态。模板技术栈适用场景nextjs-fullstackNext.js Prisma全栈 Web 应用express-apiExpress JWTREST APIcli-toolNode.js CommanderCLI 应用按照 templates/SKILL.md 的选择规则当用户提出创建一个命令行工具类需求时Agent 只读取cli-tool对应的 TEMPLATE.md并严格遵循其中的技术栈与目录结构进行脚手架生成。这也意味着本文描述的技术选型与工程布局是整个 AAS 技能库在 CLI 场景下的官方约定。技术栈一览六个组件的分工cli-tool 模板定义的技术栈非常精简每个组件各司其职组件技术职责运行时Node.js 20提供现代 JS/TS 运行时能力语言TypeScript类型安全与可维护性CLI 框架Commander.js命令与参数解析交互提示Inquirer.js交互式问答输出样式chalk ora彩色文本与加载动画配置加载cosmiconfig配置文件自动发现与解析这一组合覆盖了 CLI 工具的完整生命周期解析输入 → 交互收集 → 执行逻辑 → 反馈输出 → 读取配置。下面逐一深入。Commander.js命令行的语法解析器Commander.js 是 Node.js 生态最流行的 CLI 参数解析库。它负责把用户在终端输入的原始字符串如my-cli deploy --env prod --yes解析为结构化数据并自动生成--help帮助信息。模板将其用于命令解析与之配合的 Inquirer 用于交互提示——前者面向参数、后者面向问答。Inquirer.js把交互做到按需触发Inquirer.js 提供单选、多选、输入、确认等丰富的交互控件。模板将其用于交互提示同时要求支持--yes之类的非交互旗标详见下文设计原则保证工具在无人值守的 CI 或 Agent 调用场景下也能顺利运行。chalk ora终端体验的视觉层chalk为文本添加颜色与样式成功用绿色、警告用黄色、错误用红色让输出可读性显著提升ora提供终端 spinner 加载动画用于正在安装依赖正在构建等耗时操作的过程反馈。cosmiconfig配置的自动发现机制cosmiconfig 会自动向上层目录逐级搜索配置文件支持package.json中的mycli字段、.myclirc、mycli.config.js、.myclirc.json等多种命名约定帮助 CLI 工具读取用户级或项目级配置避免把参数全部塞进命令行。目录结构模块化布局与职责划分模板给出了一个清晰的 TypeScript CLI 项目骨架project-name/ ├── src/ │ ├── index.ts # 入口点 │ ├── cli.ts # CLI 组装 │ ├── commands/ # 命令处理器 │ ├── lib/ │ │ ├── config.ts # 配置加载 │ │ └── logger.ts # 样式化输出 │ └── types/ ├── bin/ │ └── cli.js # 可执行文件 └── package.json各文件职责如下文件/目录职责src/index.ts程序入口负责引导整个 CLIshebang、调用cli.tssrc/cli.tsCommander 实例组装注册子命令、挂载选项与全局钩子src/commands/每个子命令一个文件隔离业务逻辑src/lib/config.ts封装 cosmiconfig统一对外暴露配置读取 APIsrc/lib/logger.ts封装 chalk/ora提供统一的日志与 spinner 接口src/types/共享的类型定义命令选项类型、配置类型等bin/cli.js发布到PATH的可执行入口通常只是薄壳require 编译后的src/index.jspackage.json依赖声明与bin字段这种入口薄、命令分离、工具抽公共的布局与 app-builder 的 scaffolding 原则一脉相承路由/入口只做转发逻辑收敛到独立模块公共能力下沉到共享目录。CLI 设计四大原则从模板约定到实践落地模板用一张表格定义了 CLI 设计的四个核心原则原则说明Subcommands子命令将相关操作分组如build、deploy、configOptions选项提供带默认值的旗标参数Interactive交互在参数不足时主动提示补全Non-interactive非交互支持--yes等旗标跳过交互原则展开子命令 选项 双模式子命令让 CLI 具备多动词能力例如 Git 的clone/commit/push。Commander 通过program.command(deploy)注册子命令并可为每个子命令配置独立的选项。选项带默认值是减少用户心智负担的关键——--port number缺省 3000、--env name缺省development用户只需在需要覆盖时传参。交互与非交互双模式是最重要的工程约定有交互能力让终端用户觉得顺手有--yes/--no-input让 CI 和 Agent 可以无人值守调用。模板在最佳实践中明确要求同时支持两种模式这正是 Agent 友好 CLI 与普通 CLI 的分水岭。关键组件详解与可运行示例为了让上述技术栈落到可运行代码这里给出一个最小但完整的示例覆盖模板中的全部关键组件。1. 初始化与依赖安装mkdir my-cli cd my-cli npm init -y npm install commander inquirer/prompts chalk ora cosmiconfig npm install -D typescript types/node tsx注意模板要求的依赖是commander inquirer/prompts chalk ora cosmiconfig。其中inquirer/prompts是 Inquirer.js 官方推荐的模块化新版 APIchalk 与 ora 在新版本中均采用 ESM 导出TypeScript 项目中注意module配置如module: nodenext或使用兼容的构建目标。2. 配置 bin 字段与入口在package.json中声明可执行文件{ name: my-cli, version: 1.0.0, type: module, bin: { my-cli: ./bin/cli.js }, files: [bin, dist], scripts: { build: tsc, dev: tsx src/index.ts } }bin/cli.js作为薄壳仅负责调用编译产物#!/usr/bin/env node import(../dist/index.js);#!/usr/bin/env node这一 shebang 让系统直接用 Node 执行该文件是 CLI 可执行的前提。3. 组装命令src/cli.tsimport { Command } from commander; import { buildCommand } from ./commands/build.js; import { deployCommand } from ./commands/deploy.js; export function createCli() { const program new Command(); program .name(my-cli) .description(A Node.js CLI built from the cli-tool template) .version(1.0.0); program.addCommand(buildCommand()); program.addCommand(deployCommand()); program.parse(process.argv); }src/index.ts入口只做一件事#!/usr/bin/env node import { createCli } from ./cli.js; createCli();4. 命令处理器src/commands/deploy.tsimport { Command } from commander; import { confirm } from inquirer/prompts; import { log } from ../lib/logger.js; import { loadConfig } from ../lib/config.js; export function deployCommand() { return new Command(deploy) .description(Deploy the application) .option(--env name, target environment, development) .option(-y, --yes, skip all prompts) .action(async (options) { const config await loadConfig(); const env options.env ?? config.env; // 非交互模式直接放行交互模式二次确认 if (!options.yes) { const ok await confirm({ message: Deploy to ${env}?, default: false, }); if (!ok) return; } log.info(Deploying to ${env}...); // 业务逻辑... }); }5. 配置加载src/lib/config.tsimport { cosmiconfig } from cosmiconfig; const explorer cosmiconfig(mycli); export async function loadConfig() { const result await explorer.search(); return result?.config ?? {}; }cosmiconfig 会从当前目录向上逐级搜索.myclirc、.myclirc.json、mycli.config.js、package.json中的mycli字段等loadConfig的返回值可作为命令行选项的兜底默认值实现参数 配置文件 内置默认的优先级链。6. 样式化输出src/lib/logger.tsimport chalk from chalk; import ora from ora; export const log { info: (msg: string) console.log(chalk.blue(msg)), success: (msg: string) console.log(chalk.green(msg)), warn: (msg: string) console.log(chalk.yellow(msg)), error: (msg: string) console.error(chalk.red(msg)), }; export async function withSpinnerT(label: string, fn: () PromiseT): PromiseT { const spinner ora(label).start(); try { const result await fn(); spinner.succeed(); return result; } catch (err) { spinner.fail(String(err)); throw err; } }统一封装后业务代码不再直接依赖 chalk/ora换肤与日志策略调整只需改动这一处。五步搭建流程从空目录到可运行模板给出了从零搭建的标准步骤这里逐条展开为可执行指令创建项目目录mkdir project-name cd project-name初始化 package.jsonnpm init -y随后按上文示例补充bin、type、scripts等字段安装依赖npm install commander inquirer/prompts chalk ora cosmiconfig配置 package.json 的 bin 字段声明bin: { 命令名: ./bin/cli.js }并确保bin/cli.js带 shebang本地联调npm link将命令软链到全局PATH之后即可在任何目录直接敲命令名测试开发迭代阶段也可用npm run devtsx 直接执行 TS 源码。完成npm link后运行my-cli --help应能看到 Commander 自动生成的帮助信息my-cli --version输出版本号。发布到 npm三步上线模板给出的发布流程非常简洁npm login npm publish展开后的完整注意点先构建后发布执行npm run build产出dist/并确认package.json的files字段只打包必要目录如bin、dist避免把源码与测试文件带上npm login登录 npm 账号若未配置 registry注意确认源地址npm publish发布后可用npm i -g 包名安装验证。若希望日后覆盖发布需在发布前递增package.json中的version或使用npm version patch自动递增。最佳实践模板的经验清单模板在最佳实践一节给出了 5 条工程经验这里结合源码级示例逐一深化1. 提供有助益的错误信息错误信息应说明哪里错了 怎么办。例如配置文件解析失败时不要只抛Invalid config而是输出log.error(Failed to parse config at ${filePath}: ${err.message}); log.info(Tip: run my-cli config validate to check your config file.);配合logger.ts中统一的log.error红色与log.info蓝色用户一眼即可定位问题。2. 同时支持交互与非交互模式这是模板设计原则的直接落地凡是有confirm/prompt的地方都要先检查--yes或--no-input旗标。非交互模式下应使用命令行选项的默认值或配置文件的兜底值绝不能阻塞等待输入——否则在 CI 管道中会被永久挂起。3. 保持输出样式一致所有成功/失败/进度输出统一走logger.ts避免业务代码中零散出现console.log(chalk.xxx)。这样既保证色彩语义全局一致绿成功、红错误、黄警告也让安静模式--quiet只输出错误的实现成本降到最低。4. 用 Zod 校验输入模板明确要求用 Zod 做输入校验。与手写 if/else 相比Zod 提供声明式 schema 与类型推导import { z } from zod; const DeployOptions z.object({ env: z.enum([development, staging, production]).default(development), region: z.string().min(1).optional(), }); const parsed DeployOptions.parse(options); // 类型安全 运行时校验这一实践与 app-builder 默认技术栈中validation: Zod / TypeBox的选型保持一致说明 Zod 是 AAS 技能库在服务端与 CLI 场景下的统一校验方案。5. 使用正确的退出码退出码是脚本编排与 CI 判断成败的唯一依据try { await main(); process.exit(0); // 成功 } catch (err) { log.error(String(err)); process.exit(1); // 失败 }约定俗成0 表示成功1 表示一般错误也可为细分错误定义更具体的退出码如 2 表示参数错误便于上层脚本分类处理。总结cli-tool 模板给出了一个麻雀虽小、五脏俱全的现代 Node.js CLI 工程基准Commander.js 负责解析、Inquirer.js 负责交互、chalk/ora 负责体验、cosmiconfig 负责配置、Zod 负责校验、规范退出码负责可编排性。它既是 AAS app-builder 技能体系在 CLI 应用场景下的标准答案也可以脱离该体系、被任何开发者直接复制为个人 CLI 项目的起点。按照本文的步骤与示例从mkdir到npm publish即可在十几分钟内完成一个具备交互与自动化双模能力、体验规范、可发布可集成的命令行工具。赞分享AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载相关推荐claude-skills 之 cli-developer跨语言 CLI 工具开发的完整实战指南claude skills 之 cli developer跨语言 CLI 工具开发的完整实战指南 本篇指南系统讲解 claude skills 仓库中 cliAI 技能AI 插件后端前端DevOps在 Kiro CLI 中集成 Agentic Awesome Skills安装、技能调用与 AWS 云开发工作流实战指南在 Kiro CLI 中集成 Agentic Awesome Skills安装、技能调用与 AWS 云开发工作流实战指南 本篇指南讲解如何将 AgenticAI 技能AI 插件openpi部署指南两条Docker命令跑通机械臂仿真控制openpi部署指南两条Docker命令跑通机械臂仿真控制 openpi是机器人方向的开源视觉 语言 动作VLA模型库用两条Docker命令就能在MuJ人工智能大模型具身智能预训练微调模型推理服务上一篇EasyAdmin 后台安全加固自定义后台路径与 CSRF 防护完整指南下一篇如何将Android Action Bar Style Generator生成的资源集成到你的项目中创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026最新专硕考试科目拆解:别再死磕教程,直接上手代码逻辑

2026最新专硕考试科目拆解:别再死磕教程,直接上手代码逻辑

2026最新专硕考试科目拆解:别再死磕教程,直接上手代码逻辑 你是不是也这样?刷了几百个视频,背了一堆概念,一到自己搭项目就卡壳,代码写不出来,报错查半天找不到根源。这种“懂原理不会动手”的尴尬,在2026年最新的开发环境下更加明显,因为框…

2026/9/21 18:58:43 阅读更多 →
Go语言封装特性与实践指南

Go语言封装特性与实践指南

1. Go语言封装特性概述在Go语言中实现面向对象编程时,封装(Encapsulation)是最基础也是最重要的特性之一。与传统的类继承体系不同,Go通过独特的结构体(struct)和方法(method)机制来…

2026/9/21 18:58:43 阅读更多 →
安托万证书避坑:3个致命误区+完整示例,面试不再哑口无言

安托万证书避坑:3个致命误区+完整示例,面试不再哑口无言

安托万证书避坑:3个致命误区+完整示例,面试不再哑口无言 面试时被追问“安托万”原理,你只能支支吾吾说“就是那个跨地区转介的证”,面试官眼神瞬间冷掉。别慌,这不是你孤例,每年都有大把房建工程从业者栽在概念混淆上。其实只要吃透跨省转介办理差异…

2026/9/21 18:58:43 阅读更多 →

最新新闻

5个致命坑:一文搞懂五笔反查工具选型与避坑

5个致命坑:一文搞懂五笔反查工具选型与避坑

5个致命坑:一文搞懂五笔反查工具选型与避坑 看了一堆教程还是不会写项目?别急,这真不是你笨。很多开发者在做输入法辅助工具或文本处理系统时,盯着屏幕上的报错发呆,明明逻辑看着没错,一跑起来就崩。今天咱们不聊虚的,直接切入正题,帮你一文搞懂【五…

2026/9/21 19:37:05 阅读更多 →
C#上位机通信实战:HSLCommunication搞定Modbus TCP与PLC

C#上位机通信实战:HSLCommunication搞定Modbus TCP与PLC

1. 为什么我最终选了HSLCommunication做PLC通信做C#上位机开发的朋友,十有八九绕不开和PLC打交道这件事。我最早接触这块是在一个产线数据采集项目里,当时现场有西门子S7-1200、三菱FX系列、还有几台汇川的PLC,品牌杂、协议多,光是…

2026/9/21 19:37:05 阅读更多 →
新浪短链生成器实战:新手避坑指南,解决API失效难题

新浪短链生成器实战:新手避坑指南,解决API失效难题

新浪短链生成器实战:新手避坑指南,解决API失效难题 新浪短链 API 突然升级导致旧代码全报 404? 这是无数新手在复现教程时遇到的噩梦。 版本迭代太快,文档滞后,导致大量项目直接瘫痪。 很多学员拿着三年前的博客教程去写代码,结果发现…

2026/9/21 19:37:05 阅读更多 →
微信小程序开发睡眠助眠音乐系统实践

微信小程序开发睡眠助眠音乐系统实践

1. 项目概述:当音乐遇见科技失眠问题已经成为现代社会的普遍困扰。根据中国睡眠研究会发布的调查报告显示,我国有超过3亿人存在不同程度的睡眠障碍。传统药物治疗虽然见效快,但长期使用容易产生依赖性和副作用。作为一名长期受失眠困扰的程序…

2026/9/21 19:37:05 阅读更多 →
Java+SSM与Flask混合架构在医疗知识系统中的应用

Java+SSM与Flask混合架构在医疗知识系统中的应用

1. 项目背景与核心价值小儿肺炎作为儿童常见呼吸道疾病,其防治知识的普及率直接影响家庭护理质量和医疗资源合理利用。传统健康宣教存在信息碎片化、更新滞后、互动性差等痛点,而医疗机构的线下宣教又受限于时间和空间。这个基于JavaSSMFlask的混合架构知…

2026/9/21 19:37:05 阅读更多 →
11点11分源码深扒:解决复制代码跑不通的性能优化实战

11点11分源码深扒:解决复制代码跑不通的性能优化实战

11点11分源码深扒:解决复制代码跑不通的性能优化实战 刚把CSDN上那篇“11点11分”高精度计时Demo复制到本地,双击运行直接报 ImportError…

2026/9/21 19:36:05 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →