Open4
ailabベースで使っている際の便利ツールたち

load_context.sh
という名前で保存している。
sh load_context.sh
を実行するとルールファイルとメモリバンクの内容をクリップボードにコピーできるのでコピーしたらあとは適当にo1 ProとかClaudeとか好きなツールに入れるだけで使えるようになる。普段はCursor、Cline使ってても時折使いたくなるのであると便利
#!/bin/bash
# ルールファイルとメモリバンクファイルを一括で読み込むスクリプト
echo "コンテキスト読み込みを開始します..."
# 一時ファイルの作成
rm -f /tmp/context_buffer.md
touch /tmp/context_buffer.md
# ルールファイルの読み込み
echo "ルールファイルを読み込んでいます..."
for rule_file in $(find docs/ai/rules -name "*.md" | sort); do
echo "読み込み中: $rule_file"
echo -e "# $(basename $rule_file)\n" >> /tmp/context_buffer.md
cat "$rule_file" >> /tmp/context_buffer.md
echo -e "\n---\n" >> /tmp/context_buffer.md
done
# メモリバンクファイルの読み込み
echo "メモリバンクファイルを読み込んでいます..."
for memory_file in $(find docs/ai/memory -name "*.md" | sort); do
if [ -s "$memory_file" ]; then # ファイルが空でない場合のみ処理
echo "読み込み中: $memory_file"
echo -e "# $(basename $memory_file)\n" >> /tmp/context_buffer.md
cat "$memory_file" >> /tmp/context_buffer.md
echo -e "\n---\n" >> /tmp/context_buffer.md
fi
done
# 一時ファイルをクリップボードにコピー
if [ "$(uname)" == "Darwin" ]; then
# macOS
cat /tmp/context_buffer.md | pbcopy
echo "コンテキストの読み込みが完了しました。クリップボードにコピーされています。"
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
# Linux
if command -v xclip > /dev/null; then
cat /tmp/context_buffer.md | xclip -selection clipboard
echo "コンテキストの読み込みが完了しました。クリップボードにコピーされています。"
else
echo "xclipがインストールされていないため、クリップボードにコピーできません。"
echo "コンテキストは /tmp/context_buffer.md に保存されました。"
fi
else
echo "未対応のOSです。コンテキストは /tmp/context_buffer.md に保存されました。"
fi
echo "完了しました。"

