PRODUCT NOTE / 道具

Claude Code は何をフォルダごとに持っているか

2026-09-22、ゲームのフォルダ名を game から nukero に変えた。

git の履歴もビルドのキャッシュもフォルダと一緒に動いたが、Claude Code の会話の記録だけは、自分で移さないと付いてこなかった。


調べ直すと、会話の記録・メモリー・スキルはそれぞれ別の単位で分かれていて、作業ツリーとビルドのキャッシュは分かれていない。

この取り違えで踏んだことが、この 2 か月でほかに 3 つあった。このノートはその記録です。

対象個人開発で使っている Claude Code(主に VS Code 拡張 2.1.272。ターミナルの CLI は 2.1.220)。手元の記録は ~/.claude/projects/ の下に 15 フォルダ・会話 161 本(2026-09-22 時点)
仕組みの出典公式ドキュメントの sessions / memory / skills の各ページ(2026-09-22 に確認)と、手元の ~/.claude/projects/ の実物
この解の要点会話の記録は開いたフォルダの絶対パス、メモリーはgit リポジトリ、同じ名前のスキルは個人のほうが先。作業ツリーとビルドのキャッシュは、会話が何本あっても 1 つ
このノートの範囲個人開発のリポジトリで起きたことだけ。仕事の事例は入れていない
最終更新2026-09-23
関連大量の文章と問題文をどうテストするか ・ Claude Code と働く1年目の教科書
TL;DR

ひとことで

Claude Code は、開いたフォルダの絶対パスから作った名前のフォルダに会話を保存している。フォルダの名前を変えると、会話は消えないが、新しい名前で開いたときの一覧に出てこなくなる。

メモリーは git リポジトリごとなので、あるアプリで覚えたことは別のアプリでは読まれない。一方で、作業ツリーとビルドのキャッシュ、それに使用量の枠は会話ごとに分かれていないので、同じリポジトリを 2 本の会話で触ると互いの変更とビルドを踏み、どれか 1 つが枠を使い切ると全部の会話が同時に止まる。

改名・並走・同じ名前のスキルのときは、どれが付いてきて、どれが共有されるかを先に確かめる。

Map

何が、何の単位で分かれているか

公式ドキュメントと手元の実物を突き合わせた表。右の列は、実際に踏んだことを書いている。

持ち物置き場所分かれる単位動かす・重ねると
会話の記録~/.claude/projects/ の下、変換した名前のフォルダに 1 会話 1 ファイル開いたフォルダの絶対パス。英数字以外を - に置き換える(/Users/nzw/_develop/game → -Users-nzw--develop-game)フォルダの名前を変えると一覧に出てこない。既定では 30 日で消える
自動メモリー同じフォルダの中の memory/git リポジトリ。中のサブフォルダと worktree は 1 つを共有する別のリポジトリで覚えたことは読まれない
スキル~/.claude/skills/(個人)と、リポジトリの .claude/skills/(プロジェクト)同じ名前が両方にあると、個人のほうが動くリポジトリ側を正にしたいなら、個人のスキルの本文でそう言うしかない
CLAUDE.md~/CLAUDE.md とリポジトリの中開いたフォルダから上へたどって読む~/_develop/ の下なら、どのリポジトリでも ~/CLAUDE.md が読まれる
使用量の枠claude.ai のアカウント分かれていない。開いている窓・会話・サブエージェントで 1 つを分け合う1 つの会話が使い切ると、別のフォルダで開いている会話も同時に止まる
作業ツリーリポジトリそのもの。ビルドのキャッシュ(Xcode の DerivedData)も同じ分かれていない。会話が何本あっても 1 つ相手の変更がそのまま見え、相手の clean でこちらのビルドが落ちる
Decision Log

主要な意思決定ログ

改名 フォルダの名前を変えるときは、会話の記録のフォルダも同じ名前に移す
DECISION
2026-09-22、ゲームのフォルダを game から nukero に変えた。開いているウィンドウを閉じてから、フォルダ本体と会話の記録のフォルダの両方を mv し、最後に Flutter の生成ファイルを作り直す。
# 1. このフォルダを開いているウィンドウを閉じてから
mv ~/_develop/game ~/_develop/nukero
# 2. 会話の記録も引き継ぐなら
mv ~/.claude/projects/-Users-nzw--develop-game ~/.claude/projects/-Users-nzw--develop-nukero
# 3. nukero を開いて一度だけ(iOS の生成ファイルに古いパスが残っている)
cd ~/_develop/nukero && flutter clean && flutter pub get
WHY / 仮説

