Cursor Hooks 自動学習ルール機能 - セットアップガイド

📋 概要
このドキュメントでは、Cursor IDEのHooks機能を使用して、会話内容から自動的にプロジェクトルールを学習・更新する仕組みのセットアップ方法を説明します。

目次

1. 機能の概要

Cursor Hooksを使用して、会話内容から自動的に .cursor/rules/auto-learned.mdc のルールを更新する仕組みです。

✅ メリット

2. 仕組み

2.1 動作フロー

  1. 会話開始: Cursorで会話を開始すると、beforeSubmitPromptフックが実行される
  2. ログ記録: プロンプトが ~/.cursor/conversations/<conversation_id>.md に記録される
  3. 会話終了: 会話を終了すると、stopフックが実行される
  4. ルール生成: 会話ログと現在のルールをLLM API(GeminiまたはOpenAI)に送信
  5. ルール更新: 生成されたルールで .cursor/rules/auto-learned.mdc を更新

2.2 技術スタック

技術 用途
Cursor Hooks 会話の開始・終了時にスクリプトを実行
Node.js スクリプト実行環境
Google Gemini API / OpenAI API 会話ログからルールを生成
Markdown (.mdc) ルールファイルの形式

3. 前提条件

4. セットアップ手順

4.1 必要なファイルのダウンロード

以下のリンクから、必要なJavaScriptモジュールを含むZIPファイルをダウンロードしてください:

📦 ダウンロード
cursor-auto-learned-archive.zip をダウンロード

このZIPファイルには、Cursor Hooks機能に必要な各種JavaScriptモジュールが含まれています。

ダウンロード後、ZIPファイルを解凍してプロジェクトに配置してください。

4.2 依存関係のインストール

プロジェクトルートで以下のコマンドを実行します:

npm install

これにより @google/generative-aiopenai パッケージがインストールされます。

4.3 APIキーの設定

詳細は「5. APIキーの設定」を参照してください。

4.4 Cursor Hooks 設定ファイルの作成

以下のパスに hooks.json ファイルを作成または編集します:

C:\Users\<ユーザー名>\.cursor\hooks.json

ファイル内容:

{
   "version": 1,
   "hooks": {
     "beforeSubmitPrompt": [
       {
         "command": "node",
         "args": ["<プロジェクトールート>\\scripts\\log-prompt.js"]
       }
     ],
     "stop": [
       {
         "command": "node",
         "args": ["<プロジェクトールート>\\scripts\\update-rules-from-conversation.js"]
       }
     ]
   }
 }
💡 重要:
⚠️ 重要: パスは実際のプロジェクトパスに合わせて調整してください。

4.5 Cursor の再起動

設定ファイルを保存した後、Cursor を完全に再起動します。

5. APIキーの設定

5.1 Gemini API を使用する場合(推奨)

ChatGPTの制限に影響しないため、Gemini API の使用を推奨します。

方法A: `.cursor` ディレクトリに保存(推奨・セキュリティリスク低)

Git管理対象外の `.cursor` ディレクトリにAPIキーを保存します。

1以下のコマンドを実行してAPIキーを設定:

node scripts/setup-gemini-api-key.js

対話的にAPIキーを入力すると、C:\Users\<ユーザー名>\.cursor\gemini-api-key.txt に保存されます。

2または、手動でファイルを作成:

# PowerShell
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.cursor"
"AIza....." | Out-File -FilePath "$env:USERPROFILE\.cursor\gemini-api-key.txt" -Encoding utf8
💡 注意: .cursor ディレクトリはGit管理対象外です(.gitignoreに追加することを推奨)。

方法B: Cursor設定ファイルから自動取得

Clineに設定されているGemini APIキーを自動的に使用します。

  1. Cursorの設定画面(Ctrl+,)で Cline 拡張機能の設定を開く
  2. Gemini API キーを設定(既に設定済みの場合はそのまま使用)
  3. スクリプトは自動的に Cursor の設定ファイルから API キーを読み取ります

設定が正しく読み取れているか確認する場合:

node scripts/check-cursor-settings.js

方法C: 環境変数で設定

環境変数を使用する場合は、以下の手順で設定できます。

Gemini API キーの取得:

  1. Google AI Studio にアクセス
  2. 「Create API Key」をクリックして API キーを生成
  3. 生成された API キーをコピー

PowerShell の場合(現在のセッションのみ):

$env:GEMINI_API_KEY = "AIza..."

PowerShell の場合(永続化):

[System.Environment]::SetEnvironmentVariable('GEMINI_API_KEY', 'AIza...', 'User')

5.2 OpenAI API を使用する場合

