メインコンテンツへスキップ
kt-tech.blog

【完全ガイド】Claude Code Skills 入門 - カスタムスキルの作り方

学習メモ7分で読めます

この記事でわかること

  • Skills が何で、どこに置くとどう読まれるのか(パーソナル・プロジェクト・エンタープライズ・プラグインの 4 種類と優先順位)
  • SKILL.md の frontmatter の各フィールドが実際に何をするのか
  • allowed-tools は「制限」ではなく「事前承認」であるということと、本当に制限する手段
  • コミットメッセージ生成 Skill を例にした作成手順

Claude Code がインストール済みで、基本的なコマンドライン操作と Markdown がわかれば十分です。

ポイント
Claude Code の Skills 機能を使って、独自のワークフローを自動化する方法を解説します。 Skills の基本概念から、実際にカスタムスキルを作成するまでをステップバイステップで紹介。

はじめに

Claude Code を使っていると、「毎回同じような指示を出すのが面倒」「チームで共通のワークフローを使いたい」と思うことがありませんか?

そんな課題を解決するのが

Skills 機能です。Skills を使えば、Markdown ファイルを配置するだけで Claude Code の動作をカスタマイズできます。


Claude Code Skills とは

Skills は、Claude Code の機能を拡張するための「指示書」です。Markdown ファイル形式で、特定のタスクを実行する方法を Claude に教えることができます。

Skills の特徴

  1. 自動発見 - Claude が自動的に適切な Skill を見つけて使用
  2. チーム共有 - プロジェクトに配置すればチーム全員が使える
  3. 承認の前倒し - よく使うツールを先に許可して、確認プロンプトを減らせる
  4. 複数ファイル対応 - 複雑なワークフローは複数ファイルに分割可能

Skills vs スラッシュコマンド

ポイント
2026 年 8 月時点の補足: custom commands は skills に統合されました。.claude/commands/deploy.md.claude/skills/deploy/SKILL.md はどちらも /deploy を作り、同じように動きます(既存の .claude/commands/ はそのまま使えます)。以下の対比は、どちらの形式で書くかを選ぶときの目安として読んでください。
項目 Skills スラッシュコマンド
発見方法 自動 手動(/コマンド)
複雑さ 複数ファイル対応 単一ファイル
用途 複雑なワークフロー シンプルなプロンプト

Skills のディレクトリ構成

Skills は保存場所によって 4 つの種類があります。

1. パーソナル Skills

Bash
~/.claude/skills/
└── my-skill/
    └── SKILL.md

あなた専用の Skill です。すべてのプロジェクトで使用できます。

2. プロジェクト Skills

Bash
.claude/skills/
└── team-skill/
    └── SKILL.md

プロジェクトリポジトリに配置。チームメンバー全員が使用できます。

3. エンタープライズ Skills

組織が配布する Skill です。全ユーザーに適用され、上書きされません

4. プラグイン Skills

プラグインが持ち込む Skill です。プラグイン名:skill名 という名前空間に入るので、他と名前が衝突しません。

注意
同じ名前の Skill があるときの優先順位は、エンタープライズ > パーソナル > プロジェクト です。プロジェクト側が強いと思いがちですが逆なので、チームで同じ名前を使うと「自分の手元だけ振る舞いが違う」ことになります。

SKILL.md の書き方

すべての Skill に必須なのは

SKILL.md ファイルです。フロントマター(YAML)と本文(Markdown)で構成されます。

基本構造

YAML
---
name: my-skill
description: このSkillの説明。いつ使うかを記載(Claudeが自動発見する判断基準)
allowed-tools: Read, Bash, Write
---

# Skill のタイトル

## 使用ルール

1. 最初にこれをする
2. 次にこれをする
3. 最後にこれをする

## コード例

echo "Hello, Skill!"

JavaScript

フロントマターの項目

フィールド 必須 説明
name Skill名(小文字・ハイフンのみ)
description 説明(自動発見の判断基準)
allowed-tools - 確認なしで使ってよいツール(制限ではなく事前承認)
disallowed-tools - 使わせないツール。利用可能プールから取り除く
disable-model-invocation - true で Claude の自動起動を禁止(明示呼び出し限定)
user-invocable - false で / メニューから隠す
context - fork で subagent の別 context で実行
重要