本人が聞いたのは「名前を変えるとキャッシュが全部消えるか」で、git の履歴・build/・.dart_tool/ はフォルダの中にあるので消えない。

消えないが付いてこないのが会話の記録で、保存先のフォルダ名が作業フォルダの絶対パスから作られている。会話の一覧は、既定では開いたフォルダの分しか出さない(公式ドキュメントの CLI の説明)。

ID を指定した再開なら 2.1.223 からほかのフォルダの記録まで探すが、ID を手で打つ使い方はしていないので、記録ごと移しておくほうが確実だった。

RESULT

会話 3 本・25 MB を移し、git もビルドも問題なかった。ただ、手順の 1 行目に「閉じてから」と書いてあったのに、改名のあとも古い名前のまま動いていた会話で次の依頼を送った。

その会話は古い名前の記録フォルダを作り直して、そこへ 27 行を書いた。Claude の最初の 2 つのコマンドは、もう無い game に cd して失敗し、3 つ目で改名に気づいている。

いまは同じ ID の会話が、移した側(3,514 行)と作り直された側(27 行)の 2 か所にある。

公式ドキュメントの規則どおりなら、nukero で ID を指定すると 27 行が欠けた移した側が開き、ほかのフォルダからだと 2 か所にあるので「見つからない」になる。

並走 同じリポジトリを 2 本の会話で触るときは、ビルドの前に相手のビルドを、コミットの前に git を見直す
DECISION
iOS のビルドの前に xcodebuild が動いていないかを見て、動いていたら終わるまで待つ。コミットの前に git status と git log を取り直す。相手のビルドは止めない。
WHY / 仮説

2026-08-08、DayGrid で、こちらが触っていない 3 ファイルが作業ツリーで書き換わり、会話を始めて 28 分後には、別の会話がコミットとプッシュまで済ませていた。

12 時ごろには、実機向けの release ビルドが、並走していた xcodebuild … clean build に DerivedData を消されて落ちた(build.db: disk I/O error)。

DerivedData はプロジェクトのパスで決まるので、2 本の会話が同じ場所を使う。

同じ日の 12 時、Certly でも、本のフォルダの会話で直した教材の誤り 6 か所が、アプリのフォルダの会話のコミットで古い文に戻っていた(3 日後の 08-11 に気づいて直し直した)。

RESULT

規則は DayGrid のメモリーに書いた。ただメモリーはリポジトリごとなので、この規則は DayGrid のフォルダで開いた会話でしか読まれない。

Certly で起きた同じ型は、本のフォルダのメモリーに別に書いてある。

同名 リリース手順は共通スキルとアプリごとの値に分け、既存の 5 アプリはリポジトリのスキルを正にしたまま残す
DECISION

2026-09-06 に全アプリ共通のリリーススキルを ~/.claude/skills/release/ に作り、手順はスキル、版の場所やビルドのフラグなどの値は各リポジトリの docs/release.md に分けた。

すでに自前の release スキルを持っていた 5 アプリは移さず、共通スキルに「リポジトリに .claude/skills/release/ があるなら、そちらが正」と書いた。

WHY / 仮説
APK のフラグ・配信先・版を書く場所がアプリごとに違い、共通スキル 1 本に値を書くと取り違える。既存の 5 本は動いていたので触らなかった。
RESULT

2026-09-21、共通機能を棚卸ししていて、Engly のスキル(最終更新 2026-07-30)には update.json も APK_BUILD も 1 回も出てこないことが分かった(APK_BUILD を付けずにビルドすると、アプリの更新チェックが丸ごと動かない)。

同じ名前のスキルが個人とプロジェクトの両方にあると、Claude Code が動かすのは個人のほう(公式ドキュメント、2026-09-22 に確認)で、その共通スキルは「リポジトリにあるなら、そちらが正」と言って止まる。

手順が足りているのは共通スキルのほうなのに、決まりの上では足りていないほうが正になっていた。

出典 Claude Code の公式ドキュメントの URL は、ドメインだけを一括で置き換えない
DECISION

Certly の教材と本の出典に残っている旧ドメインの URL(docs.claude.com/en/docs/claude-code/…)を、まとめて新しいドメイン(code.claude.com/docs/en/…)に置き換えない。

直すなら 1 本ずつ開いて確かめる。

WHY / 仮説

2026-09-02 に、ドキュメントが新しいドメインへ移り、旧 URL は 301 で飛ぶことを確かめた。移設と一緒にページの統廃合もあって、カスタムコマンドはスキルのページにまとめられ、/iam は新しいドメインに無かった。

ドメインだけ置き換えると、301 で届いていたリンクが 404 になる。

RESULT

