CLAUDE CODE CLUBプライベートブログ
Obsidian外部脳運用設計2026.07.128 min

10個のプロジェクト同時に進める記録術|Claude Code × Obsidian で AI に記憶を持たせてみた

10個近いプロジェクトを Claude Code で同時に進めるために、Obsidian を AI の外部脳にした。1か所に集める方式をやめ、プロジェクトごとに分け、最後はシンボリックリンク1本で見え方を解決するまで、1日で3回つくり直した記録。

私は今、10個近いプロジェクトを Claude Code で同時に進めている。宿の仕事、講座、ブログ、秘書の仕組み……。困るのは、AI がセッションを閉じるたびに全部忘れてしまうことだ。前回どこまで進んだのか、なぜその方針にしたのか、AI が前にどんなミスをしたのか。プロジェクトが増えるほど、毎回ゼロから説明し直す時間が増えていく。同じことで困ったことはないだろうか? 私は Obsidian を AI の「外部脳」にしてこれを解決したのですが、今の形に落ち着くまでに 1日で3回、方針をひっくり返しました。今日はその記録術をまるごと共有したい。

この記事で分かること

  • 10個のプロジェクトを並行しても混ざらない、記憶の残し方とフォルダの分け方
  • 1か所に集める方式をやめて、プロジェクトごとに分けた理由
  • 分けると Obsidian で見えなくなる問題を、シンボリックリンク1本で解決した方法

そもそも何をしたかったのか

やりたかったのは、Obsidian の Vault(Markdown ファイルの集まり)を AI の外部脳にして、セッションをまたいで記憶を引き継がせること。

AI が作業のたびにそこへ書き、次のセッションの最初にそれを読んでから作業に入る。それだけの仕組みです。

ひとつだけ大事な線引きがあって、外部脳には「やること」は書きません。タスクは todo.md の役目。外部脳が持つのは「知識・今の状態と決めた理由・AI のミス・ファイルの置き場所・議事録」だけ、と決めました。

あなたが同じことをやるなら、まずこの線引きだけ先に決めておくと後が楽です。

1回目:全部を1か所に集めた(中央集権型)

最初は素直に、ホームに ~/MyBrain という Vault を1つだけ作って、全部そこに集めました。

1回目:全部を1か所に集めた

中身は用途別に分けていました。

  • Knowledge/ … ハマって解決したこと
  • Projects/ … 各プロジェクトの現状と決定ログ
  • Preferences/ … 私の好み・作業スタイル
  • Resources/ … 動画・講座などの置き場所
  • Log/ … 毎日の議事録

AI 側のルール(いつ読み、いつ書くか)は全プロジェクト共通の設定ファイルに書き、議事録は専用のコマンドで書く。書き忘れると終了時に警告が出るようにもしていました。

全部が1か所にあるので、見渡すのは楽でした。

なぜやめたのか

ノイズが多すぎたからです。

私は同時に10個近いプロジェクトを動かしています。プロジェクトごとに、ハマるところも、決めごとも、AI がやらかすミスの傾向もまったく違う。

それが1か所に混ざると、あるプロジェクトの作業中に、関係ない別プロジェクトの事情が目に入ってくる。AI にとっても私にとっても、読むべき情報が薄まってしまいました。

プロジェクトが3つを超えたあたりから、同じことが起きるのではないかと思います。

2回目:プロジェクトごとに分けた(分散型)

そこで方針を反転させて、各プロジェクトのフォルダの中に、そのプロジェクト専用の外部脳を置く形に作り直しました。

2回目:プロジェクトごとに分けた

フォルダはこうなっています。

プロジェクトフォルダ/
├── CLAUDE.md      ← AI への指示書
├── todo.md        ← タスク(外部脳には書かない)
└── obsidian/      ← このプロジェクトの外部脳
    ├── project.md     今の状態(上書き)+ 決定ログ(追記のみ)
    ├── mistakes.md    AI のミス記録
    ├── resources.md   ファイルの置き場所の一覧(実体は置かない)
    ├── knowledge/     分かったこと(1テーマ1ファイル)
    └── log/           毎日の議事録(YYYY-MM-DD.md)

プロジェクトごとなら自己完結して、余計なものが混ざらない。多少の重複は気にしない、と割り切りました。