Gemini APIキーが設定されていない場合のみ使用されます。

方法1: `.cursor` ディレクトリに保存(推奨)

1以下のコマンドを実行してAPIキーを設定:

node scripts/setup-openai-api-key.js

2または、手動でファイルを作成:

# PowerShell
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.cursor"
"sk-..." | Out-File -FilePath "$env:USERPROFILE\.cursor\openai-api-key.txt" -Encoding utf8

方法2: 環境変数で設定

PowerShell の場合(現在のセッションのみ):

$env:OPENAI_API_KEY = "sk-..."

PowerShell の場合(永続化):

[System.Environment]::SetEnvironmentVariable('OPENAI_API_KEY', 'sk-...', 'User')

6. 動作確認

  1. Cursor で新しい会話を開始
  2. いくつかのプロンプトを送信
  3. 会話を終了(stop フックが実行される)
  4. .cursor/rules/auto-learned.mdc を確認し、ルールが更新されているか確認

7. トラブルシューティング

7.1 エラー: `Gemini APIキーが見つかりません` または `OpenAI APIキーが見つかりません`

Gemini APIキーが見つからない場合:

  1. Cursor設定ファイルを確認:
    node scripts/check-cursor-settings.js
    このコマンドで、Cursor設定ファイル内のCline関連の設定を確認できます。
  2. Cursor設定でGemini APIキーを設定:
    • Cursorの設定画面(Ctrl+,)で Cline 拡張機能の設定を確認
    • Gemini API キーが正しく設定されているか確認
  3. 環境変数を設定(オプション):
    • GEMINI_API_KEY 環境変数を設定することも可能です

OpenAI APIキーが見つからない場合:

7.2 エラー: `Cannot find module '@google/generative-ai'` または `Cannot find module 'openai'`

7.3 ルールが更新されない

7.4 パスの問題(Windows)

Windows のパス区切り文字(\)は JSON では \\ とエスケープする必要があります。

{
   "version": 1,
   "hooks": {
     "beforeSubmitPrompt": [
       {
         "command": "node",
         "args": ["<プロジェクトールート>\\\\scripts\\\\log-prompt.js"]
       }
     ]
   }
 }

または、スラッシュ(/)を使用することもできます:

{
   "version": 1,
   "hooks": {
     "beforeSubmitPrompt": [
       {
         "command": "node",
         "args": ["<プロジェクトールート>/scripts/log-prompt.js"]
       }
     ]
   }
 }

8. ファイル構成

<プロジェクトールート>\ ├── scripts\ │ ├── log-prompt.js # 会話ログ記録スクリプト │ ├── update-rules-from-conversation.js # ルール更新スクリプト │ ├── get-cursor-api-key.js # APIキー取得ユーティリティ │ ├── check-cursor-settings.js # 設定確認スクリプト │ ├── setup-gemini-api-key.js # Gemini APIキー設定スクリプト │ └── setup-openai-api-key.js # OpenAI APIキー設定スクリプト ├── .cursor\ │ └── rules\ │ └── auto-learned.mdc # 自動更新されるルールファイル └── package.json # 依存関係を含む C:\Users\<ユーザー名>\.cursor\ ├── hooks.json # Cursor Hooks 設定 ├── conversations\ │ └── <conversation_id>.md # 会話ログ(自動生成) ├── gemini-api-key.txt # Gemini APIキー(オプション) └── openai-api-key.txt # OpenAI APIキー(オプション)

9. APIプロバイダーの選択

スクリプトは以下の優先順位で API プロバイダーを選択します:

9.1 Gemini API(推奨)

  1. 環境変数 GEMINI_API_KEY(最優先)
    • システム環境変数として設定されている場合
  2. .cursor ディレクトリの設定ファイル(推奨)
    • C:\Users\<ユーザー名>\.cursor\gemini-api-key.txt から読み取り
    • Git管理対象外で、セキュリティリスクが低い
    • モデル: gemini-1.5-flash
  3. Cursor設定ファイルからGemini APIキーを取得
    • Clineに設定されているGemini APIキーを自動的に使用
    • モデル: gemini-1.5-flash

9.2 OpenAI API(フォールバック)

Gemini APIキーが設定されていない場合のみ使用されます。

  1. 環境変数 OPENAI_API_KEY
  2. .cursor/openai-api-key.txt ファイル
  3. .cursor/config.json ファイルOPENAI_API_KEY キー)

モデル: gpt-4o-mini

10. 注意事項

11. 参考資料


最終更新日: 2025年1月
M3プロジェクト - Cursor Hooks 自動学習ルール機能