タグ
#GitHub
GitHubに関する記事を公開しています。
changesets を AI エージェントに書かせると変更履歴が読める物になる
8 サイトのモノレポの変更をほぼ AI エージェントの PR で回していると、git log では「あのサイトはいつ何が変わったか」を追えなくなりました。changesets を入れ、PR を作るその瞬間にエージェントへ変更記録を書かせ、Release PR の merge でサイトごとの CHANGELOG に集約する形にしました。誤った記録を次の記録が訂正して並ぶ実例と、別リポジトリで踏んだ罠(タグの系統が 2 つになる、changeset status は commit 済みしか数えない、Release PR の merge がデプロイになる)を書きます。
.github リポジトリの PR テンプレートに「ハマったこと」欄を置く理由
AI エージェントに gh pr create --body で PR を作らせると、リポジトリの PR テンプレートは使われません。適用されるはずだと思い込んでいて、しばらく気づきませんでした。組織の .github 公開リポジトリにテンプレートを 1 つ置いて全リポジトリの既定にし、エージェントには「テンプレートを先に読んで本文を組む」手順を渡しました。テンプレート末尾の「ハマったこと・試行錯誤」欄は、commit には残らない物語を作業直後に残す場所で、別の bot が毎朝拾って素材にします。拾う側の本文上限が 300 文字で、一番下にあるこの欄ごと落ちていた失敗も書きます。
Bot Fight Mode を無料プランで使うと GitHub Actions が 403 になる
Cloudflare の Bot Fight Mode を有効にしていた 2 サイトだけ、GitHub Actions からの死活チェックが 403 になりました。切って再実行すると全サイト 200。無料プランの Bot Fight Mode は Ruleset Engine の外で動くため WAF カスタムルールの Skip / Allow が効かず、例外を作るには Pro の Super Bot Fight Mode が要ります。監視・CLI・Webhook 受信・確認の curl など自分の非ブラウザ通信が全部判定の対象になる一方、守りたい Workers の起動枠(34%)も D1(30%)も圧迫されていなかったので、8 月に再検討して入れないと決めた経緯と、再訪の条件をまとめます。
Claude Code の Docker Sandbox で API キーが渡らない原因
Claude Code の Docker Sandboxes で、sbx secret で入れたはずの API キーが環境変数に現れない、gh CLI が一部のコマンドだけ失敗する、という 2 つの症状に当たりました。正体はどちらも、プロキシがネットワーク層で認証を注入するというこの環境の設計です。direct モードでの実用解(ホスト側に .env を置く)と、gh の更新系操作を読み戻しで検証する運用を実測ベースで書いています。
playwright install --with-deps で CI が 15 分止まる原因
GitHub Actions の playwright install --with-deps が apt ミラーの低速に当たり、数 MB のフォント 2 つの取得だけで約 15 分かかってジョブが時間切れになりました。結果表示が failure ではなく cancelled になるのも紛らわしい点です。Playwright 公式コンテナへ移行してインストールステップ自体を消した手順と、イメージタグの一致や HOME 設定などの注意点をまとめました。
Google Analytics を入れずに Cloudflare でブログを監視する
ブログ運用の一次監視に欲しいのは「配信が壊れていないか」で、それは GA4(gtag.js)を入れなくても取れます。GA4 のクライアント計測とは別レイヤーの Cloudflare エッジ計測(GraphQL Analytics API の httpRequestsAdaptiveGroups)を GitHub Actions で回し、死活チェック・週次レポート・Issue 自動起票までを組む監視設計を、GA との役割分担つきでまとめます。