はじめに
2026年1月、Claude Code v2.1.0がリリースされ、スキル開発に革命的な変化がもたらされました。その中でも特に注目すべきが「実行コンテキスト拡張」機能です。
この記事では、以下の2つの新機能について徹底解説します:
-
context: fork- サブエージェントを隔離されたコンテキストで実行 -
agentフィールド - 実行エージェントタイプの指定
これらの機能により、大規模な調査タスクをメインの会話履歴を汚染せずに実行したり、専門エージェントを活用した効率的な開発が可能になりました。
簡単なサンプル:
# context: fork - サブエージェントで実行
---
name: codebase-analyzer
context: fork
---
# context: fork + agent - 専門エージェントで実行
---
name: security-audit
context: fork
agent: code-reviewer
---
たったこれだけで、スキルの実行方法を制御できるようになります!
この記事で学べること 📚
✅ context: fork の使い方と活用シーン
✅ agent フィールドによるエージェント指定方法
✅ 実践的な使用例とベストプラクティス
✅ 関連する新機能(Hooks、skills フィールド)
想定読者 👥
- Claude Codeを使い始めて数週間〜数ヶ月の方
- スキル(SKILL.md)の基本構造を理解している方
- より効率的な開発ワークフローを求めている方
実行コンテキスト拡張とは 🔍
従来の課題 😰
Claude Codeでスキルを実行すると、その実行履歴はメインの会話コンテキストに全て含まれます。これは以下のような問題を引き起こしていました:
| 課題 | 影響 |
|---|---|
| コンテキストの肥大化 📈 | 大規模な調査タスクでトークン数が急増 |
| 会話履歴の汚染 🗑️ | メインの対話と調査結果が混在して読みづらい |
| 並行実行の制限 🚧 | 複数の探索タスクを同時実行しづらい |
| エラーの影響範囲 ⚠️ | スキルのエラーがメイン会話に影響 |
例えば、プロジェクト全体のコードベース分析を行うと、数千行のファイル内容やディレクトリ構造がメインの会話履歴に含まれてしまい、本来の対話が埋もれてしまう問題がありました。
新機能による解決 💡
v2.1.0で追加された実行コンテキスト拡張機能は、これらの課題を以下の2つのアプローチで解決します:
-
context: fork- サブエージェントを隔離されたコンテキストで実行 -
agentフィールド - 専門エージェントの活用
これにより、メインの会話はスッキリと保ちつつ、バックグラウンドで大規模なタスクを実行できるようになりました。
context: fork によるサブエージェント実行 🍴
機能説明 ✨
context: fork を使用すると、スキルが独立したサブエージェントとして実行されます。
サブエージェントとは:
- 🔒 独自の会話履歴を持つ独立したエージェントプロセス
- 🧹 メインの会話コンテキストとは完全に分離
- 📤 実行完了後、結果のみがメインに返される
これは、いわばスキルを別のプロセスで実行し、その結果だけを受け取る仕組みです。
使い方 🔧
スキルのfrontmatter(SKILL.md)に context: fork を追加するだけです:
---
name: my-research-skill
description: |
大規模なコードベース調査を実行するスキル。
Use when: コードベース全体の分析が必要な時
context: fork
allowed-tools: Read, Grep, Glob, Write
---
# My Research Skill
コードベース全体を調査し、レポートを生成します。
たったこれだけで、このスキルは隔離されたコンテキストで実行されるようになります。
動作原理 ⚙️
サブエージェントの実行フローは以下の通りです:
- 起動: スキルが呼び出されると、新しいサブエージェントプロセスが生成
- 実行: サブエージェントが独立したコンテキストでタスクを実行
- 完了: 実行結果のみがメインエージェントに返却
- クリーンアップ: サブエージェントのコンテキストは自動的に破棄
イメージ図:
┌─────────────────┐
│ Main Agent │
│ (Your Chat) │ ← メインの会話履歴
└────────┬────────┘
│ Skill invoked with context: fork
↓
┌─────────────────┐
│ Sub-Agent │ ← 独立したコンテキスト
│ (Isolated) │ ← 独自の会話履歴
└────────┬────────┘
│ Results only
↓
┌─────────────────┐
│ Main Agent │
│ (Updated) │ ← 結果だけが追加される
└─────────────────┘
メリット 🎁
| メリット | 説明 |
|---|---|
| コンテキスト隔離 🔒 | 大規模タスクでもメインの会話履歴を圧迫しない |
| 並行実行 ⚡ | 複数の調査を同時に走らせられる |
| 安全な実験 🧪 | 試験的な操作の影響をサブエージェントに限定 |
| 自動クリーンアップ 🧹 | 終了時にコンテキストが自動的に解放される |
実例1: コードベース分析スキル 📊
実際にプロジェクトで使えるスキルの例を見てみましょう:
---
name: codebase-analyzer
description: |
プロジェクト全体を分析し、アーキテクチャレポートを生成。
Use when: コードベースの全体像を把握したい時
context: fork
allowed-tools: Read, Grep, Glob, Bash, Write
---
# Codebase Analyzer
あなたはコードベースを詳細に分析するスキルです。
## タスク
1. プロジェクト構造をツリー形式で出力
2. 主要な依存関係を特定
3. エントリーポイントを分析
4. レポートをMarkdownで生成
## 出力形式
- ファイル: `codebase_analysis.md`
- 内容: プロジェクト構造、依存関係、推奨改善点
使用例:
# Claudeとの会話で
「このプロジェクトのコードベースを分析して」
# ↓ codebase-analyzerスキルが自動的にcontext: forkで実行される
# - メインの会話を汚染せずに詳細な分析を実行
# - 数百ファイルを読み込んでも会話履歴には影響なし
# - 分析結果のサマリーだけが返ってくる
実例2: ログ解析スキル 📝
大量のログファイルを解析するスキルも、context: forkと相性が良いです:
---
name: log-analyzer
description: |
大量のログファイルを解析し、エラーパターンを抽出。
Use when: ログの調査やエラー分析が必要な時
context: fork
allowed-tools: Read, Grep, Bash, Write
---
# Log Analyzer
大量のログファイルを効率的に解析します。
## 解析内容
- エラーの発生頻度
- エラーパターンの分類
- タイムライン分析
- 推奨対応策
このスキルは、数GBのログファイルを読み込んでも、メインの会話には影響を与えません。
ユースケース 🎯
context: fork を使うべき場合:
✅ コードベース全体の分析
✅ 大量のログファイルの解析
✅ 複数のAPIエンドポイントのテスト
✅ 技術調査やリサーチタスク
✅ プロトタイプの作成
✅ リファクタリングの影響調査
使わない方が良い場合:
❌ 単一ファイルの読み書き
❌ ユーザーとの対話が必要なタスク
❌ メインコンテキストの情報が必須のタスク
agent フィールドによる実行エージェント指定 🤖
機能説明 ✨
agent フィールドを使用すると、context: fork と組み合わせて特定のエージェントタイプを指定できます。
重要:
agentフィールドはcontext: forkと組み合わせた場合にのみ適用可能です。単独では使用できません。
エージェントタイプとは:
- 🎓 特定の専門知識を持つエージェント(Explore、Plan、general-purpose等)
- 🔧 定義されたツールセット
- 💬 カスタマイズされたシステムプロンプト
Claude Codeには様々な専門エージェントが定義されており、タスクに応じて使い分けられます。例えば、デバッグ専門のエージェント、コードレビュー専門のエージェント、データ分析専門のエージェントなどがあります。指定されない場合は general-purpose にデフォルト設定されます。
使い方 🔧
スキルのfrontmatterに agent フィールドを追加:
---
name: security-audit
description: |
セキュリティ監査を実行し、脆弱性レポートを生成。
Use when: セキュリティチェックが必要な時
context: fork
agent: code-reviewer
allowed-tools: Read, Grep, Bash, Write
---
# Security Audit
OWASP Top 10などのセキュリティチェックを実行します。
このスキルは、code-reviewer エージェントの専門知識を活用して実行されます。
利用可能なエージェントタイプ(例) 👨💻
Claude Codeには、以下のような専門エージェントが用意されています:
| エージェントタイプ | 専門分野 | 主なツール |
|---|---|---|
code-reviewer 🔍 |
コードレビュー | Read, Grep, Glob, Bash |
debugger 🐛 |
デバッグ | Read, Edit, Bash, Grep |
code-collector 📦 |
コード情報収集 | Read, Grep, Glob, LS, Write |
data-scientist 📊 |
データ分析 | Bash, Read, Write |
※ プロジェクト独自のカスタムエージェントも定義可能です
実例1: デバッグ専門エージェントを使用 🐛
テストの失敗を自動的に調査するスキル:
---
name: auto-debugger
description: |
テスト失敗の原因を特定し、修正案を提示。
Use when: テストが失敗した時、バグ調査が必要な時
context: fork
agent: debugger
allowed-tools: Read, Edit, Bash, Grep
---
# Auto Debugger
テスト失敗の原因を自動的に調査し、修正案を提示します。
## デバッグフロー
1. テスト実行ログを分析
2. 失敗箇所のコードを特定
3. 関連コードを調査
4. 修正案を生成
debugger エージェントは、デバッグに特化したプロンプトとツールセットを持っているため、効率的にバグの原因を特定できます。
実例2: データ分析専門エージェントを使用 📊
パフォーマンスデータを分析するスキル:
---
name: performance-analyzer
description: |
パフォーマンスデータを分析し、ボトルネックを特定。
Use when: パフォーマンス改善が必要な時
context: fork
agent: data-scientist
allowed-tools: Bash, Read, Write
---
# Performance Analyzer
アプリケーションのパフォーマンスデータを分析します。
## 分析項目
- レスポンスタイムの傾向
- メモリ使用量のパターン
- CPU使用率の推移
- ボトルネックの特定
ユースケース 🎯
agent フィールドを使うべき場合:
✅ 専門的な知識が必要なタスク(セキュリティ、パフォーマンス等)
✅ 特定のツールセットに制限したい場合
✅ カスタムプロンプトが必要な場合
✅ チーム固有のワークフローを実装する場合
使わない方が良い場合:
❌ 汎用的なタスク
❌ デフォルトエージェントで十分な場合
context: fork と agent を組み合わせて使う 🤝
最強の組み合わせ 💪
context: fork と agent フィールドを組み合わせることで、専門エージェントを隔離されたコンテキストで実行できます。
メリット:
- 🎓 専門エージェントの能力を最大限に活用
- 🛡️ メインコンテキストを保護
- ⚡ 大規模タスクを効率的に実行
- 🏃 並行実行で時間短縮
実例1: 大規模コードベース分析 📊
---
name: deep-code-analysis
description: |
大規模なコードベースを専門エージェントで詳細分析。
Use when: プロジェクト全体の詳細な分析が必要な時
context: fork # 隔離されたコンテキストで実行
agent: code-collector # コード収集専門エージェントを使用
allowed-tools: Read, Grep, Glob, Bash, LS, Write
---
# Deep Code Analysis
code-collector エージェントの専門知識を活用して、
大規模なコードベースを詳細に分析します。
## 分析内容
- プロジェクト構造の可視化
- 依存関係グラフの生成
- 循環依存の検出
- 未使用コードの特定
- APIドキュメントの自動生成
使用シーン:
# 新しいプロジェクトに参加した時
「このプロジェクトの構造を詳細に分析して」
# ↓ deep-code-analysisスキルが実行される
# - code-collector エージェントの専門知識を活用
# - 隔離されたコンテキストで大規模分析を実行
# - メインの会話は汚染されない
# - 分析結果のみが返ってくる
実例2: 並行セキュリティ監査 🛡️
複数の観点から同時にセキュリティチェックを行うスキル:
---
name: security-scanner
description: |
複数の観点からセキュリティ監査を並行実行。
Use when: 包括的なセキュリティチェックが必要な時
context: fork
agent: code-reviewer
allowed-tools: Read, Grep, Bash, Write
---
# Security Scanner
OWASP Top 10、CSRF、XSS等を包括的にチェックします。
活用パターン:
# 複数のセキュリティスキルを並行実行
/security-scanner --check=owasp
/security-scanner --check=csrf
/security-scanner --check=xss
# 全て context: fork で実行されるため、
# 並行実行しても会話履歴は汚染されない
関連する新機能 🎉
v2.1.0では、実行コンテキスト拡張と合わせて以下の関連機能も追加されました。
1. Agent-Scoped Hooks 🪝
エージェントのfrontmatterにHooksを定義して、ツール実行の前後や終了時に処理を挟めます。
---
name: validated-agent
tools: Read, Write, Bash
hooks:
PreToolUse: |
# ツール使用前の検証
if tool == "Bash" and "rm -rf" in input:
return {"permission": "deny", "reason": "危険なコマンド"}
PostToolUse: |
# ツール使用後の処理
log_tool_usage(tool, input, output)
Stop: |
# エージェント終了時のクリーンアップ
save_execution_log()
---
用途:
- 🛡️ セキュリティチェック(危険なコマンドのブロック)
- 📝 監査ログの記録
- ✅ 出力の検証・変換
- 🧹 リソースのクリーンアップ
2. SubagentStart/Stop Hooks 🔄
サブエージェントの起動・終了時に実行されるHooks。
hooks:
SubagentStart: |
# サブエージェント起動時の初期化
print(f"Sub-agent started: {agent_type}")
setup_resources()
SubagentStop: |
# サブエージェント終了時の処理
# v2.1.0で agent_id と agent_transcript_path が利用可能に
save_transcript(agent_transcript_path)
cleanup_resources()
活用例:
- 💾 サブエージェントの実行ログを保存
- 📊 実行結果をデータベースに記録
- 🧹 一時ファイルのクリーンアップ
3. skills フィールド(エージェントfrontmatter) 🎯
エージェント定義に自動ロードするスキルを指定できます。
---
name: frontend-specialist
tools: Read, Write, Edit, Bash
skills:
- react-analyzer
- css-linter
- accessibility-checker
---
# Frontend Specialist Agent
React、CSS、アクセシビリティに特化したエージェントです。
起動時に関連スキルが自動的にロードされます。
メリット:
- ⚡ 専門エージェントに必要なスキルを自動ロード
- 🎯 手動でのスキル起動が不要
- 🔧 チーム固有のワークフローを定義可能
組み合わせ例 🎨
これらの機能を全て組み合わせた実践例:
---
name: production-deployment-agent
tools: Bash, Read, Write
skills:
- test-runner
- build-validator
- deployment-checker
hooks:
PreToolUse: |
# 本番デプロイ前の安全確認
if is_production_deployment(input):
return {"permission": "ask", "reason": "本番環境へのデプロイです。よろしいですか?"}
Stop: |
# デプロイログの保存
save_deployment_log(agent_id, timestamp)
---
# Production Deployment Agent
本番デプロイを安全に実行する専門エージェントです。
ベストプラクティス 💡
いつ使うべきか 🤔
context: fork を使うべき場合
✅ 推奨:
| シーン | 理由 |
|---|---|
| 大規模な情報収集 📊 | メインコンテキストを圧迫しない |
| 長時間実行タスク ⏰ | 会話履歴が肥大化しない |
| 複数の探索パス 🔍 | 並行実行で効率化 |
| 実験的な操作 🧪 | 失敗してもメインに影響なし |
❌ 非推奨:
| シーン | 代替手段 |
|---|---|
| 1ファイルの読み書き 📄 | 通常のスキルで十分 |
| ユーザー対話が必要 💬 | メインコンテキストで実行 |
| メインの情報が必須 📋 | context: fork は避ける |
agent フィールドを使うべき場合
✅ 推奨:
- 🎓 専門的な知識が必要(セキュリティ、パフォーマンス等)
- 🔒 ツールセットを制限したい(安全性のため)
- 💬 カスタムプロンプトが必要
- 🤝 チーム固有のワークフロー
❌ 非推奨:
- 📝 汎用的なタスク
- ✨ デフォルトエージェントで十分な場合
パフォーマンス考慮事項 ⚡
サブエージェント起動のコスト:
- 🐌 起動には若干のオーバーヘッドがある
- ❌ 簡単なタスクには不向き
- ✨ 大規模タスクで真価を発揮
並行実行の制限:
# ✅ 良い例: 独立したタスクを並行実行
/analyze-frontend # context: fork
/analyze-backend # context: fork
/analyze-database # context: fork
# ❌ 悪い例: 依存関係のあるタスクを並行実行
/analyze-code # 後続タスクが結果を必要とする
/fix-issues # ← analyze-codeの結果が必要
注意事項 ⚠️
v2.1.3での重要な修正 🔧
v2.1.3では、以下のサブエージェント関連のバグが修正されました:
- ⚠️ サブエージェントが会話圧縮時に間違ったモデルを使用する問題
- ⚠️ サブエージェントのWeb検索で間違ったモデルを使用する問題
v2.1.2以前を使用している場合は、アップデートを推奨します。 🔄
コンテキスト共有の制限 🚫
# ❌ これは動作しません
---
name: shared-context-skill
context: fork
---
# メインの会話履歴にアクセスしようとしても、
# サブエージェントは隔離されているためアクセスできません
回避策 💡:
- 📤 必要な情報をスキルのパラメータとして明示的に渡す
- 🔄 context: fork を使わずに通常のスキルとして実行
アンチパターン 🚫
❌ 過度な fork 使用
# 悪い例: 単純なファイル読み込みに fork を使用
---
name: read-single-file
context: fork # ← 不要
---
理由: 起動オーバーヘッドが無駄 💸
❌ 間違ったエージェント選択
# 悪い例: データ分析タスクにデバッガーを使用
---
name: analyze-metrics
agent: debugger # ← 不適切
---
理由: エージェントの専門性と合わない 🎯
❌ Hooks の乱用
# 悪い例: 全てのツール使用をブロック
hooks:
PreToolUse: |
return {"permission": "deny"} # ← エージェントが機能しない
理由: エージェントが何もできなくなる 😱
まとめ 🎉
Claude Code v2.1.0で追加された実行コンテキスト拡張機能について解説しました。
重要ポイントのおさらい 📝
context: fork 🍴:
- サブエージェントを隔離されたコンテキストで実行
- メインの会話履歴を汚染せずに大規模タスクを実行
- 並行実行やリソース管理が効率化
agent フィールド 🤖:
- 専門エージェントを活用したタスク実行
- ツールセットやプロンプトのカスタマイズ
- チーム固有のワークフローを定義可能
組み合わせ 🤝:
- 両機能を組み合わせて最大限の効果
- 専門エージェント + 隔離コンテキスト
活用シーン 🎯
これらの機能は、以下のようなシーンで特に威力を発揮します:
- 大規模プロジェクトの分析 📊
- 複数の調査タスクの並行実行 ⚡
- セキュリティ監査やコードレビュー 🛡️
- データ分析とレポート生成 📈
- 実験的な実装やプロトタイピング 🧪
次のステップ 🚀
- 試してみる 🔨: 実際にスキルを作成してcontext: forkを体験
- カスタマイズ 🎨: プロジェクトに合わせたエージェントを定義
- 共有 🤝: チームでベストプラクティスを共有
参考リソース 📚
実行コンテキスト拡張機能を活用して、より効率的な開発ワークフローを実現しましょう! 💪✨