Communitygithub.com

YepAPI/skills

Commander.js, interaktive Eingabeaufforderungen mit Clack, Spinner, Farben, Konfigurationsdateien, Exit-Codes und npm-Veröffentlichung.

Was ist skills?

Diese Fähigkeit bietet eine umfassende Anleitung zur Erstellung professioneller CLI-Tools mit modernen JavaScript-Bibliotheken. Sie behandelt die Argumentanalyse mit Commander.js, interaktive Eingabeaufforderungen mittels `@clack/prompts` oder `inquirer`, visuelle Spinner für Hintergrundprozesse mit `ora` und farbige Ausgaben mit `chalk`. Darüber hinaus wird die Konfigurationsverwaltung über `cosmiconfig` erklärt, das automatisch nach Dateien wie `.toolrc` oder `tool.config.js` sucht. Die Fähigkeit legt großen Wert auf korrekte Exit-Codes (`0` für Erfolg, `1` für Fehler, `2` für Nutzungsfehler) und eine konsistente Fehlerbehandlung, damit Skripte und CI-Systeme zuverlässig arbeiten. Für die Veröffentlichung auf npm werden das `bin`-Feld in der `package.json`, der Shebang `#!/usr/bin/env node` und das Modul-System (`"type": "module"`) beschrieben. Ein vollständiges TypeScript-Beispiel zeigt die typische Implementierung mit Commander, Clack und ora. Die Fähigkeit warnt außerdem vor häufigen Fehlern wie der Ausgabe von Fehlern auf stdout, fehlenden Exit-Codes oder dem Verzicht auf `--flag`-Alternativen für CI-Umgebungen.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

CLI-Tools

Regeln

  • Commander.js für Argumentanalyse — .command(), .option(), .argument() mit Beschreibungen
  • Interaktive Eingabeaufforderungen: @clack/prompts (modern, schön) oder inquirer — für Benutzereingaben, wenn Argumente nicht bereitgestellt werden
  • Spinner: ora für langlaufende Operationen — starten, Nachricht aktualisieren, erfolgreich/fehlgeschlagen
  • Farben: chalk für gestaltete Ausgaben — sparsam verwenden: rot für Fehler, grün für Erfolg, gelb für Warnungen, dim für sekundäre Informationen
  • Konfigurationsdateien: cosmiconfig — durchsucht automatisch .toolrc, .toolrc.json, tool.config.js, package.json-Schlüssel
  • Exit-Codes: 0 für Erfolg, 1 für allgemeinen Fehler, 2 für Nutzungsfehler — immer process.exit(code)
  • --help und --version Flags: Commander fügt sie automatisch hinzu — schreiben Sie klare Beschreibungen für jede Option
  • Fehlerbehandlung: Fangen Sie Fehler auf der obersten Ebene ab, geben Sie eine benutzerfreundliche Meldung auf stderr aus, beenden Sie mit Code 1
  • Veröffentlichung: bin-Feld in package.json, Shebang #!/usr/bin/env node, "type": "module" für ESM

Muster

#!/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("Ein CLI, das nützliche Dinge tut")
  .version("1.0.0");

program
  .command("init")
  .description("Ein neues Projekt initialisieren")
  .option("-t, --template <name>", "zu verwendende Vorlage", "default")
  .action(async (options) => {
    p.intro(chalk.bold("Projekt-Setup"));

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

    const spinner = ora("Projekt wird erstellt...").start();
    await createProject(name, options.template);
    spinner.succeed(chalk.green("Projekt erstellt!"));

    p.outro(`Führe ${chalk.cyan(`cd ${name} && npm install`)} aus`);
  });

program.parse();

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

Vermeiden

  • Fehler auf stdout ausgeben — verwenden Sie console.error() oder process.stderr.write() für Fehler
  • Beenden ohne Code bei Fehlschlag — immer process.exit(1), damit Skripte und CI den Fehler erkennen
  • Wände aus unformatiertem Text — verwenden Sie chalk-Farben, Abschnitte und Leerraum für Lesbarkeit
  • Interaktive Eingabe ohne Flag-Alternative erzwingen — unterstützen Sie immer --flag-Überschreibungen für CI/Scripting
  • Shebang #!/usr/bin/env node vergessen — ohne ihn funktionieren npx und globale Installationen nicht

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.

Verwandte Skills