1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claudeくん!これ作って!~環境お引越し~

1
Posted at

Claudeくん!これ作って!~環境お引越し~

Claude Code の細かい tips 記事です。
今回は、Claude Code で作り込んだ執筆環境を、別の端末へ引っ越す話です。

この環境には、文体のルール(スキル)、Claude が覚えたフィードバック(メモリ)、ステータスラインなど、数か月かけて足してきたものがあります。
単純にワークスペースのフォルダをコピーするだけでは移らないものがあるので、Claude Code の挙動再現に必要なものをまとめてお引越しさせました。

記事3行概要

  • Claude Code の挙動は、システムプロンプト、CLAUDE.md、スキル、メモリ、設定ファイルなどで決まっていて、置き場所がばらばらだよ!
  • ワークスペースと一緒に移るのは CLAUDE.md だけで、スキル、メモリ、設定はホームディレクトリの ~/.claude/ にあるので、別に移す必要があるよ!
  • スキルや設定はそのままだと移らないので、移すものをまとめたキットとインストール用のスクリプトを作ってもらったよ!

Claude Code の挙動は何で決まっているのか

ドキュメントによると、Claude Code は会話と一緒に、システムプロンプト、ツールの定義、リクエストのパラメータ、読み込んだ指示ファイル(CLAUDE.md など)をモデルに送っています。
このうち引っ越しで気にするのは、利用者が変えられるもの、つまり指示ファイル、スキル、メモリ、設定です。(システムプロンプトはどうにもならないので無視します)

読み込むファイル(CLAUDE.md)

CLAUDE.md は、セッションの開始時に毎回読み込まれる指示ファイルです。
ファイル自体の置き場所によって、どの範囲に影響するかが分かれています。

種類 置き場所 効く範囲 この環境
ユーザー ~/.claude/CLAUDE.md 自分の全プロジェクト なし
プロジェクト ./CLAUDE.md または ./.claude/CLAUDE.md そのプロジェクト あり(ワークスペース直下)
ローカル ./CLAUDE.local.md そのプロジェクトの自分だけ なし

この環境で使っているのは、ワークスペース直下の CLAUDE.md だけでした。ので、これをそのまま引っ越ししました。
中身としては、ディレクトリ構成、シリーズごとの体裁、文章規範のスキルを使うこと、下書きの進め方です。 (例えば、文章としてくどくしないとか、japanese-tech writing skillで校正するなど)

スキル

スキルは、SKILL.md に書いた手順や規範を、必要なときに Claude が読み込む仕組みです。
置き場所には次の3種類があります。

種類 置き場所 この環境
ユーザー ~/.claude/skills/<名前>/SKILL.md japanese-tech-writing(日本語の技術文章の規範)
プロジェクト ./.claude/skills/<名前>/SKILL.md なし
claude.ai から同期 ~/.claude/skills/synced/ docx、pdf、pptx、xlsx など

今回の環境では、japanese-tech-writing というskillのみ、先述のCLAUDE.md から名前で参照していたので、これを引っ越ししました。ほかは公式経由での配布なので、特に引っ越し範囲には含めてません。

メモリ

メモリ(auto memory)は、Claude が会話の中で受けた指摘や好みを、自分でファイルに書き残す仕組みです。
この環境では、「もったいぶった前置きを書かない」「案件由来の記事は実データを入れずダミーにする」といったフィードバックが入っています。

メモリは ~/.claude/projects/<プロジェクト>/memory/ に保存され、MEMORY.md の先頭 200 行(または 25KB)が毎回のセッションで読み込まれます。
ドキュメントには、メモリはその端末だけのもので、端末をまたいで共有されないと書かれています。

引っ越しで問題になるのは、<プロジェクト> の部分がワークスペースのパスで決まることです。
git リポジトリならリポジトリのパス、そうでなければ作業ディレクトリのパスが使われ、英数字以外の文字をすべて - に置き換えた名前になります。
このワークスペースは git リポジトリではないので、作業ディレクトリのパスから次のような名前になります(パスはダミーです)。

