Communitygithub.com

CLI-First Decision(CLI优先决策)

AIエージェントスキル集 — CMD+PowerShell 回避ガイド · CLI優先決定マトリックス · その他のスキルも随時追加中

CLI-First Decision(CLI优先决策) とは?

このスキルは、AIエージェント(Claude Code、Cursor、Codexなど)がタスクを実行する前に、常に最初にトリガーされるべき「CLI優先決定」ルールを提供します。ファイル操作、コード変更、システムコマンドの実行、あるいはビルトインツール、CLIユーティリティ、スキル、MCPサーバー、サブエージェントのいずれを使うべきかの判断が必要なあらゆるタスクにおいて、本スキルが最適なツール選択をガイドします。特にWindows/Linuxコマンド操作、バッチ/PowerShell/シェルスクリプト、ファイル検索・置換・編集の場面で重要です。スキルは判断ツリーとツール決定マトリックスを提供し、各ツールの推奨使用シーンとレイテンシを一覧で示します。また、サブエージェントをいつ使うべきかのガイドラインや、よくあるミス(CLIをスキップして安易にサブエージェントを使う、プレビューせずに一括置換するなど)とその回避策も含まれており、エージェントの効率と正確性を最大化します。

対応~Claude Code~Codex CLI~Cursor
npx skills add High-cla/multi-skilled-repository

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

---
name: cli-first-decision
description: 常に思考の前、ツール呼び出しの前、サブエージェント派遣の前に使用すること。ファイル操作、コード変更、システムコマンド、またはアプローチ(ビルトインツール、CLIユーティリティ、スキル、MCPサーバー、サブエージェント)の選択が必要なあらゆるタスクで最初にトリガーすべきスキルです。トリガー条件:ツールが必要になる可能性のあるリクエスト、Windows/Linuxコマンド操作、バッチ/PowerShell/シェルスクリプト、ファイル検索/置換/編集操作、または何かを達成する方法を考え始めようとするとき。
---

# CLI-First Decision(CLI優先決定)

## コアルール

**あらゆるタスク開始前に、以下の優先順位で決定する:まずトリガー → 次に思考 → ツール選択 → 実行**

1. **強制トリガー**: あらゆるリクエストを受け取ったら、思考を開始する前、ツールを呼び出す前、サブエージェントを派遣する前に、まずこのスキルをトリガーして決定を行う
2. **思考優先**: 問題の本質を理解する——要件を明確にし、ステップに分解し、範囲を判断する。ツールに飛びつかない。
3. **ビルトインツール次**: 簡単な読み取り/書き込み/検索が一発で済む場合 → Read/Edit/Grep/Glob などを直接使う(追加コストゼロ)
4. **CLIツールはその次**: バッチ/機械的操作 → 対応するCLIツールを使う(<1秒、下のマトリックスを参照)
5. **スキルで補助**: ドメイン固有の知識が必要な操作 → まず対応するスキルをロードしてガイダンスを得る(利用可能なスキルリストを参照)
6. **MCPツール**: 知識グラフクエリ、逐次推論、Webスクレイピングなど → MCPサーバーが提供するツールを使う
7. **サブエージェント**: 多段階推論、意味理解、モジュール横断分析が必要な場合 → サブエージェントを派遣する
8. **自己推論で補う**: アーキテクチャ決定、設計トレードオフ、レビュー検証 → 自分で推論するか、Oracleに相談する

## 決定木

リクエスト受信(トリガー) └─ タイプを特定:修正/実装/調査/評価/オープンエンド? └─ 推論:まず要件を明確にし、ステップに分解し、範囲を判断する ├─ 単一ファイルの既知内容を読み取り/書き込み/編集?───→ ビルトインツール (Read/Edit/Write) ├─ 機械的なバッチ操作? │ ├─ バッチテキスト置換?───────────→ git-sed / sd │ ├─ ファイル検索?───────────────→ fd-find / glob │ ├─ 内容検索?───────────────→ rg-search / grep │ ├─ AST構造的操作?──────────→ ast-grep │ ├─ JSON/YAML/XMLクエリ?──────→ jq-query / yq │ └─ その他の機械的操作?────────────→ 下のマトリックスを参照 ├─ 対応するドメインスキルが利用可能?────────→ まずスキルをロードしてガイダンスを得る ├─ MCPツールが利用可能? │ ├─ 知識グラフ/コード関係クエリ?────→ codebase-memory-mcp │ ├─ 逐次推論/複雑な分析?───────→ sequential-thinking │ └─ Web内容取得?───────────→ fetch ├─ 意味理解/多段階推論/モジュール横断が必要?──→ サブエージェント (task/sub-agent) └─ アーキテクチャ決定/設計トレードオフ/レビュー?──────→ 自己推論またはOracleに相談


