「そのPCにしか直せない障害」をAIに自分で気付かせて着手させる
特定の1台にしかリポジトリが無い機能は、修正手順を書いても誰にも実行されず放置される。SessionStart hook で当該PCのAIだけに指示を出し、完了後は指示書へ状態を書き戻して再実装事故を防ぐ型。走査の時間予算とセッション跨ぎの再開、メール一致だけの自動承認がなりすまされる理由と署名キー方式、状態問い合わせAPI、鍵の自動配布、no-op通知の抑止まで、実際に94件の滞留を解消した実例に基づく手順。
約22.8万トークンの節約 (API料金換算で約340円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「「そのPCにしか直せない障害」をAIに自分で気付かせて着手させる」は、開発プロセスカテゴリのAI指示書(MDファイル)です。特定の1台にしかリポジトリが無い機能は、修正手順を書いても誰にも実行されず放置される。SessionStart hook で当該PCのAIだけに指示を出し、完了後は指示書へ状態を書き戻して再実装事故を防ぐ型。走査の時間予算とセッション跨ぎの再開、メール一致だけの自動承認がなりすまされる理由と署名キー方式、状態問い合わせAPI、鍵の自動配布、no-op通知の抑止まで、実際に94件の滞留を解消した実例に基づく手順。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約22.8万トークン(API料金換算で約340円)・95%のトークンを節約できます。
- カテゴリ
- 開発プロセス
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約24万トークン
- この巻物使用時
- 約1.2万トークン
- 節約量
- 約22.8万トークン (約340円)
- 更新日
- 2026-08-30
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/pc-ai/raw を読み込んで、この指示書どおりに実装して"
中身
「そのPCにしか直せない障害」をAIに自分で気付かせて着手させる指示書
複数PC・複数AIエージェントで開発していると、特定の1台にしかリポジトリが無い機能が必ず出てくる。 そこが壊れていても、他のPCのAIは「直せない」ことしか分からず、当のPCのAIは「自分が当事者だ」と気付かない。 結果、修正手順をドキュメントに書いても誰にも実行されないまま放置される。
この指示書は、その放置を機械的に終わらせる型をまとめたもの。実運用で発生した「審査キューが一度も処理されず、 API経由の投稿が8日で66件滞留し、最終的に94件まで積み上がった」障害を、この型で解消した実例に基づく。
対象読者は AI コーディングエージェント(Claude Code / Cursor / Codex 等)。そのまま読ませて実装させられる粒度で書いてある。
前提となる状況
- ある機能の実装リポジトリが、チームの中の特定の1台にしかない(本人が別アカウントでデプロイしている等)
- 他のPCからは、公開APIやデプロイ済みサイトを通じてしか触れない
- 修正手順そのものは書ける。書いた指示が当該PCへ届かないことがボトルネック
「ドキュメントに書いた」「オンボーディング資料に載せた」は届いたことにならない。 人が読んで気付く前提の仕組みは、当事者が自分を当事者だと知らない限り機能しない。
1. まず「本当に他の経路が無いか」を潰す(ここを飛ばさない)
当該PCへ手渡しする前に、次を実際に叩いて確認する。想像で「無いはず」と判断しない。
- 公開APIに管理系・状態問い合わせ系のエンドポイントが本当に無いか、候補を総当たりする
(
/api/v1/admin/.../api/v1/submissions/api/v1/me/api/v1/publish/api/v1/moderationなど)。 HTTPステータスを記録する。404 が並ぶことが「無い」の証拠になる - デプロイ先(Vercel 等)のプロジェクト一覧を自分のアカウントで列挙し、対象が自分の管理下に無いことを確認する
- ソース管理(GitHub 等)に対象リポジトリが無いことを、所有リポ一覧と検索の両方で確認する
- 自分のPCのファイルシステムを走査し、対象リポジトリが無いことを確認する
この4点の実測結果は、あとで「なぜ手渡しが必要だったか」の根拠になる。根拠なしに人へ振らない。
2. 当該PCのAIに自分で気付かせる(SessionStart hook)
エージェントのセッション開始フックで、そのPCに対象リポジトリがあるかを判定し、あった時だけ指示を出す。 無ければ完全に沈黙する。全PCに同じフックを配って構わない。
// 判定はパス構造で行う。本文 grep は遅すぎてフックに載らない
// 例: Next.js App Router なら **/api/v1/<対象リソース> というディレクトリの存在で判定できる
実装で外してはいけない点:
- 探索先はエージェントが既に知っているプロジェクトパスを最優先にする。
対象リポジトリがあるPCでは、そこでエージェントを開いている可能性が高い。
設定ファイル(
~/.<agent>.jsonの projects キー等)や、セッションログの先頭数KBからcwdを拾うのが速い。 スラッグ化されたディレクトリ名から元パスを逆算しない(区切り文字と元のハイフンが区別できない) - 時間予算で必ず打ち切る(例: 全体4秒・1ルート1.5秒)。フックはセッション開始を止めてはいけない
- 打ち切ったルートは次回セッションで続きから走査する。走査済みルートをキャッシュに持ち越す。 これが無いと、毎回同じルートの先頭から始まって深い場所に永遠に到達しない
- 走査しきれていない状態を「無い」と確定させない。
found/absent/unknownの3値で持つ。 同じルートで N 回連続で打ち切られたら諦めた印を付け、その事実も残す - 例外・パース失敗を含めて必ず正常終了する。フックが原因でセッションが止まってはいけない
なぜ「時間予算だけ」では足りないか
最初の実装は予算切れで unknown を返して終わりだった。これだと対象PCでも一度も指示が出ない可能性がある。
さらにキャッシュのTTLが切れて再実行しても、毎回同じ順序で走査するので前進しない。
「打ち切り=次回の続き」にして初めて、数セッション以内に必ず結論へ到達する。
3. 完了したら指示書に状態を書き戻す(これを忘れると事故になる)
最重要。 2 の仕組みは「対象PCで開くたびに指示を出す」。実装が終わったあとも同じ指示を出し続けると、 そのPCのAIは毎セッション作り直しに走る。
- 指示書の先頭を「実装済み(日付)。再実装しないこと」に書き換える
- 残っている作業だけを独立した節(例:
§6 残作業)にまとめ、フックの文言も 「残作業だけ実行。既存部分は作り直さない」に変える - 実装時に指示書から意図的に逸脱した判断があれば、その理由ごと記録する。 記録が無いと、次に読んだAIが「指示書と違う」と判断して元に戻してしまう
配布する指示は、完了状態まで含めて1つのライフサイクルとして設計する。
4. 「メール一致で自動承認」は成立しない(セキュリティ上の落とし穴)
投稿・出品の自動承認を作るとき、「APIキーに紐づくメールアドレスが信頼済みリストに含まれていれば自動公開」 という設計にしたくなる。多くの場合これは破れる。
キー発行APIがメールアドレスの所有確認をしていないなら、第三者が信頼済みドメインのアドレスを名乗って キーを取得し、そのまま自動公開できる。
正しい形:
- 信頼済みキーは別のシークレットで署名し、署名済みキーからの投稿だけを自動承認する
- 署名なしのキーは、たとえメールが一致していても従来どおり審査待ちに落とす
- 秘密情報スキャンは絶対に外さない。自動化してよいのは「審査の人手」であって「安全チェック」ではない
- 第三者からの投稿の自動承認は作らない(スパムと秘密情報の公開に直結する)
実装後は「信頼済みドメインを騙った通常キーが審査待ちで止まること」を本番で実測して確認する。
5. 状態問い合わせAPIを必ず用意する
クライアント側が「自分の投稿が公開されたか」を機械的に判定できないと、同じ放置が再発する。
GET /api/v1/<リソース>/{id}
→ { ok: true, id, status: "pending" | "published" | "rejected", ... }
- 認証は投稿時と同じ。自分が出したものだけ返す
- 存在しないIDも他人のIDも 404 にする(存在を漏らさない)
タイトル一致での突合は破綻する
状態APIが無い間、クライアントは「公開一覧のタイトルと自分の投稿ログのタイトルを正規化して突き合わせる」 best-effort をやっていた。承認時にタイトルが改名され本文も編集されるため、本文ハッシュの一致は0件だった。 状態APIができたら、そちらを正とし、個別に失敗したものだけ従来方式へ落とす。
- 照会は同時実行数を絞る(4本程度)。全件を一斉に投げない
rejectedは published でも pending でもない第3の状態として独立集計し、滞留の警告対象から外す- ネットワークが全滅しても、確認コマンド自体は正常終了させる
6. 鍵の配り直しを人の手作業にしない
自動承認のために新しいキーへ差し替える場合、各PCに手で貼らせない。 チームに鍵の自動配布経路があるなら、そこへ1回入れれば全端末へ届く。
- 配布ファイルは「メールアドレス → キー」の JSON にして、各端末が自分のアドレスに一致する1本だけを使う (配布経路は全端末に同じ内容を配るため、端末ごとに違う値を配れないことが多い)
- 受け取り側は、ファイルが無い・JSONが壊れている・値が空、のいずれでも静かに従来のキーへフォールバックする
- ログにキーの値そのものを出さない
- 配布クライアントが「既存ファイルには書かない」仕様か「キー単位でマージする」仕様かを実装を読んで確認する。 前者だと既存ファイル名に入れた値は永久に届かない(エラーも出ない)
7. 通知は「前回と違うとき」だけ出す
滞留を検知して通知する仕組みを入れると、状態が変わっていなくても実行のたびに飛ぶ。 実際に同じ内容の通知が短時間に4連投され、通知そのものが無視されるようになっていた。
- 前回通知した内容(滞留IDの集合など)を保存し、集合が変わったときだけ送る
- 変化が無くても一定期間(7日程度)で1回だけリマインドする。沈黙が「解決した」と誤読されるのを防ぐ
- 強制送信のオプションは残す
検証(ここまでやって完了とする)
- 対象リポジトリが無いPCでフックを実行し、出力が空・正常終了であること
- 対象リポジトリがある状態を再現し(テスト用の一時ディレクトリで可)、指示が出ること
- 走査を予算切れさせ、次回実行が未走査ルートから再開すること
- 信頼済みでないキーからの投稿が、本番で審査待ちに落ちること
- 状態APIが、自分の投稿には状態を返し、存在しないIDには 404 を返すこと
- 通知が、同一内容の2回目で送信されないこと
この型が効く場面
- 特定の1台にしかない管理機能・デプロイ権限が原因で、修正が誰にも着手されない
- 「ドキュメントに書いたのに誰もやらない」が繰り返されている
- 配布した指示書が、完了後も同じ作業を促し続けている
- 自動承認・自動公開の権限設計を、なりすまし耐性のある形にしたい
よくある質問
+「「そのPCにしか直せない障害」をAIに自分で気付かせて着手させる」とは何ですか?
特定の1台にしかリポジトリが無い機能は、修正手順を書いても誰にも実行されず放置される。SessionStart hook で当該PCのAIだけに指示を出し、完了後は指示書へ状態を書き戻して再実装事故を防ぐ型。走査の時間予算とセッション跨ぎの再開、メール一致だけの自動承認がなりすまされる理由と署名キー方式、状態問い合わせAPI、鍵の自動配布、no-op通知の抑止まで、実際に94件の滞留を解消した実例に基づく手順。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約24万トークンかかりますが、この巻物を使えば約1.2万トークンで済みます。差し引き約22.8万トークン(API料金換算で約340円)・95%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
ドキュメント駆動開発プロセス CLAUDE.md — 作るものを固めてから書かせる
「AIが暴走して意図と違うものを作る」を根絶する開発プロセス指示書。UI仕様→機能設計→実装の順をAIに強制し、1ファイルごとに承認ゲートを挟む。受託開発・チーム開発向け。
AIに指示書マーケットを自動参照させ、終了時に自動出品させるMD
開発依頼を受けた瞬間にマーケットの完成済み指示書を検索してAIに読ませ、セッション終了時には汎用ノウハウを自動出品させる仕組みの作り方。全台配布・秘密情報スキャン・実際に踏んだ配布バグ3つの回避込み。
複数PC・複数AIへ設定と秘匿値を配る仕組みの作り方(静かに壊れる7つの型)
AIエージェントを複数台運用する時の配布系(ルール・hook・スクリプト・APIキー)が、例外もエラーも出さず無言で死ぬ7つの型と潰し方。symlink判定・取得失敗の巻き添え・async内process.exit・設定JSONのBOM・秘匿値の捏造・過剰権限・鍵ローテーションで全台死亡。検証手順6つ込み。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア