CC for Biz
06

Agent・Command・Skillの使い分け

3つの拡張機構を正しく選択する

3つの拡張機構の比較表

Claude CodeにはAgentCommandSkillという3つの拡張機構があります。 それぞれ似ているように見えますが、設計思想と動作が異なります。 まずは全体像を比較表で把握しましょう。

特性AgentCommandSkill
配置場所.claude/agents/.claude/commands/.claude/skills/
コンテキスト分離(別プロセス)インライン(メイン共有)インライン(fork可能)
/メニュー表示なし常に表示デフォルト表示(非表示可能)
自動呼び出しあり(description経由)なしあり(description経由)
引数promptパラメータ$ARGUMENTS, $0, $1$ARGUMENTS, $0, $1
動的コンテキストなし!`command`!`command`
ツール制限tools / disallowedToolsallowed-toolsallowed-tools
メモリmemoryフィールドなしなし
Skillプリロードskillsフィールドなしなし
MCPサーバーmcpServersフィールドなしなし

いつAgentを使うか

Agentは独立したコンテキストウィンドウで動作する自律的なエージェントです。 メインの会話とは完全に分離されて動くため、以下のような場面で力を発揮します。

  • 自律的なマルチステップタスク: 「コードベースを調査して、問題を特定し、修正案を提示する」 のように、複数のステップを自分で判断しながら進める必要がある場合
  • コンテキスト分離が必要: メインの会話を汚したくない重い処理。 大量のファイルを探索したり、長時間の分析を行う場合
  • 永続メモリが必要: memoryフィールドで セッション間で情報を引き継ぎたい場合
  • バックグラウンド実行: background: trueで メインの作業と並行して処理を進めたい場合
  • Worktree分離: isolation: worktreeで Git worktreeを使った完全分離実行が必要な場合
# .claude/agents/code-reviewer.md
---
name: code-reviewer
description: Use this agent PROACTIVELY when reviewing pull requests
tools: Read, Glob, Grep
model: sonnet
maxTurns: 10
memory: project
skills:
  - review-guidelines
---

# コードレビュー手順

1. 変更されたファイルを全て読む
2. コーディング規約との整合性を確認
3. パフォーマンスやセキュリティの問題を検出
4. レビューコメントを構造化して返す

いつCommandを使うか

Commandはユーザーが意図的に起動するエントリーポイントです。 以下のような場面に向いています。

  • 明示起動のエントリーポイント: ユーザーが自分のタイミングで起動したい定型作業。/メニューに常に表示されるため、チームメンバーが使いやすい
  • 他のAgent・Skillのオーケストレーション: 複数のAgent・Skillを 順番に呼び出すワークフローの指揮者として機能させたい場合
  • コンテキストを軽量に保ちたい: Commandは起動されるまで コンテキストに読み込まれないため、普段の会話を圧迫しない
# .claude/commands/deploy-check.md
---
description: デプロイ前の最終チェックを実行
model: haiku
---

# デプロイ前チェック

1. Agent tool で code-reviewer を呼び出し、
   直近の変更をレビュー
2. テストを実行して全パスを確認
3. Skill tool で changelog-generator を呼び出し、
   変更履歴を生成
4. 結果をサマリーとして報告

いつSkillを使うか

SkillはClaudeが自動的に適用する再利用可能な手順です。 以下のような場面で選択します。

  • Claudeに自動呼び出しさせたい: ユーザーがいちいちコマンドを叩かなくても、 会話の文脈に応じてClaudeが自分で判断して適用してほしい場合
  • 複数箇所から再利用する手順: 同じ手順をCommand・Agent・Claudeの通常会話など、 複数の場所から呼び出したい場合
  • Agentへのドメイン知識プリロード: user-invocable: falseに設定し、 Agentのskills:フィールドで指定してドメイン知識を注入したい場合
# .claude/skills/test-writer/SKILL.md
---
name: test-writer
description: TypeScriptのテストファイルを作成・更新するとき
allowed-tools: Read, Edit, Bash
---

# テスト作成ガイドライン

- テストフレームワーク: Vitest
- ファイル命名: *.test.ts
- カバレッジ目標: 80%以上

## Gotchas
- モック化する際は vi.mock() を使用
- 非同期テストは必ず await を付ける

自動呼び出しの優先順位と制御

Claudeが自動的に拡張機構を呼び出す場合、以下の優先順位で判断します。

優先順位

  • 1. Skill(最優先): インラインで実行され、コンテキストのオーバーヘッドが最小。 Claudeはまずマッチするスキルがないかを確認します
  • 2. Agent: 分離コンテキストで自律実行。 Skillでは対応できない複雑なタスクの場合に呼び出されます
  • 3. Command(自動呼び出しなし): Claudeが自動で呼び出すことはありません。 常にユーザーの明示起動が必要です

自動呼び出しの制御方法

意図しない自動呼び出しを防ぐための制御手段があります。

  • Skillの自動呼び出しを防止: disable-model-invocation: trueを フロントマターに設定すると、Claudeがそのスキルを自動的に呼び出さなくなります。 ユーザーの明示呼び出しのみに制限されます
  • Agentの自動呼び出しを抑制: descriptionの文言を弱めるか削除します。PROACTIVELYのような積極的な表現を避け、具体的なトリガー条件を曖昧にすることで、 Claudeが自動的に呼び出す頻度を下げられます
# Skillの自動呼び出しを防止する例
---
name: dangerous-migration
description: データベースマイグレーションを実行
disable-model-invocation: true
---

# 注意: このスキルは必ずユーザーの明示的な
# 指示のもとで実行してください

判断フローチャート

最後に、どの拡張機構を選ぶべきかの判断フローを示します。 迷ったときはこのフローに沿って考えてみてください。

ステップ1: 自動で呼ばれてほしいか?

Claudeが会話の流れから自動的に判断して呼び出してほしいなら → Skillを選びます。descriptionにトリガー条件を明確に書き、Claudeが適切なタイミングで適用できるようにします。

ステップ2: 分離コンテキストが必要か?

メインの会話とは別のコンテキストで、自律的に複数ステップの処理を行わせたいなら → Agentを選びます。 永続メモリやバックグラウンド実行が必要な場合もAgentが適切です。

ステップ3: ユーザーが明示的に起動するか?

自分のタイミングで起動し、結果をメインの会話で確認したいなら → Commandを選びます。/メニューに表示されるため、チームでの共有にも適しています。

判断のまとめ:自動呼び出しが必要 → Skill / コンテキスト分離・自律実行が必要 → Agent / ユーザー起動のエントリーポイント → Command。 迷った場合はまずCommandとして作り、自動化したくなったらSkillに昇格させるのが実践的なアプローチです。

まとめ

Agent・Command・Skillの3つの拡張機構は、それぞれ異なる役割を持っています。 Agentは自律的なマルチステップ処理、Commandはユーザー起動のエントリーポイント、 Skillは再利用可能な手順と自動呼び出しの仕組みです。 自動呼び出しの優先順位を理解し、disable-model-invocationdescriptionの調整で 呼び出し制御を適切に行うことで、安全かつ効率的なワークフローを設計できます。

導入のご相談はお気軽に

個別のご質問・導入相談を承っています。

無料相談・お問い合わせ
© 2025 Fyve Inc. All rights reserved.