allowed-tools は「制限」ではありません。ここは筆者も長らく誤解していた部分なので、はっきり書いておきます。このフィールドは、列挙したツールにそのターンの間だけ承認プロンプトなしで使える権限を与えるだけで、列挙外のツールを禁止しません(通常の permissions に従って使えます)。権限は次のメッセージを送った時点で失効します。

本当に「使わせない」を実現したいなら disallowed-tools、リポジトリ全体で禁止したいなら settings.jsonpermissions.deny を使います。


実践: コミットメッセージ生成 Skill を作る

実際に Skill を作成してみましょう。git の差分からコミットメッセージを生成する Skill を例にします。

Step 1: ディレクトリ作成

Bash
mkdir -p ~/.claude/skills/commit-helper

Step 2: SKILL.md 作成

YAML
---
name: commit-helper
description: git の差分からコミットメッセージを生成します。「コミットメッセージを作って」「commit message」と言われた時に使用。
allowed-tools: Bash, Read
---

# コミットメッセージ生成

## 手順

1. `git diff --staged` でステージされた変更を確認
2. 変更内容を分析
3. Conventional Commits 形式でメッセージを提案

## フォーマット

<type>(<scope>): <subject>

<body>

JavaScript

### type の種類
- feat: 新機能
- fix: バグ修正
- docs: ドキュメント
- style: フォーマット
- refactor: リファクタリング
- test: テスト
- chore: その他

Step 3: 動作確認

Claude Code で「コミットメッセージを作って」と言うと、Skill が自動で発見され使用されます。


Tips & ベストプラクティス

ポイント
description が重要 Claude が自動発見する判断基準なので、「いつ使うか」を具体的に記載しましょう。キーワードを含めると発見されやすくなります。
Tips
SKILL.md は 500行以下 長すぎるとコンテキストを消費します。詳細は別ファイル(DETAILS.md 等)に分割しましょう。
注意
allowed-tools は粒度を細かく 確認を省くためのフィールドなので、Bash とツール名だけ書くと任意のシェルコマンドが無確認で走る状態になります。Bash(git:*) のように絞ってください。他人の書いた Skill を入れるときは、この行を読んでから信頼しましょう。
重要
破壊的な Skill には disable-model-invocation DB の初期化やデプロイなど、勝手に走られると困るものは disable-model-invocation: true を付けて、自分が /name と打ったときだけ動くようにします。

参考リンク


まとめ

Claude Code Skills を使えば、繰り返しの作業を自動化し、チームで共通のワークフローを共有できます。

  • Skills は Markdown ファイルを配置するだけで使える
  • パーソナル(~/.claude/skills/)とプロジェクト(.claude/skills/)が基本。同名ならパーソナルが勝つ
  • description をしっかり書くと自動発見されやすい
  • allowed-tools事前承認であって制限ではない。制限したいなら disallowed-toolspermissions.deny
  • 勝手に走られると困るものは disable-model-invocation: true

ぜひ自分だけの Skill を作ってみてください!

更新履歴

  1. allowed-tools の説明を訂正。「使用可能ツールの制限」「allowed-tools でセキュリティを確保」と書いていたが、実際は列挙したツールにそのターン限りの事前承認を与えるだけで、列挙外を禁止するものではない(公式ドキュメントで確認)。本当に制限する手段として disallowed-tools / permissions.deny を追記。置き場所が「4つ」と書きながら 2 つしか挙げていなかったのを、エンタープライズ・プラグインを加えて補完し、優先順位を公式の記述に合わせて明記。frontmatter 表に disallowed-tools / disable-model-invocation / context を追加。custom commands が skills に統合されたことを注記。参考リンクを現行の公式ドキュメント URL に更新。コードブロックの言語指定を plain text から bash に修正。「この記事でわかること」「対象読者」「前提条件」を概要プロパティへ移動。

この記事のタグ