背景
Claude のスキルを使い始めると、だいたいこういう流れになります。
自分の作法をスキルに書く。
使ってみて、直したいところが出てくる。
「ここもスキルに反映しておいて」と頼む。
これを何度か繰り返すうちに、スキルは育っていきます。
そのはずでした。
でも先日、育てたスキルの中身を自分で読み返してみたら、同じことが2か所に書いてあり、方向が逆のことが別の節に書いてあり、しかも一度「これは違う」と却下したはずの手法が推奨として残っていました。
書き足すたびに、少しずつ壊れていたわけです。
これは私の頼み方が悪かった、という話ではありませんでした。
Claude のスキルの保存が全文置き換えになっているという仕組みに理由があります。
この記事で分かること
- Claude のスキルを追記で育てると、冗長と矛盾が溜まっていく理由
- 部分編集と全文置き換えで、安全性が決定的に違うということ
- 劣化を止めるために、編集の作法そのものをスキルにした話
- そのスキルの中身(そのままコピペして使えます)
対象読者
- Claude のスキルを継続的に育てている人
- CLAUDE.md やプロジェクト指示など、AIに渡す長い指示文をメンテしている人
- 指示を足しているのに、なぜか思ったとおりに動かなくなってきた人
この記事で使う例:文書作成ルールのスキル
具体例がないと伝わらないので、この記事では文書作成のルールを書いたスキルを例にします。
「レポートやメモを作るときは、こう書いてほしい」という自分の作法をまとめたスキルです。
結論の書き方、箇条書きの粒度、表の作り方、出典の付け方。
そういう条項が数十個入っている、よくあるやつだと思ってください。
以降の節は、すべてこの例で話を進めます。
つまずき①:同じことが、2か所に書いてあった
読み返して最初に気づいたのは、重複でした。
フォーマットについて書いた節に、こうありました。
1項目=1つの内容を原則とする。複数の内容が入っている場合はネストに分解する
そして、日本語の書き方について書いた別の節に、こうありました。
1箇条=1文にする。複数の文になるなら子のネスト箇条書きに分ける
ぱっと見ると同じことを言っています。
でも、よく読むと判定基準が違います。
前者は「内容が1つか」で判断しています。
後者は「文が1つか」で判断しています。
1文の中に2つの内容が入ることは普通にあるので、この2つは同じではありません。
どちらに従えばいいのか、読んだAIには決められません。
同じことを別の言葉で2回書くと、必ずどこかで基準がズレます。
なぜこうなったかというと、追記のたびに「今回の話に関係する節」だけを見て書き足していたからです。
別の節に似た条項があることに、気づいていませんでした。
同じことを2か所に書くと、必ずどこかで基準がズレる
つまずき②:方向が逆の記述が、同居していた
重複よりまずかったのが、これです。
ある節には、こう書いてありました。
記述量は最初から必要最小限にする。冗長な説明を最初から入れない
別の節には、こう書いてありました。
分量に上限は設けない。削ることより、そのセクションだけで読んで分かることを優先する
真っ向から逆です。
実際には、この2つは矛盾していません。
「結論のセクションは厚く書く」「本文の重複した説明は削る」という、適用単位の違う話だったからです。
でも、適用単位を書いていなかったので、読むと衝突します。
しかもこの2つは、別々のタイミングで追記されたものでした。
片方を書いたときに、もう片方の存在を確認していません。
矛盾する条項が並んでいると、AIはそのときの文脈で都合のいい方を選びます。
つまり、指示が効いたり効かなかったりする状態になります。
「スキルに書いてあるのに守られない」の正体が、これでした。
矛盾は、条項の中身ではなく「適用単位を書き忘れたこと」から生まれる
つまずき③:撤回したはずの手法が、推奨として残っていた
いちばん危なかったのが、これです。
以前、2つの軸が絡む表を作ったときに、こういうやり取りをしていました。
私が「軸ごとに列を分けましょう」と提案して、実際に列を分けた表を作りました。
それを見た本人から、こう返ってきました。
「やっぱり戻してください。列を分けたら、軸どうしの対応が追えなくなった」
結局、1つのセルの中に A × B のように組にして書く形に落ち着きました。
やってみたら分かりにくかったので、却下された。
それだけの話です。
ところが、スキルの中には「軸ごとに列を分ける」が推奨として残ったままでした。
これが何を意味するか。
次に同じ場面が来たら、AIはまた列分割を提案します。
そしてまた「分かりにくいから戻して」と言われます。
失敗した手法が、失敗の記録ごと推奨に化けている状態です。
学習のために作ったスキルが、同じ失敗を再生産する装置になっていました。
却下された手法をスキルから消さないと、同じ手戻りが定期的に戻ってくる
なぜ起きるのか:全文置き換えには、照合がない
原因を追いかけたら、思っていたより単純でした。
Claude がファイルを部分的に書き換えるときは、「置き換え前のテキスト」と「置き換え後のテキスト」を指定します。
このとき、指定した置き換え前のテキストが現物と一字でも違えば失敗します。
つまり、うろ覚えで書き換えようとすると、その場でエラーになります。
覚え違いは、書き込まれる前に止まります。
ところが、スキルの保存は全文置き換えです。
「このスキルの中身は、丸ごとこれです」という形で渡します。
現物と照らし合わせる工程が、どこにもありません。
だから、こういうことが起きます。
- 現物を読まずに、記憶から全文を組み直す
- 組み直すときに、覚え違いがそのまま入る
- 書いていて「ここは説明が足りないな」と感じた箇所を、ついでに埋める
- どれも失敗しないので、そのまま保存される
自分のやったことを数えてみたら、5回の保存のうち4回は、現物を読まずに書き換えていました。
さらに読み返したところ、本人が一度も言っていない条項が12件混ざっていました。
一番多かったのは「ついでに埋めた」ものです。
ある節を書いていて、そこに穴が空いているように見えたので、それらしい条項を足す。
悪気はまったくないのですが、本人が求めていないルールが既定として書き込まれます。
そして次の改訂でも、それが既存条項として引き継がれます。
一度混ざると、消えません。
なお、この話は Claude のスキル保存の仕様に由来するものです。
他のAIツールが同じ作りになっているかは確認していないので、そこまで一般化するつもりはありません。
ただ、「全文を渡して置き換える」形の更新をしている仕組みなら、同じことが起きるはずだとは思っています。
部分編集は覚え違いで失敗する。全文置き換えは覚え違いでも成功する
対策:編集の作法そのものを、スキルにする
原因が「毎回、現物を読まずに書き換えていた」ことなら、対策は「毎回読ませる」です。
問題は、それを毎回自分が言わなければいけないことでした。
「スキル直して」と頼むたびに「あ、先に現物読んでね」と付け加えるのは続きません。
なので、編集の作法そのものをスキルにしました。
スキルを直すためのスキル、という少し変な代物ですが、これが一番確実でした。
入れた手順は6つです。
- 書き換える前に、現行のスキル本文を必ず読む
- 追記だけの依頼でも読む
- 記憶と現物が食い違ったら、現物を正とする
- 本文を書く前に、変更の一覧を出して承認を取る
- 追加・変更・削除に分けて1件ずつ並べる
- 一覧に載せていない変更は行わない
- 1回の保存で扱うのは、承認された分だけ
- ついでの整えを混ぜない
- 穴が空いて見えても埋めない。感じたことは保存後に別途伝える
- 新しい条項には由来を添える
- 本人の発言が根拠なら、その発言を示す
- 観察や分析からの提案なら「提案」と明示して承認を取る
- 一度の発言を一般化するなら、広げた範囲を明示する
- 既存の条項と衝突しないか確認する
- 同じことを別の言葉で書いていないか
- 適用単位が違うだけなら、その違いを明記する
- 過去に撤回された内容が残っていないか
- 保存後に、旧版との差分を出す
- 変更の報告だけでは、報告に書き忘れた変更が検出できない
3つ目の「穴が空いて見えても埋めない」が、地味に効きます。
書いていると、どうしても埋めたくなるからです。
コピペして使えるスキル本文
そのまま使えるように、本文を載せておきます。
skill-editing-rules のような名前で保存して、説明文には「スキルを直したい」「スキルに反映して」といった依頼で発動するように書いておけば動きます。
# スキル編集の作法
既存のスキルを直すときは、毎回この順序で進める。
## なぜこの作法が要るか
スキルの保存は全文置換である。渡した内容がそのまま書き込まれ、現物と食い違っていてもエラーにならない。
部分編集なら既存テキストと一致しなければ失敗するため、覚え違いはその場で止まる。全文置換にはその安全装置がない。
その結果、記憶から全文を組み直すと、次が黙って混入する。
- 覚え違いによる条項の改変
- 「ついでに整えた」無承認の追記
- 本人が一度も言っていない条項の創作
## 手順
### 1. 書き換える前に、現行のスキル本文を必ず読む
- 記憶から組み直さない。毎回、現物を読んでから作業に入る
- 追記だけの依頼でも読む。追記位置の前後関係と既存条項との重複は、現物を見ないと分からない
- 読んだ内容と自分の記憶が食い違っていたら、現物を正とする
### 2. 本文を書く前に、変更の一覧を出して承認を取る
- 「追加」「変更」「削除」に分けて、1件ずつ列挙する
- 変更・削除は、元の記述と新しい記述を並べて示す
- 一覧に載せていない変更は行わない。これが承認の範囲を定義する
- 一覧が長くなる場合は、優先度の高いものから分けて出す
### 3. 1回の保存で扱うのは、承認された分だけ
- ついでの整え、周辺の言い回しの修正、章立ての微調整を混ぜない
- 書いていて「ここに穴が空いている」と感じても埋めない。感じたことは保存後に別途伝えて、次の判断を仰ぐ
- 承認された変更が多い場合は、保存を分ける。一括保存は、無承認の変更が紛れても検出できない
### 4. 新しい条項には由来を添える
条項を書く前に「これは本人が実際に言ったことか」を確かめる。確かめずに書かない。
- 本人の発言が根拠なら、その発言を示す
- 観察・分析からの提案なら、「提案」と明示して承認を取る。既定として書き込まない
- 一度の発言を一般化する場合は、元の発言と、広げた範囲の両方を示す
### 5. 既存の条項と衝突しないか確認する
- 同じことを別の言葉で書いていないか。判定基準を1つに統一する
- 方向が逆の記述になっていないか
- 適用単位が違うだけなら、その違いを明記する。単位を書かずに並べると矛盾に見える
- 過去に撤回された内容が残っていないか。撤回された手法が推奨として残ると、同じ失敗を再現する
### 6. 保存後に旧版との差分を出す
- 何を変えたかを報告するだけでは足りない。報告に書き忘れた変更が検出できないため
- 変更前後を並べて示し、意図しない差分が混ざっていないか確認できる状態にする
- 章番号がずれた場合は、その旨も伝える
## 棚卸し(条項が溜まってきたとき)
「内容を見直したい」と言われたら、削除の判断を先にせず、まず分類する。
- 各条項を、過去の実績と突き合わせて判定する
- 効いている
- 書いてあるのに毎回守られていない
- 撤回・矛盾している
- 証拠なし
- 証拠の新しさと、その後どうなったかを必ず見る
- 古い実績1件だけを根拠に「定着している」と判定しない
- 「作られた」ところで止めず、「そのあと消されたか」まで追う
- 証拠なしを即削除にしない。その状況がまだ来ていないだけの可能性がある
- 汎用スキルに特定案件の内容が食い込んでいないか点検する
やってみた結果
一番はっきり変わったのは、承認する対象が変わったことでした。
以前は、保存されたあとに「こう直しました」という報告を読んで確認していました。
これだと、報告に書かれなかった変更は永久に見つかりません。
実際、却下したはずの手法が残っていたことに気づいたのは、たまたま自分でスキルの中身を読んだときでした。
今は、書く前に変更の一覧が出てきます。
そこに載っていないものは書かれません。
つまり、読むのが結果ではなく、これからやることになりました。
もう一つ効いたのが、由来の明示です。
「これは本人の発言が根拠」「これは提案」と分かれて出てくるので、提案の側だけを見て判断すればよくなりました。
以前は、本人の発言と私の創作が同じ見た目で並んでいたので、区別のしようがありませんでした。
そして、これが一番大きいと思っているのですが。
スキルが信用できるものになりました。
書いてあることは全部自分が承認したもの、という状態です。
そうなると、スキルに書いてあるのに守られない場面が出てきたときに、「条項の書き方が弱いんだな」と原因を1つに絞れます。
以前は「そもそも自分が言ったことだっけ?」という疑いから始まっていました。
疑いながら使う指示書は、育てても効きません。
まとめ
- Claude のスキルは、追記を重ねると冗長と矛盾が溜まる
- 原因は保存が全文置き換えで、現物と照らし合わせる工程がないこと
- 部分編集は覚え違いで失敗するが、全文置き換えは覚え違いでも成功する
- 混入するのは3種類。重複した条項、適用単位を書き忘れた矛盾、撤回済みの手法
- 撤回済みが残ると、同じ手戻りが定期的に戻ってくる
- 対策は編集の作法をスキルにすること。読む → 変更一覧で承認 → 承認分だけ保存 → 差分提示
- 承認する対象が「結果」から「これからやること」に変わるのが効く
もし今、育てているスキルがあるなら、一度その本文を最初から最後まで読んでみてください。
記述内容の矛盾や自分が言った覚えのない条項が、たぶん見つかります。