CursorのProjectRulesを共有してタスクをバッチ化する、その目的とは…
※この記事はCursor ver0.48で動作確認を行なっています。
こんにちは!
CursorはじめとしたAI関連の情報の腐り速度、半端ないですよね!
思いついたら試してみてどんどん書いていきましょう!
CursorのProjectRulesを共有してタスクをバッチ化する試み
ハイ!
ProjectRulesは基本的には「こういう時にはこう動いてね」を記載するものですが、コンテキストとしてロードされるので実はAIへの指示本文を書き込むことができます。
その挙動を使って、弊チームでは以下のようなことをやっています。
- ProjectRuleにタスクを書き込む
- リポジトリ管理することで定型業務の標準化を行う
ではそれをすると具体的に何ができるのか?
例1. PRを自動作成してもらう
やってくれること
- マージ先ブランチとの差分をチェック
- PRのテンプレートに則った本文の自動生成
- タイトルの自動生成
- ghコマンドを用いて上記の情報からPRを作成する
実行方法
- ChatのAgentで
@rules
>create-pull-request.mdc
の形でコールすることで実行。 - マージ先のブランチを指定(オプション。デフォルトは
master
) - 差分確認用のSHA-1を指定(オプション。デフォルトはマージ先ブランチとの差分を自動で探しに行って使用する)
- ghコマンドを使う場合はコマンド実行確認を求められることがあるので、都度ポチポチ。(MCPサーバー使ったらこれ無くなるかも!)
- できあがり☆
補足
- ghコマンドでPRを作る場合、そのままやろうとすると改行が反映されず
\n
が大量に入った一行で本文が書かれてしまう。 - 対策として私は一時ファイルに本文を書かせて
gh pr create
させています。 - Issueの内容を読み込ませても良いかも(今はまだやっていない)
例2. PRのレビューをしてもらう
やってくれること
- PRのレビュー
- 指定したPR番号の内容をghコマンドで取得(GitHubのMCPサーバー経由でもできそう)
- レビューのフォーマット次第で以下のようなことも
- 改善提案
- セキュリティリスクのチェック
- Approve推奨の判定
- とはいえどんなに頑張っても現時点のAIレビューは人間ができるコードレビューに及ばない部分も多々あるので(上回る部分もありますが)、過大な期待は禁物です。
実行方法
- ChatのAgentで
@rules
>review-pull-request.mdc
の形でコールすることで実行。 - 対象のPR番号を指定。(ProjectRule呼び出しと同時に投げても良い)
- できあがり☆
補足
AIによるコードレビューのノウハウはそれだけで本が一冊書ける気がするんですが(そしてそれも半年後には略)、端的には以下の基準を示しています
- 批判的思考に基づき厳しくレビューを行うこと
- 実装意図が達成できているかを評価すること
- 他の方法があれば提案すること
ProjectRulesの作り方
これを作るのもCursor Agentにやってもらっています。
やり取りの開始はこんな感じ。
定型タスクを標準化し、バッチ化する目的で、Cursor Agentに投げるプロンプトを整えたいです。リポジトリ管理し、チームメンバーでブラッシュアップしていきたいので、ProjectRulesに構造的に記載したいです。
タスク内容は「PullRequestの作成」です。PullRequestのテンプレートは@PULL_REQUEST_TEMPLATE.md です。
実行時にtarget_branchが与えられた場合はマージ先をそれに指定し、与えられない場合はmasterをマージ先としてください。
SHA-1が指定された場合は差分の確認対象として使用しますが、指定されない場合は現在のブランチとマージ先ブランチの差分をgitコマンドを用いて取得してください。
あとはCursorからいろいろ聞かれるのでバイブスで。
余談
元々は別の機構でバッチ化を考えていたのですが、
- ファイルの置き場所の問題:指示となるプロンプトが書かれているファイルなので、Cursorが意図せず読んでしまうと大変
- 呼び出し難の問題:
ai_collaboration/prompts/hogehoge.xml
というパスでXMLファイルにしていたのですが、なぜかChatから見えない(エディタで開いてドラッグ、などが必要になる)ことが頻発
などの問題があり、どうしたものかな〜と考えていました。
そんな折、ProjectRulesのRuleTypeとして「Manual」が追加され、
- 明示的にコールしないと読まれることがない
- ProjectRulesに置かれるのでChatから確実にコールできる
というタスクバッチ化における神アプデがやってきます。
そんなわけで現在はまだ小さく検証中の段階ですが、定型タスクをどんどんCursorにやってもらって(Chat複窓もできるようになったことだし!)人間は頭を使う大変な仕事ばっかりやっていきましょう!やっていくぞ地獄!
Discussion