あると便利なものとして、 docs/ai/context_index.md
とというファイルを用意していて、
下記のようなものが書かれている。目次みたいなものですね。
セッションが長くなるとルールを忘れたり、漏れたりするのでもう一度読ませて理解を促す目的で使用する
# コンテキストインデックス
## ルールファイル
- [00_basic.md](docs/ai/rules/00_basic.md) - 基本的なルール
- [01_project.md](docs/ai/rules/01_project.md) - プロジェクトに関するルール
- [02_memory.md](docs/ai/rules/02_memory.md) - メモリに関するルール
- [git.md](docs/ai/rules/git.md) - Gitに関するルール
- [context-window.md](docs/ai/rules/context-window.md) - コンテキストウィンドウに関するルール
- [local-mcp.md](docs/ai/rules/local-mcp.md) - ローカルMCPに関するルール
## メモリバンクファイル
- [directory_management.md](docs/ai/memory/directory_management.md) - ディレクトリ管理に関する情報
- [xxx.md](docs/ai/memory/yyy.md) - コーディングルール
- [yyy.md](docs/ai/memory/yyy.md) - ファイル追加ユースケースの情報
## コンテキスト管理ファイル
- [context_summary.md](docs/ai/context_summary.md) - 重要なコンテキストの要約
- [load_context.sh](load_context.sh) - コンテキスト読み込みスクリプト
- [update_context.sh](update_context.sh) - コンテキスト更新スクリプト
## 使用方法
1. コンテキストの読み込み: `./load_context.sh`
2. コンテキストの更新: `./update_context.sh`
3. 特定のファイルの参照: 上記のリンクをクリックして直接ファイルを開く
## コンテキスト管理コマンド
Cursorでの会話中に以下のコマンドを使用できます:
- `/load-rules` - ルールファイルを読み込む
- `/load-memory` - メモリバンクファイルを読み込む
- `/load-all` - すべてのコンテキストを読み込む
- `/summary` - コンテキストサマリーを表示する
docs/ai/context_summary.md
にはチートシートみたいな内容を入れてる
update_context.sh
は下記のように書いている
#!/bin/bash
# コンテキスト更新スクリプト
echo "コンテキスト更新を開始します..."
# docs/ai/memory ディレクトリが存在するか確認
if [ ! -d "docs/ai/memory" ]; then
mkdir -p docs/ai/memory
echo "docs/ai/memory ディレクトリを作成しました。"
fi
# 最近変更されたファイルを検出(過去24時間以内)
echo "最近変更されたファイルを検出しています..."
recent_files=$(find . -type f \( -name "*.go" -o -name "*.md" -o -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" \) -mtime -1 | grep -v "node_modules" | grep -v ".git" | grep -v "docs/ai/memory/recent_changes.md")
# 変更の概要を生成
echo "# 最近の変更 ($(date +%Y-%m-%d))" > docs/ai/memory/recent_changes.md
echo "" >> docs/ai/memory/recent_changes.md
echo "以下のファイルが最近変更されました:" >> docs/ai/memory/recent_changes.md
echo "" >> docs/ai/memory/recent_changes.md
# 変更されたファイルがあるか確認
if [ -z "$recent_files" ]; then
echo "過去24時間以内に変更されたファイルはありません。" >> docs/ai/memory/recent_changes.md
else
# 変更されたファイルを記録
for file in $recent_files; do
echo "- $file" >> docs/ai/memory/recent_changes.md
done
# 変更内容のサマリーを生成
echo "" >> docs/ai/memory/recent_changes.md
echo "## 主要な変更点" >> docs/ai/memory/recent_changes.md
echo "" >> docs/ai/memory/recent_changes.md
# 最大10個のファイルについて変更内容を表示
count=0
for file in $recent_files; do
if [ $count -ge 10 ]; then
break
fi
if [ -f "$file" ]; then
echo "### $file" >> docs/ai/memory/recent_changes.md
echo '```' >> docs/ai/memory/recent_changes.md
# ファイルの種類に応じて異なる処理
if [[ "$file" == *.md ]]; then
# Markdownファイルの場合は先頭10行を表示
head -n 10 "$file" >> docs/ai/memory/recent_changes.md
echo "..." >> docs/ai/memory/recent_changes.md
else
# コードファイルの場合はgit diffを使用(可能な場合)
if git rev-parse --is-inside-work-tree &>/dev/null && git ls-files --error-unmatch "$file" &>/dev/null; then
git diff --unified=3 HEAD "$file" | head -n 20 >> docs/ai/memory/recent_changes.md
echo "..." >> docs/ai/memory/recent_changes.md
else
# gitで管理されていない場合は先頭10行を表示
head -n 10 "$file" >> docs/ai/memory/recent_changes.md
echo "..." >> docs/ai/memory/recent_changes.md
fi
fi
echo '```' >> docs/ai/memory/recent_changes.md
echo "" >> docs/ai/memory/recent_changes.md
count=$((count+1))
fi
done
fi
echo "" >> docs/ai/memory/recent_changes.md
echo "## 手動更新セクション" >> docs/ai/memory/recent_changes.md
echo "" >> docs/ai/memory/recent_changes.md
echo "(ここに主要な変更点を手動で追加してください)" >> docs/ai/memory/recent_changes.md
echo "コンテキスト更新が完了しました。docs/ai/memory/recent_changes.md を確認してください。"
# 実行権限を付与
chmod +x load_context.sh
echo "スクリプトに実行権限を付与しました。"
echo "コンテキストを読み込むには ./load_context.sh を実行してください。"

.cursor/rules*
から .clinerules
を生成するためのスクリプト
rm -f .clinerules && touch .clinerules && for file in $(ls -1 .cursor/rules/*.mdc | sort); do echo "# $(basename $file .mdc)" >> .clinerules && awk 'BEGIN{p=0} /^---$/{if(p==0){p=1}else{p=0;next}} p==0{print}' $file >> .clinerules && echo -e "\n\n" >> .clinerules; done
ログインするとコメントできます