スキルは、ChatGPT や Codex に、決まった手順でツールを使う方法を示し、MCP サーバーの役割を補います。サーバーには、最新データの取得、認証、認可、制御が必要な操作を任せます。スキルには、ツールを呼び出す順序、判断が必要な箇所、出力要件、例、テンプレートなど、繰り返し使う指針をまとめます。
プラグインには、単独のスキルを含めることも、関連する複数のスキルをまとめることもできます。ユースケース一覧からユーザーの具体的な目標を一つ選び、スキルごとにその目標に絞って設計します。同梱の指示とリソースだけで完結するワークフローであれば、MCP サーバーがなくてもスキルを利用できます。
スキルの作成
最も手早く始めるには、組み込みのスキル作成ツールを使います。ユーザーが達成したいことと、そのために使う MCP ツールを伝えます。
@skill-creator tabletop-dice という名前のスキルを作成してください。3d6 のようなダイス表記を読み取り、ダイス 1 個につき roll_dice を 1 回呼び出し、それぞれの出目と合計を報告するスキルにしてください。
Codex では、$skill-creator で同じ作成ツールを呼び出します。
ファイルは手動でも作成できます。スキルごとに専用のディレクトリを用意し、必須の SKILL.md ファイルを配置します。
-
skills
-
tabletop-dice
- SKILL.md 指示とメタデータ(必須)
- references 参考資料(任意)
- scripts 実行可能なコード(任意)
- assets テンプレートとリソース(任意)
-
-
SKILL.md の記述
ファイルの先頭にスキルの名前と説明を記載し、その後に指示を書きます。
---
name: tabletop-dice
description: Roll one or more dice for tabletop games and report each result and the total.
---
ユーザーからダイスを振るよう依頼されたときは、このスキルを使ってください。
1. `NdS` という表記は、S 面のダイスを N 個振る依頼として解釈してください。たとえば、`3d6` は 6 面のダイスを 3 個振るという意味です。
2. 指定されたダイス 1 個につき `roll_dice` を 1 回呼び出し、`sides` に S を渡してください。
3. 各呼び出しで得られた出目を、呼び出した順に報告してください。
4. 複数のダイスを振るよう依頼された場合は、出目を足して合計も報告してください。
ユーザーから依頼されない限り、出目を作り上げたり、別の値に置き換えたり、ダイスを振り直したりしないでください。
モデルは説明をもとに、いつそのスキルを使用候補にするかを判断します。説明には、ワークフローの内容と、それを開始する条件を明記します。詳しい手順、出力形式、安全に実行するための指示は本文に記載します。
ワークフローの適用範囲
各スキルを一つ以上のユースケースに対応付けます。指示には、次の点を明記します。
- ワークフローが想定する入力
- モデルが従う手順
- ユーザーに返す出力
- モデルが推測してはいけない事実
- ユーザーに質問する条件、処理を中止する条件、依頼を断る条件
- モデルが参照する補助ファイル
関連の薄い指示を数多くまとめるよりも、一つの目的に絞ってスキルを作成します。開始条件、入力、成功基準のいずれかが異なる場合は、ワークフローを分けます。
指示に従うためのガイドとスキルの確認
GPT-6 Astra 向けにスキルを作成またはインポートする際は、モデルが指示に従うためのガイドを確認してください。スキルと補助ファイルを見直し、指示に曖昧な点や矛盾がないかを確認します。また、ユーザーの明示的な指示がスキルのガイドラインに優先することを明記します。
補助リソースの追加
SKILL.md は簡潔にまとめ、詳しい資料は同じディレクトリ内に配置します。
references/には、ポリシー、スキーマ、例、背景資料を配置します。assets/には、ワークフローでコピーまたは変換するテンプレートやファイルを配置します。scripts/は、ワークフローで決定論的な計算やファイル処理が必要な場合に使います。
SKILL.md には補助ファイルへの参照を記載し、それぞれをいつ読み込むか、または実行するかを説明します。指示と既存のツールでタスクを確実に完了できる場合は、スクリプトを追加しないでください。
スキルと MCP ツールの連携
スキルには、プラグインの MCP サーバーが提供するツールをモデルがどう使うかを記述できます。ワークフローの指示はスキルに記載し、最新データの取得、認可、制御が必要な操作はサーバーに任せます。
スキルに MCP サーバーが必要な場合は、agents/openai.yaml で依存関係を宣言します。
dependencies:
tools:
- type: "mcp"
value: "dice-roller"
description: "Roll an N-sided die"
transport: "streamable_http"
url: "https://tinymcp.dev/api/moldy-aloof-zettabyte/mcp"
依存関係を宣言すると、必要なツールが利用可能になります。ワークフローの指示は別途明記してください。どのツールをどの順序で使うか、結果が得られない場合や結果が曖昧な場合にどう対処するかをモデルに伝えます。
スキルのテスト
ユースケース一覧から代表的な依頼を選び、次のケースをテストします。
- スキルが起動すべき直接的な依頼
- 同じ目的を間接的に伝える依頼
- 情報が足りず、追加の質問が必要な入力
- スキルが起動すべきでない依頼
- 情報の捏造や未対応の操作をスキルが避けられるかを確かめる境界ケース
スキルが適切な場面で起動するかと、出力の品質の両方を確認します。意図しない場面で起動する場合は、スキルの説明を見直します。適切なワークフローが選ばれても結果に一貫性がない場合は、指示を見直します。
スキルのパッケージ化
プラグインのマニフェストに、スキルのディレクトリを指定します。
{
"name": "dice-roller",
"version": "1.0.0",
"description": "Roll dice for tabletop games",
"skills": "./skills/",
"apps": "./.app.json"
}
マニフェストの全体例、MCP サーバーとの対応付け、ローカルでのテスト、配布の流れについては、プラグインのパッケージ化を参照してください。