2026-09-22 に見直すと、旧 URL はまだ 301 で届き、/iam は「Authentication」のページとして 200 を返すようになっていた。

3 週間で答えが変わったので、ドキュメントを出典にするときは確かめた日を一緒に書く(大量の文章と問題文をどうテストするかの「取得日」と同じ扱い)。

Traps

気づきにくいこと

会話の記録の側で起きること 3 つ
  • 会話の記録は、最後に書き込んでから 30 日たつと消える(既定)。手元の 161 本のうち、最後の書き込みがいちばん古いものは 2026-08-23 で、ちょうど 30 日前だった。
    数えるのは始めた日ではないので、7 月 31 日に始めた会話が 1 本だけ残っている(8 月 27 日にも続きを書いていた)。
    7 月に Claude Code の本を書いた会話も、DayGrid を作り直した会話も、もう残っていない。判断の理由を会話の中に置いたままにすると、1 か月で読めなくなる。
    残すなら開発ノート・メモリー・CLAUDE.md のどれか(期間は settings.json の cleanupPeriodDays で変えられる)。
  • 変換した名前から、元のパスには戻せない。/ だけでなく _ も . も - になるので、~/_develop/nzw.jp は -Users-nzw--develop-nzw-jp になる。
    規則のうえでは nzw.jp と nzw-jp というフォルダは同じ名前になる。記録を探すときは、元のフォルダ名ではなく変換した名前で探す。
  • 移した会話の中には、古いパスがそのまま残っている。NUKERO! の会話 1 本の中に、/Users/nzw/_develop/game で始まるパスが 3,264 回出てくる。
    記録のフォルダを移しても中身は書き換わらないので、続きを開いた Claude は古いパスを読んで、そこへ行こうとする。改名の直後に失敗した 2 回の cd もこれだった。
Tools

スキルと MD ファイルを、どこに置いているか

ここまでは記録の話だった。手順と決まりのほうも、同じように置き場所で役割を分けている。数は 2026-09-23 時点の手元の実数。

スキル(呼ぶと読まれる手順書)

置き場所中身どこから読まれるか
個人
~/.claude/skills/
6 本。release(リリースを通す)/new-app(アプリの立ち上げ)/anonymize(社外秘をぼかす)/appstore-capture・appstore-screenshots(ストアの画像)/meno(文書を読み込むための問答)どのフォルダからでも。同じ名前ならリポジトリ側より先に動く
リポジトリ
<repo>/.claude/skills/
8 本。各アプリの release(Certly・DayGrid・Dotpile・Engly)、Dotpile の add-questions、Engly の add-tts・quiz-nav・dev-rules、社内エージェントの github-issueそのリポジトリを開いたときだけ
リポジトリ
<repo>/.claude/commands/
MyDictly の 4 本(release 591 行・build-apk・screenshots・sync-oss)。スキルより前からある書き方同上。同じ名前のスキルがあれば、スキルのほうが動く
組み込みClaude Code が持っているもの。artifact-design・dataviz・claude-api などどこからでも

30 日ぶんの会話の記録を数えると、いちばん使っているのは /release で 14 回(Certly 5・Dotpile 4・Bearise 2・DayGrid 2・nzw.jp 1)。次が artifact-design 6 回、dataviz 3 回、claude-api 2 回だった。自分で作ったスキルは、毎回やることが同じで、順番を間違えると外に出てしまうもの(リリース・ストアの画像・匿名化)に寄っている。

MD ファイル(置いただけで読まれるもの、呼ばれて読まれるもの)

ファイル役割いまの量
~/CLAUDE.mdどのリポジトリでも読まれる決まり。返答は日本語・直したら必ず自分で動かして確かめる・HTML に絵文字を使わない・発売日は books.json だけを直す・共通機能は app-kit を先に読む235 行
<repo>/CLAUDE.mdそのアプリ固有の設計と、踏んだ事故10 本。最長は Certly の 2,705 行
app-kitアプリ共通機能のカタログ。1 機能 1 ファイルで「何のため・手本はどのアプリのどのファイルか・入れ方・踏んだ事故・確かめ方」17 ファイル・908 行
<repo>/docs/release.mdリリースの値(版を書く場所・ビルドのフラグ・配信先)。手順は共通スキルが持ついまは Bearise だけ
docs/release_notes_<版>.mdその回に何を出したか。ビルドの実測値まで残すCertly は 10 本
自動メモリー次の会話に引き継ぐ事実。MEMORY.md が 1 行ずつの索引14 フォルダ・93 件
開発ノート(このサイト)なぜそう決めたか。外から読める形で残す28 ページ

書き方の決めごとは 3 つある。

