Communitygithub.com

Ferramentas CLI

Commander.js, prompts interativos com Clack, spinners, cores, arquivos de configuração, códigos de saída e publicação npm.

O que é Ferramentas CLI?

Esta skill padroniza a criação de ferramentas de linha de comando (CLI) em Node.js, combinando Commander.js para análise de argumentos, @clack/prompts para entrada interativa do usuário, ora para spinners de operações longas e chalk para saída colorida. Ela define padrões claros para tratamento de erros, códigos de saída (0 para sucesso, 1 para erro, 2 para uso incorreto) e descoberta de configuração via cosmiconfig. A skill inclui orientação completa para publicação npm, como o campo bin no package.json, shebang e módulos ESM. Suporta qualquer ambiente Node.js moderno e é ideal para desenvolvedores que desejam criar CLIs robustas e amigáveis, com exemplos práticos que cobrem desde prompts interativos até a finalização correta do processo.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/cli-tools

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Ferramentas CLI faz?

Regras

  • Commander.js para análise de argumentos — .command(), .option(), .argument() com descrições
  • Prompts interativos: @clack/prompts (moderno, bonito) ou inquirer — para entrada do usuário quando argumentos não são fornecidos
  • Spinners: ora para operações longas — iniciar, atualizar mensagem, sucesso/erro
  • Cores: chalk para saída estilizada — use com moderação: vermelho para erros, verde para sucesso, amarelo para avisos, cinza para informações secundárias
  • Arquivos de configuração: cosmiconfig — busca automaticamente por .toolrc, .toolrc.json, tool.config.js, chave em package.json
  • Códigos de saída: 0 para sucesso, 1 para erro geral, 2 para erro de uso — sempre use process.exit(código)
  • Flags --help e --version: Commander as adiciona automaticamente — escreva descrições claras para cada opção
  • Tratamento de erros: capture erros no nível mais alto, exiba mensagem amigável no stderr, saia com código 1
  • Publicação: campo bin no package.json, shebang #!/usr/bin/env node, "type": "module" para ESM

Padrões

#!/usr/bin/env node
import { Command } from "commander";
import * as p from "@clack/prompts";
import ora from "ora";
import chalk from "chalk";

const program = new Command()
  .name("my-tool")
  .description("Uma CLI que faz coisas úteis")
  .version("1.0.0");

program
  .command("init")
  .description("Inicializar um novo projeto")
  .option("-t, --template <nome>", "template a ser usado", "default")
  .action(async (options) => {
    p.intro(chalk.bold("Configuração do Projeto"));

    const name = await p.text({ message: "Nome do projeto?", placeholder: "my-app" });
    if (p.isCancel(name)) { p.cancel("Cancelado."); process.exit(0); }

    const spinner = ora("Criando projeto...").start();
    await createProject(name, options.template);
    spinner.succeed(chalk.green("Projeto criado!"));

    p.outro(`Execute ${chalk.cyan(`cd ${name} && npm install`)}`);
  });

program.parse();

// package.json: { "bin": { "my-tool": "./dist/index.js" } }

Evitar

  • Imprimir erros no stdout — use console.error() ou process.stderr.write() para erros
  • Sair sem código ao falhar — sempre use process.exit(1) para que scripts e CI detectem a falha
  • Paredes de texto sem formatação — use cores do chalk, seções e espaçamento para legibilidade
  • Exigir entrada interativa sem alternativa via flag — sempre suporte sobrecarga com --flag para CI/scripts
  • Esquecer o shebang #!/usr/bin/env node — sem ele, npx e instalações globais não funcionarão

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Tenant isolation (row-level vs schema), subdomain routing, per-tenant config, and data partitioning.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Habilidades Relacionadas