Claude Skills とは何か。SKILL.md 1枚で増やす専門知識
Claude Code の Skills(スキルズ)は、`SKILL.md` というMarkdownファイル1枚で「Claude に専門知識のパッケージを足す」しくみです。`/` メニューに自分専用のコマンドが現れる、というだけの機能ではありません。なぜこれが必要だったのか、何が嬉しいのか、他の機能とどう違うのかを、いちから整理します。
はじめに
ここから Step 3「機能を使いこなす」の本丸、Skills(スキルズ) の話に入ります。Skills シリーズは全部で3本構成で、
- この記事:Skills とは何か(仕組みと位置づけ)
- 公式 Skills を使う(既製の Skills を呼び出す手順)
- Skills を自作する(自分専用の Skills を作る)
という順番で進みます。最初のこの記事は概念解説に時間を使い、Skills が何のためにあるのか をはっきりさせるところを目指します。仕組みが腑に落ちると、後ろの2本(既製を使う/自作する)の手順がスッと入ってきます。
「とにかく動かしたいから手順だけ知りたい」という方は、ここを読み飛ばして次の記事から入っても構いません。ただ、Skills は 概念がわかると一気に使い道が広がる タイプの機能なので、急ぎでなければ順番に読んでいただくことをおすすめします。
Skills とは何か——ひと言でいうと
Skills は、Claude に「特定の場面で読んでほしい専門知識のパッケージ」を渡す仕組み です。
たとえば、あなたが Claude Code を使って LP(ランディングページ)を量産しているとします。LP にはあなた独自のコーディング規約があって、「class 名はBEM風」「画像は WebP に変換してから挿入」「フォームは必ずラベルを付ける」といったルールが頭の中にあるとしましょう。
これを毎回の会話の冒頭で「うちの LP は BEM で、画像は WebP で、フォームには……」と説明するのは正直しんどいです。CLAUDE.md にすべて書く方法もありますが、CLAUDE.md は 毎回必ず読み込まれる ファイルなので、何でもかんでも書くと容量を食いますし、「LP を作るとき以外は不要なルール」までずっと持ち歩くことになります。
Skills が解決するのはまさにここです。「LP を作るときだけ読む専門知識」を1つのフォルダにまとめておき、Claude が必要だと判断したときにだけ読みに行く ——この振る舞いを実現するのが Skills という機能です。
| 比較対象 | 読まれるタイミング | 容量への影響 |
|---|---|---|
| CLAUDE.md | 毎回必ず 読まれる | 大きいと毎回そのぶんトークンを消費 |
| Skills | 必要なときだけ 読まれる | 普段はファイル名と説明だけが認識されている |
CSS で例えると、CLAUDE.md は <head> で読み込む共通CSS、Skills は JS で必要時に動的に読み込む追加CSS に近いイメージです。常時 vs 遅延、と言い換えてもいいかもしれません。
なぜこの仕組みが生まれたのか
Claude Code を使い込むと、「同じような指示を毎回繰り返している自分」 に気づきます。
- 記事を書くたびに「マギのクロゼミの口調で、絵文字を使わず、見出し直下にリード文を……」
- LP を組むたびに「BEM で、画像は WebP で、フォームには……」
- セキュリティレビューのたびに「OWASP Top 10 を念頭に、SQL インジェクションと XSS を……」
これを毎回コピペするのは時間の無駄ですし、CLAUDE.md にすべて書こうとすると 「全部の場面で必要な知識」と「特定の場面でだけ必要な知識」が混ざって肥大化 します。
Anthropic はこの問題を「専門知識を場面ごとに分けて保存し、必要な場面でだけ読み込ませる」という発想で解いてきました。それが Skills です。Web 制作で言えば、長くなりすぎた1つの style.css を、ページ別の CSS ファイルに分割する あの整理に似ています。「ホームでだけ使う style」「商品ページでだけ使う style」を分けると、保守も読み込みも軽くなる——同じ思想です。
Skills の実体は「フォルダ + SKILL.md」
Skills の中身は驚くほど素朴です。1つの Skill = 1つのフォルダ、その中に SKILL.md というMarkdownファイル が置いてあるだけ。これがすべての出発点です。
my-lp-skill/ ← Skill のフォルダ
├── SKILL.md ← 必須。Skill の本体
├── examples/ ← 任意。参考用のコード例など
│ └── good-lp-example.html
└── references/ ← 任意。参照したい補足ドキュメント
└── brand-guidelines.md
SKILL.md の中身は、
---
name: lp-coding-rules
description: LP(ランディングページ)案件のコーディングを依頼されたときに、BEM 命名規約・WebP 必須・フォームのラベルルールを適用する
---
# LP コーディング規約
## 命名規約
class 名は BEM 風(block__element--modifier)で書く。
たとえばヘッダー内のロゴは `.header__logo`、開いた状態のメニューは
`.header__menu--open` のように書く。
## 画像
すべて WebP 形式に変換してから挿入する。
JPG/PNG しかない場合は、Claude 側で変換コマンドの提案までは行うが、
実際の変換ファイルは社長に渡してから組み込む。
## フォーム
すべての input には必ず label を付ける。
placeholder だけで済ませない。
——というふうに、frontmatter(--- で挟まれた設定)と本文があるだけ。HTML/CSS の感覚で言えば、普通の Markdown ファイルに「いつ呼ばれるか」のメモを足しただけ という見た目です。
frontmatter の役割
SKILL.md の冒頭にある --- で挟まれた部分(frontmatter)が、Claude にとっての「索引カード」になります。
| 項目 | 役割 | 例 |
|---|---|---|
name | この Skill の識別名 | lp-coding-rules |
description | どんな場面で使うか を書く(最重要) | 「LP コーディングを依頼されたときに……」 |
特に description は Skill が起動するかどうかを左右する一番大事な部分 です。Claude は会話の中で「いまの依頼に合致する Skill があるかどうか」を description を見て判断します。曖昧に書くと起動しない、具体的に書くと起動する、という素直な仕組みです(書き方のコツは 自作編 で詳しく扱います)。
「必要なときだけ読む」のしくみ
Skills の価値を一段押し上げているのが、progressive disclosure(段階的開示) という考え方です。難しそうな名前ですが、中身はシンプルです。
1. 起動時:Claude は「こんな Skill が手元にある」という索引(description だけ)を覚える
2. 会話中:依頼内容を見て「この Skill が当てはまりそう」と判断したときだけ
3. 本体読込:その Skill の SKILL.md 全文を読み込む
4. 関連物読込:必要に応じて examples/ や references/ の中身も読む
この仕組みのおかげで、Skill を100個入れていても、普段は索引(description)の数十文字しか読み込まれない という効率が出せます。LP の依頼が来たら LP 用の Skill だけが動き、記事執筆の依頼が来たら記事執筆用の Skill だけが動く——というふうに、必要なものだけが必要なときに動く設計です。
Web で例えるなら、「画像を全部 <img> で先読みするのではなく、loading="lazy" を付けて画面に入ったときだけ読み込む」 あの遅延読み込みに似ています。普段は軽い、必要なときに重くなる、というメリハリの付け方です。
Skills と他の機能の位置関係
Step 3 の他のテーマ(コマンド/MCP/プラグイン/フック/サブエージェント)と Skills の関係を整理しておきます。「結局どれを覚えればいいの?」 とならないために、ここでひと回り見渡しておくと後がラクです。
| 機能 | 何をする道具か | 動くタイミング | 配布のしやすさ |
|---|---|---|---|
| スラッシュコマンド | Claude Code 本体への命令 | ユーザーが /xxx と打ったとき | × 本体組み込みのみ |
| Skills | 専門知識を Claude に渡す | Claude が必要と判断したとき+ユーザーが /xxx と呼んだとき | ◎ フォルダごと配布可 |
| MCP | 外部のツール/データに接続する | Claude が外部ツールを使うとき | ◎ サーバーとして配布可 |
| Hooks | 特定のイベントで自動的に何かを実行 | 決まったイベント(保存後など) | △ settings.json で記述 |
| SubAgent | 別のコンテキストで Claude を走らせる | ユーザーが指示したとき | ◎ ファイルとして配布可 |
| Plugins | 上記の Skills/コマンド/Hooks/MCP をひと包みにする | プラグイン内の各機能の発火タイミング | ◎ マーケットプレイスで配布 |
ざっくりした覚え方は、
- 「Claude に新しい知識を持たせたい」→ Skills
- 「Claude を外の世界(DB、API、Drive)に繋ぎたい」→ MCP
- 「決まったタイミングで何かを自動でやらせたい」→ Hooks
- 「メインの会話を汚さず重い仕事を別に任せたい」→ SubAgent
- 「上記をまとめて他人にも配布したい」→ Plugins
という分担で考えると、迷いません。Skills はこの中で 「知識を増やす」担当 です。
Skills が置かれる3つの場所
Skills の配置場所は3階層あります。これは「誰が使えるか」の違いです。
| 階層 | 場所 | 誰が使えるか |
|---|---|---|
| Built-in | Claude Code 本体に最初から組み込み | すべての人(Anthropic 配布) |
| User(ユーザー全体) | ~/.claude/skills/ | あなたのすべてのプロジェクト |
| Project(プロジェクト個別) | プロジェクト内の .claude/skills/ | そのプロジェクトに入った人だけ |
たとえば、
~/.claude/skills/article-tone/に置いた Skill は、マギのクロゼミでも、別のクライアント案件でも、どこでも呼べる あなた個人の知識<案件フォルダ>/.claude/skills/client-rules/に置いた Skill は、その案件の中でだけ呼べる 案件固有の知識
という使い分けです。「自分の手癖は User、案件のルールは Project」 という分け方が自然な落ち着きどころになります。
よくある誤解、3つ
最後に、Skills について最初は誤解されがちな点を3つ片付けておきます。これを知っておくと、後の記事を読むときの解像度が上がります。
誤解1:Skills は常に全部読まれている
読まれていません。 起動時に読まれているのは description だけ です。本体の SKILL.md は、Claude が「いまの会話に必要だ」と判断したときに初めて読まれます。なので、Skills を100個入れても普段の動作は重くなりません。
誤解2:Skills は / メニューから呼ばないと動かない
呼ばなくても動きます。 Skills は会話の文脈から Claude が自動で発火することが多く、必ずしもユーザーが /xxx と打つ必要はありません。たとえば「LP を作って」と依頼するだけで、description に「LP のとき」と書いてある Skill は自動的に呼ばれます。/ メニューからの手動起動は 「念のため確実に呼びたい」 ときの保険、というのが実態に近いです。
誤解3:Skills には特別なプログラミング言語が必要
いりません。 SKILL.md は普通のMarkdownです。HTML を書ける方なら何の引っかかりもなく書けます。frontmatter(--- で挟まれた設定)は WordPress の固定ページのカスタムフィールドのようなもので、書き方さえ覚えれば技術的にはとても素朴です。
「自作」と聞くと身構える方が多いですが、Skills の自作は Markdown でメモを書くのと同じ感覚 で始められます。詳しい書き方は 自作編 で扱います。
まとめ
Skills の要点を整理します。
- Skills は Claude に「専門知識のパッケージ」を渡す仕組み:必要な場面でだけ読まれる
- CLAUDE.md は毎回読まれ、Skills は必要時だけ読まれる:常時 vs 遅延、の使い分け
- Skills の実体はフォルダ +
SKILL.md:普通のMarkdownで書ける descriptionが起動の鍵:Claude は description を見て「使うかどうか」を判断- progressive disclosure:索引→本体→関連物、と段階的に読み込まれる
- 配置場所は3階層:Built-in(本体)/User(個人)/Project(案件)
- 位置関係:知識を増やすのが Skills、外部接続が MCP、タイミング駆動が Hooks、別働隊が SubAgent
- 3つの誤解:常時読まれない/自動で発火する/特別な言語は不要
Skills の概念がつかめたところで、次の記事「公式 Skills を使う」では、Anthropic が配布している既製の Skills を実際に手元で動かしてみます。/security-review、/init といった、すでに使っている方も多い「あれ」も実は Skills のひとつだった——ということに気づくはずです。続けて読むと、Skills が「謎の機能」から「毎日の道具」に変わります。
WordPressを実際に動かしてきたサーバー:ロリポップ
Claude Code でWordPressサイトを組み立てるとき、最初に置く先として無理のないレンタルサーバー。月数百円から始められ、WordPressの自動インストールにも対応しています。設定で詰まりがちな初期段階の時間をかなり減らせます。