CLAUDE.md の内容をGit Submoduleを使用して複数のリポジトリ間で共有する
Rails製の個人プロジェクトをいくつか持っています。
- https://github.com/annict/annict
- https://github.com/mewstcom/mewst
- https://github.com/wikinoapp/wikino
Claude Codeを利用するときに参照される CLAUDE.md
をそれぞれのリポジトリに置いて管理するのは冗長なので、一箇所で管理できるようにしたいなと思いました。
いくつか方法はあると思いますが、今回はGit Submoduleを使用して管理するようにしたので、その方法をメモしておきます。
やったこと
まず CLAUDE.md
の内容の中で共通となるドキュメントを管理するリポジトリを用意します。
今回は shimpleco/claude-docs
というリポジトリを作りました。
https://github.com/shimpleco/claude-docs
そして shimpleco/claude-docs
にドキュメントを追加します。
(tech-stack.md
など)
次にRailsプロジェクト側で shimpleco/claude-docs
をサブモジュールとして参照します。
cd /path/to/wikinoapp/wikino
git submodule add https://github.com/shimpleco/claude-docs.git docs/claude/base
プロジェクト固有のドキュメントも管理したくなると思ったので、docs/claude/base
というパスでサブモジュールを登録しました。
プロジェクト固有のドキュメントは docs/claude/
配下に置く想定です。
最後にプロジェクト直下に CLAUDE.md
を置き、サブモジュール内のドキュメントを参照します。
# Wikino開発ガイド
WikinoはWikiアプリです。
ユーザーはスペースと呼ばれる場所にページを作成することができ、ページ間をリンクで繋げることができます。
## 基本情報
- @docs/claude/base/coding-conventions/css.md
- @docs/claude/base/coding-conventions/general.md
- @docs/claude/base/coding-conventions/rails.md
...
アットマークの記法はCLAUDE.md importsと呼ばれるものです。
サブモジュールの更新は手動で行う必要ありますが、簡単に共通化できたのでとりあえずこれで行きます。