自分用に複数AIツールのコンテキストファイルを同期する仕組みをつくった(ので動作確認を兼ねて記事を書く)

Contents

掲題のとおり、複数のAIエージェントのコンテキストファイルを同期する仕組みを、自分にちょうどよいかたちで作ったみました。

作ったものは完全に自分専用なので、主に利用しているClaude Codeのカスタムコマンドでセットアップすることを想定しています。
AI Context Management System Setup - kohbis/dotfiles - GitHub

さっそくこの仕組みを使って記事を書きつつ、最後に所感を書いておきます。

ここから、本ポストで紹介する仕組みで生成したコンテキストファイルを活用してエージェントと対話しながら書いた文章です。


Claude Code、GitHub Copilot、Cursorなど、複数のAIコーディング支援ツールを使い分けている方も増えてきたのではないでしょうか。

それぞれのツールには独自のコンテキストファイル(プロジェクト固有のルールや指示)を設定できますが、これらを個別に管理するのは大変です。
今回はその課題を解決するべく、共通ルールを一箇所で管理し、各ツールに自動同期する仕組みを作ってみたのでまとめます。

背景・課題

Claude Code、GitHub Copilot、Cursorなど、作業内容や好みによって柔軟にAIツールを使い分けたいというケースがよくあります。

それぞれのツールにはプロジェクト固有のコンテキストを設定するファイルがあります。

プロジェクトのルールや規約など、記載しておきたい内容はほぼ同じなのに、3つのファイルを個別に管理するのは正直かなり手間です。

他にも、既存の優れたツール(例: rulesync)を使う方法や、もっとシンプルにファイルへシンボリックリンクを張るだけという案も考えました。 ですが、既存ツールは自分の用途には「高機能すぎる」感じがあり、逆にシンボリックリンクは「柔軟性が足りず物足りない」部分がありました。

そんなわけで、「自分にちょうどいい」シンプルな一元管理・同期システムを作ろうと思い立ち、今回の仕組みを実装しています。 この構成やスクリプトも、Claude Code(Anthropic Sonnet 4.5)と一緒にアイデアを出し合いながら作りました。

困っていたこと


解決策:一元管理システム

シンプルな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ツール共通のルールを記述します。自分のブログでは以下のような内容を含めています。

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"
  }
}

ポイントは以下の通りです。

overrides/*.md(ツール固有の追加ルール)

各ツールでのみ必要な設定を記述します。


同期スクリプトの実装

scripts/sync-ai-context.jsの主な処理フローです。

// マージアルゴリズム
const merged =
  toolConfig.autoGeneratedNotice +
  toolConfig.header +
  '\n---\n\n' +
  baseContent +
  (overrideContent ? '\n---\n\n' + overrideContent : '') +
  toolConfig.footer;

機能

  1. config.jsonの読み込み・検証
  2. base.mdの読み込み
  3. 各ツールの処理ループ
    • override読み込み
    • 既存ファイルのバックアップ(オプション)
    • コンテンツマージ
    • ファイル書き込み
  4. 詳細レポート出力

実行結果

$ 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.

絵文字付きのレポートで、何が生成されたか一目でわかります。


運用フロー

共通ルールを更新したい場合

  1. .ai-context/base.mdを編集
  2. npm run ai-context:syncを実行
  3. 生成された全ファイルを確認
  4. Git commit & push

ツール固有のルールを更新したい場合

  1. .ai-context/overrides/[tool].mdを編集
  2. npm run ai-context:syncを実行
  3. 該当ツールのファイルのみ確認
  4. Git commit & push

新しいAIツールを追加したい場合

  1. .ai-context/overrides/[new-tool].mdを作成
  2. .ai-context/config.jsonに設定を追加
  3. npm run ai-context:syncを実行
  4. 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.jsonfooterで対応しています。

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 を実行してください。-->

バックアップ機能

同期前に既存ファイルを自動バックアップ。万が一のときも安心です。


今後の拡張アイデア


まとめ

複数のAIコーディングツールを使い分けている場合、コンテキストファイルの一元管理は地味ながら効果的です。

今回の仕組みにより、以下が実現できました。

シンプルなNode.jsスクリプトで実現できるので、同じ課題を持っている方は参考にしてみてください。

以上。


ここまでエージェントと対話しながら書いた文章でした。

所感

以上。

← Posts