Claude Codeのミスを高速で元に戻すツール「ccundo」を作った
はじめに
Claude Codeを使っていて、こんな経験はありませんか?
「あ、違う!そのファイルを編集してほしかったんじゃない!」
「この変更、やっぱり元に戻したい...」
私も先日、Claude Codeに作業をお願いしたところ、期待していた結果とは全く違うファイル操作をされてしまいました。通常であれば、再度Claude Codeに「さっきの変更を元に戻して」と伝えるのですが、これではトークンを無駄に消費してしまいます。
そこで思いました。「Gitのundo機能みたいに、Claude Codeの操作を簡単に元に戻せるツールがあったらいいのに」
というわけで、作りました。
ccundo - Claude Code専用のインテリジェントundo
ccundoは、Claude Codeのセッションファイルを直接読み取って、個別の操作を安全に元に戻すことができるnpmパッケージです。
主な特徴
自動検出: Claude Codeのセッションファイルを自動で読み取り
詳細プレビュー: 何が変更されるかを事前に確認
カスケード元に戻し: 依存関係を考慮した安全な操作
多言語対応: 英語と日本語に対応
安全なバックアップ: 変更前の状態を自動保存
ゼロコンフィグ: 設定不要で即座に使用可能
インストール
npm install -g ccundo
基本的な使い方
1. 操作履歴の確認
ccundo list
Claude Codeセッションからの操作:
1. [ACTIVE] file_edit - 2分前
ID: toolu_01XYZ...
ファイル: /project/src/app.js
2. [ACTIVE] file_create - 5分前
ID: toolu_01ABC...
ファイル: /project/src/utils.js
3. [ACTIVE] bash_command - 7分前
ID: toolu_01DEF...
コマンド: npm install express
2. 変更内容のプレビュー
ccundo preview
実際に変更を行う前に、何が元に戻されるかを詳細に確認できます。
📋 プレビュー: 1つの操作を元に戻します:
1. file_edit - 30秒前
ファイルを元に戻します: /project/src/app.js
- const newFeature = true;
+ const newFeature = false;
console.log('App started');
3. 操作の実行
ccundo undo
対話形式で安全に操作を元に戻すことができます。
実際の使用例
ケース1: 間違ったファイル編集を元に戻す
Claude Codeに「app.jsのロジックを改善して」と依頼したところ、意図しない変更が加えられてしまいました。
$ ccundo list
操作履歴:
1. [ACTIVE] file_edit - 30秒前
ID: toolu_01XYZ123
ファイル: /project/src/app.js
$ ccundo preview
📋 プレビュー: 1つの操作を元に戻します:
1. file_edit - 30秒前
ファイルを元に戻します: /project/src/app.js
- const isProduction = process.env.NODE_ENV === 'production';
+ const isProduction = false;
- if (isProduction) {
- console.log('Production mode');
- } else {
- console.log('Development mode');
- }
+ console.log('App started');
ケース2: カスケード元に戻し
複数の関連操作を一度に元に戻す場合、ccundoは依存関係を考慮して、選択した操作以降のすべての操作を安全に元に戻します。
$ ccundo preview
⚠️ カスケード元に戻し: 操作を選択すると、それ以降のすべての操作も元に戻されます。
? 元に戻す操作を選択:
❯ file_create - 1分前 (+ 2つの操作も元に戻されます)
file_edit - 2分前 (+ 1つの操作も元に戻されます)
bash_command - 5分前
📋 プレビュー: 3つの操作を元に戻します:
1. file_create - 1分前
ファイルを削除します: /project/new-feature.js
2. file_edit - 2分前
ファイルを元に戻します: /project/app.js
3. bash_command - 5分前
bashコマンドは自動で元に戻せません: npm install new-package
手動での対応が必要です
技術的な仕組み
ccundoは以下のような仕組みでClaude Codeと連携します:
-
セッションファイルの読み取り:
~/.claude/projects/
内の.jsonl
ファイルを解析 - 操作の抽出: ツール使用履歴からファイル操作とbashコマンドを識別
- 依存関係の追跡: 操作の順序を理解して安全なカスケード元に戻しを実現
-
バックアップの作成: 変更前の状態を
~/.ccundo/backups/
に保存 -
状態の維持: 元に戻し履歴と言語設定を
~/.ccundo/
で管理
日本語対応について
ccundoは完全に日本語対応しており、インターフェースのすべてのメッセージが日本語で表示されます。言語設定は永続的に保存されるため、一度設定すれば常に日本語で操作できます:
ccundo language # 現在の言語と選択肢を表示
ccundo language ja # 日本語に変更
ccundo language en # 英語に変更
日本語モードでは、すべての操作説明、プロンプト、エラーメッセージが日本語で表示されるため、より直感的に操作できます。
開発の動機
このツールを作ったきっかけは、Claude Codeでの作業中に起きた小さな「あ、違う!」という瞬間でした。Claude Codeは非常に便利で強力なツールですが、時には期待とは違う操作を行うことがあります。
そんな時、従来の方法では:
- 再度Claude Codeに修正を依頼(トークン消費)
- 手動でファイルを元に戻す(時間と労力)
- Gitで過去のコミットまで戻る(関係ない変更も一緒に戻る)
といった選択肢しかありませんでした。
ccundoがあれば、瞬時に、安全に、正確にClaude Codeの操作だけを元に戻すことができます。
まとめ
ccundoは、Claude Codeユーザーの「痒い所に手が届く」ツールを目指して開発しました。
- トークン消費を抑えられる
- 操作ミスを恐れる必要がない
- 開発フローが中断されない
- 完全に日本語対応
Claude Codeをより安心して使えるようになるツールとして、ぜひ試してみてください!
リンク
もしccundoが役に立ったら、GitHubスターをお願いします!⭐
バグ報告や機能要望も大歓迎です。
Discussion