置き場所の選び方は、結局このノートの表と同じになる。リポジトリの CLAUDE.md とメモリーは、そのフォルダを開いた会話しか読まない。アプリをまたいで効かせたいものは ~/CLAUDE.md か app-kit に置き、そこから各リポジトリの CLAUDE.md が指す。

Limits

上限に当たると、開いている会話が全部止まる

使用量の枠は、フォルダにも窓にも紐づいていない。アカウントに 1 つで、開いている会話とサブエージェントがまとめて減らす。止まるときは全部が同時に止まる。

出るメッセージは 4 種類ある(公式ドキュメント)。session limit(数時間で戻る枠)と weekly limit(週の枠)はモデルを変えても戻らない。Opus limit と Sonnet limit はそのモデルだけなので、/model で別のモデルに移れば続けられる。

You've hit your session limit · resets 7:50pm (Asia/Tokyo)
You've hit your weekly limit · resets 5pm (Asia/Tokyo)

この 2 週間で 3 回止まった

日付(JST)何をしていたか止まり方
2026-09-15
08:30
転職先を調べる作業を、調査のエージェント 4 つに分けていた4 つとも同時に上限で止まった。エージェントをやめて 1 社ずつ、検索の回数を絞って調べ直した
2026-09-19
11:00
本の全章の日付表記を、6 つのエージェントで直していた週の枠。解除は 17:00。同時に止まったのは 4 つの会話で、フォルダは book と certly の 2 つにまたがっていた。実際に再開したのは 22:09
2026-09-22
19:08
Certly の解説の英訳を 6 組のエージェントで回していた数時間の枠。解除は 19:50(42 分)。再開して同じ作業を続けた

3 回ともサブエージェントを並べていたときだった。公式ドキュメントにも「一度の大きなファンアウトが、数時間の枠より先に週の枠を使い切ることがある」と書いてある。1 人で書いている感覚のまま 6 つ走らせると、6 倍の速さで減る。

困るのは残量そのものではなく、途中の作業が宙に浮くことだった。9-19 は 6 つのエージェントが章を直している最中に止まったので、再開後にまず「どの章がどこまで直っているか」を数えるところからやり直している。

いまやっていること

Errors

「実行ファイルが起動できない」と出たとき

VS Code の拡張で、送った瞬間にこのエラーが出ることがある。

ReferenceError: Claude Code native binary at /Users/nzw/.vscode/extensions/
anthropic.claude-code-2.1.278-darwin-arm64/resources/native-binary/claude exists
but failed to launch. This usually means the binary does not match this system's
libc — e.g. spawning a musl-linked binary on a glibc Linux host fails because
the musl dynamic loader (/lib/ld-musl-*) is missing. Specify a matching binary
with options.pathToClaudeCodeExecutable.

文面は libc の話をしているが、実際に起きていたのは「その窓が開いているフォルダが無い」だった。2026-09-22 に game を nukero へ改名したあと、古い名前のまま開いていた窓だけがこれを出していた。拡張は毎回、その窓のフォルダを作業場所にして本体を起動するので、フォルダが無いと起動そのものが失敗する。メッセージが実行ファイルのパスを指すので、実行ファイルが壊れたように読める。

試したこと結果
その実行ファイルを直接動かす2.1.278 (Claude Code) と返る。壊れていない
同じ実行ファイルを、消えた game を作業場所にして起動ENOENT。エラーと同じ状態を作れる
同じ実行ファイルを nukero で起動版を返す
窓ごとの回数(拡張のログ)消えたフォルダの窓だけ 7 回。ほかの 3 つ(Certly・Dotpile・nzw.jp)は 0 回

直すときの順番。

Roadmap / Open Questions

これから(いま開いている穴)

References

関連

仕組みの説明は、2026-09-22 に確認した公式ドキュメントと、手元の Claude Code(VS Code 拡張 2.1.272・CLI 2.1.220)の実物に基づきます。

版によって変わります。件数は 2026-09-22 と 2026-09-23 に手元で数えたものです。

App

Claude 認定資格の対策アプリ Certly

Certly のアイコン

Claude 認定資格(CCAR-F / CCAR-P)の対策アプリ。間隔反復(FSRS-5)で忘れる直前に出し、選択肢ごとに「なぜ誤りか」まで解説する。

このノートで扱ったスキルの置き場所・--resume・会話の保存期間(cleanupPeriodDays)も、CCAR-F の問題と教科書に入っている。

Certly は Anthropic 非公式の学習ツールです。問題は公開されている試験ガイドと公式ドキュメントをもとに作ったオリジナルで、実際の試験問題ではありません。