CLIツールを作る方法+コンパクト化せずに長く作業するためのスキル

Reddit r/artificial / 2026/3/24

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisTools & Practical Usage

要点

  • 著者は、AIエージェントが頻繁にブラウザのタブを切り替えなくても ClickUp を自動更新できるようにするための、CLIツールとコンパニオンスキル(SKILL.md)を構築する方法を説明している。これにより、長時間のセッション中もエージェントのコンテキストを保てる。
  • CLI+スキルのワークフローは、MCPサーバーやブラウザベースのやり取りと比べて、トークン使用量を抑えられると主張している。理由は、エージェントがシェルコマンドを実行し、(パイプされたMarkdownやJSONなどの)コンパクトな構造化出力を最小限のプロトコルオーバーヘッドで消費するため。
  • このプロジェクトは、Claude Opus 4 を用いた自動ワークフローによって完全に生成されており(手書きのコードはない)、著者はAIでCLIを生成するための再利用可能な「vibe-code」パターンを共有したいと考えている。
  • エージェントのワークフローでは、「obra superpowers」(計画、実装、レビュー、出荷を構造化された形で教えるスキルセット)を使い、反復可能な手順によって機能追加を効率化している。
  • 同様のパターンは、APIはあるが強力なエージェント統合がない他のサービスにも適用できると提案しており、RESTに対応したCLIと、小さなMarkdownの利用/スキルファイルを組み合わせる。

私はAIエージェントを日々扱っていて、コンテキストスイッチを最小限に抑え、開発中に通常使っているすべてのツールをエージェントが使えるようにするよう非常に気を配っています。最近は、エージェントがそれらのツール自体を見つけ出すのが得意なので、これはかなりうまくいっています。ですが、私の仕事ではClickUpが必要なので、ステータス更新、コメント、タスクの説明のたびにalt+タブでClickUpに切り替えるのにうんざりしていました。そこで、それをコンテキストとして渡すために、CLIをプロンプトして作り、さらにスキルも一緒に用意しました。そうすれば、エージェントが自動でそれを拾うはずです。

プロジェクト全体はClaude Opus 4で作られ、OpenCode () によってHighモードに設定されました。手書きした行は1行もありません。

ビルドプロセスを共有したいです。というのも、このパターンは、独自のCLIツールでvibe-codeしたい人なら誰にでも再利用可能だと思うからです。私は、これを大きなAI生産性のブーストとしておすすめします。

哲学:CLI + SKILL.md

エージェントと一緒に働いて得た最大の収穫は、スキルファイルと組み合わせたCLIツールは、MCPサーバーやブラウザベースのワークフローよりも、必要トークン数がずっと少ないということです。エージェントはシェルコマンドを実行し、構造化された出力を得て、必要ならパイプし、その後すぐ次へ進みます。つまり、プロトコルのオーバーヘッドなし、サーバープロセスなし、大量のコンテキスト投入なし、ただデータがまっすぐ流れるだけです。

これは「圧縮」が少なくて済むことを意味します。エージェントが何をしているかを見失うことなく、より長いセッションを進められます。スキルファイルは小さく(数百行のマークダウン)、CLIの出力もコンパクトです(パイプしたときはマークダウン、代替としてJSON)。さらに、エージェントは保持すべき状態をあまり必要としません。

このパターン――CLIを作り、SKILL.mdを書き、エージェントに渡す――は、APIがあるがエージェント統合がうまくできていないほぼあらゆるサービスで機能しうると思います。社内ツール、CRM、デプロイパイプライン。RESTクライアントを書いて、それを使う方法を説明するマークダウンファイルさえ用意できれば、エージェントはそれを学べます。

ビルドプロセス

私はエージェントのワークフローに obra superpowers を使っています。これは、Claudeに対して、コードを構造化された形で計画し、実装し、レビューし、そして出荷する方法を教えるための一連のスキルです。Ralphのような完全なループ型フレームワークで回すのは大げさで、単純なプロンプトを書くのも物足りない、そのちょうど良い甘いポイントだと言えるでしょう。複雑なオーケストレーションシステムの複雑さなしに、構造化された計画と並列実行が得られます。

