はじめに
ターミナルから直接AIを呼び出せる Claude Code、日々の開発や研究で使い倒している方も多いと思います。非常に強力なツールですが、頻繁に行われるアップデートの際に地味なストレスを抱えていませんか?
Node.jsのバージョン管理に nvm を使っている環境で、npm install -g @anthropic-ai/claude-code を実行してアップデートしようとすると、ENOTEMPTY というエラーが頻発することがあります。
この煩わしいエラーを完全に回避し、一発で安全に最新版へアップデートできるClaude Code用の拡張Skill「update-claude-skill」を作成し、公開しました!
🔗 amu815/update-claude-skill (GitHub)
解決したかった課題:ENOTEMPTYエラーの正体
nvm 環境下でnpmパッケージをグローバルにインプレースアップグレード(上書き更新)しようとすると、npmが既存のパッケージディレクトリをリネームしようとします。
この際、ファイルがまだ使用中であったり、ファイルシステム上の競合状態が発生したりすると、以下のようなエラーが出てアップデートが失敗します。
npm error code ENOTEMPTY
npm error syscall rename
npm error path /home/user/.nvm/versions/node/v22.x.x/lib/node_modules/@anthropic-ai/claude-code
これが発生するたびに、手動で該当のディレクトリを探して削除してから再インストールする必要があり、非常に面倒でした。
アプローチ:古いディレクトリを消してクリーンインストールする
仕組みは非常にシンプルです。
インプレースアップグレードが失敗するなら、「事前に古いパッケージディレクトリを完全に削除(rm -rf)してから、最新版をクリーンインストールする」というアプローチをとります。
npm root -g コマンドを使うことで、現在のNode.jsバージョンに対応する正しいグローバルパッケージパスを動的に解決できるため、安全かつ確実にディレクトリを特定して削除できます。
これを自動で行うシェル関数 update-claude を、お使いの環境にサクッとインストールするSkillを作りました。
インストールと使い方
1. Skillとしてのインストール(推奨)
Claude Codeの機能を活用してインストールするのが最も簡単です。ターミナルで以下を実行します。
npx skills add amu815/update-claude-skill -g -y
その後、Claude Codeを起動して以下のようにプロンプトを投げるか、直接コマンドを呼び出します。
- Claude Codeに 「update-claudeスキルをインストールして」 とお願いする
- または
/update-claudeを実行する
これで、お使いのシェルの設定ファイル(.zshrcや.bashrcなど)に、安全なアップデート用の関数が自動で追記されます。
(※Claude Codeを経由せず、手動で設定ファイルに追記するワンライナーも GitHubのREADME に記載しています)
2. アップデートの実行
インストール後は、ターミナルで以下のコマンドを叩くだけです。
update-claude
このコマンドを実行すると、以下の処理が自動で行われます。
- 現在のClaude Codeのバージョンを表示
- 古いパッケージディレクトリを安全に削除
- 最新バージョンをクリーンインストール
- インストール完了後に新しいバージョン番号を表示して成功を確認
おわりに
毎日使うツールのメンテナンスは、思考のコンテキストを切らさないためにも極力ストレスフリーにしたいものです。
私と同じように nvm 環境でClaude Codeを使っていて、アップデートのたびに ENOTEMPTY に悩まされている方は、ぜひ導入してみてください!
動作確認やフィードバック、Issueなどがあれば、GitHubのリポジトリでお待ちしております!
🔗 リポジトリ: amu815/update-claude-skill