derive-instead-of-transcribing
他のファイルから手で写したものは、ちょうど一度だけ正しいものです。生成できるなら生成し、写しが古くなったらビルドを失敗させてください。
カードを読んだレビュアーが与えるものであり、ファイルが自分について主張するものではありません。信頼できない内容を扱った実行中にエージェントが抽出したカードは汚染された状態で生まれ、取得される前にレビュー待ちとして保留されます。
どんなときに思い出すか
- コマンド一覧を文書化する
- プロジェクト間で値を写す
- 二つのファイルを同期させる
- リファレンスページを書く
価値はたいてい「回避」と「確認」にあります。「実施」は誰でも書ける節です。
上のカード本文は翻訳です。CLI が取り込み、エージェントが実行時に読み、下のハッシュが証明するのは英語の原文です。
トリガー
システム内の2箇所が同じ情報を保持している場合に当てはまる。設定とそのドキュメント、スキーマとそのクライアント型、パレットとそれを使うサイト、コマンド一覧とリファレンスページなど。
2つ目のコピーが意図的に異なる内容である場合には当てはまらない。丁寧に作られた入門ガイドはリファレンスの古びたコピーではなく、別の役割を持つ文章である。
実施
- どちらをソースとするかを決める。通常はプログラムが実行時に実際に読み取る方だ。
- もう一方を生成し、差分がレビュー可能なように生成ファイルをコミットする。
- 再生成を行い、コミット済みのコピーと差異があれば失敗するCIステップを追加し、エラーメッセージには実行すべき正確なコマンドを含める。
- 生成ファイルに、それがどのバージョンまたはコミットから生成されたかを刻印し、読み手が何を説明しているものかを分かるようにする。
回避
コピーを記憶によって同期させ続けること。これは1人が両方のファイルを頭の中に保持している間はうまくいくが、他の誰かがどちらかに手を入れた最初の週で破綻する。
中途半端なバージョンも避けること——ファイルを生成はするが、それをゲートしない場合だ。時々しか再生成されない成果物は、手書きのものより悪い。生成物としての権威を帯びながら、同じくらい古びているからだ。
そして文章を生成することも避ける。リファレンス資料はうまく生成できるが、説明はそうではなく、機械的に展開されたフィールド説明のページは誰にも読まれないページになる。
確認
ソースを変更し、再生成せずにプッシュする。CIは赤くなり、何を実行すべきかを伝えなければならない。
その上で、変更した項目について生成ファイルを読み、そこに反映されていることを確認する——ゲートが証明するのはファイルが最新であることであって、ジェネレーターが気にかけているフィールドを捉えたことではない。
リスク
誰にも読めない生成成果物では目的が果たせない。出力が機械にしか意味を持たないなら、レンダリング層が必要になり、それは維持すべきコードがさらに増えるということだ。
結合コストもある。消費側は生産側の形に依存するようになり、片方でのリファクタリングがもう片方のビルドを壊す。それは通常むしろ狙い通りなのだが——つまりゲートは満たしやすくしておかねばならない、さもなければ誰かが無関係なリファクタリングの最中にそれを無効化し、そのまま忘れてしまう。
使い方
カードはデータです。リポジトリをクローンし、パスで取り込んでください。ネットワーク経由で届いたものは汚染扱いとなり、承認されるまで保留されます。それが望ましい挙動であり、ここにワンライナーのインストーラーがない理由です。
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/derive-instead-of-transcribing/SKILL.md完全性
公開された状態のファイルの SHA-256。取り込む側は、受け取ったものがこのページに表示されたものと同じか確認できます。
8b9a25705790b36bd8b04294161cac342e63b667c0e6a6e36240d981687f35f9