初期セットアップ(repo、npm、Homebrew、CI、タグベースのリリース。これもエージェントが実施)以降は、新機能ごとに、だいたい同じプロンプトを使い、superpowersのスキルセットに強く依存します。

``` ブレインストーミングスキルを使って<task>の実装に向けた準備をする // 1 必要なだけ質問する

アプローチ<A/B/C>でいこう // 2

ライティングプランスキルを使って<task>向けの完全な計画を .md ファイルとして準備する

サブエージェント駆動開発と実行プランスキルを使って、完全な計画を実装し、テストで確認する

自分で開発しない。ディスパッチング・パラレル・エージェントを使ってサブエージェントのオーケストレータとして振る舞う。追加の質問があれば自分で判断して、DECISIONS.mdにその内容を記録する

PROGRESS.mdで進捗を追跡し、それを次のエージェントに引き継ぐ。サブエージェントにはそれらのファイルを指し示し、圧縮サマリーでそれらへリンクする ```

私は、エージェントに「何を作るか」をすでにクリアにしているかどうかで、// 1 または // 1 + 2 を省略することがあります。

これを実際にやるとどうなるか:エージェントがアプローチをブレインストーミングし、1つを選び、詳細な計画を書きます。そして、その計画の各パートを並列に実装するためのサブエージェントを起動します。進捗はマークダウンファイルで追跡するので、コンテキストが長くなったときでも、サマリーが計画と意思決定へリンクしてくれます。各サブエージェントはテストを書き、オーケストレータがレビューします。私は主に承認するか、方向転換を指示するだけです。ブレインストーミング後に質問へ答える必要はほとんどありません。ほぼ「ちょっと機能を追加したい(たとえば“コメント機能を追加しよう”)」といった要望を出したときだけです。

リポジトリ内のAGENTS.mdは、新機能の最後にリリース対応(バージョンの更新、タグ付け、プッシュ)もエージェントが処理するよう指示しています。だから「機能Xを作りたい」から「npmで公開された」までの一連のサイクルに、私の監督はほとんど不要です。私はテストを信頼していますし、正直なところ、ときどき私が見るのはテストだけです。でも、実際にはそれすらあまりしません。

1つの機能(タイムトラッキング――6つのコマンド、完全にテスト済み、ドキュメント付き)では、私の作業時間はだいたい~10〜15分でした。その大半は計画のレビューとアプローチの確認で、他のことはエージェントが全部やりました。ただ率直に言うと、今では小さな機能もレビューしなくて大丈夫だと信じています。

ツールが実際にやっていること

cup はClickUpのCLIです。出力モードは3つ:

  • ターミナル上:タスクピッカー付きのインタラクティブなテーブル、カラフルな出力
  • パイプ(エージェントが見るもの):きれいなマークダウンで、コンテキストウィンドウに合わせたサイズ
  • --json:スクリプト用の構造化データ

```bash

モーニングスタンドアップ

cup summary

エージェントがタスクを読み、作業して、更新する

cup task PROJ-123 cup update PROJ-123 -s "in progress"

...作業する ...

cup comment PROJ-123 -m "Fixed in commit abc1234" cup update PROJ-123 -s "in review" ```

タスク、コメント、スプリント、チェックリスト、タイムトラッキング、カスタムフィールド、タグ、依存関係、添付ファイルを扱う40以上のコマンドがあります。各機能はすべてテスト済みです。リポジトリには、Claude Code、OpenCode、Codex向けのすぐ使えるスキルファイルが含まれています(これらは私が実際にレビューやテストに必要だった数少ないものの一部です)。

GitHub: https://github.com/krodak/clickup-cli npm: https://www.npmjs.com/package/@krodak/clickup-cli

自分のワークフローのためにCLIツールを作ろうと考えているなら、教えてください。CLI + スキルファイルのパターンは、最近私の最大の生産性の解放(ブレイクスルー)でした。

submitted by /u/krodak
[link] [comments]