メインコンテンツへスキップ
GitHub Actions で Cursor CLI を使ってドキュメントを更新。方法は2つある: エージェントに全自律で任せるか、エージェントによるファイル変更のみを許可する決定的なワークフロー。
name: ドキュメント更新

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

permissions:
  contents: write
  pull-requests: write

jobs:
  auto-docs:
    if: ${{ !startsWith(github.head_ref, 'docs/') }}
    runs-on: ubuntu-latest
    steps:
      - name: リポジトリのチェックアウト
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Cursor CLI のインストール
        run: |
          curl https://cursor.com/install -fsS | bash
          echo "$HOME/.cursor/bin" >> $GITHUB_PATH

      - name: git の設定
        run: |
          git config user.name "Cursor Agent"
          git config user.email "cursoragent@cursor.com"

      - name: ドキュメント更新
        env:
          MODEL: gpt-5
          CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          BRANCH_PREFIX: docs
        run: |
          cursor-agent -p "GitHub Actions のランナー上で動作している。

          GitHub CLI は `gh` として利用可能で、`GH_TOKEN` で認証済み。Git も利用可能。リポジトリ内容への書き込み権限があり、プルリクエストにコメントできるが、PR の作成や編集は行ってはいけない。

          # コンテキスト:
          - リポジトリ: ${{ github.repository }}
          - オーナー: ${{ github.repository_owner }}
          - PR 番号: ${{ github.event.pull_request.number }}
          - ベースリファレンス: ${{ github.base_ref }}
          - ヘッドリファレンス: ${{ github.head_ref }}
          - ドキュメント用ブランチのプレフィックス: ${{ env.BRANCH_PREFIX }}

          # 目標:
          - 元の PR の増分変更に基づいて、エンドツーエンドのドキュメント更新フローを実装する。

          # 要件:
          1) 元の PR での変更点を特定し、複数回のプッシュがある場合は、直近のドキュメント更新以降の増分差分を算出する。
          2) その増分変更に基づき、関連するドキュメントのみを更新する。
          3) コンテキストで指定されたドキュメント用ブランチのプレフィックスを使い、この PR のヘッドに対応する永続的なドキュメント用ブランチを維持する。なければ作成し、あれば更新し、変更を origin にプッシュする。
          4) PR を作成する権限はない。代わりに、ドキュメント更新を簡潔に説明し、PR を素早く作成できるインラインの比較リンクを含む、1~2文の自然言語による単一の PR コメントを投稿または更新すること。

          # 入力と規約:
          - 変更を検出し、直近のドキュメント更新以降の増分範囲を導き出すために、`gh pr diff` と git の履歴を使用する。
          - PR を直接作成または編集しない。上記の比較リンク形式を使用する。
          - 変更は最小限にし、リポジトリのスタイルに合わせる。ドキュメント更新が不要な場合は、変更もコメント投稿も行わない。

          # 更新が発生した場合の成果物:
          - この PR のヘッドに対応する永続的なドキュメント用ブランチへのコミットをプッシュする。
          - 元の PR に対して、上記のインライン比較リンクを含む自然言語による単一の PR コメント。重複投稿は避け、既存のボットコメントがあればそれを更新する。
          " --force --model "$MODEL" --output-format=text
I