今後も使うなと思った時点で、Claudeに「スキル化して」と頼みます。
スキルにしておくと、毎回同じ指示をする必要がなくなり、とても便利です。
作り方はfreeeの領収書登録に、できたものの中身は請求書の自動取得 #3に書いたので、ここでは使い分けの話だけです。

広告

スキルとは

Claude Codeに手順書を持たせておく仕組みです(公式ドキュメント)。
作業フォルダに .claude/skills/スキル名/SKILL.md というファイルを置くと、/スキル名 と打ったとき、または内容に合う頼み方をしたときに、Claude Codeがそれを読んでから動きます。
といっても、自分でイチから書いたことはありません。手順書を書くのはClaude Code自身で、私が書くのは頼むときの1行だけです。

作り方

  • まずはClaudeに作業を依頼します
  • 想定通りに作業が完了したら、「この作業をスキルにして」と依頼します

直し方

動きが違ったら、「ここは〇〇にして」と頼むだけです。
SKILL.md を自分で書くことは基本的にありませんが、中身を読んでチェックすることはあります。

SKILL.md の書式

正直なところ正確なフォーマットを知らなかったので、この記事を書くにあたり勉強しました。
SKILL.md は、先頭の --- で囲んだ設定(frontmatter)と、その下の手順本文の2つでできています。設定に書ける主な項目はこれです(公式ドキュメントより)。

項目 必須 意味
name 任意 /名前 で呼ぶときの名前。省略するとフォルダ名
description 推奨 何をするか・いつ使うか。Claude Codeはこれを見て、そのスキルを使うか決める
argument-hint 任意 引数のヒント。/名前 と打ったときに補完で出る(例: [ファイル名])
disable-model-invocation 任意 true にすると、Claude Codeが勝手に使わなくなる。/名前 で呼んだときだけ動かしたい手順に
allowed-tools 任意 そのスキルを呼んだターンの間、許可を聞かずに使ってよいツール。書き方は Bash(python スクリプト名 *) のように、設定ファイルの許可ルールと同じ
model 任意 そのスキルを動かすときに使うモデル(例: sonnet、opus、haiku)。省略すると、そのセッションのモデル

実物の中身は、freeeの領収書登録の SKILL.md の抜粋と、請求書の自動取得 #3のサイトごとのスキルとまとめ役のスキルの抜粋を見てください。
私のスキルで使っているのは name と description だけです。description に「ユーザーが『アップロードした領収書を登録して』『この画像を経費にして』と頼んだときは必ずこのスキルを使う」のように頼み方の例を並べてあるので、/名前 と打たなくてもそれらしい頼み方をするだけで使われます。
手順本文の方は、Claude Codeが書いたものを読んで、確認を取る場所とやらないことが入っているかだけ見ています。
model はまだ使っていませんが、手順がしっかり書けているスキルなら、下位のモデルを指定してトークンを節約する、という使い方ができそうです。判断の少ない定型作業ほど向いていると思います。

CLAUDE.md との違い

CLAUDE.mdは、そのフォルダでClaude Codeを開くたびに毎回読まれるファイルです。スキルは、使うときだけ読まれます。
なので私は、いつも守ってほしい約束事はCLAUDE.md、特定の作業の手順はスキル、と分けています。
約束事の例はこんなものです。

  • 外部への送信(メール送信、Slack投稿等)は許可なく行わず、必ず文章の確認をする
  • セッションをまたいで必要な情報は、会話で終わらせずファイルに残す

セッション開始時にCLAUDE.mdが読み込まれるため、大きくなりすぎるとトークン消費量も増えてしまいます。
単体の作業はスキルに切り出すことで、トークンの節約にもつながります。公式のドキュメントにも「CLAUDE.md の一節が事実ではなく手順に育ってきたらスキルにする」とあります。

まとめ

約束事は CLAUDE.md、手順はスキル。この分け方にしてから、Claude Codeに同じ説明を繰り返すことがなくなりました。
作るのも直すのも「スキル化して」「ここは〇〇にして」と頼むだけです。

参考