第34回: 自分だけのスキルを作る — SKILL.mdの書き方
この回で学ぶこと
SKILL.mdの構造と書き方
自作スキルの作成手順
スキルが発動する仕組み
最初のカスタムスキルの完成
前回のおさらい
ClawHubからスキルをインストールする方法と、安全チェックリスト(作者確認・スペル確認・ダウンロード数・verifiedバッジ・clawhub audit)を学んだ。今回は、他人のスキルを使うのではなく、自分でスキルを作る。
SKILL.mdの構造
カスタムスキルは SKILL.md というファイル1つで作れる。ClawHubからインストールしたスキルも、中身はこのSKILL.mdファイルでできている。コードは不要。日本語で「こうしてほしい」と指示を書くだけ。
SKILL.mdは2つのパートで構成される。
パート1: メタデータ(YAMLフロントマター)
ファイルの冒頭にある --- で囲まれた部分。スキルの名前と説明を書く。
必須フィールドは2つだけ:
name: スキルの名前(英語小文字、ハイフン区切り。例:my-translate)description: スキルの説明(秘書がこの説明を読んで「このスキルを使うべきか」を判断する。後述)
パート2: 指示書(Markdown本文)
スキルが何をするか、どう動くかを書く部分。秘書はこの指示を読んで、その通りに実行する。
ポイントは、処理内容を「日本語で手順を書く」だけでよいこと。プログラミング言語は不要。実際にClawHubで公開されている翻訳スキルや語学学習スキルも、100%自然言語の指示だけで動いている。
スキルが発動する仕組み
スキルを作る前に、秘書がどうやってスキルを選ぶのかを理解しておくと、うまくいきやすい。
秘書は常に「使えるスキルの一覧」を頭の中に持っている。一覧には各スキルの name と description だけが載っている。ユーザーからメッセージが来ると、秘書はこの一覧を見て「今回のリクエストにぴったりのスキルはあるか?」と判断する。ぴったりのスキルがあれば、そのSKILL.mdの指示書を読んで実行する。
つまり、description の書き方がスキル発動のカギになる。
descriptionの書き方のコツ:
20〜40語程度で、スキルが何をするか簡潔に書く
動詞で始める(「翻訳する」「要約する」「検索する」等)
可能であれば英語で書く(秘書のマッチング精度が高くなる)
日本語でも動くが、英語の方が確実
翻訳スキルを作る(ハンズオン)
最初のカスタムスキルとして、翻訳スキルを作る。
ステップ1: スキル用のフォルダを作る
mkdir -p ~/.openclaw/skills/my-translate
~/.openclaw/skills/ に置いたスキルは、そのPCの全エージェントで共有される。特定のプロジェクト専用にしたい場合は <ワークスペース>/skills/ に置く。
ステップ2: SKILL.mdを作成する
~/.openclaw/skills/my-translate/SKILL.md というファイルを作り、以下の内容を書く:
---
name: my-translate
description: "Translate user text into a specified language. Use when the user asks to translate text, convert language, or says words like translate, 翻訳, translation."
version: 1.0.0
---
# 翻訳スキル
ユーザーからテキストと翻訳先の言語を受け取り、翻訳結果を返す。
## ルール
- 翻訳先の言語が指定されていなければ、英語に翻訳する
- 原文のニュアンスをできるだけ保つ
- 翻訳結果のみを返す(余計な説明は不要)
## 使い方の例
- 「"こんにちは"を英語に翻訳して」→ 「Hello」
- 「"Thank you"をフランス語に翻訳して」→ 「Merci」
- 「"おはようございます"を翻訳して」→ 英語がデフォルトなので「Good morning」
フロントマターの注意点:
descriptionの値にコロン+スペース(:)が含まれる場合、必ずダブルクォート(")で囲む。囲まないとYAML構文エラーになり、スキルがエラーメッセージなしで無視される(これはOpenClawの既知の問題)nameは英語小文字とハイフンのみ。日本語やスペースは使えないdescriptionは英語推奨(秘書のマッチング精度が高い)。指示書本文は日本語でOK
ステップ3: 新しいセッションを開始する
スキルを追加した後、OpenClawは次のセッション開始時にスキルを読み込む。ターミナルで新しいセッションを開始するか、OpenClawを再起動する。
スキルが読み込まれたか確認する方法: 秘書に「使えるスキルを教えて」と聞くと、認識しているスキルの一覧を教えてくれる。
my-translateが含まれていればOK。
動作確認
Telegramから以下のように話しかけてテストする:
「"こんにちは"を英語に翻訳して」→ 「Hello」と返ってくる
「"Thank you"をフランス語に翻訳して」→ 「Merci」と返ってくる
「"おはようございます"を翻訳して」→ 言語指定なしなのでデフォルトの英語で「Good morning」
スキルが正しく認識されていれば、秘書がSKILL.mdの指示に従って翻訳を実行する。
うまく動かない場合のチェック:
ファイルの配置場所が正しいか(
~/.openclaw/skills/my-translate/SKILL.md)フロントマターの
--が正しく閉じられているかdescriptionのYAML構文にエラーがないか(コロン+スペースを含む場合はダブルクォートで囲む)新しいセッションを開始したか(古いセッションでは新しいスキルが読み込まれない)
自作スキルの可能性
翻訳スキルは最もシンプルな例だが、同じ仕組みでもっと複雑なスキルも作れる:
メール返信テンプレートスキル: よく使う返信パターンを指示書に書いておき、「このメールに返信して」で定型返信を生成
議事録フォーマットスキル: 会議の内容を伝えると、決まったフォーマット(日時・参加者・決定事項・TODO)に整理してくれる
日記要約スキル: その日あったことを伝えると、決まった構造で日記を書いてくれる
どれもSKILL.md1つで作れる。コードは不要。
ゴール状態
SKILL.mdの2パート構造(フロントマター + 指示書)を理解している
descriptionがスキル発動のカギであることを理解している翻訳スキルを自作して動かせた
YAML構文の注意点(コロン+スペース問題)を知っている