shwldshwld8 days ago

GitHub ActionsでPR本文に必須セクションを強制する

PR本文にADR(Architecture Decision Records)セクションを含めるルールを作ったが、AIエージェントがルールを守らないことがあった。CLAUDE.mdに書いてもスキップされるケースがあるため、CIで機械的にブロックする方が確実。

Before(手動):

レビュー時に「ADRセクションがない」と指摘して差し戻し。見落としも発生する。

After(自動):

# .github/workflows/pr-body-check.yml
name: PR Body Check
on:
  pull_request:
    types: [opened, edited]

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - name: Check required sections
        uses: actions/github-script@v7
        with:
          script: |
            const body = context.payload.pull_request.body || '';
            const required = ['## Related ADRs'];
            const missing = required.filter(s => !body.includes(s));
            if (missing.length > 0) {
              core.setFailed(`PR本文に必須セクションがありません: ${missing.join(', ')}`);
            }

ポイント:

  • types: [opened, edited] で作成時と編集時の両方をチェックする
  • AIエージェントに「ルールを守れ」と書くより、CIで落とすほうが確実に機能する
  • 必須セクションが増えたら required 配列に追加するだけで拡張できる