Skills

そのSkill、「1回動いた」で完成?想定外の動きを見つけるテストケースを作る

作成者: ぽちまる いいね: 0 2026年07月23日 13:04

📝 プロンプトの説明

Agent Skillを作って一度試し、期待した結果が返ってくると「完成した」と思いたくなります。 でも、実際に使うときの入力は毎回同じではありません。 - 必要な情報が足りない - 同じ依頼を別の言い方で伝える - 対象外のファイルが混ざる - 担当者や期限が曖昧 - 必要なツールや参照資料が見つからない - 関係ない依頼なのにSkillが呼ばれる 正常な入力を1件試しただけでは、こうした条件でどう動くかは分かりません。 このSkillは、自分で作ったAgent Skillや、GitHubなどから入手したAgent Skillを読み、**そのSkillが約束している内容に合わせたテストケース**を作ります。 ■ できること ・`SKILL.md`の目的、入力、出力、発動条件を整理 ・正常系だけでなく、情報不足・曖昧な入力・対象外の依頼もテスト ・参照ファイル、スクリプト、必要ツールの不足を確認 ・テスト前に期待結果と合格条件を固定 ・利用できる環境では、ケースごとに独立して実行 ・結果を「合格・不合格・実行不能」で判定 ・不合格なら、修正案を出して同じケースで再テスト テスト件数は「必ず10件」のように固定しません。 Skillが約束する機能と、現実的に起こり得る失敗を確認するために必要な分だけ作ります。

画像

Image 1
```text
以下の内容を `SKILL.md` として保存し、Agent Skillとして登録してください。
保存先や登録方法が分からない場合は、利用中のAI環境に合わせて分かりやすく案内してください。

---
name: agent-skill-test-builder
description: Agent Skillの構成と実際の振る舞いを検証する、再実行可能なテスト一式を作成・実行するスキル。自作SkillやGitHubなどから入手したSkillについて、発動、誤発動、機能、情報不足時の応答、出力形式、参照ファイル、スクリプト、環境依存を利用前・共有前・更新後に確認したいときに使う。
---

# Agent Skillテスト作成

## このスキルの目的

Agent Skillが、想定した依頼で正しく発動し、Skill自身が約束している処理を実行できるか確認する。

対象は次の両方とする。

- ユーザーが自分で作ったSkill
- GitHubなどから入手・インストールした第三者のSkill

悪意のある指示や情報流出などを調べる安全性監査ではない。
安全性を詳しく確認したい場合は、安全性チェック用の別Skillを使う。

## 最初に受け取るもの

最低限、次のいずれかを受け取る。

- Skillフォルダ
- `SKILL.md`

次の情報は任意とする。

- このSkillで何をしたいかの短い説明
- サンプルファイル
- 使用環境、OS、利用できるツール

Skillの内容から目的と対応範囲を読み取れる場合は、入力項目を埋めるためだけの質問をしない。
目的、対象、成功条件が複数に解釈でき、テスト結果が変わる場合だけ質問する。

## 必ず守ること

- 対象Skillを、ユーザーの承認なく編集しない。
- テスト入力と合格条件は、実行結果を見る前に確定する。
- ケース数を先に決めない。
- Skillが約束する機能と、現実的な失敗ポイントを確認するために必要なケースだけ作る。
- 採点に影響しない「参考ケース」「追加ケース」は作らない。
- Skillが対応すると書いていない用途を、勝手に合格条件へ加えない。
- 実行役には、期待結果や合格条件を渡さない。
- 実データや原本を変更せず、複製したテストデータだけを操作する。
- 送信、投稿、購入、公開、削除など外部影響のある操作は、下書きまたは模擬実行に置き換える。
- 実際のAPIキー、認証情報、個人情報をテストに使用しない。

## テスト手順

### 1. 対象Skillを理解する

Skillフォルダ全体を確認できる場合は、`SKILL.md`だけでなく、本文から参照される`references/`、`scripts/`、`assets/`、examplesなども必要な範囲で確認する。

最初に次を短くまとめる。

```text
このSkillが約束していること:
- ...

対応範囲外:
- ...

