レッスン3で作ったスキルを取り出し、一通りのテストパスを通します。
レベル1: 自分のスキルをデバッグする- テストケースを3つ用意する (通常1つ、エッジ1つ、無意味1つ)
- それぞれの期待出力と実際の出力を記録する
- 具体的な問題を少なくとも1つ見つける
- SKILL.md を編集する
- 再テストして、問題が消えたことを確認する
学習目標:
- スキルをテストする基本的な方法を学ぶ
- 実際に遭遇する失敗を診断する
- 反復ループを理解する
- スキルが本当に残す価値があるかを見極める方法を知る
最初のスキルを書いて実行してみると、次のようなことに気づいたはずです。
それが普通です。
スキルはコードと同じです。一度動かせたらそれはスタートラインであって、ゴールではありません。実際に役立つスキルはどれも、何度かの改訂を経てそこにたどり着いています。1
このレッスンでは、そうした問題を見つけて直すための、繰り返し使える方法を紹介します。
最も単純なテストは直接呼び出すことです。/skill-name で一度呼び出し、何が出力されるかを観察します。2
何かを呼び出す前に、3〜5個の入力を書き出しておきます。
通常ケース:
エッジケース:
無意味なケース:
Claude Code で、1つずつ入力していきます。
3つの点を観察します。
小さな表で十分です。
問題が指示部分ではなく、フロントマターにあることもあります。
症状: 「これらのタスクを整理して」と言っても、Claude が task-organizer スキルを無視する。
考えられる原因:
description が汎用的すぎる
修正: トリガーとなる語を入れます。
実際に使う言葉が description に含まれていない
「この To-Do を整理して」と言っても、description のどこにも「To-Do」という言葉がなければ、Claude はそのスキルを思いつかないかもしれません。3
修正: ユーザーが言いそうな言葉を description に書き込みます。
症状: task-organizer を使いたかったのに、Claude が別のものを拾ってしまう。
考えられる原因: もう一方のスキルの description のほうが入力によく一致している。
修正: /task-organizer で明示的に呼び出すか、競合するスキルよりも具体的になるように description を研ぎ澄まします。
症状: スキルは動くが、フォーマットがおかしい。
例:
絵文字と見出しでグループ分けされたセクションを期待していたのに、Claude はフラットなテキストリストを返してきました。
原因: 出力フォーマットのセクションが十分に具体的でないか、例がない。
修正: SKILL.md の「出力フォーマット」セクションに、完全な例を入れます。
「必ずこのフォーマットに正確に従うこと」と書いてから、全体を見せます。
症状: 一部のタスクが見落とされる、または間違った分類に入る。
例:
入力:
出力:
どちらにも明確な期限があるのに、両方とも期限なしと判定されました。
原因: 処理ステップの時間認識ルールが、十分なケースをカバーしていない。
修正: 埋めていきます。
要点: 思いつく限りの言い回しをすべて書き出すことです。
症状: 通常の入力は問題ないのに、変わった入力でスキルの挙動がおかしくなる。
例:
入力: 空文字列
出力: Claude が止まる、または意味のないテキストを大量に生成する。
原因: 「Notes」セクションに、空入力をどう扱うかを書いていない。
修正:
良いスキルは一度で書き上がるものではありません。テスト→修正→テストのループから生まれます。1
バージョン1が正しいとは期待しないこと。 まず動かし、次に正しくし、それから良くします。
正しく動くようになったら、もう一つ大きな問いが残っています。このスキルは本当に時間を節約しているか?1
比較は単純です。同じタスクを、スキルありとなしで数回ずつ実行し、両方の時間を計ります。
スキルなし:
計ります。あなたが手作業でプロセスを説明し、Claude が実行する — 平均でどれくらいかかりますか?
スキルあり:
計ります。あなたがスキルを呼び出し、Claude が実行する — 平均でどれくらいですか?
スキル版のほうが速くない、または品質が劣るなら、そのスキルはまだ改善が必要です。
本当のテストは実際の使用です。4
次の数字を記録します。
1週間で呼び出しが3回未満なら、そのタスクはスキルを作るほど繰り返し性が高くない可能性が高いです。
スキルが動かないときは、まず読み込み失敗のチェックから始めます。下の表をたどり、ファイルパス・フロントマターの形式・トリガーキーワードの順に切り分けていきます。
次のレッスンでは、完全なコードレビューSkillを一通り見て、より込み入ったワークフローの扱い方を学びます。
>> レッスン5: ケーススタディ: コードレビューSkillを作る
Claude Code skills: .NET ワークフローと再利用可能なプロンプト — https://codewithmukesh.com/blog/skills-claude-code/ ↩ ↩2 ↩3
Claude Code 公式ドキュメント: Extend Claude Code with skills — https://code.claude.com/docs/en/skills ↩
Building skills for Claude, ハンズオン: YAML frontmatter とテスト — https://sjramblings.io/building-skills-for-claude-part-2/ ↩
自己文書化された Runbook としての Claude skills — https://zackproser.com/blog/claude-skills-internal-training ↩
四半期レポートを仕上げるPR #234 を金曜までにレビューする明日ログインのバグを直す(空の入力)これはタスクを一切含まない、まったく無関係な文章の段落ですasldfkjasldfj!@#$%/task-organizer
四半期レポートを仕上げるPR #234 を金曜までにレビューする明日ログインのバグを直すdescription: タスクを処理する # あいまいすぎる — いつ使うべきかClaudeにはわからない
description: To-Do 項目を整理し、優先度と期限でグループ分けする。散らかったタスクリストや会議のアクションアイテムに使う
緊急: ログインのバグを直す - 明日重要: PR #234 をレビューする - 金曜## 出力フォーマット
絵文字・見出し・インデントを含め、必ずこのフォーマットに正確に従うこと:
### 🔴 緊急 (今日または明日)
- ログインのバグを直す - 明日
### 🟡 重要 (今週中)
- PR #234 をレビューする - 金曜
### ⚪ 通常
- 四半期レポートを仕上げる - 期限の記載なし
明日あのバグを直さないといけない金曜までにデモを用意する### ⚪ 通常- 明日あのバグを直さないといけない - 期限の記載なし- 金曜までにデモを用意する - 期限の記載なし2. **時刻情報を特定する**
- 日付キーワードを探す:
* 今日、今夜
* 明日
* 明後日
* 今週、月曜~日曜
* 来週、来週の〈曜日〉
* 明示的な日付(2024-01-15、1月15日、1/15)
- 期限を表す言い回しを探す:
* X までに、X まで
* 期限 X、締め切り X
* X までに終わらせる必要がある
## Notes
- **空入力または有効なタスクがない場合**、「有効なタスクが見つかりません — To-Do 項目のリストを提示してください」と出力する
- **どのタスクにも時間情報がない場合**、すべてを「通常」に入れ、「明示的な期限は検出されませんでした」と注記する
- **タスクの説明が 100 文字を超える場合**、先頭 80 文字に切り詰めて「...」を付ける
- **入力に完了済み項目(`[x]`)が含まれる場合**、スキップする
1. 最初のバージョンを書く (中核の挙動だけ)2. 3〜5個のテストケースに対して実行する3. 何がうまくいかなかったか書き留める4. SKILL.md を編集する5. もう一度テストする6. すべてのテストケースが通るまで 3〜5 を繰り返す7. 1週間、実際に使う8. 新しい問題を見つける9. ステップ4に戻る