Skills: ツールバインディングと呼び出し

最終更新:2026-08-31

ツールは Skill の両手——何をバインドするかで、Skill に何ができて何ができないかが決まります。


1. ツール体系の概要

(1) 組み込みツールの分類

カテゴリ ツール 能力 リスクレベル
読み取り Read ファイル内容の読み込み 🟢 低
検索 Grep, Glob コードパターンの検索 🟢 低
書き込み Write ファイルの作成/上書き 🟡 中
編集 Edit ファイルの精密修正 🟡 中
実行 Bash Shell コマンドの実行 🔴 高
ネットワーク WebFetch Web コンテンツの取得 🟡 中

(2) MCP ツール

Model Context Protocol (MCP) ツールは AI の能力の境界を拡張します:

JSON
// MCP サーバー設定の例
{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://..."
      }
    },
    "browser": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-browser"]
    }
  }
}

2. ツール選択戦略

(1) 最小権限の原則

TEXT 📖 参照専用
タスク要件分析 → 必要ツールを特定 → 必要ツールのみバインド

例:
┌─────────────────┬──────────────────────┐
│ タスク            │ バインドツール             │
├─────────────────┼──────────────────────┤
│ 読み取り専用レビュー        │ Read, Grep, Glob     │
│ コード修正        │ Read, Edit, Bash     │
│ プロジェクトリファクタリング        │ Read, Write, Edit, Bash, Grep │
│ 完全自動デプロイ      │ 全ツール + MCP       │
└─────────────────┴──────────────────────┘

(2) Edit vs Write

観点 Edit Write
粒度 行レベルで精密 ファイル全体
安全性 指定部分のみ変更 他の内容を上書きする可能性
適用シナリオ バグ修正、小規模調整 新規ファイル作成、完全書き直し
推奨度 ✅ 優先的に使用 ⚠️ 慎重に使用

(3) Bash の安全な使用

MARKDOWN
## Bash 使用ルール

許可されるコマンド:
- git status, git diff, git log
- npm test, pytest, go test
- ruff check, eslint, prettier
- docker ps, kubectl get

禁止されるコマンド:
- rm -rf / (危険な削除)
- curl | bash (リモートスクリプト実行)
- シークレットを含む環境変数のエクスポート
- システム設定を変更するコマンド

3. ツール呼び出しの最適化

(1) バッチ読み込み

MARKDOWN
# 非効率:個別に読み込み
1. Read src/main.py
2. Read src/utils.py
3. Read src/config.py

# 効率的:先に Glob で範囲を特定し、的を絞って読み込み
1. Glob "src/**/*.py" → ファイルリストを取得
2. 重要ファイル(メインエントリ、設定、ユーティリティ関数)を Read

(2) 検索先行

MARKDOWN
# 非効率:すべてのファイルを無差別に読み込み
1. すべての .py ファイルを Read(50+ ファイル)

# 効率的:先に検索で位置を特定
1. Grep "class.*View" → すべてのビュークラスを見つける
2. Grep "TODO|FIXME|HACK" → 技術的負債を見つける
3. 検索結果の中で深掘りが必要なファイルだけを Read

(3) ツール呼び出しチェーン

100%
graph TD
    A[Glob: ファイル範囲を特定] --> B[Grep: キーパターンを検索]
    B --> C[Read: 対象ファイルを深く読む]
    C --> D{修正が必要?}
    D -->|はい| E[Edit: 精密に修正]
    D -->|いいえ| F[分析レポートを出力]
    E --> G[Bash: 修正結果を検証]

4. ツールバインディングの実践

▶ 例1:読み取り専用分析 Skill

YAML
---
name: tech-debt-scanner
description: "技術的負債スキャン、TODO/FIXME/HACK とコードスメルを検出"
triggers:
  - keyword: "tech-debt|技術的負債"
tools:
  - Grep
  - Glob
  - Read
---

# 技術的負債スキャンスキル

## 実行フロー
1. Grep で TODO、FIXME、HACK コメントを検索
2. Grep でコードスメルパターンを検索(長すぎる関数、深いネスト)
3. Read で高優先度の問題を詳細にチェック
4. 優先度順に技術的負債リストを出力

▶ 例2:自動修正 Skill

YAML
---
name: lint-fix
description: "コードスタイル問題を自動修正"
triggers:
  - keyword: "lint-fix|スタイル修正"
tools:
  - Read
  - Bash
  - Edit
---

# コードスタイル修正スキル

## 実行フロー
1. Bash で linter を実行(プロジェクトタイプに応じて自動選択)
2. linter の出力を分析
3. 自動修正可能な問題は linter --fix を実行
4. 手動修正が必要な問題は Edit で個別に修正
5. Bash で再度 linter を実行して検証

5. ツール権限管理

(1) プロジェクトレベルの権限

JSON
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "Read(*)",
      "Grep(*)",
      "Glob(*)",
      "Edit(src/**)",
      "Bash(npm test,pytest,git *)"
    ],
    "deny": [
      "Write(.env*)",
      "Bash(rm *)",
      "Bash(curl *)"
    ]
  }
}

(2) Skill レベルの権限

YAML
# Skill の frontmatter でツール使用範囲を制限
tools:
  - Read
  - Edit:
      paths: ["src/**", "tests/**"]
  - Bash:
      commands: ["pytest", "ruff check"]

Alice がチームのツール権限を設定した後、Skill による誤削除の問題は発生しなくなりました。Bob は言います:「権限管理は能力を制限するものではなく、安全な境界を設定するもの——Skill が安全な領域内で自由に活躍できるようにする。」


❓ よくある質問

Q ツールをバインドしたのに AI が呼び出さない場合は?
A プロンプトでツールの使用を明示的に要求し、呼び出し手順を記載してください。それでも呼び出さない場合、プロンプトが十分に具体的でないか、ツールの説明が不明確な可能性があります。
Q Skill が危険な操作を実行するのを防ぐには?
A 3層の防護——最小権限(必要ツールのみバインド)、パス制限(Edit はディレクトリを限定)、コマンドホワイトリスト(Bash は安全なコマンドのみ許可)。
Q MCP ツールと組み込みツールの違いは何ですか?
A 組み込みツールは AI プラットフォームに内蔵されており、MCP ツールは外部サービスが提供します。MCP ツールは能力が強力ですが設定が複雑で、データベース/ブラウザなどの外部能力が必要なシナリオに適しています。

📖 まとめ


📝 練習問題

  1. 基礎問題(難易度⭐):既存の Skill のツールバインディングを分析し、過剰な権限付与や権限不足がないか確認してください。
  2. 応用問題(難易度⭐⭐):lint 問題を自動修正する Skill を作成し、適切にツールを選択して権限を設定してください。
  3. チャレンジ問題(難易度⭐⭐⭐):ツール呼び出しチェーンの最適化方案を設計し、最適化前後の呼び出し回数と所要時間を比較してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%