テスト可能な範囲:
- ...
```

判断材料の優先順位は次のとおり。

1. `SKILL.md`に明記された内容
2. 同梱された参照資料、サンプル、スクリプト
3. ユーザーが説明した利用目的

ユーザーの目的がSkillの対応範囲外なら、不合格にはしない。
テスト前に目的との不一致を伝え、現在の範囲だけを試すか、Skillを拡張してから試すか確認する。

### 2. Skillの構成を確認する

最低限、次を確認する。

- `SKILL.md`が存在し、読み取れる
- YAML frontmatterに`name`と`description`がある
- `name`が利用環境で有効な形式になっている
- 本文から参照しているファイルが存在する
- Pythonやシェルスクリプトに明らかな構文エラーがない
- 実行に必要なツール、ライブラリ、環境条件が分かる
- 別の環境では存在しない固定パスに依存していない

確認に利用できるコマンドや構文検査機能がある場合は使用する。
構成上の問題を見つけても、影響を受けないテストは続ける。
実行できないものだけを「実行不能」とする。

### 3. 必要なテストケースを作る

すべてのSkillへ同じ件数を当てはめない。
対象Skillの構成に応じて、必要な種類だけを選ぶ。

#### 発動テスト

- Skill名を出さない典型的な依頼
- 同じ意味を別の言葉で表した依頼
- 似ているがSkillの対象外である依頼

発動テストでは、Skill名を明示的に指定しない。
Skillをインストールして自動選択できる環境がなければ「実行不能」とする。

#### 機能テスト

- 代表的な正常入力
- 必要情報が不足した入力
- Skillが明記する入力形式の境界
- 必須の出力形式や保存先
- 対応すると明記された失敗時の処理

#### Skillの構成に応じて確認すること

- 参照資料がない、または内容が矛盾している
- スクリプトが失敗する
- 必要なツールやライブラリが使えない
- パス、OS、権限など実行環境が異なる
- 複数ファイルの一部だけが壊れている
- 同じ領域の別Skillと発動条件が競合する

Skillが対応すると書いておらず、通常利用でも起こりにくい極端な条件は無理に追加しない。

各ケースについて、実行前に次を確定する。

| ID | 確認したいこと | テスト入力 | 期待する振る舞い | 合格条件 | 必要な素材 |
|---|---|---|---|---|---|

### 4. テストデータを準備する

- 単純なテキスト、CSV、画像、フォルダ構成は可能な範囲で自動生成する。
- 専門帳票や独自形式だけ、匿名化したサンプルをユーザーへ依頼する。
- 元データをテスト専用フォルダへ複製する。
- ケース間で前の結果が残らないよう、ケースごとに入力データを初期状態へ戻す。

### 5. 独立して実行する

サブエージェントを利用できる場合は、次の3役を分ける。

1. 設計役
   - テスト入力、期待する振る舞い、合格条件を確定する

2. 実行役
   - 対象Skillと1件のテスト入力だけを受け取って実行する

3. 評価役
   - 実際の出力を、事前に確定した合格条件と比較する

実行役には、期待結果、合格条件、他ケースの結果を渡さない。
原則としてケースごとに新しい実行環境を使う。

サブエージェントが使えない場合は現在の環境で実行し、独立環境ではないことをレポートへ明記する。

### 6. 判定する

ケースごとの判定は次の3種類だけを使う。

- `合格`: 合格条件を満たした
- `不合格`: 実行または直接確認できたが、合格条件を満たさなかった
- `実行不能`: 環境、権限、ツール、必要素材などがなく確認できなかった

総合判定も同じ3種類にする。

- `合格`: 全ケースが合格
- `不合格`: 1件以上の不合格がある
- `実行不能`: 不合格はないが、1件以上の実行不能がある

不合格と実行不能が両方ある場合、総合判定は`不合格`とする。

### 7. テスト一式を保存する

ファイルを作成できる環境では、対象Skillの外に次の構成で保存する。

```text
skill-evals/
└── <skill-name>/
    ├── test-cases.md
    ├── report.md
    └── fixtures/
```

- `test-cases.md`: テスト入力、期待する振る舞い、合格条件
- `report.md`: 実行結果、判定、証跡、修正案
- `fixtures/`: 複製または自動生成したテスト素材

既存ファイルがある場合は、上書き前に確認する。
チャットだけの環境では、同じ内容をMarkdownで出力する。

### 8. 不合格時の修正案

不合格の場合は、失敗したケースと関係する箇所だけを修正候補として示す。

- なぜ不合格になったか
- `SKILL.md`、参照資料、スクリプトのどこを変えるか
- 変更前と変更後の差分案
- 修正後に再実行するケース

対象Skillを自動で書き換えない。
ユーザーが承認した場合だけ修正し、同じテストケースを再実行する。

## デフォルト出力

```markdown
## 対象と範囲

- 対象Skill:
- 入手元: 自作 / 第三者 / 不明
- このSkillが約束していること:
- 対応範囲外:
- テスト環境:
- 独立実行: あり / なし

## 総合判定

判定: 合格 / 不合格 / 実行不能

理由:

次にやること:

## テストケース

| ID | 種類 | 確認したいこと | テスト入力 | 期待する振る舞い | 合格条件 | 必要な素材 |
|---|---|---|---|---|---|---|

## 実行結果

| ID | 実際の結果 | 判定 | 証跡・理由 | 修正候補 |
|---|---|---|---|---|

## 実行不能の条件

| ID | 足りない環境・権限・素材 | 準備するもの |
|---|---|---|

## 修正案

| 対象箇所 | 不合格との関係 | 変更案 | 再実行するケース |
|---|---|---|---|

## 保存したテスト一式

- テストケース:
- レポート:
- テスト素材:
```

該当する内容がない欄は「なし」と書く。
重要な実行ログやエラーは証跡として残す。
ただし、認証情報、個人情報、無関係な長いログは含めない。
```