合わせて、まわりの仕組みも作り替えました。

  • 共通の設定ファイルから外部脳のルールを全部消して、各プロジェクトの指示書に書くことにした(プロジェクトごとに運用を変えられるように)
  • セッション開始時のフックを書き換えて、今いるフォルダの上に obsidian/ があるときだけ「このプロジェクトの外部脳を読み込みますか?」と2択で聞くようにした
  • 議事録の専用コマンドと書き忘れ警告はやめて、「議事録書いて」と言う運用にした

いちばん大事なルール

ここで決めたルールが、今もいちばん効いています。

「読む」は選択制、「書く」は常時オン。読み書きしたら必ず報告。

過去の記録を読み込むかどうかは、セッションの最初に毎回私が選びます。まったく新しいことを始める回は、過去を読まないほうが早いからです。

一方で、記録すべきことが出たら、読む/読まないに関係なく AI は必ず書く。そして何を読んで何を書いたかは、必ず私に報告させる。何を参照して何を残したのか分からないまま AI が動くのが、いちばん怖いので。

あなたが外部脳を作るなら、このルールだけは最初に指示書に書いておくのがおすすめです。

3回目:Obsidian で開いても見えない問題

分散型に切り替えたその日の夜、問題が起きました。

Obsidian を開いても、さっき作ったはずのログが表示されない。

原因はすぐ分かりました。Obsidian が Vault として開いていたのは古い ~/MyBrain だけで、各プロジェクトの中に散らばった obsidian/ は Vault の外にあった。ファイルはあるのに、アプリからは1つも見えなかったのです。

分散型は AI にとっては最適でしたが、人間が Obsidian で読むには不便。当然といえば当然のトレードオフでした。

解決策:シンボリックリンクで「窓」を作る

ファイルは動かさずに、見え方だけを解決しました。

~/ObsidianHub という集約用の Vault を新しく作って、各プロジェクトの obsidian/ へのシンボリックリンク(ショートカットのようなもの)を1本ずつ張ったのです。

3回目:リンクで1か所から見えるようにした

~/ObsidianHub/
├── my-secretary      → 各プロジェクトの obsidian/ へのリンク
├── claude-code-club  → 〃
├── kiko              → 〃
└── …(プロジェクトの数だけ)

これで、Obsidian でこのハブを開けば全プロジェクトを横断して読める。それでいてファイルの実体は各プロジェクトの中に残ったままなので、「正本は各プロジェクト」というルールも崩れません。

新しいプロジェクトを足すときは、リンクを張るコマンドを1行打つだけ。

ln -sfn ~/Desktop/ai/<プロジェクト>/obsidian ~/ObsidianHub/<プロジェクト名>

最後に、役目を終えた ~/MyBrain は、いきなり消さずにゴミ箱に退避して移行完了です。

今の運用(落ち着いた形)

  • 外部脳は各プロジェクトの obsidian/ に1つずつ。これが正本
  • 横断して読みたいときは ~/ObsidianHub を Obsidian で開く。実体はコピーせず、リンクで集める
  • AI は「読むのは私の選択、書くのは常時、読み書きしたら必ず報告」
  • タスクは外部脳ではなく todo.md。外部脳は「記憶」であって「やること」ではない

※補足(3回も方針を変えられた理由)

中央集権をやめると決めたとき、私は AI に**「復元キット」**を書かせました。

旧構成との対比表、変えた理由、影響を受けたファイルの一覧、そして旧設定ファイルの中身を一字一句そのまま残したドキュメントです。「やっぱり戻したい」となっても、この1ファイルだけで巻き戻せる。

1日に3回も方針を変えられたのは、元に戻せるようにしてから壊していたからだと思います。大きく作り替えるときは、あなたも先にこれを AI に頼んでおくと安心です。

最後に

今回いちばんの学びは、AI にとって最適な構造と、人間にとって最適な見え方は一致しないということでした。分散型は AI の集中には効いたけど、人間の見やすさを犠牲にした。両方を諦めずに済んだのは、シンボリックリンクという「実体は動かさず、見え方だけ変える」逃げ道があったからです。

もしあなたがこれから始めるなら、今日やることは1つだけ。今いちばん触っているプロジェクトのフォルダに obsidian/ を作って、AI の指示書に「書くのは常時、書いたら報告」と1行足す。それだけで、明日の AI は今日のことを覚えています。

