GitHub Actions やその他の CI/CD システムで Cursor CLI を使って開発タスクを自動化しよう。
基本的なセットアップ:
- name: Cursor CLI のインストール
run: |
curl https://cursor.com/install -fsS | bash
echo "$HOME/.cursor/bin" >> $GITHUB_PATH
- name: Cursor Agent の実行
env:
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
run: |
cursor-agent -p "プロンプトを入力" --model gpt-5
実践的なワークフローについては、クックブックの例を参照してください:ドキュメントの更新 および CI の問題の修正。
次の条件がそろっていれば、どんなCI/CDシステムでもCursor CLIを使えるよ:
- シェルスクリプトの実行(bash、zsh など)
- 環境変数でのAPIキー設定
- CursorのAPIにアクセスできるインターネット接続
エージェントの自律性レベルを選ぼう:
エージェントに git 操作、API 呼び出し、外部連携の完全なコントロールを与える。セットアップはシンプルで、その分だけ信頼が必要。
例: Update Documentation クックブックでは、最初のワークフローでエージェントが次を実行できる:
- PR の変更を分析
- git ブランチを作成・管理
- 変更をコミットしてプッシュ
- プルリクエストにコメントを投稿
- あらゆるエラーシナリオを処理
- name: ドキュメントを更新(完全自律)
run: |
cursor-agent -p "git、GitHub CLI、PR 操作にフルアクセスがある。
コミット、プッシュ、PR コメントを含むドキュメント更新のワークフロー全体を処理して。"
本番の CI ワークフローには、権限ベースの制限と組み合わせたこのアプローチをおすすめ。これなら両方の良さを活かせる:エージェントは複雑な分析やファイル変更を賢くこなしつつ、クリティカルな処理は決定論的で監査可能なままにできる。
クリティカルなステップは別のワークフローステップで処理しつつ、エージェントの操作を制限する。制御しやすく、予測可能性も高まる。
例: 同じクックブック内の 2 つ目のワークフローでは、エージェントをファイル変更のみに制限している:
- name: ドキュメント更新の生成(制限付き)
run: |
cursor-agent -p "重要: ブランチの作成、コミット、プッシュ、または PR へのコメント投稿はしないでください。
作業ディレクトリ内のファイルのみを変更してください。公開は後続のワークフローステップが実行します。"
- name: ドキュメント用ブランチの公開(決定的)
run: |
# 決定的な git 操作は CI が実行
git checkout -B "docs/${{ github.head_ref }}"
git add -A
git commit -m "docs: PR 用更新"
git push origin "docs/${{ github.head_ref }}"
- name: PR コメントの投稿(決定的)
run: |
# 決定的な PR コメント投稿は CI が実行
gh pr comment ${{ github.event.pull_request.number }} --body "Docs を更新しました"
権限設定 を使って、CLI レベルで制限を適用しよう:
{
"permissions": {
"allow": [
"Read(**/*.md)",
"Write(docs/**/*)",
"Shell(grep)",
"Shell(find)"
],
"deny": [
"Shell(git)",
"Shell(gh)",
"Write(.env*)",
"Write(package.json)"
]
}
}
まずは、Cursor ダッシュボードでAPI キーを生成しよう。
Cursor の API キーをリポジトリ内で安全に保存しよう:
- GitHub のリポジトリへ移動
- Settings → Secrets and variables → Actions をクリック
- New repository secret をクリック
- 名前を
CURSOR_API_KEY に設定
- 値に API キーを貼り付け
- Add secret をクリック
CURSOR_API_KEY 環境変数を設定しよう:
env:
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}