13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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つです.

  1. ghコマンドをインストールして、今回いじりたいRepositoryやProjectにアクセスできるようにする
  2. ghコマンドを用いてissueを作り、projectに紐づける流れをcursorくんと相談しながら一度やってみる
  3. 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なルールとして定めています.

image.png

ruleの設定

Cursor Rulesではまず、「Rule Type」を定める必要があります.Ruleをどのように適応するかを設定する項目になります.
設定できるモードは以下の4つです.

Rule Type
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 <repository名> --title "<issueのタイトル>" --body "<issueの具体の内容>"

2. Labelをつける際には以下の一覧から指定してください.
(gh label list --repo <repository id>で手に入るラベル一覧を貼っておく)

3. issueは全て、<project id>のGitHub Projectに紐付けてください.issueは以下のコマンドで紐付け可能です.
gh project item-add <project id> --owner <owner名> --url <issueのURL> --format json

4. 3のコマンドの返り値として手に入るjsonの中の`id`を用いて、以下のコマンドで各種フィールドの設定をしてください.project-idには<project id>`を用い、以下のコマンドを実行してください.
gh project item-edit --project-id <project id> --id <id> --field-id <field id> --single-select-option-id <option id>
フィールド設定に必要なfield_idとoption_idに関しては以下のリストを使ってください.
(gh project field-list <project id> --owner gochipon --format jsonで手に入る、field idとoption idの一覧を貼っておく)

以上のような設定をした結果の動作の様子は以下のとおりです.

スクリーンショット 2025-07-12 20.52.17.png

実際に作成されたissueはこちらです.cursorにAutoでのコマンド実行を許しておくと、30秒くらいで作ってくれます.楽ですね.

image.png

Cursor Ruleを用いると、shellスクリプトで実行できる作業はかなり自然言語で実行できるようになるなぁという実感を今回得ることができました.
よければ使ってみてください.

▼採用情報

レアゾン・ホールディングスは、「世界一の企業へ」というビジョンを掲げ、「新しい"当たり前"を作り続ける」というミッションを推進しています。

現在、エンジニア採用を積極的に行っておりますので、ご興味をお持ちいただけましたら、ぜひ下記リンクからご応募ください。

13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?