ReazonホールディングスでEM的な役職についています、窪田です.
最近PMのようにタスクを作り、整理することが増えてきました.
現在参加しているプロジェクトでは、GitHub Projectと、GitHub Issuesを用いてタスク管理を行っているのですが、GitHubのGUI上でポチポチボタンを押しながらIssueを作り、GitHub Project側でStatusを設定しというのが結構めんどくさく感じていました.
弊社ではエンジニアであればCursorの有料版を利用できるので、Cursorくんに頼んだらこの辺りのissue作成とProjectへの紐付け、Project上での各種Fieldの設定が簡単に済ませられるようになるのではと思い、実際に試してみることにしました.
GitHub MCPを使えば?という意見もあるかと思いますが、ghコマンドを用いたルールを作成した方がAIの挙動にブレが少なくて無駄なissueが作成される危険性も少ないという肌感があったので今回は、ghコマンドをCursorに実行させる形をとっています.
やったこととしては主に3つです.
- ghコマンドをインストールして、今回いじりたいRepositoryやProjectにアクセスできるようにする
- ghコマンドを用いてissueを作り、projectに紐づける流れをcursorくんと相談しながら一度やってみる
- 2でやった流れを元にCursor Ruleを書く
ghコマンドのインストール
公式ドキュメントに従って、ghコマンドをインストールしてください.
インストールできたら、gh auth login
でログインすれば準備完了です.
Cursorルールを書く
今回は、Repositoryに紐づく形でのCursorルールの設定としたかったため、Cursor Rulesの中でも特にProject rulesとしてルールの作成を行いました.
Repositoryルートに、.cursor/rules
ディレクトリを作成し、そこに、github-issue-manual-make.mdc
というcursor ruleを記述するためのファイルを用意しました.
cursor rulesではnested-rulesという仕組みが存在します.今回のIssue作成のルールはプロジェクト全体におけるルールなので、rules直下において、Project wideなルールとして定めています.
ruleの設定
Cursor Rulesではまず、「Rule Type」を定める必要があります.Ruleをどのように適応するかを設定する項目になります.
設定できるモードは以下の4つです.
Type | 詳細 |
---|---|
Always | 常にルールがAIモデルに渡されるモードです.プロジェクトの命名規則やフォルダ構成など、AIモデルに常に守ってほしいルールを渡します. |
Auto Attached | 特定のファイルが参照されたときに自動的に適応されるルールです.*.sqlの形などで適応するファイルの命名パターンを指定することができます. |
Agent Requested | AIが必要だと判断した場合に適応されるモードです.「Description」という項目にどういう時にAIが呼び出すべきかを記述しておきます. |
Manual | @ruleNameの形でCursorのチャットウィンドウにて明示的に呼び出された時にのみ利用されます. |
今回は、「Issueを作成する」という明確な目的が発生する際にだけ適応したいRuleであったので Agent Requested
のRule Typeを選択し、Descriptionには以下のような説明を記載しました.
GitHub issueを作成したい場合にはこのルールに基づいて作成を行ってください.
プロンプトに以下のいずれかが含まれる場合に発動してください.
- `/create-issue`
- `Create GitHub Issue`
- `GitHub Issue 作成`
- `issue作成`
ruleの詳細
Cursorと一緒にghコマンドの使い方を相談しながらおおまかに以下のようなルールを書きました.
コツとしては、ghコマンドの実行に必要なfield idの一覧やlable idの一覧をあらかじめrulesの中に記載しておくことです.これがない場合、毎回Cursorがラベル一覧の取得を行うコマンドを実行したり、fieldの一覧を取得するコマンドを実行したりして、issue作成のフローに必要な手数が多くなってしまいます.
# GitHub Issue を手動作成する
<このルールの概要を記載>
## トリガー
- プロンプトに以下のいずれかが含まれる場合に発動:
- `/create-issue`
- `Create GitHub Issue`
- `GitHub Issue 作成`
- `issue作成`
## Issue作成フロー
GitHub Issueの作成においては以下の順序でissueの作成、projectへの紐付け、projectでのfieldの設定を行ってください.
1. 以下のコマンドでissueを作成してください.「issueの具体の内容」に関しては〇〇な要素に分けて、マークダウン形式で記載してください.
gh issue create --repo --title "" --body ""
2. Labelをつける際には以下の一覧から指定してください.
(gh label list --repo で手に入るラベル一覧を貼っておく)
3. issueは全て、のGitHub Projectに紐付けてください.issueは以下のコマンドで紐付け可能です.
gh project item-add --owner --url --format json
4. 3のコマンドの返り値として手に入るjsonの中の`id`を用いて、以下のコマンドで各種フィールドの設定をしてください.project-idには`を用い、以下のコマンドを実行してください.
gh project item-edit --project-id --id --field-id --single-select-option-id
以上のような設定をした結果の動作の様子は以下のとおりです.
実際に作成されたissueはこちらです.cursorにAutoでのコマンド実行を許しておくと、30秒くらいで作ってくれます.楽ですね.
Cursor Ruleを用いると、shellスクリプトで実行できる作業はかなり自然言語で実行できるようになるなぁという実感を今回得ることができました.
よければ使ってみてください.
▼採用情報
レアゾン・ホールディングスは、「世界一の企業へ」というビジョンを掲げ、「新しい”当たり前”を作り続ける」というミッションを推進しています。
現在、エンジニア採用を積極的に行っておりますので、ご興味をお持ちいただけましたら、ぜひ下記リンクからご応募ください。
Views: 0