エージェント機能

Claude Code Skillsの作り方と制作依頼への使い方

Claude Code Skillsの作り方と制作依頼への使い方
記事の手順を整理したオリジナル図解

毎回プロンプトに貼っていた制作依頼の確認手順を.claude/skills/production-review/SKILL.mdにまとめ、/production-reviewで呼び出す手順です。配布教材のコピー先、SKILL.mdの全文、frontmatterの役割、架空の依頼8件の照合方法、うまく動かないときの戻し方を説明します。照合結果は1回だけの実演です。

毎回貼っている確認手順をSkillにする

この記事では、架空の制作依頼8件(requests.json)と判定規則(judging-rules.md)を置いたフォルダで /production-review を呼び出し、8件それぞれの判定をJSONで受け取ります。判定規則は11条あり、記録するissue codeは10種類です。題材は制作依頼の確認をClaude Codeで進める記事で扱った作業です。前の記事では毎回プロンプトで指示していましたが、ここではその指示をSkillとして保存し、1行で呼び出せるようにします。

Claude Codeの公式ドキュメントは、同じ指示やチェックリスト、複数ステップの手順を何度もチャットに貼っているならSkillを作る場面だと説明しています。Skillの本文が読み込まれるのは使ったときだけです。メモリのドキュメントでも、CLAUDE.mdには毎回のセッションで必要な事実を書き、複数ステップの手順はSkillへ移すよう案内されています。この練習では、内容ごとに置き場所を次のように分けます。

横にスクロールして比較できます

内容置き場所理由
どの作業でも前提になる事実CLAUDE.md(この記事の手順では使わない)毎回のセッションで読み込まれる
読む順番と出力形式SKILL.md呼んだときだけ必要な手順
判定の基準judging-rules.md手順と分けておけば規則だけを差し替えられる
正解answer-key/expected-results.json実行フォルダにはコピーせず、Claudeに見せない

CLAUDE.mdとSkillの使い分けはCLAUDE.mdの書き方ガイドでも説明しています。

練習フォルダにSkillを配置する

使う教材は2つです。練習セット(production-review-practice/)とSkill教材(skills-and-reviewers/)を、同じフォルダの中に展開してください。練習セットの中身は次の2つに分かれています。

  • exercise/:入力の3ファイル(requests.json、judging-rules.md、prompt.txt)

  • answer-key/:期待結果と照合スクリプト

期待結果をAIに見せないよう、作業フォルダには exercise/ の中身だけをコピーします。そこへSkill教材の .claude フォルダを追加してください。

# /path/to は各ZIPを展開した実際の場所へ置き換える
mkdir -p ~/cc-practice/request-check
cd /path/to/production-review-practice
cp -R exercise/. ~/cc-practice/request-check/
cd /path/to/skills-and-reviewers
cp -R .claude ~/cc-practice/request-check/

.claude は隠しフォルダです。Finderで見えなくてもコピーされています。prompt.txt は通常のプロンプト指示で使うファイルで、Skillで実行するこの記事では使いません。.claude/agents/ にある2つの担当定義も、ここでは使いません。コピー後のフォルダは次の形になります。

~/cc-practice/request-check/
├── requests.json
├── judging-rules.md
├── prompt.txt
└── .claude/
    ├── agents/
    │   ├── request-checker.md
    │   └── claim-checker.md
    └── skills/
        └── production-review/
            └── SKILL.md

.claude/skills/<skill-name>/SKILL.md は、プロジェクト単位のSkillを置く場所です。このフォルダで起動したセッションで読み込まれます。SKILL.md の全文は次のとおりです。

---
name: production-review
description: 架空の制作依頼について不足と矛盾を確認し確認先を返す
disable-model-invocation: true
allowed-tools: Read
---

# 制作依頼の確認

1. 作業フォルダの requests.json と judging-rules.md を読む
2. IDを一度ずつ残して全件を確認する
3. 空欄は補完せず矛盾とともに issue_codes に記録する
4. results 配列に id、decision、issue_codes、confirmation を含むJSONを返す
5. 外部送信と制作開始は行わない

frontmatterの役割と誤解しやすい点

--- で囲まれた部分には、呼び出し方と権限の扱いを書きます。