/Users/hotate/Desktop/ブログ執筆/Qiita
→ ~/.claude/projects/-Users-hotate-Desktop-------Qiita/memory/

新しい端末でワークスペースを別の場所に置くと、パスが変わるので、メモリのディレクトリ名も変わります。
古いディレクトリ名のままコピーしても、Claude Code はそのメモリを読みません。
実際、このワークスペースは以前 ~/Downloads の下にあり、~/.claude/projects/ には当時のパスから作られた -Users-<ユーザー名>-Downloads-…-Qiita/memory/ が残ったままになっていました。
なので、Claude君に、過去分含めて全部ぶち抜いてもらいました。

Claude君のメモリは、作業ディレクトリのパスそのものに依存しているため、逆に言えば作業ディレクトリを変更する場合は注意が必要です。

そのほかの設定とファイル

残りは、設定ファイルと、Claude Code が自分で書くファイルです。

対象 置き場所 この環境での中身
ユーザー設定 ~/.claude/settings.json モデル(Opus)、effort(xhigh)、language、advisor のモデル、通知音のフック、許可するコマンド、ステータスラインの指定
ステータスライン ~/.claude/statusline.sh コンテキストの使用率、トークン数、今日の利用料
コスト集計 ~/.claude/cost-dashboard/ セッションログから利用料を集計するスクリプト
アプリの状態 ~/.claude.json アカウント情報、MCP サーバーの設定、プロジェクトごとの信頼設定など。Claude Code が自分で書く
会話の履歴 ~/.claude/projects/<プロジェクト>/*.jsonl、~/.claude/history.jsonl 過去のセッションと、入力したプロンプト

この環境では、MCP サーバー、サブエージェントの定義、キーバインドは使っていなかったため、引継ぎ対象外としています。

お引越しするもの一覧

対象ごとの移し方は次のとおりです。

対象 移し方
CLAUDE.md ワークスペースのフォルダごとコピーすれば移る
スキル(自作) ~/.claude/skills/ へコピーする
メモリ 新しいパスから計算したディレクトリ名でコピーする
ユーザー設定 必要な項目だけを抜き出したテンプレートを、新しい端末の ~/.claude/settings.json に手で統合する
ステータスライン、コスト集計 ~/.claude/ へコピーする
コスト集計の定期実行(launchd) 新しい端末で手で登録する

引っ越しキット

移すものを、ワークスペースの中の 環境再現/ にまとめてもらいました。ありがとうClaude君!
ワークスペースごとコピーすれば、キットも一緒に新しい端末へ移ります。

環境再現/
├── README.md                     # 手順、移らないもの、注意
├── install.sh                    # スキル、メモリ、statusline、コスト集計を配置する
├── claude-config/
│   ├── CLAUDE.md                 # プロジェクト指示の原本
│   ├── settings.template.json    # ユーザー設定のうち執筆に関係する項目
│   └── statusline.sh
├── cost-dashboard/
│   └── claude_cost.py
├── memory/                       # MEMORY.md と各メモリ
└── skills/
    └── japanese-tech-writing/
        └── SKILL.md

新しい端末での手順は次のとおりです。

  1. Claude Code をインストールし、個人アカウントでログインする。
  2. ワークスペースのフォルダを任意の場所にコピーする。
  3. ワークスペースのルートで bash 環境再現/install.sh を実行する。
  4. settings.template.json を ~/.claude/settings.json に統合する。
  5. ワークスペースで claude を起動し、/memory でメモリが見えること、/status の Setting sources に User settings が出ることを確かめる。

install.sh の中心は、メモリのディレクトリ名の計算です。

WS="$(pwd)"
# 置換は 1 文字ごと。LC_ALL=C だと日本語 1 文字が 3 バイト分の - になってずれるので、UTF-8 ロケールで実行する
KEY="$(printf '%s' "$WS" | LC_ALL=en_US.UTF-8 sed 's/[^A-Za-z0-9]/-/g')"
MEM="$HOME/.claude/projects/$KEY/memory"

コピーは、既存のファイルがあれば飛ばすようにして、何度実行しても結果が変わらないようにしました。
settings.json には既存の設定があるはずなので、スクリプトでは触らず、手で統合します。

余談:Claude君的移行時の問題点

若干細かい話があったので、そちらをClaude君にまとめてもらいました。

移行に伴う細かい注意

キットを見直して見つかった問題

このキットは 10 月 11 日に一度作っていました。
今回、引っ越しの前に見直したところ、そのままでは動かない箇所が 3 つと、古くなった設定がありました。

1 つ目は、メモリのディレクトリ名を python3 で計算していたことです。
この端末の python3 は asdf(バージョン管理ツール)経由で、使うバージョンを決めていないディレクトリから呼ぶと No version is set for command python3 で失敗しました。
ワークスペースにはバージョンの指定ファイルがないので、install.sh は最初の計算で止まります。
Python を使わず、sed で計算するように変えました。

2 つ目は、その sed の置換がバイト単位になる問題です。
LC_ALL=C で置換すると、日本語 1 文字(UTF-8 で 3 バイト)が - 3 つになり、Claude Code が使う名前とずれました。

計算方法 /Users/hotate/Desktop/ブログ執筆/Qiita の結果
1 文字ずつ置換した名前(Claude Code が使う名前) -Users-hotate-Desktop-------Qiita
LC_ALL=C の sed -Users-hotate-Desktop-----------------Qiita
LC_ALL=en_US.UTF-8 の sed -Users-hotate-Desktop-------Qiita

表のパスはダミーです。
実際の環境でも、Claude Code が作ったディレクトリ名は 1 文字ずつ置換した名前と一致し、LC_ALL=C の結果だけがずれました。

3 つ目は、set -e と cp -n の組み合わせです。
この Mac の cp -n は、コピー先が既にあってコピーを飛ばしたとき、終了コード 1 を返しました。
set -e のもとでは、2 回目の実行でメモリのコピーを飛ばした時点でスクリプトが止まり、後に続くスキルのコピーが実行されません。
既存のファイルかどうかを自分で確かめてからコピーする形に変えました。

古くなっていたのは、設定のテンプレートです。
モデルが sonnet のまま(今は opus)で、ステータスラインも対象外になっていたので、現在の設定に合わせました。

動作確認

ダミーのホームディレクトリと、日本語を含む別のパスにワークスペースを置いて、install.sh を 2 回実行しました。

確認したこと 結果
1 回目 メモリ 5 件(MEMORY.md を含む)、スキル、ステータスライン、コスト集計の 8 ファイルをコピーした
2 回目 8 ファイルとも「既存のため省略」で、終了コード 0
メモリのディレクトリ名 /執筆環境/ の部分が 1 文字ずつ - に置き換わり、6 個の - になった
ステータスライン 同じダミーのホームディレクトリで、配置したコスト集計を 1 回実行してから statusline.sh を動かし、Today:$0.00 が表示された(ダミー側には会話の履歴がないので 0)

結論

Claude Code の挙動を決めているものは、ワークスペースの CLAUDE.md、ホームディレクトリの ~/.claude/ にあるスキル、メモリ、設定、そしてアカウントに紐づいて配られるものに分かれていました。
ワークスペースと一緒に移るのは CLAUDE.md だけで、スキル、メモリ、設定は別にコピーする必要があります。
特にメモリは、ワークスペースのパスからディレクトリ名が決まるので、新しいパスに合わせてコピーし直さないと読まれないことに注意しましょう。

記事3行概要

  • Claude Code の挙動は、システムプロンプト、CLAUDE.md、スキル、メモリ、設定ファイルなどで決まっていて、置き場所がばらばらだよ!
  • ワークスペースと一緒に移るのは CLAUDE.md だけで、スキル、メモリ、設定はホームディレクトリの ~/.claude/ にあるので、別に移す必要があるよ!
  • スキルや設定はそのままだと移らないので、移すものをまとめたキットとインストール用のスクリプトを作ってもらったよ!

参考情報

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?