はじめてのスキルを作る

Claude Code エンジニアリング 6分で読めます

スキル(Skill)は、Claude Code に手順や知識を覚えさせるしくみです。SKILL.md というファイルを1つ置くだけで、Claude はそれを自分の道具として使えるようになります。この記事では、公式ドキュメントに沿って実際に動くスキルを1つ作り、置き場所による優先順位までを確認します。

スキルとは何か

スキルは Claude の能力を拡張するしくみです。指示を書いた SKILL.md ファイルを作ると、Claude はそれを自分の道具箱に加えます。Claude が関連すると判断したときに自動で使うほか、/skill-name の形で直接呼び出すこともできます。

スキルを作るべきタイミングは、公式ドキュメントがはっきり示しています。同じ指示・チェックリスト・複数手順の作業を何度もチャットに貼り付けているとき、あるいは CLAUDE.md のある節が「事実」ではなく「手順」に育ってしまったときです。

ここで CLAUDE.md との違いが効いてきます。CLAUDE.md の内容は常に読み込まれますが、スキルの本文は使われるときだけ読み込まれます。したがって長い参照資料をスキルに置いておいても、必要になるまでコストはほとんどかかりません。手順書や長い規約をコンテキストに常駐させたくない場合、置き場所としてスキルのほうが適しています。

なお、カスタムコマンドはスキルに統合されました。.claude/commands/deploy.md.claude/skills/deploy/SKILL.md はどちらも /deploy を作り、同じように動きます。既存の .claude/commands/ のファイルはそのまま動き続けます。スキル側が持つ追加機能は、補助ファイルを置けるディレクトリ、呼び出し主体を制御するフロントマター、そして Claude が関連時に自動で読み込めることの3点です。

Claude Code のスキルは Agent Skills というオープン標準に従っており、複数の AI ツールで通用します。そのうえで Claude Code は、呼び出し制御、サブエージェント実行、動的コンテキスト注入といった独自の拡張を加えています。

はじめてのスキルを作る

公式ドキュメントの入門例をそのまま作ってみます。Git リポジトリの未コミットの変更を要約し、危なそうな箇所を指摘するスキルです。ポイントは、Claude が読む前に実際の差分をプロンプトへ引き込むところにあります。開いているファイルから推測させるのではなく、実際の作業ツリーに基づいた回答になります。

手順1: スキルのディレクトリを作る

個人用のスキルフォルダに、スキル1つぶんのディレクトリを作ります。個人用スキルは、すべてのプロジェクトで使えます。

mkdir -p ~/.claude/skills/summarize-changes

手順2: SKILL.md を書く

すべてのスキルには SKILL.md が必要です。中身は2つの部分からなります。--- で囲んだ YAML フロントマター(そのスキルをいつ使うかを Claude に伝える部分)と、スキルが実行されたときに Claude が従う指示を書いたマークダウン本文です。ディレクトリ名がそのままコマンド名になりdescription が自動読み込みの判断材料になります。

次の内容を ~/.claude/skills/summarize-changes/SKILL.md に保存します。

---
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
---

## Current changes

!`git diff HEAD`

## Instructions

Summarize the changes above in two or three bullet points, then list any risks you notice such as missing error handling, hardcoded values, or tests that need updating. If the diff is empty, say there are no uncommitted changes.

!`git diff HEAD` の行が動的コンテキスト注入です。Claude Code がこのコマンドを実行し、Claude がスキルの内容を見る前に、その行を出力で置き換えます。つまり指示が届いた時点で、現在の差分が既に埋め込まれています。

手順3: 動かして確かめる

Git のプロジェクトを開いて適当なファイルを少し編集し、claude を実行して Claude Code を起動します。試し方は2通りあります。ひとつは、description に合う聞き方をして自動で呼び出させる方法です。

What did I change?

もうひとつは、スキル名で直接呼び出す方法です。

/summarize-changes

どちらの場合も、Claude は編集内容の短い要約とリスクの一覧を返すはずです。

SKILL.md の構造

スキルはディレクトリであり、SKILL.md がその入口です。公式ドキュメントが示す構成は次のとおりです。

my-skill/
├── SKILL.md           # 主要な指示(必須)
├── template.md        # Claude が埋めるテンプレート
├── examples/
│   └── sample.md      # 期待する出力形式を示す例
└── scripts/
    └── validate.sh    # Claude が実行できるスクリプト

必須なのは SKILL.md だけです。ほかのファイルは任意で、テンプレート、期待する出力形式を示す例、Claude が実行できるスクリプト、詳細な参照資料などを置けます。これらのファイルは SKILL.md から参照してください。何が書いてあり、いつ読めばよいかを Claude が知るためです。

入門例のフロントマターは description だけでした。最小構成としてはこれで足ります。description は「何をするか」に加えて「どういうときに使うか」まで書くのがコツで、公式の例も後半で Use when the user asks what changed... と用途を明示しています。自動読み込みの判断はこの文面で行われるため、ここが曖昧だと呼ばれるべきときに呼ばれません。

なお .claude/commands/ のファイルも同じフロントマターに対応していますが、namepaths だけはコマンドファイルでは無視されます。コマンドファイルはファイル名で呼び出します。補助ファイルなどの追加機能があるため、公式はスキルのほうを推奨しています。

スキルの置き場所と優先順位

どこに置くかで、誰が使えるかが決まります。

種別パス適用範囲
エンタープライズ管理された設定(managed settings)の場所組織のすべての利用者
個人~/.claude/skills/<skill-name>/SKILL.md自分のすべてのプロジェクト
プロジェクト.claude/skills/<skill-name>/SKILL.mdそのプロジェクトのみ
プラグイン<plugin>/skills/<skill-name>/SKILL.mdそのプラグインが有効な場所

名前が衝突したときの解決順は、直感と逆になりやすいので注意してください。階層をまたぐ場合、エンタープライズが個人を上書きし、個人がプロジェクトを上書きします。つまり ~/.claude/skills/ とプロジェクトの .claude/skills/ の両方に deploy スキルがあるとき、/deploy で動くのは個人のほうです。プロジェクト側が勝つと思い込んでいると、意図しないスキルが動きます。

そのほかの規則は次のとおりです。

さらに、作業ディレクトリより下の入れ子の .claude/skills/ からも読み込まれます。Claude がサブディレクトリのファイルを読んだり編集したりすると、そのディレクトリのスキルが使えるようになります。モノレポで、パッケージが自分専用のスキルを持てるようにするためのしくみです。入れ子のスキルが同名の場合は両方が残り、入れ子側は apps/web:deploy のようにディレクトリ名で修飾された名前で現れます。

つまずきやすい点

関連記事: スキルとは何か / スキルと他機能の使い分け / スラッシュコマンド リファレンス

この記事は 公式ドキュメント「Extend Claude with skills」に基づく非公式の日本語解説です(確認日 2026-08-20)。仕様は更新されるため、最新は公式をご確認ください。