⚙️

Cursor RulesのGit管理と横断利用の検討(開発日記 No.066)

に公開

関連リンク

はじめに

昨日は開発日記の自動記録機能の改善に取り組みました。今日はその流れで、AIコーディングツールであるCursorのRules機能について、昨日から考えていた設定方法をさらに深掘りしていきたいと思います。具体的には、Rulesの効率的な管理と活用方法について検討します。

背景と目的

CursorのRules機能は、AIとの対話において特定の前提知識や指示を事前に設定できる便利な機能です。しかし、プロジェクトごとに個別に設定するのは手間がかかりますし、複数のプロジェクトで共通のルールを使いたい場面も多くあります。
そこで、以下の目的を達成するための方法を検討することにしました。

  1. CursorのRulesをGitでバージョン管理する。
  2. 複数のプロジェクトで共通のRulesを横断的に利用できるようにする。
  3. 可能であれば、Rules専用のリポジトリで一元管理する。
  4. 各プロジェクトから管理されたRulesを参照し、適用できるようにする。
  5. 特定のRules(役割モード)を簡単に切り替えられる仕組みを構築する。

検討内容

上記の目的を達成するため、いくつかのアイデアとその実現可能性、具体的な手段について検討しました。

まず、RulesのGit管理については、プロジェクト内の .cursor/rules ディレクトリをGitの管理対象に含めることで比較的簡単に実現できそうです。

次に、Rulesの横断利用と専用リポジトリでの管理については、いくつかの方法が考えられました。

  • Git Submodule + シンボリックリンク: Rules専用のリポジトリを作成し、各プロジェクトではそのリポジトリをサブモジュールとして追加します。そして、プロジェクト内の .cursor/rules からサブモジュール内のRulesファイルへシンボリックリンクを張る方法です。これが最も柔軟性が高そうだと考えました。
  • CursorのUser Rules/Team Rules: Cursorにはユーザー全体やチーム全体で共有するRulesを設定する機能がありますが、今回はより細やかな管理とGitでのバージョン管理を重視したいため、第一候補からは外しました。

各プロジェクトでのRules適用方法については、サブモジュール方式を採用する場合、ローカルファイル経由での参照が基本となります。ネットワーク経由での動的な参照は、標準機能ではTeam Rules以外では難しそうです。

最後に、AIエージェントのモード切り替えについてです。当初は @Cursor Rules のようなシンボルで特定のRuleセット(モード)を呼び出すことを想定していましたが、現状のCursorにはそのような直接的な機能はないようです。代替案として、以下の方法が考えられました。

  • Manual Rules: 手動で適用するRuleを選択する。
  • Agent Requested Rules: 特定のキーワードに反応して自動的にRuleを適用させる。

これらの検討を経て、Git Submodule + シンボリックリンク方式を軸に、さらに詳細な検証計画を立てることにしました。

実装内容

具体的な実装はまだ行っていませんが、検討結果に基づき、明日以降に行う検証の具体的な手順をドキュメント化しました。

この検証計画では、以下の点を明確にしました。

  1. Rulesの分類: Cursorに理解させたい「背景知識」としてのRulesと、作業内容に応じて切り替えたい「役割(モード)」としてのRulesの2種類に大別する。
  2. リポジトリ構成: これら2種類のRulesを、単一の専用Gitリポジトリで管理する。
  3. 連携方法: 各プロジェクトでは、この専用リポジトリをGitサブモジュールとして追加し、プロジェクト内の .cursor/rules ディレクトリからサブモジュール内の該当Rulesへシンボリックリンクを作成して連携する。

この検証計画は、Docs/dev-docs/Cursor_Rules_Verification_Plan.md として保存しました。

技術的なポイント

今回の検討における技術的なポイントは、Git Submoduleとシンボリックリンクの組み合わせによるRulesの共有・管理方法です。これにより、Rulesの一元管理と各プロジェクトへの柔軟な適用を両立できる可能性があります。

また、Rulesを「背景知識用」と「役割モード用」に分類するという考え方も、今後の効率的な運用において重要になりそうです。

所感

CursorのRules機能をより高度に活用する方法を模索する中で、Git Submoduleというアイデアにたどり着きました。最初は漠然と「Gitで管理したい」「共通化したい」と考えていましたが、具体的な方法を検討していくうちに、サブモジュールとシンボリックリンクの組み合わせが有力な候補として浮かび上がってきました。

専用リポジトリでRulesを一元管理できれば、メンテナンス性が向上し、複数のプロジェクトで一貫したAIの挙動を期待できるようになるはずです。また、Rulesを役割ごとに分類するという考え方も、今後の開発効率向上に繋がりそうでワクワクしています。

モード切り替えの @Cursor Rules シンボルが直接使えないのは少し残念でしたが、代替案で近い体験を実現できないか試行錯誤するのも面白そうです。今日の検討で具体的な検証計画まで立てられたので、明日からの検証が楽しみです。

今後の課題

  • 作成した検証計画 Cursor_Rules_Verification_Plan.md に基づき、実際にGit Submoduleとシンボリックリンクを用いたCursor Rulesの管理・運用方法を検証する。
  • Manual RulesやAgent Requested Rulesを用いたモード切り替えの代替案を試し、使い勝手を確認する。

まとめ

本日は、CursorのRules機能をより効率的に管理・活用するため、Gitでの管理やプロジェクト横断での利用方法について深く検討しました。その結果、Git Submoduleとシンボリックリンクを組み合わせる方式が有望であると判断し、具体的な検証計画を策定しました。また、Rulesを「背景知識用」と「役割モード用」に分類するというアイデアも得られました。明日以降、この計画に基づいて実際の検証を進めていきます。

GitHubで編集を提案

Discussion