Claude Code まわりの体験は、ほかにもこんな記事を書いています。

同じところで止まっている人に届くと嬉しいので、フォローしてもらえると励みになります。 いつも私の知らないことを一緒に考えてくれる Claude には感謝しかない。

んじゃ、また!

AIへ渡す手順書

右上の「コピー」を押して、そのまま Claude(Claude Code)に貼り付けてください。記事と同じことを、手順どおりに進めてくれます。パソコンの環境によって、途中で確認や操作をお願いされることがあります。

prompt-for-claude.md
# 作業手順書:Claude Code に「プロジェクトごとの外部脳(Obsidian)」を持たせる

> この文章は、ユーザーが CLAUDE CODE CLUB の記事「10個のプロジェクト同時に進める記録術|Claude Code × Obsidian で AI に記憶を持たせてみた」の末尾からコピーし、あなた(Claude)に貼り付けたものです。人間向けの解説ではなく、**あなたが実行するための作業手順書**です。
> 出典:https://blog.claudecodeclub.jp/posts/obsidian-external-brain / https://note.com/mosir/n/n0098988b5b36

---

## 0. あなた(Claude)へ:最初に必ず読むこと

### ゴール

ユーザーが Claude Code で扱っている各プロジェクトに、**そのプロジェクト専用の「外部脳」フォルダ(`obsidian/`)**を作り、次の運用を成立させる。

1. セッションをまたいで残すべき知識(現状・決定の経緯・AI のミス・資産の所在・日次の議事録)を、AI が `obsidian/` に Markdown で書く。
2. **読むのは選択制**(セッション開始時にユーザーが「読む/読まない」を選ぶ)、**書くのは常時オン**(記録すべきことが出たら必ず書く)、**読み書きしたら必ずユーザーに報告**(サイレント禁止)。
3. タスク(やること)は外部脳に書かない。タスクの正本はプロジェクト直下の `todo.md`(既存のタスク管理があればそれ)。
4. 人間が Obsidian で全プロジェクトを横断して読めるよう、`~/ObsidianHub` という集約 Vault に各 `obsidian/` へのシンボリックリンク(Windows はジャンクション)を張る。実体は各プロジェクトに置いたまま(正本は各プロジェクト)。

### 実行環境の確認(最優先)

- この手順はファイル作成・シェル実行を伴う。あなたが **Claude Code(ターミナル、IDE 拡張、またはデスクトップアプリの Code タブ)** として動いていて、Bash/PowerShell とファイル書き込みが使えることを確認する。
- claude.ai のチャット欄やスマホアプリなど、ローカルのファイル操作ができない環境で貼られた場合は、**何も実行せず**、ユーザーに「この手順書は Claude Code(デスクトップアプリの Code タブ、またはターミナルの `claude`)に貼り直してください」と短く伝えて止まる。

### 守ること

1. **既存ファイルを壊さない。** `CLAUDE.md`、`~/.claude/settings.json`、既存のノートは、書き換える前に必ずバックアップを取る(手順 2 の「復元キット」)。既存の `obsidian/` や Vault があれば上書きせず、中身を確認してユーザーに方針を聞く。
2. **ファイルを移動・削除しない。** 既存のメモをまとめたり移したりするのは、ユーザーが明示的に頼んだときだけ。削除が必要に見えても、提案にとどめる。
3. **秘密情報を外部脳に書かない。** パスワード、API キー、トークン、個人の連絡先、顧客情報は記録対象外。必要なら「どこに保管されているか」だけを書く。
4. **人間にしかできない操作はユーザーに頼む。** Obsidian のインストール、Obsidian で「フォルダを保管庫として開く」操作、OS のセキュリティ確認ダイアログ。頼むときは「どのアプリの・どこを・何を押すか」を1つずつ具体的に書く。
5. **各手順の「確認」が通るまで次へ進まない。**
6. ユーザーへの説明はユーザーの言語で、専門用語を避けて短く。この手順書の文面をそのまま読み上げない。

### 最初にユーザーへ聞くこと(まとめて1回で)

