1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code Skill の Eval / Gotchas — 全スキルに必要か?運用6週間で出た答え

1
Last updated at Posted at 2026-05-03

Claude Code Skill の Eval / Gotchas — 全スキルに必要か?運用6週間で出た答え

はじめに

Claude Code の Skill(~/.claude/skills/<name>/SKILL.md)を40本以上運用してみて気づいたことがある。

## Eval## Gotchas を全 Skill に書くべき」という設計で始めたが、6週間後に振り返ると54スキル中 Gotchas の実追記があったのは3スキルのみだった。

残り51本は空テンプレを貼っただけ。これはルールの問題ではなく 設計の問題 だと気づき、3分類に再設計した。その記録を共有する。

最初の設計:全スキル一律

当初のルール:

## Eval
スキル完了時に自己採点し skills-usage.json に記録する

## Gotchas
<!-- エッジケースに遭遇したらここに追記 -->

このテンプレを全 SKILL.md の末尾に貼り、「使うほど賢くなるループ」を目指した。

6週間後の実測値:

指標 計測値
Eval 設置率 42/54(78%)
Gotchas 設置率 32/54(59%)
Gotchas に実際の追記がある 3/54(6%)

ループは回っていなかった。

なぜ機能しなかったか

原因を探ると、スキルには性質の違う3種類が混在していた。

A. 本番影響系(外部書き込み・自動実行)

例:Qiita 自動投稿 / DB 更新 / ニュースレター配信

人間がその場でレビューしない。失敗が気づかれないまま進む。

この種のスキルは Eval も Gotchas も真剣に書く価値がある。

B. 知識蓄積系(繰り返し使うが副作用なし)

例:SEO記事ライター / コードレビュー / デバッグ

同じ罠を踏みやすい。失敗パターンがテキストで表現できる。

Gotchas は価値があるが、Eval(自己採点)は不要。人間がすぐ結果を見るから。

C. ワンショット系(1回完結・対話的・無害)

例:defuddle / firecrawl-scrape / YouTube要約 / brainstorm

人間がリアルタイムで結果を見る。副作用なし。失敗してもすぐわかる。

Eval も Gotchas もそもそも要らない。テンプレを置くだけで SKILL.md が太り、LLM の指示追従精度が落ちる。

実際に機能したのはどこか

A 分類の qiita-daily-writer(Qiita 自動投稿スキル)では Gotchas が機能した。

経緯:

  1. シェル変数経由で JSON を渡していたところ、制御文字エラーで POST が失敗
  2. エラーに気づかず curl を再実行 → 重複投稿3件
  3. Gotchas に追記:「curl は tempfile を使え・再POSTする前に GET で確認」
  4. 翌日から Step 5-0(投稿前重複チェック)を追加
  5. その後の事故ゼロ
## Gotchas

### Step 5: curl二重POST問題(YYYY-MM-DD)
- **原因**: シェル変数経由の JSON が制御文字エラーを起こし Python が失敗
- **対策**: tempfile に書き出し `--data-binary @file` で渡す
- **検知**: 投稿後 GET で当日件数確認、2件以上なら削除

LLM は SKILL.md を毎回読む。Gotchas に追記するだけで、コード変更なしに次回実行から挙動が変わる。これが効いた。

3分類への再設計

上記の気づきをもとに分類ルールを整理した。

分類 定義 Eval Gotchas
A: 本番影響系 外部書き込み・自動実行・スケジュールタスク
B: 知識蓄積系 繰り返し使う・罠パターンが蓄積できる
C: ワンショット系 1回完結・対話的・副作用なし

新規スキル作成時の判定チェック:

Q1: curl -X POST など外部への書き込みがあるか?
    → YES → A(Eval + Gotchas 必須)

Q2: 同じスキルを繰り返し使い、失敗パターンが蓄積できるか?
    → YES → B(Gotchas のみ)

それ以外 → C(何も置かない・SKILL.md を軽く保つ)

実施後の数値(54スキル):

指標 Before After
Eval 設置数 42 6(A のみ)
Gotchas 設置数 32 25(A+B)
SKILL.md 削除行数 1,054行

B 分類スキルから Eval を削除し、C 分類から両方を削除した結果、合計 1,054 行のボイラープレートが消えた。

Eval は「完了の定義」として機能する

A 分類スキルに残した Eval の役割は「自己採点」ではなく 「完了の定義の明文化」 だ。

## Eval

**成功判定**:
- `pass`: 記事ファイル生成 + Qiita 投稿成功 + プランナー更新完了
- `fail`: 上記のいずれかが欠けている

**完了宣言禁止条件**:
- RESPONSE_FILE が空のまま終了した場合(curl エラーかも)
- meta.json の status が published になっていない場合

「完了しました」と言う前にこのチェックリストを参照させることで、LLM が自分で手を止めて確認する動線を作れる。

まとめ

  • 全スキルへの一律適用は逆効果:SKILL.md が太ると LLM の精度が落ちる
  • A分類(本番影響系)にだけ集中投下:6スキルで本当に機能させる
  • Gotchas は「追記した瞬間に次回から有効」:コード変更ゼロで挙動が変わる最安コストの改善
  • C分類には何も置かない:スキルを軽くすることも品質の一部
  • 分類ルールを skill-management.md に書いておくと、新規スキル作成時に迷わない
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?