やりたかったこと
Claude Code(Claude)には、あらかじめ手順を教え込んでおける「スキル」という仕組みがある。よく使う定型作業を毎回イチから説明し直さなくても、/スキル名 や自然な依頼文だけで、決まった手順・注意点に沿って動いてくれるようになる。
今回は「技術記事をQiitaに投稿する」という作業を、以下の条件つきでスキル化したかった。
- QiitaはAPIで直接投稿できるので、ブラウザ操作ではなくAPI経由にする
- Qiitaは公開の場なので、投稿前に必ず内容(タイトル・タグ・公開範囲・本文要約)を確認してもらってから投稿する
- 社内固有の情報(サーバー名・IP・内部ドメインなど)が紛れ込んでいないか、投稿前にチェックする
- デフォルトの公開範囲は限定共有(URLを知っている人のみ)にしておき、全体公開にしたいときだけ明示的に指定する
この記事では、Claudeの「skill-creator」という自己拡張機能を使って、この「qiitaスキル」を実際に作って自分のアカウントに登録するまでの手順をまとめる。
1. skill-creatorスキルを起動する
Claudeにはあらかじめ「skill-creator」という、新しいスキルを作るためのスキルが用意されている。これを使うと、以下のような一連の作業をClaude自身が進めてくれる。
- 要件のヒアリング(何をするスキルか、いつ発動すべきか)
-
SKILL.md(スキル本体の指示書)の下書き作成 - 簡易バリデーション
- 配布用の
.skillファイルへのパッケージ化
チャットで「〇〇をするスキルを作って」と依頼するだけで、Claudeが自動的にこのskill-creatorを呼び出して作業を始めてくれる。
2. 要件を固める
いきなり実装に入る前に、以下のような設計判断をしておくとスキルの質が上がる。
- 用途: 何のために、どんな場面で使うスキルか
- 入出力: 何を渡すと、何が返ってくるか
- 確認が必要な操作の有無: 外部への投稿・公開など、後戻りしにくい操作を含む場合は「実行前に必ず確認する」というルールを組み込んでおく
- デフォルトの安全側の挙動: 迷ったら安全な方(今回で言えば「限定共有をデフォルトにする」)を選ぶようにしておく
このあたりはClaudeと会話しながら詰めていくと早い。
3. SKILL.mdを書く
スキルの実体は、SKILL.md という1つのMarkdownファイル。冒頭にYAMLフロントマターでスキルのメタ情報を書き、その下に手順を自然な文章で書いていく形式になっている。
---
name: qiita
description: Qiitaに技術記事を投稿するときに使う。ユーザーが「Qiitaに投稿して」等と言ったら発動する。
---
# Qiitaへの記事投稿
(ここに、認証情報の扱い方・投稿前のサニタイズ確認・
公開範囲のデフォルト・実際のAPI呼び出し手順などを記述)
ポイントは以下の2つ。
- description(説明文)が発動条件を決める: Claudeはこの説明文を見て「今この会話でこのスキルを使うべきか」を判断する。「Qiitaに投稿して」のような自然な依頼文でも反応するように、想定される言い回しを説明文に含めておくと発動しやすくなる。
- 「なぜそうするか」を書く: 「絶対に確認しろ」と命令口調で書くよりも、「Qiitaは公開の場なので、投稿前に内容を確認してもらう」のように理由まで書いておくと、細かい状況判断が必要な場面でもClaudeが趣旨に沿った振る舞いをしやすくなる。
4. バリデーションする
SKILL.md を書いたら、skill-creatorに付属する簡易バリデーションスクリプトでフォーマットの間違いがないか確認できる。
python3 -m scripts.quick_validate path/to/your-skill-folder
Skill is valid! と出れば形式的な問題はない。
5. .skill ファイルにパッケージ化する
こちらも付属のスクリプトで、スキルフォルダをZIP形式の .skill ファイルにまとめられる。
python3 -m scripts.package_skill path/to/your-skill-folder ./dist
これで dist/qiita.skill のようなファイルができる。
6. ファイルを受け取って「Save skill」を押す
パッケージ化した .skill ファイルをClaudeが送ってくれるので、表示されたファイルカードの 「Save skill」ボタンを押すと、自分のプロフィールにスキルとして保存される。
保存が完了すると、以降は別の会話を始めても、「Qiitaに投稿して」のような依頼をするだけで、このスキルが自動的に発動するようになる。
なお、スキルを保存したタイミングでは、今まさに動いている会話には反映されない。利用可能なスキルの一覧は会話の最初に読み込まれる仕組みになっているため、確認するには新しい会話を始める必要がある。
まとめ
- Claudeには「skill-creator」という、新しいスキルを自作するためのスキルがある
- スキルの実体は
SKILL.mdという1ファイルで、発動条件はdescriptionに書く - 外部への投稿など後戻りしにくい操作を含むスキルは、実行前に確認を挟む設計にしておくと安心
- 作ったスキルは
.skillファイルとして書き出し、「Save skill」で保存すれば、以降の会話でも使い回せる
自分がよく手作業でやっている定型的な手順があれば、同じように「スキルを作って」と頼んでみると、次からその手順を毎回説明し直す必要がなくなる。