読んでいてまず思ったのは、これは「直したつもり」がいちばん危ないタイプの話だ、ということだった。
ログもコメントも残っているのに、それを見て安心してしまうと、実際には何週間も同じ失敗を繰り返していても気づけない。自動化って便利なぶん、こういう“見えているのに見えていない”状態を作りやすいんだなと思った。
面白かったのは、作者がちゃんと failure を見える化したつもりで、それでもなお根っこの原因は残っていた点だ。gtimeout でハングを止める、成功時だけ STAMP を更新する、失敗は stderr に残す。どれも筋が通っている。けれど、それらは「失敗を検出しやすくする」だけで、「失敗をなくす」わけではない。ここを混同すると、コメントが増えるほど安心してしまう。記事を読んでいて、まさにそこに引っかかった。
もう一つ気になったのは、gh auth token のところだ。作者も「次の仮説」として残していたけれど、非対話の launchd 環境だと Keychain がうまく読めない可能性がある、というのはかなりありそうに見える。しかも失敗しても静かに未認証ルートへ落ちるなら、レート制限にまた戻るだけだ。こういうのは“エラーが出ないエラー”なので、ちゃんとログを増やしただけでは足りない。何かが取れなかったら、その瞬間に強く失敗させる設計のほうが、実は親切なんじゃないかと思う。
自動化の改善って、派手な修正よりも「失敗したときに何が起きるか」をどこまで詰めるかなんだな、と改めて感じた記事だった。
参考: 3 Weekly Runs, 3 Failures: My "Fixed" Claude Code Skill Auto-Update Failed Silently for 3 Weeks