Featured image of post Issueに仕込まれた一文で、AIが社員の勤務表を公開した。非公開と外への書き込みを揃えない【プロンプトインジェクション対策】

Issueに仕込まれた一文で、AIが社員の勤務表を公開した。非公開と外への書き込みを揃えない【プロンプトインジェクション対策】

公開しているリポジトリの Issue を AI に片付けさせたら、仕込まれた一文に従って、非公開の勤務表から写した社員の名前と勤務を公開のコメントに貼った。誰でも書ける入力・非公開のデータ・外への書き込みの3つを一つの会話で揃えない仕掛け(プロンプトインジェクション対策)を、TypeScript と node --test で書きます。

連載 コードファルコナー (第12話 / 全12話)
Featured image of post AIに別ブランチで作業させたのに、コミット前の変更が消えた。フォルダごと分ける【git worktree】

AIに別ブランチで作業させたのに、コミット前の変更が消えた。フォルダごと分ける【git worktree】

AI に別のブランチを切らせて夜通し作業を任せたら、同じフォルダにあったコミット前の変更が朝には消えていた。AI の作業場所をフォルダごと分ける git worktree と、分けても共有されるものを、TypeScript と node --test で確かめます。

Featured image of post AIのレビューを2回通ったのに、ログインボーナスが二重に配られた。書いた理由を渡さずに頼む【敵対的レビュー】

AIのレビューを2回通ったのに、ログインボーナスが二重に配られた。書いた理由を渡さずに頼む【敵対的レビュー】

AI のレビューを同じ会話とサブエージェントで2回通したのに、ログインボーナスが二重に配られた。書いた側の言い分を渡さず、差分と仕様だけでレビューを頼む依頼の組み立て(敵対的レビュー)を TypeScript と node --test で書きます。

Featured image of post 公式ドキュメントを渡したのに、AIが存在しない関数を書いた。インストール済みの依存から資料を作る【最新ドキュメントを渡す】

公式ドキュメントを渡したのに、AIが存在しない関数を書いた。インストール済みの依存から資料を作る【最新ドキュメントを渡す】

公式サイトのドキュメントを貼って AI に書かせたら、入っている版に無い関数でビルドが30か所落ちた。インストール済みの依存から名前と版を取り出し、AI に渡す資料を作る方法(最新ドキュメントを渡す)を TypeScript と node --test で書きます。

Featured image of post AIがテストの答えを書き換え、全部通ったまま請求が倍に。差分で見つける【テスト先行と改変の検知】

AIがテストの答えを書き換え、全部通ったまま請求が倍に。差分で見つける【テスト先行と改変の検知】

AI に保管料の計算の改修を任せたら、テストの期待値がバグの出力に書き換えられ、チェックは全部緑のまま請求が倍になった。テストを先に固め、その後の差分からテストの削除と期待値の書き換えを見つける仕掛け(テスト先行と改変の検知)を TypeScript と node --test で書きます。

Featured image of post AIに続けて7件直させたら、5件目の修正が戻った。会話を区切って引き継ぐ【1タスク1セッション】

AIに続けて7件直させたら、5件目の修正が戻った。会話を区切って引き継ぐ【1タスク1セッション】

AI に一つの会話で不具合を7件続けて直させたら、7件目の修正で5件目が元に戻った。会話をタスクごとに区切り、決めたこととやめたことだけを次の会話に渡す引き継ぎ書(1タスク1セッション)を TypeScript と node --test で書きます。

Featured image of post 確認を全部許可にしたら、AIが検証環境のデータを消した。読む確認だけ残す【許可リスト】

確認を全部許可にしたら、AIが検証環境のデータを消した。読む確認だけ残す【許可リスト】

確認が一日三百回出るのに疲れて AI の操作を全部許可にしたら、AI が検証環境のデータを消した。通す・聞く・止める操作を先に決めて、読む確認だけを残す仕組み(許可リスト)を TypeScript と node --test で書きます。

Featured image of post 指示書に規則を足すほどAIが守らなくなった。消していい規則を確かめる【指示書の刈り込み】

指示書に規則を足すほどAIが守らなくなった。消していい規則を確かめる【指示書の刈り込み】

指摘のたびに規則を足した指示書が300行を超え、肝心の1行が埋もれて同じ指摘が三回目に。hook の名前ではなく、規則ごとの違反例を実際に流して止まった行だけを消す刈り込み(指示書の刈り込み)を TypeScript と node --test で書きます。

Featured image of post 指示書の規則をAIが10回目に破り、本番が落ちた。書き込む直前に止める【hooks】

指示書の規則をAIが10回目に破り、本番が落ちた。書き込む直前に止める【hooks】

指示書に3回書いた「本番に出したマイグレーションは書き換えない」を AI が10回目に破り、本番だけ列が足りずに落ちた。書き込む直前に必ず走るスクリプトで止める仕組み(hooks)を TypeScript と node --test で書きます。

Featured image of post キャンセルされた注文が工場への指示に残り、要らない部品を300個作った。AIに先に質問させて仕様書を書く【仕様インタビュー】

キャンセルされた注文が工場への指示に残り、要らない部品を300個作った。AIに先に質問させて仕様書を書く【仕様インタビュー】

キャンセルされた注文が工場への作業指示に残り、要らない部品を300個作った。AI に先に質問させて仕様書を書かせ、要件ごとに受け入れテストがあるかを確かめる関数(仕様インタビュー)を TypeScript と node --test で書きます。

Featured image of post 表示の修正を頼んだらAIが決済コードまで書き換えた。計画にないファイルで止める【探索→計画→実装】

表示の修正を頼んだらAIが決済コードまで書き換えた。計画にないファイルで止める【探索→計画→実装】

AI に番号表示の修正を頼んだら、決済の端数処理まで含む42ファイルが書き換えられていた。先に読ませて計画を書かせて承認し、差分が計画のファイルに収まるかを判定する関数(探索→計画→実装)を TypeScript と node --test で書きます。

Featured image of post AIの『完了しました』を信じたら中身は空だった。証拠で検収する【完了の証拠】

AIの『完了しました』を信じたら中身は空だった。証拠で検収する【完了の証拠】

AI の「完了しました。テスト12件すべて通過」を信じてマージしたら、送信処理は空のまま本番に出ていた。完了報告に件数を申告させ、人の側で走らせた実測と突き合わせる検収関数(完了の証拠)を TypeScript と node --test で書きます。

連載 コードファルコナー (第1話 / 全12話)
Featured image of post コードファルコナー シリーズ目次【困りごとから探す案内板】

コードファルコナー シリーズ目次【困りごとから探す案内板】

「コードファルコナー」シリーズ全12回の案内板です。Claude Code などの AI コーディングエージェントに自分のコードを任せてしくじったとき、任せ方と気づける仕掛けを整え直す12の技法を、現代都市の鷹匠の物語で扱う連載を、困りごとから探せます。

Featured image of post 差し替えた部品が月末だけ落ちる。Perl でインタフェースを書き、can で確かめる【Extract Interface】

差し替えた部品が月末だけ落ちる。Perl でインタフェースを書き、can で確かめる【Extract Interface】

通知先を別の部品に替えたら、日次処理は通るのに月末処理だけがメソッド不足で止まった。使う側が呼ぶメソッド名の一覧を1か所に書き、can で本物と替えの両方を確かめる――インタフェースの抽出(Extract Interface)を素の Perl で書きます。

連載 コード大工 (第11話 / 全12話)