Claude Code を使い始めて1ヶ月、徐々に「毎回同じ説明をしている」ことに気付きました。

「ブログ書いて。Hugo + PaperMod 構成で、Cloudflare Pages にデプロイ。記事は content/posts/ に置いて、frontmatter には title と displayTitle を分けて…」

毎回これを書くのは無駄です。Claude Code には スキルという仕組みがあって、こういう「プロジェクトの運用ルール」を Claude に永続的に覚えさせられます。

今回はそのスキルの作り方と、実際に運用しているスキルの実例を紹介します。

スキルとは

Claude Code のスキルは、「特定のリクエストパターンに対して、Claude がどう振る舞うべきか」を記述したファイル群です。

~/.claude/skills/<skill-name>/SKILL.md

ここに置いた Markdown ファイルが、Claude Code 起動時に「使えるスキル一覧」として読み込まれます。ユーザーが特定のキーワードで話しかけると、Claude が自動でそのスキルを呼び出して、指示通りの作業を始めます。

スラッシュコマンドとの違い

似ているのが /foo のようなスラッシュコマンドですが、役割が違います。

比較スラッシュコマンドスキル
起動方法明示的に /cmd と打つキーワードから自動判定
使う場面単発のクイック作業文脈つきの一連の作業
保存先プロジェクト or グローバル主にグローバル
サイズ感数行〜数十行数百行〜長め

スラッシュコマンドが「電卓の M+ ボタン」だとすれば、スキルは「この案件専用の手順書」です。

スキルの最小構成

~/.claude/skills/my-blog/SKILL.md という1ファイルだけで動きます。

---
name: my-blog
description: 個人ブログ「foo.com」の記事作成・運用を支援するスキル。「ブログ書いて」「foo.com を更新して」のようなリクエストで起動する。
---

# 個人ブログ運用スキル

「foo.com」ブログの制作・運用を支援する。

## プロジェクト基本情報

- ローカルパス: `C:\Users\sakae\Desktop\blog\foo`
- スタック: Hugo + PaperMod + Cloudflare Pages
- 公開コマンド: `git push`(Cloudflare Pages 自動デプロイ)

## 文体ルール

- カジュアル口調(です・ます混在OK)
- 絵文字は控えめに

## 投稿手順

1. `content/posts/<slug>.md` を作成
2. frontmatter に title / displayTitle / date / category を書く
3. `git push` でデプロイ

ポイントは frontmatter の descriptionここがトリガーワード設計の中核で、Claude は description を見て「このリクエストはこのスキルに該当するか」を判定します。

トリガーワードの設計

スキルが反応するかどうかは、descriptionよくあるリクエスト例を入れているかで決まります。私のブログ運用スキルではこう書いています。

description: やきいもテックブログ (https://yakiimo-tech.com) の記事作成・デザイン調整・デプロイを支援するスキル。Hugo + PaperMod + Cloudflare Pages 構成で、「やきいもテックに記事を書いて」「ブログを更新」「yakiimo-tech のデザインを変えて」「ブログを deploy」のようなリクエストで起動する。

「〜のようなリクエストで起動する」 の後ろに、想定される言い回しを2〜4個並べておくのがコツです。Claude が「ユーザーの言葉」と「スキルが対応するパターン」を結びつけやすくなります。

逆に description が漠然としていると、関係ないリクエストでもスキルが立ち上がってしまったり、逆に必要な時にスキップされたりします。

本文に書く内容

SKILL.md の本文部分には、Claude に守ってほしいルールや手順を書きます。私が運用しているスキルでは、以下のセクションをよく入れます。

  • プロジェクト基本情報: ローカルパス・GitHub・スタック・デプロイ方法
  • 運用者情報: 筆名・文体ルール・してほしくない表現
  • 作業フロー: 「記事公開時の手順」「デプロイ確認方法」など
  • 既存資産の扱い: 「既存記事と被ってないか必ず grep で確認」のようなルール
  • ハマりどころ: 過去に踏んだ落とし穴を Claude にも伝えておく

ハマりどころの記載は特に効きます。私は「記事の date は JST 午前6時より前に固定」というルールを書いてあって、これを入れてからビルド除外事故が止まりました(buildFuture の罠を参照)。

実プロジェクトでの利用例

例1: ブログ運用スキル

やきいもテックに記事を書いて」と頼むだけで、ブログのリポジトリに移動 → 既存記事と被り検出 → frontmatter 自動生成 → ドラフト保存 → 公開承認待ち → デプロイ確認まで一連の流れが走ります。

例2: SNS連携スキル

この記事をショート動画にして TikTok に投稿して」のようなリクエストで、記事URL → ナレーション台本生成 → TTS で音声化 → 動画合成 → TikTok 下書き投稿、までの長いパイプラインがスキル1つで動きます。

例3: 自動メッセージ生成スキル

特定のSNSで定型メッセージを送りたい時に、相手プロフィールを取得 → 直近の投稿を読む → パーソナライズしたメッセージを生成、というスキルを作っておくと、毎回ゼロから書くより圧倒的に楽です。

作る時のコツ

1. まず「説明文を毎回書く面倒さ」を感じてから作る

最初から完璧なスキルを作ろうとしないこと。3回同じ説明をしたらスキルにする、くらいの感覚がちょうどいいです。

2. description は「Claude にも読ませる」

description は人間向けではなく Claude 向け。「○○のようなリクエストで起動する」 の例を増やすほど起動精度が上がります。

3. ハマりどころを必ず書く

過去に詰まった対処法は、Claude にも伝える。次回別の Claude セッションでも同じ罠を踏まなくなります。

4. ファイル更新後は Claude Code を再起動

スキルファイルの変更は、Claude Code セッションの起動時に読み込まれます。書き換えたら一度終了して立ち上げ直す。これは CLAUDE.md と同じ挙動です。

まとめ

  • スキル = 「特定リクエストパターンに対する Claude の振る舞い」を記述した手順書
  • ~/.claude/skills/<name>/SKILL.md に置くだけで動く
  • description フィールドのトリガーワード設計が肝
  • 本文には基本情報・文体ルール・作業フロー・ハマりどころを書く
  • 「3回同じ説明をしたら」スキル化のサイン

Claude Code を「自分のプロジェクトの新人スタッフ」として育てていく感覚です。スキルが充実するほど、毎回の説明コストが下がって、本来やりたい作業に集中できる時間が増えます。

次回は、スキル同士を連携させて「1つのリクエストで複数のスキルがリレー式に動く」サブエージェントの話を書く予定です。