@aku11i/phantom 0.8.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ja.md CHANGED
@@ -2,426 +2,184 @@
2
2
 
3
3
  <div align="center">
4
4
 
5
- **Git worktreeを使った並行開発のためのパワフルなCLIツール**
5
+ **Git worktreeを使ったシームレスな並行開発のためのパワフルなCLIツール**
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/@aku11i/phantom.svg)](https://www.npmjs.com/package/@aku11i/phantom)
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
9
  [![Node.js Version](https://img.shields.io/node/v/@aku11i/phantom.svg)](https://nodejs.org)
10
10
  [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/aku11i/phantom)
11
11
 
12
- [インストール](#-インストール) • [基本的な使い方](#-基本的な使い方) • [なぜPhantom?](#-なぜphantom) • [ドキュメント](#-ドキュメント)
12
+ [English](./README.md) • [インストール](#-インストール) • [なぜPhantom?](#-なぜphantom) • [基本的な使い方](#-基本的な使い方) • [ドキュメント](#-ドキュメント)
13
13
 
14
14
  </div>
15
15
 
16
- ## ✨ 概要
16
+ ## ✨ Phantomとは?
17
17
 
18
- Phantomは、Git worktreeの管理を劇的にシンプルにするCLIツールです。複数の機能開発、バグ修正、PRレビューを並行して進める現代の開発ワークフローに最適化されています。
18
+ PhantomGit worktreeをシンプルかつパワフルに操り、開発生産性を飛躍的に向上させるCLIツールです。複数のタスクを独立した作業環境で同時進行し、真のマルチタスク開発を実現します。AIエージェントを用いた並行開発に対応した次世代の並行開発ツールです。
19
19
 
20
- ### 主な特徴
20
+ ### 主な機能
21
21
 
22
22
  - 🚀 **シンプルなWorktree管理** - 直感的なコマンドでGit worktreeを作成・管理
23
- - 🔄 **シームレスなコンテキスト切り替え** - stashやcommitせずに異なる作業間を瞬時に移動
24
- - 🤖 **AI対応** - 複数のAIコーディングエージェントを並行実行するのに最適
25
- - 🎯 **ブランチとWorktreeの同期** - 各worktreeに対応するブランチを自動作成
26
- - 🐚 **インタラクティブシェル** - SSH風のworktreeナビゲーション体験
27
- - **ゼロ設定** - 賢明なデフォルト設定ですぐに使用可能
28
- - 📦 **ゼロ依存** - 外部依存関係がなく軽量で高速
23
+ - 🔄 **真のマルチタスク** - ブランチ毎に作業ディレクトリを作成し、複数のタスクを同時進行
24
+ - 🎯 **どこからでもコマンド実行** - `phantom exec <worktree> <command>`でワークツリーに対してコマンドを実行可能
25
+ - 🪟 **組み込みtmux統合** - ワークツリーを新しいペインやウィンドウで開きます
26
+ - 🔍 **fzfによるインタラクティブな選択** - worktreeの選択に組み込みのfzfオプションを使用できます
27
+ - 🎮 **シェル補完** - FishとZshの完全な自動補完サポート
28
+ - **ゼロ依存** - 高速で軽量
29
29
 
30
- ## 🤔 なぜPhantom?
31
-
32
- 現代の開発ワークフローでは、複数の機能を同時に作業することが一般的になっています。Git worktreeは素晴らしい機能ですが、パスとブランチを個別に指定する必要があり、少し面倒です。
33
-
34
- ### Git worktreeを使う際の問題点
35
-
36
- 素のGit worktreeを使う場合、worktreeのパス、ブランチ名、ベースブランチなどを毎回指定する必要があります。また、作業を切り替える際はディレクトリを移動する必要があり、複数の作業を頻繁に切り替える場合は少し手間がかかります。
30
+ ## 🚀 インストール
37
31
 
38
- ### Phantomの解決策
32
+ ### Homebrewを使用(推奨)
39
33
 
40
34
  ```bash
41
- # 従来の方法
42
- git worktree add -b feature ../project-feature origin/main
43
- cd ../project-feature
44
-
45
- # Phantomを使用
46
- phantom create feature --shell
35
+ brew install aku11i/tap/phantom
47
36
  ```
48
37
 
49
- Phantomは、worktreeとブランチの作成を1つのコマンドにまとめ、作業スペース間の移動や操作を簡単にします。
50
-
51
- ## 🚀 基本的な使い方
38
+ #### npmを使用
52
39
 
53
40
  ```bash
54
- # Phantomをインストール
55
41
  npm install -g @aku11i/phantom
42
+ ```
56
43
 
57
- # 新しいworktreeを作成
58
- phantom create feature-awesome
59
-
60
- # 既存のブランチにアタッチ
61
- phantom attach existing-branch
62
-
63
- # worktreeにジャンプ
64
- phantom shell feature-awesome
44
+ ## 🤔 なぜPhantom?
65
45
 
66
- # または直接コマンドを実行
67
- phantom exec feature-awesome npm install
68
- phantom exec feature-awesome npm test
46
+ Git worktreeは強力ですが、パスとブランチの手動管理が必要です。また、複数のワークツリーを移動するのも大変です。Phantomはこの問題を解消します:
69
47
 
70
- # すべてのworktreeをリスト表示
71
- phantom list
48
+ ```bash
49
+ # Phantomなし
50
+ git worktree add -b feature-awesome ../project-feature-awesome origin/main
51
+ cd ../project-feature-awesome
72
52
 
73
- # 完了したらクリーンアップ
74
- phantom delete feature-awesome
53
+ # Phantomあり
54
+ phantom create feature-awesome --shell
75
55
  ```
76
56
 
77
- ## 📦 インストール
57
+ ### Phantomの仕組み
78
58
 
79
- ### npmを使用(推奨)
80
- ```bash
81
- npm install -g @aku11i/phantom
82
- ```
83
-
84
- ### pnpmを使用
85
- ```bash
86
- pnpm add -g @aku11i/phantom
87
- ```
59
+ `phantom create feature-awesome`を実行すると、`.git/phantom/worktrees/`に`feature-awesome`という名前の新しいGit worktreeが作成されます。
60
+ phantomを使って作成されたすべてのワークツリーがこの場所で一元管理されます
88
61
 
89
- ### yarnを使用
90
- ```bash
91
- yarn global add @aku11i/phantom
92
62
  ```
93
-
94
- ### ソースからビルド
95
- ```bash
96
- git clone https://github.com/aku11i/phantom.git
97
- cd phantom
98
- pnpm install
99
- pnpm build
100
- npm link
63
+ your-project/ # Gitリポジトリ
64
+ ├── .git/
65
+ │ └── phantom/
66
+ │ └── worktrees/ # Phantomが管理するディレクトリ
67
+ │ ├── feature-awesome/ # ブランチ名 = worktree名
68
+ │ ├── bugfix-login/ # 別のworktree
69
+ │ └── hotfix-critical/ # さらに別のworktree
70
+ └── ...
101
71
  ```
102
72
 
103
- ## 📖 ドキュメント
73
+ このルールにより、worktreeの場所を覚える必要がなくなり、ブランチ名だけで簡単にワークツリーの操作ができます。
104
74
 
105
- ### コマンド概要
75
+ ### ✈️ 快適な開発体験を実現する機能
106
76
 
107
- #### Worktree管理
77
+ Phantomはコマンドラインツールとしての完璧な機能を備えています。開発者はまるでファーストクラスに乗っているような信頼と安心を感じます。
108
78
 
109
- ```bash
110
- # 対応するブランチを持つ新しいworktreeを作成
111
- phantom create <name>
112
- phantom create <name> --shell # 作成してインタラクティブシェルに入る
113
- phantom create <name> --exec <command> # 作成してコマンドを実行
114
- phantom create <name> --tmux # 作成して新しいtmuxウィンドウで開く
115
- phantom create <name> --tmux-vertical # 作成してtmuxペインを縦に分割
116
- phantom create <name> --tmux-v # --tmux-verticalの短縮形
117
- phantom create <name> --tmux-horizontal # 作成してtmuxペインを横に分割
118
- phantom create <name> --tmux-h # --tmux-horizontalの短縮形
119
-
120
- # worktreeを作成し、特定のファイルをコピー
121
- phantom create <name> --copy-file ".env" --copy-file ".env.local"
122
-
123
- # 既存のブランチにworktreeとしてアタッチ
124
- phantom attach <branch-name>
125
- phantom attach <branch-name> --shell # アタッチしてインタラクティブシェルに入る
126
- phantom attach <branch-name> --exec <command> # アタッチしてコマンドを実行
127
-
128
- # すべてのworktreeとその現在のステータスをリスト表示
129
- phantom list
79
+ #### シェル補完
130
80
 
131
- # worktreeへの絶対パスを取得
132
- phantom where <name>
81
+ Phantomはfishとzshの完全なシェル補完をサポートしています。タブキーでコマンドやworktree名を補完できます。
133
82
 
134
- # worktreeとそのブランチを削除
135
- phantom delete <name>
136
- phantom delete <name> --force # コミットされていない変更がある場合の強制削除
137
- ```
83
+ #### tmux統合
138
84
 
139
- #### Worktreeでの作業
85
+ ワークツリーを作成する際にtmuxを使用して新しいウィンドウやペインで開くことができます。これにより、複数の作業環境を同時に管理できます。
140
86
 
141
87
  ```bash
142
- # worktreeのコンテキストで任意のコマンドを実行
143
- phantom exec <name> <command> [args...]
88
+ # 新しいウィンドウでworktreeを作成して開く
89
+ phantom create feature-x --tmux
90
+ # ペインを分割して作成
91
+ phantom create feature-y --tmux-vertical
92
+ phantom create feature-z --tmux-horizontal
144
93
 
145
- # 例:
146
- phantom exec feature-auth npm install
147
- phantom exec feature-auth npm run test
148
- phantom exec feature-auth git status
94
+ # 既存のworktreeをtmuxで開く
95
+ phantom shell feature-x --tmux
96
+ phantom shell feature-y --tmux-v
149
97
 
150
- # worktreeでインタラクティブシェルセッションを開く
151
- phantom shell <name>
98
+ # 結果: 複数のworktreeが同時に表示され、それぞれで独立した作業が可能
152
99
  ```
153
100
 
154
- ### 環境変数
101
+ #### エディタ統合
155
102
 
156
- `phantom shell`でインタラクティブシェルを開いた際、以下の環境変数が設定されます:
103
+ PhantomはVS CodeやCursorなどのエディタでも快適に使用できます。エディタを指定してワークツリーを開くことができます。
157
104
 
158
- - `PHANTOM` - phantom shellから起動されたすべてのプロセスに"1"がセットされる
159
- - `PHANTOM_NAME` - 現在のworktreeの名前
160
- - `PHANTOM_PATH` - worktreeディレクトリへの絶対パス
105
+ ```bash
106
+ # VS Codeで開く
107
+ phantom create feature --exec "code ."
161
108
 
162
- ## 💡 ユースケース
109
+ # または既存のworktreeを開く
110
+ phantom exec feature code .
163
111
 
164
- Phantomは単なるworktreeラッパーではなく、開発生産性を劇的に向上させるツールです。以下に実際の使用例を紹介します。
112
+ # Cursorで開く
113
+ phantom create feature --exec "cursor ."
114
+ phantom exec feature cursor .
115
+ ```
165
116
 
166
- ### tmuxとの統合
117
+ #### fzf統合
167
118
 
168
- tmuxとPhantomを組み合わせることで、驚くほど効率的なワークフローを実現できます:
119
+ fzfを使用したインタラクティブな検索で素早くworktreeを選択できます。
169
120
 
170
121
  ```bash
171
- # 新しいtmuxウィンドウを開いて、同時にworktreeを作成
172
- tmux new-window 'phantom create --shell new-feature'
173
- ```
122
+ # fzfでworktreeを選択してシェルを開く
123
+ phantom shell --fzf
174
124
 
175
- このたった1行のコマンドで:
176
- 1. `new-feature`用の新しいGit worktreeを作成 ✨
177
- 2. 新しいtmuxウィンドウを開く 🪟
178
- 3. 新しいworktreeでインタラクティブシェルを起動 🚀
125
+ # fzfでworktreeを選択して削除
126
+ phantom delete --fzf
127
+ ```
179
128
 
180
- 複数の機能を並行して開発する際に、各機能を独立したtmuxウィンドウで管理できます。
129
+ ## 🔍 基本的な使い方
181
130
 
182
- ### VS Codeとの統合
131
+ ### 新しいワークツリーの作成
183
132
 
184
133
  ```bash
185
- # worktreeを作成してすぐにVS Codeで開く
186
- phantom create --exec "code ." new-feature
187
- phantom create --exec "cursor ." new-feature # Cursorでも動作します!
134
+ phantom create feature-awesome
188
135
 
189
- # 既存のブランチにアタッチしてVS Codeで開く
190
- phantom attach --exec "code ." feature/existing-branch
136
+ phantom list
191
137
  ```
192
138
 
193
- ### 並行開発ワークフロー
139
+ ### worktreeで新しいシェルを起動
194
140
 
195
141
  ```bash
196
- # 機能開発中にバグレポートが来た場合
197
- phantom create hotfix-critical # バグ修正用のworktreeを作成
198
- phantom shell hotfix-critical # すぐに作業開始
142
+ phantom shell feature-awesome
199
143
 
200
- # 修正後、元の機能開発に戻る
201
- exit # hotfixシェルを終了
202
- phantom shell feature-awesome # 機能開発を続行
203
- ```
144
+ # 開発作業を開始
204
145
 
205
- ## 🔄 Phantom vs Git Worktree
206
-
207
- | 機能 | Git Worktree | Phantom |
208
- |---------|--------------|---------|
209
- | worktree + ブランチの作成 | `git worktree add -b feature ../project-feature` | `phantom create feature` |
210
- | 既存のブランチにアタッチ | `git worktree add ../project-feature feature` | `phantom attach feature` |
211
- | worktreeのリスト表示 | `git worktree list` | `phantom list` |
212
- | worktreeへの移動 | `cd ../project-feature` | `phantom shell feature` |
213
- | worktreeでコマンド実行 | `cd ../project-feature && npm test` | `phantom exec feature npm test` |
214
- | worktreeの削除 | `git worktree remove ../project-feature` | `phantom delete feature` |
215
-
216
- ## ⚙️ 設定
217
-
218
- Phantomはリポジトリルートの`phantom.config.json`ファイルによる設定をサポートします。これにより、新しいworktreeを作成する際に自動的にコピーされるファイルの定義や、実行されるコマンドを設定できます。
219
-
220
- ### 設定ファイル
221
-
222
- リポジトリルートに`phantom.config.json`ファイルを作成します:
223
-
224
- ```json
225
- {
226
- "postCreate": {
227
- "copyFiles": [
228
- ".env",
229
- ".env.local",
230
- "config/local.json"
231
- ],
232
- "commands": [
233
- "pnpm install",
234
- "pnpm build"
235
- ]
236
- }
237
- }
146
+ # 作業が終わったらシェルを終了
147
+ exit
238
148
  ```
239
149
 
240
- ### ファイルコピー機能
241
-
242
- 新しいworktreeを作成する際、Phantomは現在のworktreeから新しいworktreeへ指定されたファイルを自動的にコピーできます。これは以下のような場合に特に便利です:
243
-
244
- - 環境設定ファイル(`.env`、`.env.local`)
245
- - ローカル開発設定
246
- - gitignoreされているシークレットファイル
247
-
248
- ファイルのコピーは2つの方法で指定できます:
249
-
250
- 1. **コマンドラインオプションを使用:**
251
- ```bash
252
- phantom create feature --copy-file ".env" --copy-file ".env.local" --copy-file "config/local.json"
253
- ```
254
-
255
- 2. **設定ファイルを使用:**
256
- `phantom.config.json`で一度設定すれば、すべての新しいworktreeに適用されます。
257
-
258
- 3. **両方を使用:**
259
- 設定ファイルとコマンドラインオプションの両方で指定されたファイルはマージされます(重複は削除されます)。
260
-
261
- > **注意:** 現在、globパターンはサポートされていません。ファイルはリポジトリルートからの相対パスで正確に指定する必要があります。
150
+ ### 任意のworktreeでコマンドを実行
262
151
 
263
- ### 作成後コマンド
264
-
265
- Phantomは新しいworktreeを作成した後に自動的にコマンドを実行できます。これは以下のような場合に便利です:
266
-
267
- - 依存関係のインストール(`pnpm install`、`npm install`、`yarn install`)
268
- - プロジェクトのビルド
269
- - 開発環境のセットアップ
270
- - データベースマイグレーションの実行
271
- - プロジェクト固有のその他のセットアップタスク
272
-
273
- コマンドは設定ファイルで指定された順序で実行されます。コマンドが失敗した場合、作成プロセスは停止し、エラーが報告されます。
274
-
275
- 使用例:
276
- ```json
277
- {
278
- "postCreate": {
279
- "commands": [
280
- "pnpm install", // 依存関係をインストール
281
- "pnpm db:migrate", // データベースマイグレーションを実行
282
- "cp .env.example .env", // テンプレートから環境ファイルを作成
283
- "pnpm build" // プロジェクトをビルド
284
- ]
285
- }
286
- }
152
+ ```bash
153
+ phantom exec feature-awesome {実行したいコマンド}
154
+ # 例: phantom exec feature-awesome npm run build
287
155
  ```
288
156
 
289
- ## 🛠️ 開発
157
+ ### 完了したらクリーンアップ
290
158
 
291
159
  ```bash
292
- # クローンとセットアップ
293
- git clone https://github.com/aku11i/phantom.git
294
- cd phantom
295
- pnpm install
160
+ phantom delete feature-awesome
161
+ ```
296
162
 
297
- # テストの実行
298
- pnpm test
299
163
 
300
- # 特定のテストファイルを実行
301
- pnpm test:file src/core/worktree/create.test.js
164
+ ## 📚 ドキュメント
302
165
 
303
- # 型チェック
304
- pnpm typecheck
166
+ - **[はじめに](./docs/getting-started.md)** - 一般的なワークフローとヒント
167
+ - **[コマンドリファレンス](./docs/commands.md)** - すべてのコマンドとオプション
168
+ - **[設定](./docs/configuration.md)** - 自動ファイルコピーと作成後コマンドの設定
305
169
 
306
- # リンティング
307
- pnpm lint
308
170
 
309
- # すべてのチェックを実行
310
- pnpm ready
311
- ```
171
+ ## 🤝 コントリビュート
312
172
 
313
- ## 🚀 リリースプロセス
314
-
315
- Phantomの新しいバージョンをリリースするには:
316
-
317
- 1. **mainブランチにいて最新の状態であることを確認**
318
- ```bash
319
- git checkout main
320
- git pull
321
- ```
322
-
323
- 2. **すべてのチェックを実行**
324
- ```bash
325
- pnpm ready
326
- ```
327
-
328
- 3. **バージョンを上げる**
329
- ```bash
330
- # パッチリリース(バグ修正)の場合
331
- npm version patch
332
-
333
- # マイナーリリース(新機能)の場合
334
- npm version minor
335
-
336
- # メジャーリリース(破壊的変更)の場合
337
- npm version major
338
- ```
339
-
340
- 4. **バージョンコミットとタグをプッシュ**
341
- ```bash
342
- git push && git push --tags
343
- ```
344
-
345
- 5. **npmに公開**
346
- ```bash
347
- pnpm publish
348
- ```
349
-
350
- 6. **GitHubリリースを作成**
351
- ```bash
352
- # 自動生成されたノートでリリースを作成
353
- gh release create v<version> \
354
- --title "Phantom v<version>" \
355
- --generate-notes \
356
- --target main
357
-
358
- # v0.1.3の例:
359
- gh release create v0.1.3 \
360
- --title "Phantom v0.1.3" \
361
- --generate-notes \
362
- --target main
363
- ```
364
-
365
- 7. **リリースノートを分かりやすく更新**
366
- - 自動生成されたリリースノートを`gh release view v<version>`でレビュー
367
- - 重要な詳細についてはPRの説明を`gh pr view <number>`で確認
368
- - リリースノートをよりユーザーフレンドリーに更新:
369
- - 変更をカテゴリー別にグループ化(機能、バグ修正、改善)
370
- - 新機能には使用例を追加
371
- - 変更の影響を平易な言葉で説明
372
- - セキュリティ修正と破壊的変更を強調
373
-
374
- ```bash
375
- # リリースノートを編集
376
- gh release edit v<version> --notes "$(cat <<'EOF'
377
- ## 🚀 v<version> の新機能
378
-
379
- ### ✨ 新機能
380
- - 使用例付きの機能説明
381
-
382
- ### 🐛 バグ修正
383
- - 修正内容の明確な説明
384
-
385
- ### 🛠️ 改善
386
- - パフォーマンス、セキュリティ、その他の改善
387
-
388
- EOF
389
- )"
390
- ```
391
-
392
- ビルドプロセスは`prepublishOnly`スクリプトによって自動的に処理され、以下を行います:
393
- - すべてのテストとチェックを実行
394
- - esbuildを使用してTypeScriptソースをJavaScriptにビルド
395
- - `dist/`ディレクトリにバンドルされた実行可能ファイルを作成
396
-
397
- **注意**: `dist/`ディレクトリはgit-ignoreされており、公開プロセス中にのみ作成されます。
398
-
399
- ## 🤝 コントリビューション
400
-
401
- コントリビューションは歓迎します!プルリクエストを自由に送信してください。大きな変更については、まず変更したい内容について議論するためにissueを開いてください。
402
-
403
- 以下を必ず行ってください:
404
- - 適切にテストを更新する
405
- - 既存のコードスタイルに従う
406
- - 提出前に`pnpm ready`を実行する
173
+ コントリビュートは歓迎します![コントリビューションガイド](./CONTRIBUTING.md)をご覧ください:
174
+ - 開発環境のセットアップ
175
+ - コードスタイルガイドライン
176
+ - テスト要件
177
+ - プルリクエストプロセス
407
178
 
408
179
  ## 📄 ライセンス
409
180
 
410
- このプロジェクトはMITライセンスの下でライセンスされています - 詳細は[LICENSE](LICENSE)ファイルをご覧ください。
181
+ MIT License - [LICENSE](LICENSE)を参照
411
182
 
412
183
  ## 🙏 謝辞
413
184
 
414
- - より良い並行開発ワークフローの必要性に触発されて
415
- - AI支援開発時代のために構築
416
- - すべてのコントリビューターに特別な感謝を
417
-
418
- ## 🤝 コントリビューター
419
-
420
- - [@aku11i](https://github.com/aku11i) - プロジェクトの作成者およびメンテナー
421
- - [Claude (Anthropic)](https://claude.ai) - コードベースの大部分を実装したAIペアプログラマー
422
-
423
- ---
424
-
425
- <div align="center">
426
- <a href="https://github.com/aku11i">aku11i</a>と<a href="https://claude.ai">Claude</a>により👻で作成
427
- </div>
185
+ 👻 [@aku11i](https://github.com/aku11i)と[Claude](https://claude.ai)によって作られました