Zurück zu Fähigkeiten

scaffold-cli-command

pjt222
Aktualisiert 6 days ago
17 Ansichten
17
2
17
Auf GitHub ansehen
Testentestingdesign

Über

Diese Fähigkeit erstellt ein neues Commander.js CLI-Kommando mit strukturierten Optionen, einem Aktions-Handler und drei Ausgabemodi (menschenlesbar, leise, JSON). Sie bietet Muster für Kommando-Design, gemeinsamen Kontext, Fehlerbehandlung und Integrationstests. Nutzen Sie sie, wenn Sie eine bestehende CLI erweitern, ein neues Werkzeug von Grund auf erstellen oder Kommandos in einer Multi-Kommando-Anwendung standardisieren möchten.

Schnellinstallation

Claude Code

Empfohlen
Primär
npx skills add pjt222/agent-almanac -a claude-code
Plugin-BefehlAlternativ
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativ
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/scaffold-cli-command

Kopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren

Dokumentation

架 CLI 命

加新命於 Commander.js 應、一致選、三出模、整測。

  • 加命於既 Commander.js CLI→用
  • 自無設多命 CLI→用
  • 一規諸命結構→用
  • 加禮變(暖敘出代機出)→用

  • :命名與動詞(如 gatherauditsync
  • :命作(一句)
  • :CLI 入口徑(如 cli/index.js
  • :需禮變乎
  • :標選外之選
  • :位參(<name>[names...]

一:擇命名與類

選傳動之動詞。組命入類:

CRUDinstalluninstalllistsearch操容
initsyncaudit管項態
gatherscattertendcampfire暖敘出

名規:

  • 用單動(非 install-skill—讓選定何)
  • 小寫、命名內無連字
  • 位參:<必>[可][多...]
program
  .command('gather <name>')
  .description('Gather a team around the campfire')

得:命名、述、位參定。

敗:動詞與既存命疊→組之(加選於既命)或於述清辨。

二:定選

每命宜支共選與命特。

標選(按需):

  .option('-n, --dry-run', 'Preview without making changes')
  .option('-q, --quiet', 'Suppress human-readable output')
  .option('--json', 'Output as JSON')
  .option('-f, --framework <id>', 'Target specific framework')
  .option('-g, --global', 'Use global scope')
  .option('--scope <scope>', 'Scope: project, workspace, global', 'project')
  .option('--source <path>', 'Path to tool root directory')

命特選—僅加所需:

  .option('--ceremonial', 'Show each item arriving individually')
  .option('--only <items>', 'Comma-separated subset to include')
  .option('-y, --yes', 'Skip confirmation prompts')

設則:

  • 短旗(-n)為常用
  • 長旗(--dry-run)為清
  • 默值為第三參
  • 布旗為切

得:選鏈含標與特。

敗:選累 > 8→分子命或組相關選。

三:作動處理

動處理循一致式:

.action(async (name, options) => {
  const ctx = getContext(options);

  const items = resolveItems(ctx, name, options);
  if (!items || items.length === 0) {
    reporter.error('Nothing found.');
    process.exit(1);
  }

  if (options.dryRun) reporter.printDryRun();

  const results = await executeOperation(items, ctx, options);

  if (options.json) {
    console.log(JSON.stringify(results, null, 2));
  } else if (options.quiet) {
    reporter.printResults(results);
  } else {
    printHumanOutput(results, options);
  }
})

getContext() 共助中:

  • 根目察
  • 譜載
  • 框察或顯選
  • 範解

得:動處理循 5 步—境→解→預→行→出。

敗:命不合「解-行」式(如純訊如 detect)→簡為境→算→出。

四:加三出模

每命宜支三模:

默(人讀):

Installing 3 item(s) to Claude Code...

  + create-skill [claude-code] .claude/skills/create-skill
  + write-tests  [claude-code] .claude/skills/write-tests
  = commit-changes [claude-code] (skipped)

  2 installed, 1 skipped

靜(--quiet): 標報出—簡行含態符(+-=!),無禮、無飾。

JSON(--json):

{
  "command": "install",
  "items": 3,
  "installed": 2,
  "skipped": 1,
  "failed": 0
}

行式:

if (options.json) {
  console.log(JSON.stringify(data, null, 2));
  return;
}
if (options.quiet) {
  reporter.printResults(results);
  return;
}
printHumanReadable(results, options);

得:三模皆出有用。JSON 可解。靜簡。默訊。

敗:命無有意 JSON 表(如 detect)→略 JSON 模、文錄因。

五:加禮變(可)

宜暖敘出代易出之命:

if (options.json) {
  ceremonyReporter.printJson(data);
} else if (options.quiet) {
  reporter.printResults(results);
} else {
  ceremonyReporter.printArrival({
    teamId: name,
    agents,
    results: { installed, skipped, failed },
    ceremonial: options.ceremonial || false,
  });
}

禮出循聲則:

  1. 現時、主動聲
  2. 無歎號
  3. 喻代術
  4. 敗誠、非災
  5. 末行映態
  6. 無 emoji—用 Unicode 字符(✦ ◉ ◎ ○ ✗)
  7. 每字載訊

詳見 design-cli-output 技。

得:禮出循諸聲則、生暖訊敘。

敗:禮覺強或不增訊→略。非每命需禮變。

六:理誤與邊例

if (!item) {
  reporter.error(`Unknown: ${name}. Use 'tool list' to browse.`);
  process.exit(1);
}

if (!options.yes && !options.quiet && !options.dryRun) {
  const answer = await askYesNo('Proceed?');
  if (!answer) {
    console.log('  Cancelled.');
    return;
  }
}

if (!state.fires[name]) {
  reporter.error(`Not active. Nothing to remove.`);
  process.exit(1);
}

誤設則:

  • 誤訊建糾正動
  • process.exit(1) 為不可復誤
  • 確認提予破壞動(--yes 繞)
  • 預演恆成(不阻於確)

得:諸誤路生助訊。破壞動需確認。

敗:確擾本→確 --yes--quiet 皆繞。

七:書整測

import { describe, it, after } from 'node:test';
import assert from 'node:assert/strict';
import { execSync } from 'child_process';

const CLI = 'node cli/index.js';
function run(args) {
  return execSync(`${CLI} ${args}`, { encoding: 'utf8', timeout: 10000 });
}

describe('new-command', () => {
  after(() => { });

  it('dry-run shows preview', () => {
    const out = run('new-command arg --dry-run');
    assert.match(out, /DRY RUN/);
  });

  it('--json outputs valid JSON', () => {
    const out = run('new-command arg --json');
    const start = out.indexOf('{');
    const data = JSON.parse(out.slice(start));
    assert.equal(data.command, 'new-command');
  });

  it('rejects unknown input', () => {
    assert.throws(() => run('new-command nonexistent'), /Unknown/);
  });
});

詳見 test-cli-application 技。

得:≥ 3 測—預演、JSON、誤例。複命更多。

敗:execSync 超時→增時或察互動提阻命。

  • 命註於 CLI 入口、見於 --help
  • 標選(--dry-run--quiet--json)正
  • 默出人讀且訊
  • JSON 出有效可解
  • 誤訊建糾正動
  • 破壞動需確(--yes 繞)
  • ≥ 3 整測過
  • 命循 getContext → 解 → 行 → 出 式

  • 忘 JSON 模:機消費(本、CI)依結構出。雖命似互動唯亦行 --json
  • 確阻本:問入命於非互動境掛。破壞命予 --yes--quiet 抑提
  • 誤退碼不一:諸誤用 process.exit(1)。析 CLI 出之工先察退碼
  • 選無默:如 --scope 宜有合理默以免每次定
  • 禮泄入靜模--quiet 為「機之最小出」。禮泄入靜→本破於非期出

  • build-cli-plugin
  • test-cli-application
  • design-cli-output
  • install-almanac-content

GitHub Repository

pjt222/agent-almanac
Pfad: i18n/wenyan-ultra/skills/scaffold-cli-command
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Verwandte Skills

evaluating-llms-harness

Testen

Diese Claude Skill führt den lm-evaluation-harness aus, um LLMs über 60+ standardisierte akademische Aufgaben wie MMLU und GSM8K zu benchmarken. Sie wurde für Entwickler entwickelt, um Modellqualität zu vergleichen, Trainingsfortschritt zu verfolgen oder akademische Ergebnisse zu berichten. Das Tool unterstützt verschiedene Backends, einschließlich HuggingFace- und vLLM-Modelle.

Skill ansehen

cloudflare-cron-triggers

Testen

Diese Fähigkeit bietet umfassendes Wissen zur Implementierung von Cloudflare Cron Triggers, um Workers mithilfe von Cron-Ausdrücken zu planen. Sie behandelt das Einrichten periodischer Aufgaben, Wartungsjobs und automatisierter Workflows, während häufige Probleme wie ungültige Cron-Ausdrücke und Zeitzonenprobleme behandelt werden. Entwickler können sie zum Konfigurieren geplanter Handler, zum Testen von Cron-Triggers und zur Integration mit Workflows und Green Compute verwenden.

Skill ansehen

webapp-testing

Testen

Diese Claude Skill bietet ein Playwright-basiertes Toolkit zum Testen lokaler Webanwendungen durch Python-Skripte. Es ermöglicht Frontend-Verifizierung, UI-Debugging, Screenshot-Aufnahme und Log-Einblick bei gleichzeitiger Verwaltung von Server-Lebenszyklen. Nutzen Sie es für Browser-Automatisierungsaufgaben, führen Sie Skripte jedoch direkt aus, anstatt deren Quellcode zu lesen, um Kontextverschmutzung zu vermeiden.

Skill ansehen

finishing-a-development-branch

Testen

Diese Fähigkeit unterstützt Entwickler dabei, abgeschlossene Arbeiten zu finalisieren, indem sie testet, ob Tests bestehen, und dann strukturierte Integrationsoptionen präsentiert. Sie leitet den Workflow für das Zusammenführen von Code, das Erstellen von PRs oder das Bereinigen von Branches nach Abschluss der Implementierung. Nutzen Sie sie, wenn Ihr Code bereit und getestet ist, um den Entwicklungsprozess systematisch abzuschließen.

Skill ansehen