Ssumi.
AI ToolsClaude CodeSkills

Claude Code の Skills を10個作って、納品前チェックを自動化した実録

Claude Code のカスタムSkillsを10個作って、Web制作の納品前チェックや先方FB対応を自動化した実録。作って初めて分かった「skillにすべきもの」と「しなくていいもの」の境界線を書く。

副業でWeb制作を受けるようになってから、毎回同じ作業で時間を溶かしてることに気づいた。

納品前の誤字脱字チェック、画像内テキストの確認、alt属性の有無、リンク切れ確認——どれも「重要だけどやること自体は単純」な作業で、でも見落とすと普通に事故る。実際、納品直前にOGP画像を設定し忘れて出しかけたことが1回ある。

そこで、こういう定型チェックをClaude CodeのSkillsに切り出すことにした。今は.claude/skills/配下に10個のSkillsが並んでいて、納品前の機械チェックはほぼそこに任せている。この記事は、実際に作ってみて分かった「skillにする価値があるもの」の見分け方をまとめたもの。


Skillsって結局、何が嬉しいのか

Claude Codeの通常の会話は、毎回ゼロから指示を組み立てる必要がある。「誤字脱字を見て」「alt属性もチェックして」「PC版とSP版両方見て」と、頭の中の手順を毎回言葉にする作業自体がコストだった。

Skillsは、この「毎回言葉にする作業」をファイルに固定できる。.claude/skills/<スキル名>/SKILL.mdに判断フローと手順を書いておくと、該当するタスクが来たときに自動で発動する。

通常の会話

毎回ゼロから指示を組み立てる誤字を見て / alt をチェック / PC・SP 両方見て…

手順を毎回言葉にするのがコスト

Skills 化

SKILL.md に手順を固定該当タスクが来たら自動で発動

説明コストがほぼゼロに

図:会話のたびに手順を言葉にする作業を、SKILL.md に固定して自動発動させる

僕が作ったSkillsの一部はこんな感じ。

スキルやること
lp-preflightLP納品前のmeta/OGP/alt/リンク切れ/ダミーテキストの機械チェック
director-check誤字脱字・改行・画像内文字をPC/SPの両方でチェックして一覧化
fb-hanei先方フィードバックを正規化→指示書化→PC/SP反映→報告まで定型化
hosts-staging-checkステージング環境のhosts設定を疎通確認
wp-manualWordPress投稿マニュアルをpptx/PDFで自動生成

共通してるのは、どれも「やることは決まってるけど、毎回説明するのが面倒」な作業だということ。逆に言うと、これがskillにする価値があるものの条件だと分かってきた。


最初に失敗した作り方:手順を全部プロンプトで書いた

最初にlp-preflightを作ったとき、SKILL.mdに「meta descriptionが120〜160字か確認して、OGP画像の有無を見て、altタグが空じゃないか全部見て……」と、チェック手順を全部プロンプトの日本語で書いた。

これが全然安定しなかった。Claudeが見落とすページが出てきたり、同じサイトでも実行のたびに検出漏れの数が違ったりした。人間の注意力に頼るチェックを、AIの注意力に頼るチェックに置き換えただけで、根本的には同じ問題を抱えてた。

なので方針を変えて、機械的に判定できる部分はPythonスクリプトに切り出して、Skillはそのスクリプトを呼び出す「入口」にした。実体はtools/lp_preflight/に置いて、SKILL.mdからは「これを実行して、結果を読んで報告する」という指示だけを書く形に変えた。

lp-preflight/
├── SKILL.md          # 判断フロー・発動条件だけ書く
tools/lp_preflight/
├── check.py           # meta/OGP/alt/リンク切れの実チェック

最初の作り方(ブレた)

手順を全部プロンプトで書く
AI の注意力に頼る
実行ごとに検出漏れがブレる

切り出したあと(安定)

機械判定は Python へtools/lp_preflight/check.py
SKILL.md は入口だけ実行して結果を報告する指示
検出のブレが消えるコードで担保した部分は毎回同じ結果
図:プロンプトで約束できること と コードで担保すべきこと を分ける

これに変えてから検出のブレがなくなった。「プロンプトで約束できることと、コードで担保すべきことを分ける」のが、Skills設計でいちばん効いた学びだった。


トリガー条件が甘いと誤発動する

もう1つハマったのが、SKILL.mdのdescription(発動条件を書く部分)を曖昧にしすぎたケース。

director-checkの初期バージョンは、descriptionに「サイトをチェックする時に使う」とだけ書いていた。そうしたら、全然関係ない「デザインのレビューをして」という依頼のときにも発動してしまって、意図と違う出力が返ってきた。

descriptionを「サイトの誤字脱字・改行位置・画像内文字を、公開前または納品前にPC/SP両方でチェックする時」まで具体化してから、誤発動がほぼ消えた。広すぎるdescriptionは無関係な場面で暴走し、狭すぎると本来使うべき場面で発動しない——このバランスを取るのに、実際は3回くらい書き直しが要った。

広すぎる無関係な場面で誤発動
ちょうどいい1文で具体的に言える → 意図通り
狭すぎる使うべき場面で発動しない
図:description は広すぎると誤発動、狭すぎると発動しない。1文で具体的に言えるかが目安

Skillsにしなかったもの

逆に、途中でskill化をやめたものもある。例えば「オーナーへの報告文言」を毎回同じフォーマットで書くルールは、Skillではなく普通のルールファイル(.claude/rules/配下)に置いた。

理由は単純で、報告フォーマットは発動条件で分岐する必要がないから。「オーナーに報告する時は常にこの形式」でよくて、if-thenの判断フローが要らないものをSkillにすると、ただの静的ルールに余計な機構を被せることになる。

判断基準として僕の中で固まったのは、

  • 判断フロー(if-thenの分岐)が要るか → 要るならSkill、要らないならルールファイル
  • 機械的に検証できる部分があるか → あるならスクリプトに切り出して、Skillは入口にする
  • 発動条件を1文で具体的に言えるか → 言えないなら、まだ設計が固まっていない

この3つを通してから作るようになって、無駄なskillを作る回数が減った。

Q1. if-then の判断フローがある?
No →
ルールファイル / AGENTS.md に 1 行書く
Yes ↓
Q2. 機械的に検証できる部分がある?
Yes →
スクリプトに切り出して、Skill は入口にする
No →
Skill に判断フローを書く
図:作業に判断フローがあるか、機械検証できる部分があるかで作り方を分ける

まとめ

Skillsを10個作ってみて分かったのは、「便利そうだから作る」だと途中でメンテできなくなるということ。判断フローが本当にあるか、機械チェックに切り出せる部分がどこかを先に整理してから作ったskillだけが、実際に長く使えている。

今Claude Codeで同じ作業を繰り返し説明している人は、まずその作業に「if-thenの分岐」があるかどうかだけ確認してみるといい。分岐がないなら、Skillより先にAGENTS.mdかルールファイルに1行書くところから始めたほうが早い。

S

Written by

Sumi

本業のかたわらAIツールで副業を回す個人事業主。実際に使って稼いだ・時短した記録を書いています。