Claude CodeのSkillsとSubagentの違いを整理する

公開日:
目次

Claude Codeを使っていて「Skillsとサブエージェントって何が違うの?」と思うことがありました。2026年1月にSlash CommandsがSkillsに統合されたこともあり、ますますわかりにくくなっています。調べてみたので備忘録です。

3つの機能の位置づけ

Claude Codeには拡張機能として SkillsSubagentSlash Commands があります。それぞれの役割を整理します。

Skills は、Markdownベースの指示書です。Claude Codeがタスクに関連していると判断した場合に自動でロードされます。参照知識やユーティリティ処理に向いています。

Subagent は、独立したAIアシスタントです。メインの会話とは別のコンテキストを持ち、複雑なワークフローを自律的に実行します。

Slash Commands は、 /commit のように明示的に呼び出すコマンドです。2026年1月にSkillsに統合されました。

Skillsの仕組み

Skillsは ~/.claude/skills/ または .claude/skills/ に配置します。SKILL.md ファイルが必須です。

.claude/skills/explain-code/SKILL.md
---
name: explain-code
description: コードを視覚的図解と類似例で説明する。「これどうやって動く?」と聞かれた時に使用
allowed-tools: Read, Glob
---

コード説明時には常に以下を含むこと:
1. 日常生活での類似例を使った説明
2. ASCII アートで流れ、構造、関係性を図示
3. ステップバイステップの説明

description がコンテキストに常に読み込まれ、Claudeが関連性を判断して自動起動します。軽量で、説明のみが最初にロードされる点が特徴です。

YAMLフロントマターで動作を制御できます。

  • name:スキル名
  • description:説明(自動起動の判断に使われる)
  • disable-model-invocationtrue にすると自動起動しない
  • allowed-tools:使用可能なツールを制限

Subagentの仕組み

Subagentは .claude/agents/ に配置します。

.claude/agents/code-reviewer.md
---
name: code-reviewer
description: コード品質とセキュリティをレビューする専門家
tools: Read, Grep, Glob, Bash
model: sonnet
---

あなたはシニアコードレビュアーです。品質、セキュリティ、ベストプラクティスに焦点を当ててください。

Subagentの特徴はこんな感じです。

  • 独立したコンテキスト :メイン会話とは別の会話履歴を持つ
  • カスタムシステムプロンプト :タスク固有の指示を定義できる
  • ツール制限 :特定のツールのみにアクセスを許可
  • モデル選択 :Haikuで高速化するなど用途に応じて変更可能

Claude Codeには組み込みのSubagentもあります。

  • Explore :コードベース検索・分析用(Haikuで高速)
  • Plan :計画モードでの調査用
  • General-purpose :複雑なタスク用(全ツールアクセス可能)

Slash CommandsのSkillsへの統合

2026年1月24日、AnthropicはSlash CommandsをSkillsシステムに統合しました[1]

統合前は .claude/commands/.claude/skills/ が別々のシステムでした。現在は両方の場所が機能しますが、Skillsが推奨されています。

何が変わったかというと、こんな感じです。

  • .claude/commands/review.md.claude/skills/review/SKILL.md は同じ /review コマンドを作成する
  • 既存の .claude/commands/ ファイルは引き続き動作する(後方互換性)
  • Skillsでは追加機能(コンテキストフォーク、動的コンテンツロード)が使える

Skillsにできて、Subagentにできないこと

会話全体を通して知識として機能する

Skillsはメイン会話のコンテキストに埋め込まれます。一度参照されると、その知識は会話が続く限り有効です。

たとえば「このプロジェクトではPrettierを使う」というSkillを作ると、以降のコード生成でずっとPrettierを意識してくれます。Subagentだと1回のタスクで終わり、次のやり取りでは忘れています。

複数を組み合わせて使う

「TypeScript規約」と「テスト規約」のSkillsを両方参照しながらコードを書く、といった使い方ができます。Subagentはネストできない(Subagentの中からSubagentを呼べない)ので、こういう組み合わせはできません。

Subagentにできて、Skillsにできないこと

並列実行

3つのファイルを同時に調査する、といった並列処理ができます。Subagentは複数同時に走らせられますが、Skillsは順番に処理されます。

コンテキストの分離

Subagentはメイン会話とは別のコンテキストで動きます。1000行のログを解析しても、メイン会話には結果だけが返ります。Skillsだとメイン会話のコンテキストを消費するので、長い処理には向きません。

モデルの変更

SubagentはHaikuに切り替えて高速化する、といった使い方ができます。Skillsはメインと同じモデルで動きます。

使い分けの考え方

もう少し抽象的に言うと、こういう違いです。

  • Skills :Claudeに知識を与える、Claudeの振る舞いを変える
  • Subagent :別のClaudeにタスクを投げる、結果だけもらう

コードで例えると、Skillsは「クラスにメソッドを追加する」感覚、Subagentは「別プロセスにタスクを投げてjoinする」感覚に近いです。

比較表

両者の違いを表にまとめます。

項目 Skills Subagent
コンテキスト メイン会話に埋め込み 独立したコンテキスト
起動方法 自動 + 手動(/name Taskツール経由
重さ 軽量(説明のみ最初にロード) 重量(独立インスタンス起動)
チェーン 複数Skillsの呼び出し可能 ネスト不可
用途 参照知識、ユーティリティ 複雑なワークフロー、並列実行

移行のすすめ

新しく拡張機能を作るなら .claude/skills/ にSkillとして実装するのがおすすめです。既存の .claude/commands/ ファイルはそのまま動くので、無理して移行する必要はありません。

複雑なワークフローや独立した調査が必要ならSubagentを検討してみてください。

脚注
  1. Slash Commands in the SDK - Claude API Docs ↩︎