- 外部脳を持たせたいプロジェクトのフォルダ(絶対パス。複数可)。分からなければ、あなたが候補を探して提示する(手順 1)。
- Obsidian はもう入っているか(入っていなければ https://obsidian.md からインストールしてもらう。インストールしなくても外部脳自体は動くが、人間が読むのに使う)。
- セッション開始時に「このプロジェクトの外部脳を読み込みますか?」と自動で聞く仕組み(SessionStart フック)を入れるか(推奨:入れる)。
- 議事録(日次ログ)を毎回自動で書くか、「議事録書いて」と言われたときだけ書くか(推奨:記録すべきことが出たら自動で書く)。

---

## 1. 環境を調べる

OS を判定し、以降のコマンドを使い分ける。

| 項目 | macOS / Linux | Windows |
|---|---|---|
| シェル | zsh / bash | PowerShell |
| 判定 | `uname -s` が `Darwin`(または `Linux`) | `$env:OS` が `Windows_NT` |
| ホーム | `~` | `$env:USERPROFILE` |
| ユーザー設定 | `~/.claude/settings.json` | `%USERPROFILE%\.claude\settings.json` |
| グローバル指示 | `~/.claude/CLAUDE.md` | `%USERPROFILE%\.claude\CLAUDE.md` |
| 集約 Vault | `~/ObsidianHub` | `%USERPROFILE%\ObsidianHub` |

調べること(読むだけ。まだ何も書かない):

- ユーザーが挙げた各プロジェクトに、`CLAUDE.md`/`todo.md`/`obsidian/`/`.obsidian/`(そのフォルダ自体が Obsidian の Vault か)があるか。
- `~/.claude/CLAUDE.md` に、すでに記憶・議事録・外部脳に関するルールがあるか(あれば衝突しないよう手順 4 で調整する)。
- `~/.claude/settings.json` に `hooks.SessionStart` がすでにあるか。
- 既存の Obsidian Vault の場所(macOS:`~/Library/Application Support/obsidian/obsidian.json`、Windows:`%APPDATA%\obsidian\obsidian.json` の `vaults` に一覧がある。読むだけ)。
- プロジェクトの候補を探す場合:ホーム直下の作業フォルダ(例:`~/Desktop`、`~/Documents`、`~/dev`、`~/projects`)で `CLAUDE.md` または `.git` を持つフォルダを列挙し、ユーザーに選んでもらう。

**確認**:対象プロジェクトの一覧(絶対パス)と、既存ファイルの有無の表をユーザーに見せ、「この内容で進めてよいか」を1回だけ確認する。

---

## 2. 復元キットを作る(壊す前に、戻せるようにする)

これから書き換える可能性のあるファイルを、日付つきのフォルダにそのままコピーする。

- 置き場:`~/.claude/backups/external-brain-YYYYMMDD-HHMM/`(Windows は `%USERPROFILE%\.claude\backups\...`)
- コピーするもの:`~/.claude/settings.json`、`~/.claude/CLAUDE.md`、各プロジェクトの `CLAUDE.md`(あるものだけ。パス構造が分かるようファイル名に元のパスを含める)
- 同じフォルダに `README.md` を作り、次を書く:
  - 何をしようとしているか(この手順書のゴール)
  - コピーしたファイルの一覧と、元の場所
  - 戻し方(コピーを元の場所に上書きする手順。シンボリックリンク/ジャンクションの削除方法。作成した `obsidian/` は中身を確認してから手動で消すこと)

**確認**:バックアップのファイル数と元ファイルのサイズが一致する。

---

## 3. 各プロジェクトに `obsidian/` を作る

プロジェクトごとに次の構造を作る。**既に同名のファイルがあれば上書きしない**(無いものだけ作る)。

```
<プロジェクト>/
├── CLAUDE.md          ← AI への指示書(手順 4 でルールを追記)
├── todo.md            ← タスクの正本(無ければ作るか、既存のタスク管理を使う。外部脳には書かない)
└── obsidian/          ← このプロジェクトの外部脳
    ├── project.md        現状(上書き)+ 決定ログ(追記のみ)
    ├── mistakes.md       AI のミスの記録(追記のみ)
    ├── resources.md      資産の所在カタログ(実体は置かない。パス・URL だけ)
    ├── knowledge/        分かったこと(1 テーマ 1 ファイル。例:knowledge/deploy.md)
    └── log/              日次の議事録(log/YYYY-MM-DD.md。追記のみ)
```

各ファイルの初期内容(`<...>` は埋める):

`obsidian/project.md`

```markdown
---
tags: [project]
---

# <プロジェクト名>

## 現状(随時上書き)

- <今の状態を3行以内。分からなければ空欄でよい>

## 決定ログ(追記のみ)

| 日付 | 決めたこと | 理由 |
|---|---|---|
```

`obsidian/mistakes.md`

```markdown
# AI のミスの記録(追記のみ)

同じミスを繰り返さないための記録。起きたら必ず追記する。

| 日付 | 何をしたか(ミス) | 何が起きたか | 次からどうするか |
|---|---|---|---|
```

`obsidian/resources.md`

```markdown
# 資産の所在(実体は置かない)

| 名前 | 場所(パス/URL) | メモ |
|---|---|---|
```

`obsidian/log/<今日の日付>.md`

```markdown
---
date: <YYYY-MM-DD>
tags: [log]
---

# <YYYY-MM-DD>

## やったこと

- 外部脳(obsidian/)を作成した

## 決まったこと

-

## メモ

-
```

`knowledge/` は空フォルダのままでよい(Git 管理しているなら `.gitkeep` を置く)。

**確認**:各プロジェクトで `obsidian/project.md`・`mistakes.md`・`resources.md`・`knowledge/`・`log/<今日>.md` が存在する。

---

## 4. 各プロジェクトの `CLAUDE.md` に運用ルールを追記する

全プロジェクト共通の `~/.claude/CLAUDE.md` には**書かない**(プロジェクトごとに運用を変えられるようにするため)。各プロジェクトの `CLAUDE.md` の末尾に、次のセクションをそのまま追記する(`CLAUDE.md` が無ければ作る)。既に似たルールがあれば、重複させず統合し、差分をユーザーに見せる。

```markdown
## 外部脳(obsidian/)の運用ルール

このプロジェクトの記憶は `obsidian/` に置く。Obsidian の Vault としても開ける Markdown の集まり。

### 読む(選択制)
- セッション開始時、過去の記録を読み込むかどうかをユーザーに2択で聞く(「読み込む/読み込まない」)。勝手に読まない。
- 「読み込む」なら `obsidian/project.md` → `obsidian/mistakes.md` → 直近の `obsidian/log/` 2〜3日分 の順に読み、要点を3行で報告する。
- 作業中に必要になったら、`knowledge/` と `resources.md` を必要な分だけ読む。読んだら「何を読んだか」を一言報告する。

### 書く(常時オン)
- 読む/読まないに関係なく、記録すべきことが出たら必ず書く。
  - 今の状態が変わった → `project.md` の「現状」を上書き
  - 方針・設計を決めた → `project.md` の「決定ログ」に1行追記(日付・決めたこと・理由)
  - AI(あなた)がミスをした/ユーザーに直された → `mistakes.md` に追記
  - ハマって解決した、調べて分かった → `knowledge/<テーマ>.md`(無ければ作る)
  - ファイル・資料・URL の置き場所が分かった → `resources.md`
  - その日の作業の区切り → `log/<YYYY-MM-DD>.md` に「やったこと/決まったこと/メモ」を追記
- `log/` と決定ログと `mistakes.md` は**追記のみ**。過去の行を書き換えない。
- 書いたら必ず「どのファイルに何を書いたか」をユーザーに報告する(サイレント禁止)。

### 書かないもの
- タスク・やること(→ `todo.md`)
- パスワード・API キー・トークン・個人の連絡先・顧客情報(必要なら保管場所だけ書く)
- 一時的なメモや、このセッション限りの試行錯誤

### 人間が読むとき
- `~/ObsidianHub` を Obsidian で開くと、全プロジェクトの `obsidian/` を横断して読める(実体はここ。ハブはリンク)。
```

**確認**:各プロジェクトの `CLAUDE.md` に上のセクションが1つだけある(重複していない)。

---

## 5.(推奨)セッション開始時に「読み込みますか?」と聞かせる(SessionStart フック)

ユーザーが「入れる」を選んだ場合だけ行う。仕組み:Claude Code の起動時(SessionStart)にスクリプトを実行し、今いるフォルダから親へ辿って `obsidian/project.md` が見つかったときだけ、「外部脳があるので、読み込むかユーザーに2択で聞くこと」という文をコンテキストに渡す。SessionStart フックの標準出力は、そのセッションの追加コンテキストとして Claude に渡される。

### macOS / Linux

`~/.claude/hooks/external-brain-check.sh` を作り、実行権限を付ける(`chmod +x`)。

```bash
#!/usr/bin/env bash
# 今いるフォルダから親へ辿り、obsidian/project.md があれば Claude に知らせる
dir="${CLAUDE_PROJECT_DIR:-$PWD}"
while [ "$dir" != "/" ] && [ -n "$dir" ]; do
  if [ -f "$dir/obsidian/project.md" ]; then
    echo "このプロジェクトには外部脳があります: $dir/obsidian/"
    echo "最初の返答の冒頭で、過去の記録を読み込むかどうかをユーザーに2択(読み込む/読み込まない)で聞いてください。勝手に読まないこと。ルールは $dir/CLAUDE.md の「外部脳(obsidian/)の運用ルール」に従う。"
    exit 0
  fi
  dir="$(dirname "$dir")"
done
exit 0
```

### Windows

`%USERPROFILE%\.claude\hooks\external-brain-check.ps1` を作る。

```powershell
# 今いるフォルダから親へ辿り、obsidian\project.md があれば Claude に知らせる
$dir = if ($env:CLAUDE_PROJECT_DIR) { $env:CLAUDE_PROJECT_DIR } else { (Get-Location).Path }
while ($dir) {
  if (Test-Path (Join-Path $dir 'obsidian\project.md')) {
    Write-Output "このプロジェクトには外部脳があります: $dir\obsidian\"
    Write-Output "最初の返答の冒頭で、過去の記録を読み込むかどうかをユーザーに2択(読み込む/読み込まない)で聞いてください。勝手に読まないこと。ルールは $dir\CLAUDE.md の「外部脳(obsidian/)の運用ルール」に従う。"
    exit 0
  }
  $parent = Split-Path $dir -Parent
  if ($parent -eq $dir) { break }
  $dir = $parent
}
exit 0
```

### settings.json に登録する

`~/.claude/settings.json`(手順 2 でバックアップ済み)の `hooks.SessionStart` に、**既存の内容を消さずに**次を追加する。JSON をパースして追記し、書き戻したあと JSON として正しいか検証する(例:`python3 -m json.tool ~/.claude/settings.json > /dev/null`)。

```json
{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          { "type": "command", "command": "bash ~/.claude/hooks/external-brain-check.sh" }
        ]
      }
    ]
  }
}
```

Windows の `command` は `powershell -NoProfile -ExecutionPolicy Bypass -File "%USERPROFILE%\\.claude\\hooks\\external-brain-check.ps1"`(JSON 内のバックスラッシュは `\\` に重ねる)。

**確認**:スクリプトを対象プロジェクトのフォルダで手動実行して2行が出る/関係ないフォルダ(例:ホーム直下)では何も出ない。ユーザーに、対象プロジェクトで Claude Code を新しく起動してもらい、最初に「読み込みますか?」と聞かれることを確かめる。

---

## 6. 集約 Vault(ObsidianHub)を作り、リンクを張る

### macOS / Linux

```bash
mkdir -p ~/ObsidianHub
ln -sfn "<プロジェクトの絶対パス>/obsidian" ~/ObsidianHub/<プロジェクト名>
ls -l ~/ObsidianHub
```

### Windows(管理者権限不要のジャンクションを使う)

```powershell
New-Item -ItemType Directory -Force "$env:USERPROFILE\ObsidianHub" | Out-Null
New-Item -ItemType Junction -Path "$env:USERPROFILE\ObsidianHub\<プロジェクト名>" -Target "<プロジェクトの絶対パス>\obsidian"
Get-ChildItem "$env:USERPROFILE\ObsidianHub"
```

- `<プロジェクト名>` は英小文字・ハイフン区切り(例:`my-shop`、`client-a`)。日本語やスペースは避ける。
- **リンクの向き**:実体は各プロジェクトの `obsidian/`、ハブ側はリンク。逆にしない(ハブに実体を置かない)。
- 既存の Vault がある場合も、そのまま残す。ハブは新しく作る。

### ユーザーに頼むこと(Obsidian で開く)

Obsidian を起動し、左下の保管庫名(または起動画面)→「フォルダを保管庫として開く」→ `ObsidianHub` を選んでもらう。開いたら、左のファイル一覧に各プロジェクト名のフォルダが並び、中に `project.md` や `log/` が見えることを確認してもらう。

**確認**:Obsidian の画面で、各プロジェクトの `log/<今日>.md` が開ける(ユーザーに見えたかを聞く)。見えない場合はハマりどころ 1〜3。

---

## 7. 動作確認(ユーザーと一緒に)

1. 対象プロジェクトの1つで、あなたが `log/<今日>.md` に「外部脳の動作確認」と1行追記し、どのファイルに書いたかを報告する。
2. ユーザーに Obsidian でその行が見えるか確認してもらう(ハブ経由)。
3. (フックを入れた場合)ユーザーに、そのプロジェクトで Claude Code を新規起動してもらい、最初に「読み込みますか?」と聞かれることを確認する。「読み込む」と答えたら、project.md・mistakes.md・直近のログを読んで要点を3行で報告できることを確認する。

---

## 8. 最後の報告(ユーザーへ)

短く次を伝える。

- 外部脳を作ったプロジェクトの一覧と、それぞれの `obsidian/` の場所
- 書き換えたファイル(各 `CLAUDE.md`、`settings.json`)と、復元キットの場所
- 人間が読むときは `ObsidianHub` を Obsidian で開くこと
- 新しいプロジェクトを足すときは「このプロジェクトにも外部脳を作って」と言えば、手順 3・4・6 を繰り返すこと

---

## ハマりどころ(症状 → 原因 → 対処)

1. **Obsidian を開いてもログが見えない** → Obsidian が別の Vault(古い Vault や、プロジェクトのフォルダそのもの)を開いている → 左下の保管庫名から `ObsidianHub` に切り替える。
2. **ハブの中のフォルダが空に見える** → リンクの張り先が間違っている(`obsidian/` ではなくプロジェクトのフォルダを指している、またはパスの打ち間違い) → `ls -l ~/ObsidianHub`(Windows は `Get-Item ... | Select Target`)でリンク先を確認し、張り直す。
3. **Windows でリンクが作れない/Obsidian で開けない** → シンボリックリンク(`SymbolicLink`)は開発者モードか管理者権限が必要 → ジャンクション(`Junction`)を使う。ネットワークドライブ上のフォルダはジャンクションの対象にできない。
4. **iCloud Drive・Dropbox・OneDrive の中で使うと同期がおかしくなる** → 同期サービスはシンボリックリンクの扱いが不安定 → ハブ(`ObsidianHub`)は同期フォルダの外に置く。プロジェクト側が同期フォルダの中にあるのは構わない。
5. **毎回勝手に過去ログを読み始める** → グローバルの `~/.claude/CLAUDE.md` に「起動時に記録を読む」ような古いルールが残っている → 手順 4 の方針(読むのは選択制)と矛盾するルールを、ユーザーに確認してから外す。
6. **ログが散らかる・何でも書かれる** → 「書かないもの」が守られていない → 各プロジェクトの `CLAUDE.md` のルールを見直し、`mistakes.md` に記録したうえで運用する。
7. **フックが動かない** → `settings.json` の JSON が壊れている/スクリプトに実行権限が無い/Windows の実行ポリシー → `python3 -m json.tool` で検証、`chmod +x`、`-ExecutionPolicy Bypass` を確認。フックは Claude Code の再起動後に反映される。
8. **やっぱり元に戻したい** → 手順 2 の復元キットの `README.md` に従って、バックアップを元の場所に戻し、ハブのリンクを消す(リンクを消しても実体の `obsidian/` は消えない。リンクの削除は `rm ~/ObsidianHub/<名前>`、ジャンクションは `Remove-Item` で、**末尾に `/` を付けない・`-Recurse` を付けない**)。

---

## 参考

- Obsidian:https://obsidian.md
- Claude Code のメモリ(CLAUDE.md):https://docs.claude.com/en/docs/claude-code/memory
- Claude Code のフック:https://docs.claude.com/en/docs/claude-code/hooks

ファイルで渡したい場合:obsidian-external-brain.md をダウンロード

← 記事一覧