横にスクロールして比較できます

項目この練習での値役割注意点
nameproduction-review/ に続けて入力するコマンド名省略するとディレクトリ名が使われる
description確認内容の要約Skillの用途を説明するdisable-model-invocation: true のときはClaudeのコンテキストに載らない
disable-model-invocationtrueClaudeが自分の判断でSkillを呼ばないようにするサブエージェントへの事前読み込みにも使われなくなる
allowed-toolsReadSkillを呼んだターンに限り、Readを確認なしで使えるようにする他のツールを禁止する設定ではない

disable-model-invocation: true を付けておけば、確認を始めるタイミングを人が決められます。

allowed-tools はよく誤解される項目です。ドキュメントによると、この項目は列挙したツールをそのターンだけ事前承認するものです。次のメッセージを送ると承認は消えます。また、列挙していないツールも使える状態のまま残ります。ワークスペースの信頼確認とは関係なく適用されますが、組織が allowManagedPermissionRulesOnly を設定している環境では無視されます。つまり allowed-tools: Read と書いても、読むことしかできないSkillにはなりません。共有ドライブや社内サービスの認証、最小権限の設定を代わりに担うこともできません。

ツールを外したい場合は、範囲に合わせて使い分けます。

  • Skillを使っている間だけ外す:disallowed-tools

  • すべてのプロンプトで止める:権限設定のdenyルール

  • 毎回必ず守らせたい規則がある:フック

本文5行目の「外部送信と制作開始は行わない」も、CLAUDE.mdと同じくClaudeへの指示です。強制力はありません。

/production-reviewを実行して8件を照合する

今回の実演で使ったコマンドは次のとおりです。printモード(-p)に /production-review の1行だけを渡しています。

cd ~/cc-practice/request-check
claude -p "/production-review" --tools Read,Skill --allowedTools Read,Skill --setting-sources project --strict-mcp-config --mcp-config '{"mcpServers":{}}'

--setting-sources project は、読み込む設定の範囲をprojectに絞る指定です。--strict-mcp-config と空の --mcp-config を組み合わせて、MCPサーバーを使わない条件にしています。実演の記録は次のとおりです。

横にスクロールして比較できます

項目記録
実行日2026年10月14日
Claude Code2.1.285
モデルclaude-opus-5-5
実行回数独立した1回
終了コード0
経過時間10.945秒
CLIが報告したAPI換算額0.0940934 USD(実際の追加請求額ではない)
結果の保存CLIが返したJSONを、ホスト側のスクリプトが actual-results.json として保存
人による確認と修正の時間未記録

今回の実演では、Claude CodeがWriteでファイルを書き出す操作は観測していません。手元で再現するときは、出力された results 配列のJSONを ~/cc-practice/request-check/actual-results.json として自分で保存してください。

対話モードで試すこともできます。その場合は作業フォルダで claude を起動し、メッセージの先頭に /production-review を入力します。返ってきたJSONは同じように保存してください。ただし、対話モードでの実行は今回計測していません。

返ってきたJSONから、results 配列の要素を2件抜粋します。R06は、尺の値が2か所で食い違っている依頼です。

{
  "results": [
    {
      "id": "R01",
      "decision": "ready",
      "issue_codes": [],
      "confirmation": "問題なし。すべての必須項目がそろっています。"
    },
    {
      "id": "R06",
      "decision": "hold",
      "issue_codes": [
        "conflicting_duration"
      ],
      "confirmation": "duration_seconds(15)と other_duration_seconds(30)が一致しません。どちらの尺が正しいか確認してください。"
    }
  ]
}

これは2件の抜粋です。照合用には実際に返った8件すべてを保存します。

答え合わせは練習セットの最上位フォルダに戻って行います。answer-key/ は作業フォルダにコピーしません。

cd /path/to/production-review-practice
python3 answer-key/check_result.py ~/cc-practice/request-check/actual-results.json

照合するのは id、decision、issue_codes の3項目です。confirmation の文章は照合の対象外です。今回は8件すべてが一致し、IDの重複もありませんでした。

横にスクロールして比較できます