## ツール決定マトリックス

| 階層 | シナリオ | 推奨ツール | レイテンシ |
|------|---------|-----------|----------|
| **トリガー** | リクエスト受信、タイプ特定、意図の明確化 | Intent Gate分類 | 即時 |
| **推論** | タスク分析、要件分解、ステップ計画 | まず考え、次にツールを選ぶ | 即時 |
| **ビルトイン** | 簡単なファイル読み取り/書き込み/編集 | Read / Edit / Write | 即時 |
| **ビルトイン** | 基本的な内容検索 | `grep` | <1秒 |
| **ビルトイン** | ファイルパターンマッチング | `glob` | <1秒 |
| CLI | バッチテキスト置換(正規表現) | `git-sed` | <1秒 |
| CLI | ファイル検索(名前/タイプ/時間) | `fd-find` | <1秒 |
| CLI | 内容検索+集計 | `rg-search` (ripgrep) | <1秒 |
| CLI | ASTコード検索/置換(25言語) | `ast-grep` | <1秒 |
| CLI | JSONクエリ/変換 | `jq-query` | <1秒 |
| CLI | HTTP APIテスト | `git-curl` | <1秒 |
| CLI | あいまいフィルター/リスト絞り込み | `fzf-filter` | <1秒 |
| CLI | 圧縮/解凍 | `git-tar` | <1秒 |
| CLI | 改行コード変換(CRLF/LF) | `git-dos2unix` | <1秒 |
| CLI | テキスト検索置換(より簡単な構文) | `sd` | <1秒 |
| CLI | コード統計(言語分布) | `tokei` | <1秒 |
| CLI | XML/YAML/JSONクエリ | `yq` / `xq` | <1秒 |
| **スキル** | ドメイン固有操作(量子化/フロントエンド/クラウドなど) | 対応するスキルをロードしてガイダンスを得る | スキル文書による |
| **MCP** | 知識グラフ/コード関係クエリ | `codebase-memory-mcp` | <5秒 |
| **MCP** | 逐次推論/多段階分析 | `sequential-thinking` | ステップ数による |
| **MCP** | Web内容取得 | `fetch` | <10秒 |
| **サブエージェント** | 多段階推論、意味理解、モジュール横断分析 | `task()`でサブエージェント派遣 | 数十秒以上 |
| **自己推論** | アーキテクチャ決定、設計トレードオフ、レビュー検証 | 自分で処理するかOracleに相談 | 複雑さによる |

## クイックツールリファレンス

| ツール | 典型的なコマンド | 用途 |
|------|---------|------|
| `git-sed` | `git-sed expression:"s/old/new/g" files:["src/**/*.ts"] inPlace:""` | バッチ正規表現置換、ファイル横断編集 |
| `fd-find` | `fd-find pattern:"*.xml" extension:"xml" path:"./Characters"` | 名前/タイプ/サイズ/時刻でファイル検索 |
| `rg-search` | `rg-search pattern:"somePattern" glob:"*.xml" context:2` | ファイル内容検索、PCRE2正規表現、コンテキスト行 |
| `ast-grep` | `ast_grep_search pattern:"if($$$) { $$$ }" lang:"ts"` / `ast_grep_replace pattern:"console.log($MSG)" rewrite:"logger.info($MSG)" lang:"ts"` | AST構造検索/置換、コード構文木を理解 |
| `jq-query` | `jq-query filter:".name" file:"data.json"` | JSONデータクエリ、フィルター、変換 |
| `git-curl` | `git-curl url:"https://api.example.com" method:"POST" data:'{"key":"val"}'` | HTTP APIリクエスト、各種メソッドとカスタムヘッダー対応 |
| `fzf-filter` | `fzf-filter pattern:"keyword" input:$lines` | テキスト行のあいまいフィルタリング、リスト絞り込み |
| `git-tar` | `git-tar action:"create" archive:"out.tar.gz" files:["src/"] compression:"gzip"` | tar/zipアーカイブの作成/解凍 |
| `git-dos2unix` | `git-dos2unix file:"script.sh" mode:"dos2unix"` | CRLF ↔ LF 改行コード変換 |
| `grep` | `grep pattern:"somePattern" include:"*.xml" output_mode:"files_with_matches"` | 基本内容検索(ビルトイン) |
| `glob` | `glob pattern:"**/*.xml"` | ファイルパターンマッチング(ビルトイン) |
| `sd` | `sd find:"old" replace:"new" files:["file.txt"]` | より簡単なfind-replace、デフォルトでインプレース編集、正規表現とリテラルモード対応 |
| `tokei` | `tokei path:"./"` | 言語別にコード行数、コメント、空白行を統計。秒単位で結果出力 |
| `yq` | `yq expression:".Missions.NestMission[]" file:"Missions.xml" xml:true` | YAML/XML/JSON構造化データクエリ。XMLモードで直接XMLファイルを照会(例:全ミッションIDをリスト表示) |

