Cursor Hooksを使用して、会話内容から自動的に .cursor/rules/auto-learned.mdc のルールを更新する仕組みです。
beforeSubmitPromptフックが実行される~/.cursor/conversations/<conversation_id>.md に記録されるstopフックが実行される.cursor/rules/auto-learned.mdc を更新| 技術 | 用途 |
|---|---|
| Cursor Hooks | 会話の開始・終了時にスクリプトを実行 |
| Node.js | スクリプト実行環境 |
| Google Gemini API / OpenAI API | 会話ログからルールを生成 |
| Markdown (.mdc) | ルールファイルの形式 |
以下のリンクから、必要なJavaScriptモジュールを含むZIPファイルをダウンロードしてください:
このZIPファイルには、Cursor Hooks機能に必要な各種JavaScriptモジュールが含まれています。
ダウンロード後、ZIPファイルを解凍してプロジェクトに配置してください。
プロジェクトルートで以下のコマンドを実行します:
npm install
これにより @google/generative-ai と openai パッケージがインストールされます。
詳細は「5. APIキーの設定」を参照してください。
以下のパスに 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"]
}
]
}
}
version と hooks の構造が必要ですversion は数値(通常は 1)hooks はオブジェクトbeforeSubmitPrompt と stop は配列である必要があります設定ファイルを保存した後、Cursor を完全に再起動します。
ChatGPTの制限に影響しないため、Gemini API の使用を推奨します。
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に追加することを推奨)。
Clineに設定されているGemini APIキーを自動的に使用します。
Ctrl+,)で Cline 拡張機能の設定を開く設定が正しく読み取れているか確認する場合:
node scripts/check-cursor-settings.js
環境変数を使用する場合は、以下の手順で設定できます。
Gemini API キーの取得:
PowerShell の場合(現在のセッションのみ):
$env:GEMINI_API_KEY = "AIza..."
PowerShell の場合(永続化):
[System.Environment]::SetEnvironmentVariable('GEMINI_API_KEY', 'AIza...', 'User')
Gemini APIキーが設定されていない場合のみ使用されます。
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
PowerShell の場合(現在のセッションのみ):
$env:OPENAI_API_KEY = "sk-..."
PowerShell の場合(永続化):
[System.Environment]::SetEnvironmentVariable('OPENAI_API_KEY', 'sk-...', 'User')
stop フックが実行される).cursor/rules/auto-learned.mdc を確認し、ルールが更新されているか確認Gemini APIキーが見つからない場合:
node scripts/check-cursor-settings.js
このコマンドで、Cursor設定ファイル内のCline関連の設定を確認できます。
Ctrl+,)で Cline 拡張機能の設定を確認GEMINI_API_KEY 環境変数を設定することも可能ですOpenAI APIキーが見つからない場合:
OPENAI_API_KEY 環境変数を設定するか、Cursor設定でGemini APIキーを設定してくださいnpm install を実行して依存関係をインストールC:\Users\<ユーザー名>\.cursor\conversations\<conversation_id>.md にログが記録されているか確認Ctrl+Shift+I)でエラーを確認hooks.json のパスが正しいか確認Windows のパス区切り文字(\)は JSON では \\ とエスケープする必要があります。
{
"version": 1,
"hooks": {
"beforeSubmitPrompt": [
{
"command": "node",
"args": ["<プロジェクトールート>\\\\scripts\\\\log-prompt.js"]
}
]
}
}
または、スラッシュ(/)を使用することもできます:
{
"version": 1,
"hooks": {
"beforeSubmitPrompt": [
{
"command": "node",
"args": ["<プロジェクトールート>/scripts/log-prompt.js"]
}
]
}
}
スクリプトは以下の優先順位で API プロバイダーを選択します:
GEMINI_API_KEY(最優先)
.cursor ディレクトリの設定ファイル(推奨)
C:\Users\<ユーザー名>\.cursor\gemini-api-key.txt から読み取りgemini-1.5-flashgemini-1.5-flashGemini APIキーが設定されていない場合のみ使用されます。
OPENAI_API_KEY.cursor/openai-api-key.txt ファイル.cursor/config.json ファイル(OPENAI_API_KEY キー)モデル: gpt-4o-mini
.cursor/rules/auto-learned.mdc は Git 管理してくださいgit diff などで人間がレビューする運用にしてください~/.cursor/conversations/ に保存されます(プライバシーに注意)
最終更新日: 2025年1月
M3プロジェクト - Cursor Hooks 自動学習ルール機能