Communitygithub.com

YepAPI/skills

Commander.js, indicadores interactivos con Clack, spinners, colores, archivos de configuración, códigos de salida y publicación en npm.

¿Qué es skills?

Este skill define un conjunto completo de buenas prácticas y herramientas para la creación de herramientas de línea de comandos (CLI) modernas y robustas en Node.js. Se enfoca en la combinación de Commander.js para el análisis de argumentos, @clack/prompts para indicadores interactivos atractivos, ora para spinners que muestran progreso, y chalk para dar color a la salida de forma legible. Además, cubre la gestión de archivos de configuración con cosmiconfig, el manejo correcto de códigos de salida (0, 1, 2), y los pasos necesarios para publicar el CLI en npm, incluyendo el campo 'bin' en package.json y el shebang adecuado. Está diseñado para agentes de IA como Claude Code, Cursor y Codex, y proporciona reglas claras, patrones de código TypeScript listos para usar y advertencias sobre errores comunes, todo con el objetivo de que el desarrollador o el agente genere herramientas CLI profesionales, fiables y fáciles de usar en entornos de scripting y CI.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Herramientas CLI

Reglas

  • Commander.js para análisis de argumentos — .command(), .option(), .argument() con descripciones
  • Indicadores interactivos: @clack/prompts (moderno, atractivo) o inquirer — para entrada de usuario cuando no se proporcionan argumentos
  • Spinners: ora para operaciones de larga duración — iniciar, actualizar mensaje, finalizar con éxito/fallo
  • Colores: chalk para salida con estilo — usar con moderación: rojo para errores, verde para éxito, amarillo para advertencias, atenuado para información secundaria
  • Archivos de configuración: cosmiconfig — busca automáticamente .toolrc, .toolrc.json, tool.config.js, clave en package.json
  • Códigos de salida: 0 para éxito, 1 para error general, 2 para error de uso — siempre usar process.exit(code)
  • Banderas --help y --version: Commander las añade automáticamente — escribir descripciones claras para cada opción
  • Manejo de errores: capturar errores en el nivel superior, mostrar mensaje amigable al usuario en stderr, salir con código 1
  • Publicación: campo bin en package.json, shebang #!/usr/bin/env node, "type": "module" para ESM

Patrones

#!/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("Un CLI que hace cosas útiles")
  .version("1.0.0");

program
  .command("init")
  .description("Inicializar un nuevo proyecto")
  .option("-t, --template <name>", "plantilla a usar", "default")
  .action(async (options) => {
    p.intro(chalk.bold("Configuración del Proyecto"));

    const name = await p.text({ message: "¿Nombre del proyecto?", placeholder: "mi-app" });
    if (p.isCancel(name)) { p.cancel("Cancelado."); process.exit(0); }

    const spinner = ora("Creando proyecto...").start();
    await createProject(name, options.template);
    spinner.succeed(chalk.green("¡Proyecto creado!"));

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

program.parse();

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

Evitar

  • Imprimir errores en stdout — usar console.error() o process.stderr.write() para errores
  • Salir sin código en caso de fallo — siempre usar process.exit(1) para que los scripts y CI detecten el fallo
  • Muros de texto sin formato — usar colores de chalk, secciones y espacios en blanco para legibilidad
  • Requerir entrada interactiva sin alternativa con bandera — siempre soportar sobrescrituras con --flag para CI/scripting
  • Olvidar el shebang #!/usr/bin/env node — sin él, npx y las instalaciones globales no funcionarán

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.

Skills relacionados