## サブエージェントを使うべき時(サブエージェントトリガーガイド)

サブエージェントは、CLIツールやビルトインツールでは不十分な場面で威力を発揮します:

| シナリオ | 説明 | 推奨方法 |
|---------|------|---------|
| **意味理解** | コードロジックが正しいか、機能が完全かを判断する | `task()`でサブエージェント派遣 |
| **モジュール横断統合** | 複数モジュールにわたる調整変更、インターフェースの整合 | `task()`でサブエージェント派遣 |
| **多段階操作** | まず検索→分析→修正という連鎖操作が必要 | `task()`でサブエージェント派遣 |
| **コード生成/リファクタリング** | 既存コード構造を理解した上で新しいコードを生成する | サブエージェントまたは自己推論 |
| **アーキテクチャ決定** | 設計方式の選択、トレードオフ分析 | 自己推論またはOracleに相談 |
| **検証とレビュー** | コードの意図を理解し、品質を判断する | 自己推論またはreview-work |

> **注意**: 最終的にサブエージェントを使うと決めた場合でも、task()プロンプト内でCLIツールを参照できます——サブエージェント内部でもこれらのツールを呼び出してタスクを完了できます。

## よくあるミス

1. **CLIチェックを飛ばして直接task()**: 習慣的にサブエージェントにバッチ置換を依頼し、数万トークンを無駄にする。30秒かかるエージェント作業が、<1秒のCLIコマンドで完了する場合がある。

2. **ripgrepでファイルを見つけた後、手動で修正する**: まずrgで検索・特定し、CLIで一括編集するのは2ステップを1つにまとめられる。`git-sed`の1コマンドで検索+置換を完了する。

3. **単一ファイルに対してエージェントを起動する**: 1ファイル内の既知の内容を変更する場合は直接編集すればよく、フルサブエージェントセッションを起動する必要はない。

4. **サブエージェントを使うべき場面でCLIツールに固執する**: CLIツールは意味を理解しない。モジュール横断分析、多段階推論、コード意図の理解が必要な場面では、CLIツールの組み合わせよりも1つのサブエージェントの方が効率的。例:「X関数を呼び出している全ファイルを見つけ、その引数パターンを分析し、統一リファクタリングを行う」——これはサブエージェントの領域であり、sedで解決できるものではない。

5. **sdはデフォルトでインプレース編集。まず `--preview` してから実行する**: sdとsedの動作は異なります——sdはデフォルトでファイルを直接変更します。実例:`sd '<?xml' '<?XML' filelist.xml` はすべての `<?xml` タグ(63箇所)を直接書き換え、`git checkout` で戻すしかなかった。**安全手順**: 最初に `sd --preview 'find' 'replace' file` で影響範囲を確認し、問題なければ(`--preview` なしで)実行する。

6. **yqのXMLモード:yq v3は `--xml`、v4は `-p xml` に変更**: yq v4は `--xml` 短引数を削除し、代わりに `-p xml` を使用。デフォルトの出力形式に関する警告は `-o yaml` で抑制できる。

関連スキル