ID入力の状態decisionissue_codes
R01全項目ありreadyなし
R02目的と対象者が空欄holdmissing_objective, missing_target_audience
R03素材の許諾がunknownholdasset_permission_unconfirmed
R04納期と確認者が空欄holdmissing_deadline, missing_reviewer
R05尺が0holdinvalid_duration
R06尺が2か所で不一致holdconflicting_duration
R07訴求と根拠が空欄holdmissing_approved_claim, missing_source_ref
R08納期が基準日より前holdpast_deadline

この結果は、次の点に注意して読んでください。

  • Skillの効果は示していない:同じ練習セットをプロンプトで直接指示した別の試行(計測教材の run-log.csv にあるbaselineの例)でも、8件すべてが一致しています。そのため、Skillで精度が上がったとも、時間が短くなったとも言えません。確かめられたのは、長い指示を貼り直さず1行で同じ確認を呼び出し、照合した3項目が期待結果と一致したことだけです。

  • どの依頼でも同じになるとは限らない:結果は1回の実行に基づくものです。

  • 読み込みの経路は断言できない:ツール呼び出しの記録はすべては保存していません。そのため、ClaudeがSKILL.mdや入力ファイルをどの経路で読んだかは断言できません。

実行の記録は計測教材の measurement-and-updates/observed/skill.json に収録しています。

うまく動かないときの戻し方

問題が起きたら、まずどの段階で止まっているかを切り分けます。表の手順は公式ドキュメントに基づくもので、今回の実演では試していません。

横にスクロールして比較できます

症状確認すること戻し方
/production-review が見つからない作業フォルダに .claude/skills/production-review/SKILL.md があるか隠しフォルダのコピー漏れがないかを確かめる。対話セッションの起動後に .claude/skills/ を作った場合は、/reload-skills を実行するか新しいセッションで開き直す
Claudeが自分の判断でSkillを使ってしまう1行目が --- になっているか。項目名の綴りが正しいかYAMLの解析に失敗すると、本文は読み込まれても設定はすべて空になる。綴りを間違えた項目もエラーなしで無視される
check_result.py が見つからない練習セットの最上位フォルダにいるかproduction-review-practice/ で python3 answer-key/check_result.py の形で実行する
照合で不一致が出るどのIDのどのコードが違うか期待結果は書き換えない。規則とSKILL.mdの書き方を見直し、新しいセッションで再実行する
長い会話の途中で手順を守らなくなる会話が圧縮されていないかもう一度 /production-review を呼ぶ。重要な指示はSKILL.mdの上のほうに書く
しばらく使わない他の作業に影響していないか.claude/skills/production-review/ を削除する。ファイルを残したまま隠すなら skillOverrides で "off" にする

frontmatterの解析エラーは、claude --debug で起動するか、v2.1.233以降で使える次のコマンドで確認できます。

claude plugin validate .claude/skills

対話モードでSkillを直したら、Skillを書いていたときの会話を引き継がず、新しいセッションで試してください。ドキュメントの評価手順にあるとおり、作成時の会話が残っていると指示の書き漏れが見えにくくなります。

配布前に再実行して同じ条件を確かめる

今回の結果は1回分だけです。チームへ配る前に、次の手順で再実行してください。

  1. 空の作業フォルダを用意し、exercise/ の3ファイルと .claude フォルダだけをコピーする

  2. 上と同じ claude -p コマンドで /production-review を実行する

  3. 出力を actual-results.json に保存し、練習セットの最上位フォルダで answer-key/check_result.py を使って照合する

  4. Claude Codeのバージョン、モデル、一致件数、確認と修正にかかった時間を計測教材の run-log.csv に記録する

初回と再実行で照合結果がそろえば、少なくともその環境では、同じ条件で確認を呼び出せたと言えます。

チームで共有するときは、.claude/skills/ をリポジトリにコミットします。その前に、配布先の権限設定や組織の管理設定のもとで実際に動くかを試してください。allowed-tools の扱いは環境によって変わります。

制作依頼のSkill教材を受け取る

参考情報

  1. skills
  2. memory

TRY THIS WORKFLOW

自分の仕事で試す

Skillsと役割別の確認例を使い、入力と確認の手順を手元で試せます。登録は不要です。

教材を使う →法人導入の相談をする →検証と編集の方針