Skillsは「ドメイン知識」を書くとこ、というのはまちがい
Skillsがでた後、主にSNSのコミュニティにて、
ドメイン知識を書くのがSkills、という表現が多く見られます。
ただ、Skillsをドメイン知識を書くところと捉えると、位置づけを誤る可能性が高いです。
Anthropic - Agent Skillsを元に説明します。
何がまちがっているか
Xなどを見ても、Skillsは「ドメイン知識」を書くもの、と捉えてられています。
ドキュメントでも、実装から見ても、Skillsは「ドメイン知識」を書くとは書かれていないし、実装もそうなっていないです。
ドキュメントでは、EN"domain-specific expertise" JA"領域固有の専門知識" と書かれています。
これは、"ドメイン知識"という言葉とは少し違うニュアンスをさしていると思いませんか?
これだけだと、翻訳の問題もあり、まだはっきり分かりにくいので、さらに、少し具体的に見ていきましょう。
Skillsが与えるのは"知識"ではなく"指示"
Anthropicは Skills がエージェントにどのように使われるかを示しています。
Skillsは段階的に読み込まれる仕組みです。
Level1のメタデータ(Metadata)は100トークン(≒words)程度が想定されており、常時読み込まれます。
その後、Level2の指示(Instructions)が読み込まれます。そして、Level3のリソース(Resources and code)は、指示に基づいて適宜読み込まれます。
Level1 のメタデータは、Agentが自分がSkillを持っていることを思い出すための目印です。
Level3 のリソースは、Skillを実行するための道具やデータ類が入っています。Level 2の指示によって使われる立場です。
そのなかで、知識にあたるものは、Level2 Level3に入り得ますが、Skillsが必ず指示を持つことを考えれば、知識は指示のためにあることもある、つまり、指示に従属する形で存在しうるという位置づけになります。
余談ですが、AIに関する設計を行っていると、AIには知識より指示を与えるのがよいと、よく感じます。
知識をたくさん与えてもあまり精度が上がらないことが多いですが、その知識からAIがどう動いたらいいのかを人間が言語化しプロンプトで書いてやると、一気に精度が上がり適切に安定してAIが動くことがとても多いからです。
Skillsは業界知識や専門用語集として使うものではない
例えば、不動産業界向けに「宅建業法」Skillsを作って、指示やリソースに、条文を入れる、というのは想定された使い方ではないと考えます。
逆に、例えば、不動産業界向けのSkillsなら以下のようなのは想定された使い方だと考えます。
※説明のために、下記はSkillsの書き方を無視しています。
メタデータ: 不動産関係会社の休業日取扱い
指示:
- 不動産業関連会社の水曜日が休業日であることが多い。
- しかし、一般会社のように土日休や輪番で土日休と水曜日休を組み合わせるなど、様々なパターンがある。
- そのためユーザーに休業日が何曜日か、あるいはどのようなシステムか問う。
- ユーザーも不明な場合は、リソースを参照し、不動産業界内での細かな業態における典型的な休業日パターンを一時的に確認が必要という注釈付きで使用しても良い。
リソース: 不動産業界内の業態による典型的な休業日パターンの表
そしてSkillsは魔導書っぽい
このようにSkillsはAgentに追加しておくと、Agentがそれができるということを思いだして使う関係です。
フリーレンの魔導書っぽい。
どの魔法使いでも読めば使えるわけです。
例えば、「洗濯をする魔法」の魔導書を読んだ魔法使いは、Skillsでいうとこんな感じになる
- Level1 メタデータ: 洗濯をするときに使える魔法を知っている、思い出せる
- Level2 指示: いざ洗濯をしたいときの魔法を発動できる
- Level3 リソース: 「洗濯をする魔法」を使うためのあれこれ。魔法に詳しくないのでよくわからん
※下記の引用したPDF処理の例の方がわかりやすいです
参考
PDFを処理するSkillsの例
https://platform.claude.com/docs/ja/agents-and-tools/agent-skills/overview#pdf より
Level1 メタデータ(Skill名と説明)
name: pdf-processing
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
Level2 指示
\# PDF Processing
\## Quick start
Use pdfplumber to extract text from PDFs:
```python
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
text = pdf.pages[0].extract_text()
```
For advanced form filling, see \[FORMS.md\]\(FORMS.md\).
Discussion
ドメイン知識を書くところですよ。おそらく12/18以前にClaude Codeに実装されていたClaude Skillsと、12/18以降のオープンスタンダードのAgent Skillsで話が噛み合っていないかと。