掲題のとおり、複数のAIエージェントのコンテキストファイルを同期する仕組みを、自分にちょうどよいかたちで作ったみました。
作ったものは完全に自分専用なので、主に利用しているClaude Codeのカスタムコマンドでセットアップすることを想定しています。
AI Context Management System Setup - kohbis/dotfiles - GitHub
さっそくこの仕組みを使って記事を書きつつ、最後に所感を書いておきます。
ここから、本ポストで紹介する仕組みで生成したコンテキストファイルを活用してエージェントと対話しながら書いた文章です。
Claude Code、GitHub Copilot、Cursorなど、複数のAIコーディング支援ツールを使い分けている方も増えてきたのではないでしょうか。
それぞれのツールには独自のコンテキストファイル(プロジェクト固有のルールや指示)を設定できますが、これらを個別に管理するのは大変です。
今回はその課題を解決するべく、共通ルールを一箇所で管理し、各ツールに自動同期する仕組みを作ってみたのでまとめます。
背景・課題
Claude Code、GitHub Copilot、Cursorなど、作業内容や好みによって柔軟にAIツールを使い分けたいというケースがよくあります。
それぞれのツールにはプロジェクト固有のコンテキストを設定するファイルがあります。
- Claude Code:
CLAUDE.md - GitHub Copilot:
.github/copilot-instructions.md - Cursor:
.cursor/rules/*.mdc
プロジェクトのルールや規約など、記載しておきたい内容はほぼ同じなのに、3つのファイルを個別に管理するのは正直かなり手間です。
他にも、既存の優れたツール(例: rulesync)を使う方法や、もっとシンプルにファイルへシンボリックリンクを張るだけという案も考えました。 ですが、既存ツールは自分の用途には「高機能すぎる」感じがあり、逆にシンボリックリンクは「柔軟性が足りず物足りない」部分がありました。
そんなわけで、「自分にちょうどいい」シンプルな一元管理・同期システムを作ろうと思い立ち、今回の仕組みを実装しています。 この構成やスクリプトも、Claude Code(Anthropic Sonnet 4.5)と一緒にアイデアを出し合いながら作りました。
困っていたこと
- 共通ルールを更新するたびに3つのファイルを編集する必要がある
- 内容の不整合が発生しやすい
- ツール固有の設定をどこに書くか曖昧になる
解決策:一元管理システム
シンプルなNode.jsスクリプトで、以下の構成を実現しました。
プロジェクトルート/
├── .ai-context/ # 新規作成
│ ├── base.md # 共通コンテキスト
│ ├── config.json # 同期設定
│ └── overrides/ # ツール固有の追加コンテンツ
│ ├── claude.md
│ ├── copilot.md
│ └── cursor.md
│
├── scripts/
│ └── sync-ai-context.js # 同期スクリプト
│
├── CLAUDE.md # ← 自動生成
├── .github/
│ └── copilot-instructions.md # ← 自動生成
└── .cursor/
└── rules/
└── instructions.mdc # ← 自動生成
npm run ai-context:syncを実行すると、base.md + 各ツールのoverrides/*.mdをマージして、各ツール用のファイルを自動生成します。
主要ファイルの解説
base.md(共通コンテキスト)
全AIツール共通のルールを記述します。自分のブログでは以下のような内容を含めています。
- プロジェクト概要(目的、対象読者、トーン)
- 執筆ルール(言語、スタイル、記事構成)
- コンテンツ構造(ディレクトリ、ファイル命名、Front Matter形式)
- タグ管理、画像管理
- 禁止事項・注意事項
config.json(同期設定)
各ツールの設定を管理します。
{
"version": "1.0.0",
"base": {
"file": "base.md"
},
"tools": {
"claude": {
"enabled": true,
"outputPath": "../CLAUDE.md",
"overrideFile": "overrides/claude.md",
"header": "# CLAUDE.md - 執筆サポートガイド\n...",
"footer": "...",
"autoGeneratedNotice": "<!-- このファイルは .ai-context/ から自動生成されています。-->\n..."
},
"copilot": {
"enabled": true,
"outputPath": "../.github/copilot-instructions.md",
"overrideFile": "overrides/copilot.md",
...
},
"cursor": {
"enabled": true,
"outputPath": "../.cursor/rules/instructions.mdc",
"overrideFile": "overrides/cursor.md",
...
}
},
"sync": {
"backupBeforeSync": true,
"backupDir": "backups"
}
}
ポイントは以下の通りです。
enabled: ツールの有効/無効を切り替え可能outputPath: 生成先のパスoverrideFile: ツール固有の追加ルールheader/footer: ツール固有のヘッダー・フッターautoGeneratedNotice: 自動生成であることを示す警告コメント
overrides/*.md(ツール固有の追加ルール)
各ツールでのみ必要な設定を記述します。
claude.md: Claude Code固有の機能活用方法copilot.md: VS Codeの技術スタック、コーディング規約cursor.md: Cursor固有のコードスニペット活用
同期スクリプトの実装
scripts/sync-ai-context.jsの主な処理フローです。
// マージアルゴリズム
const merged =
toolConfig.autoGeneratedNotice +
toolConfig.header +
'\n---\n\n' +
baseContent +
(overrideContent ? '\n---\n\n' + overrideContent : '') +
toolConfig.footer;
機能
config.jsonの読み込み・検証base.mdの読み込み- 各ツールの処理ループ
- override読み込み
- 既存ファイルのバックアップ(オプション)
- コンテンツマージ
- ファイル書き込み
- 詳細レポート出力
実行結果
$ npm run ai-context:sync
🔄 AI Context Sync Starting...
✓ Loaded config.json
✓ Loaded base.md
📝 Processing: claude
✓ Loaded overrides/claude.md
Backed up: CLAUDE.md.2025-11-29T12-00-00
✓ Generated: ../CLAUDE.md (8.1 KB)
📝 Processing: copilot
✓ Loaded overrides/copilot.md
Backed up: copilot-instructions.md.2025-11-29T12-00-00
✓ Generated: ../.github/copilot-instructions.md (9.0 KB)
📝 Processing: cursor
✓ Loaded overrides/cursor.md
Backed up: instructions.mdc.2025-11-29T12-00-00
✓ Generated: ../.cursor/rules/instructions.mdc (7.8 KB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Sync Summary
✅ Successfully generated 3 file(s):
• ../CLAUDE.md (8.1 KB)
• ../.github/copilot-instructions.md (9.0 KB)
• ../.cursor/rules/instructions.mdc (7.8 KB)
💾 Backups saved to: backups/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✨ All done! AI context files are now in sync.
絵文字付きのレポートで、何が生成されたか一目でわかります。
運用フロー
共通ルールを更新したい場合
.ai-context/base.mdを編集npm run ai-context:syncを実行- 生成された全ファイルを確認
- Git commit & push
ツール固有のルールを更新したい場合
.ai-context/overrides/[tool].mdを編集npm run ai-context:syncを実行- 該当ツールのファイルのみ確認
- Git commit & push
新しいAIツールを追加したい場合
.ai-context/overrides/[new-tool].mdを作成.ai-context/config.jsonに設定を追加npm run ai-context:syncを実行- Git commit & push
セットアップ方法
自分のプロジェクトに導入する場合の手順です。
1. ディレクトリ・ファイルの作成
mkdir -p .ai-context/overrides
touch .ai-context/base.md
touch .ai-context/config.json
touch .ai-context/overrides/claude.md
touch .ai-context/overrides/copilot.md
touch .ai-context/overrides/cursor.md
2. 同期スクリプトの配置
scripts/sync-ai-context.jsを作成し、上記のスクリプトを配置します。
3. package.jsonにスクリプトを追加
{
"scripts": {
"ai-context:sync": "node scripts/sync-ai-context.js"
}
}
4. .gitignoreの更新
# AI context backups
.ai-context/backups/
工夫したポイント
Cursorの.mdc形式対応
Cursorは.mdcという独自形式を使用しており、ファイル末尾にメタデータが必要です。config.jsonのfooterで対応しています。
description: FUSHAGOYA blog writing and coding guidelines
globs:
alwaysApply: true
---
自動生成警告コメント
生成ファイルの冒頭に自動生成であることを示す警告を挿入し、直接編集を防止しています。
<!-- このファイルは .ai-context/ から自動生成されています。-->
<!-- 変更する場合は .ai-context/base.md または .ai-context/overrides/claude.md を編集し、npm run ai-context:sync を実行してください。-->
バックアップ機能
同期前に既存ファイルを自動バックアップ。万が一のときも安心です。
今後の拡張アイデア
- バリデーション機能:
npm run ai-context:validateで生成ファイルが最新か確認 - ドライラン機能:
--dry-runオプションで実際には書き込まずに確認 - 古いバックアップの自動削除: 最新N世代のみ保持
- GitHub Actions統合: PRやpush時に自動チェック
まとめ
複数のAIコーディングツールを使い分けている場合、コンテキストファイルの一元管理は地味ながら効果的です。
今回の仕組みにより、以下が実現できました。
- 共通ルールの更新が1ファイルで完結
- ツール固有の最適化も可能
- 新しいAIツールへの対応が簡単
シンプルなNode.jsスクリプトで実現できるので、同じ課題を持っている方は参考にしてみてください。
以上。
ここまでエージェントと対話しながら書いた文章でした。
所感
- 目的としていた「自分にちょうどよい」仕組みで、コンテキストファイルを一元管理・同期できるようになり非常に満足しています。
- 記事の執筆は(少なくとも自分にとっては)人間が行うべき作業と考えています。一方でより読み手にとってわかりやすい文章を書くために、記事全体の構成を考えたり、細かい表現の改善案を出してもらうなどAIエージェントの力を借りるのは有効だと感じました。
- 今回の仕組みはあくまで自分専用なので、他の人にとっても有用かはわからないが、同じような課題を持っている方の参考になれば幸いです。
以上。