はじめに
KDDI アジャイル開発センターに勤める上田です。コミュニティ界隈ではハリネズミというハンドルネームで活動しています。
本連載では、Claude Skillsについて解説します。第1回ではClaude Skillsの基本概念、それが解決する課題、簡単な利用方法について説明します。第2回では、実際にAIエージェントを構築する際のSkills活用方法を紹介します。
対象読者
- 生成AIやLLMの基礎知識がある方
- AIエージェントの構築や生成AIのトレンドに興味のある方
- Claude Code、Claude Desktop、Claude API Keyのいずれかを利用中の方
Claude Skillsとは何か
Claude Skillsは2025年10月16日に発表された、Claudeを拡張するモジュール機能の一つです。発表当初は機能がClaudeのAI製品に限定され、公式のクックブックリポジトリ内でもClaude Skillsという名称が使われていたため、この名前が一般に広がりました。
ただし、正式名称はAgent Skillsです。MCPのようにClaudeの製品に限定されず、一種のスタンダードとして確立しようとする狙いがうかがえます。本記事では、以降Agent Skillsを単にSkillsと表記します。
これまで、大規模言語モデルの発展により、AIは知識レベルで専門家と同等の能力を持つようになりました。しかし、専門的なドメイン知識が必要なタスクをAIエージェントに実行させる際、システムプロンプトにすべての指示を書き込む方法が主流でした。
この方法には課題があります。煩雑なタスク指示によるコンテキストウィンドウの圧迫、再利用性の低さ、ドメイン知識が増えるたびにAIエージェント数も増えるといったアンチパターンにつながってしまいます。
この課題を解決するために登場したのがSkillsです。Skillsの本体は、ベストプラクティスが格納されたフォルダです。その中には、タスクに必要な指示やスクリプトなどが含まれています。
Skillsを使用すれば、AIエージェントは事前に用意されたベストプラクティスに従って作業できます。一方、Skillsがなければ、AIエージェントは自身のナレッジを利用して試行錯誤しながら作業します。
Skillsの基本構造と仕組み
前節では、Skillsはベストプラクティスが格納されたフォルダであると説明しました。ここでは、具体的な構造を見てみましょう。
Skillsの最もシンプルな形は、SKILL.mdファイルを含むディレクトリです。SKILL.mdファイルは、YAML frontmatter形式(ファイル先頭にメタデータを記述する形式)のMetadataで始まる必要があります。このMetadataには、name(Skillsの名前)とdescription(Skillsの説明)という2つの必須メタデータが含まれます。メタデータの下には、SkillsのBody部分があり、タスク実行のための具体的な指示がMarkdown形式で記述されます。内容が多い場合は、同じディレクトリ内に追加ファイルを配置し、Body内でそのファイルをBundled filesとして参照させることもできます。
AIエージェントにベストプラクティスを提供するだけなら、AIエージェントのシステムプロンプトやClaude Code用のCLAUDE.mdと同じではないかと考える方もいらっしゃると思います。しかし、両者には明確な違いがあります。
CLAUDE.mdは起動時にすべての内容がコンテキストウィンドウに読み込まれ、セッション中ずっと存在し続けます。一方、Skillsは起動時にはMetadataのみが読み込まれます。AIエージェントはこのMetadataから各Skillsがいつ使用されるべきかを判断し、必要になったタイミングで必要な分だけ読み込みます。この段階的な情報開示により、コンテキストの圧迫を防ぎます。
このように、CLAUDE.mdとSkillsは役割が異なります。CLAUDE.mdにはプロジェクト固有の指示や全体的な説明など常に参照される内容を記述し、Skillsには具体的なタスクの実行手順やドメイン固有のベストプラクティスを記述します。この役割分担により、AIエージェントは必要最小限のコンテキストで効率的に作業できます。
MCP(Model Context Protocol)とも異なります。MCPはAIエージェントが外部システムと接続するための標準プロトコルです。特定のドキュメント検索用のMCPサーバーを利用する場合、結果的にドメイン知識を提供することになりますが、両者の本質的な役割は異なります。
MCPは外部システムへの接続用プロトコルであるのに対し、Skillsはタスク実行のためのベストプラクティス集です。実際の運用では、MCP で外部データを取得し、Skillsでそのデータの処理方法を指示するといった補完的な使い方も可能です。
また、Subagentsとも異なります。SubagentsはClaude CodeとClaude SDKで利用できる、独自のコンテキストウィンドウ、システムプロンプト、および特定のツール権限を持つAIアシスタントです。本記事のテーマから外れるため詳しくは触れませんが、Skillsとの使い分けについて簡単に説明します。
Subagentsは特定のワークフローを独立して実行するために存在します。メインエージェントのコンテキストウィンドウを圧迫せずに、コードレビューやテスト生成などの専門的なタスクを処理し、結果のみをメインエージェントに返します。また、各Subagentsに読み取り専用などの制限されたツール権限を与えることで、安全性を確保できます。
一方、Skillsは複数のエージェントや会話で再利用可能な専門知識の集合です。Subagentsも Skillsを利用できるため、両者を組み合わせて使用することが推奨されます。例えば、セキュリティレビュー用のSubagentsを作成し、そのSubagentsがセキュリティレビューの手順を記述したSkillsを活用する、といった使い方が可能です。Subagentsの定義において、どのSkillsを使用するかを指定できます。
