@handsupmin/gc-tree 0.1.4 → 0.2.1

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
@@ -19,44 +19,33 @@ Git のブランチ感覚で、複数のコンテキストを分けて持てま
19
19
 
20
20
  </div>
21
21
 
22
- 日々の仕事が複数のリポジトリ、プロダクト、クライアント、ワークフローにまたがっている開発者のために作りました。
23
-
24
- `gc-tree` は、AI コーディングツールに **リポジトリの外側で再利用できるコンテキストレイヤー** を足してくれます。長く使う前提の文脈は残しつつ、関係あるリポジトリにだけ効かせ、無関係な場所では静かに引っ込みます。
25
-
26
22
  ---
27
23
 
28
- ## なぜ gc-tree なのか
24
+ ## 問題
29
25
 
30
- AI エージェントを本気で実務に入れると、リポジトリローカルのコンテキストだけではすぐ足りなくなります。
26
+ Claude Code や Codex を毎日使っています。でも実際の仕事は複数のリポジトリ、プロダクト、クライアントにまたがっていて——AI ツールは今開いているファイルしか知りません。
31
27
 
32
- 作業が複数のリポジトリやワークストリームに広がると、たとえばこんなことが起きがちです。
28
+ だから毎回こうなってしまいます:
33
29
 
34
- - 長期コンテキストがプロンプトの中に押し込まれていく
35
- - 無関係な文脈が別のリポジトリまで漏れてしまう
36
- - 新しいセッションを開くたびに同じ説明をやり直すことになる
37
- - クライアントやプロダクトの知識がチャット履歴の中に埋もれる
38
- - 作業を切り替えるたびに頭の中で手動で文脈を切り替える必要がある
30
+ - どのリポジトリが一緒に動くか、また最初から説明する
31
+ - 同じアーキテクチャ文書をプロンプトに貼り直す
32
+ - 先週「もう知っていた」規約をもう一度教える
33
+ - 今のリポジトリと無関係なコンテキストを手作業で取り除く
39
34
 
40
- `gc-tree` は、Codex や Claude Code のような AI コーディングツールをすでにしっかり使っていて、コンテキスト管理まで手作業で回したくない人のための道具です。
35
+ これは AI の問題ではありません。**コンテキスト管理の問題**です。
41
36
 
42
37
  ---
43
38
 
44
- ## これでできること
45
-
46
- - **長期コンテキストを複数持てる**
47
- プロダクト、クライアント、ワークストリームごとに別々のコンテキストレーンを維持できます。
39
+ ## こんな人に向いています
48
40
 
49
- - **リポジトリ単位で関連性を絞れる**
50
- どのコンテキストをどのリポジトリにだけ適用するかをはっきり決められます。
41
+ 以下に当てはまるなら、gc-tree が一番よく効きます:
51
42
 
52
- - **スコープを賢くガードできる**
53
- まだ紐付いていないリポジトリに入ったとき、今回だけ続けるか、ここでは常に使うか、ここでは無視するかを選べます。
43
+ - **複数のリポジトリ**にまたがって仕事をしている(モノレポチーム、プラットフォーム + クライアントリポジトリ、バックエンド + フロントエンドスタック)
44
+ - 同じ週に**複数のプロダクトやクライアント**を行き来している
45
+ - AI セッションを開くたびに**同じコンテキストを繰り返し説明**している
46
+ - AI ツールに今のファイルだけでなく**規約・アーキテクチャ・ドメイン知識**まで理解してほしい
54
47
 
55
- - **ガイド付きでオンボードと更新ができる**
56
- Codex、Claude Code、あるいは両方を使いながら、コンテキストを育てていけます。
57
-
58
- - **summary-first の markdown ナレッジとして残せる**
59
- 隠れたメモリではなくファイルに残し、ツールにはまず短い要約から読ませられます。
48
+ リポジトリ一つ、プロダクト一つで完結するなら、このツールは必要ありません。`CLAUDE.md` や `.cursorrules` で十分です。
60
49
 
61
50
  ---
62
51
 
@@ -67,166 +56,193 @@ npm install -g @handsupmin/gc-tree
67
56
  gctree init
68
57
  ```
69
58
 
70
- これでスタート準備は完了です。
71
- あとはいつもどおり開発を進めれば大丈夫。`gc-tree` が普段の流れにグローバルコンテキストのレーンを足してくれます。
59
+ `gctree init` が次のことを案内してくれます:
60
+
61
+ 1. プロバイダーの選択:`claude-code`、`codex`、または `both`
62
+ 2. 現在のリポジトリへの統合ファイルのインストール
63
+ 3. `main` gc-branch のガイド付きオンボーディング実行
72
64
 
73
- - **CLI コマンド:** `gctree`
74
- - **要件:** Node.js 20+
65
+ その後は、AI ツールが計画・実装の前に `gctree resolve` を呼ぶ流れを自然に覚えます。
75
66
 
76
- ソースから試す場合は [docs/local-development.ja.md](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.ja.md) を参照してください。
67
+ - **CLI:** `gctree`
68
+ - **動作条件:** Node.js 20+
77
69
 
78
70
  ---
79
71
 
80
- ## よく使う流れ
72
+ ## gc-tree がやること
81
73
 
82
- ### 作業に専用レーンが欲しくなったら新しいコンテキストを切る
74
+ `gc-tree` は**リポジトリより上のレイヤー**に位置します。コンテキストを構造化された Markdown ファイルに保存し、AI ツールがセッションのたびに関連するものだけを自動で引き出せるようにします。
83
75
 
84
76
  ```bash
85
- gctree checkout -b client-b
86
- gctree onboard
77
+ gctree resolve --query "auth token rotation policy"
87
78
  ```
88
79
 
89
- クライアント、プロダクト、移行案件、期間限定の施策など、文脈を分けておきたい仕事は gc-branch を切っておくと楽です。
90
-
91
- ### 後から長期コンテキストを育てる
92
-
93
- ```bash
94
- gctree update-global-context
80
+ ```json
81
+ {
82
+ "gc_branch": "main",
83
+ "matches": [
84
+ {
85
+ "title": "認証 & セッション規約",
86
+ "score": 4,
87
+ "summary": "すべてのリクエストで JWT rotation、refresh token は httpOnly Cookie に保存、access token の TTL は 15 分",
88
+ "excerpt": "## 認証フロー\nAccess token:15 分 TTL、認証リクエストのたびに rotation..."
89
+ }
90
+ ]
91
+ }
95
92
  ```
96
93
 
97
- 作業が進んだら、アクティブな gc-branch に長く効く文脈を足していきます。
94
+ AI ツールに渡るのは正しいコンテキスト——ナレッジベース全体ではなく、関係する部分だけです。
98
95
 
99
- 短い別名:
96
+ **実測値:1 クエリあたり全コンテキストの約 4% だけ注入されます。** 残り 96% は実際に必要になるまでディスクに留まり、トークンウィンドウに入りません。
100
97
 
101
- ```bash
102
- gctree update-gc
103
- gctree ugc
104
- ```
98
+ ---
105
99
 
106
- ### 必要になったタイミングでコンテキストを引く
100
+ ## CLAUDE.md や cursor rules との違いは?
107
101
 
108
- ```bash
109
- gctree resolve --query "auth token rotation"
110
- ```
102
+ `CLAUDE.md` は優れています——一つのリポジトリにおいては。
103
+
104
+ 複数のリポジトリ・クライアント・ワークストリームが増えた瞬間:
111
105
 
112
- 必要な瞬間だけ、関係ある文脈を呼び戻せば十分です。
106
+ | | `CLAUDE.md` / cursor rules | `gc-tree` |
107
+ | -------------------- | -------------------------- | ---------------------------------------- |
108
+ | スコープ | リポジトリ一つ | 複数リポジトリ、コンテキスト一つ |
109
+ | 永続化 | リポジトリ内のファイル | リポジトリ外に保存、セッション間で再利用 |
110
+ | コンテキスト切り替え | ファイルを手で編集 | `gctree checkout client-b` |
111
+ | 関連性フィルタリング | 全部か何もないか | 一致したドキュメントだけ注入(約 4%) |
112
+ | オンボーディング | 手書き | AI ツールがガイド |
113
+ | Codex 対応 | ✅ | ✅ |
114
+ | Claude Code 対応 | ✅ | ✅ |
113
115
 
114
116
  ---
115
117
 
116
- ## しっくりくる理由
118
+ ## 検証済みのパフォーマンス
117
119
 
118
- **Git のブランチみたいに複数のコンテキストを持てるのに、Git のブランチみたいに逐一面倒を見る必要はありません。**
120
+ 実際の社内ドキュメントでテスト(Notion エクスポート 4 件、日本語・英語混合クエリ):
119
121
 
120
- たとえば次のようにコンテキストを分けられます。
122
+ | 指標 | 結果 |
123
+ | -------------------------------------------- | ----------------- |
124
+ | Recall——関連クエリが正しい文書を見つける割合 | **100%**(16/16) |
125
+ | Precision——無関係なクエリが空を返す割合 | **80%**(4/5) |
126
+ | F1 スコア | **88.9%** |
127
+ | クエリあたりの注入トークン割合(全体比) | **約 4%** |
128
+ | 日英混合クエリ対応 | ✅ |
121
129
 
122
- - クライアントごと
123
- - プロダクトラインごと
124
- - プラットフォームチームごと
125
- - バックエンドとフロントエンドをまとめた共有スタック
126
- - 一時的な施策や移行プロジェクト
130
+ ---
127
131
 
128
- そして、ブランチ感覚のコマンドで行き来できます。
132
+ ## Claude Code と Codex、両方で動作検証済み
129
133
 
130
134
  ```bash
131
- gctree checkout -b client-b
132
- gctree checkout main
135
+ gctree scaffold --host claude-code # CLAUDE.md スニペット + /gc-onboard、/gc-update-global-context をインストール
136
+ gctree scaffold --host codex # AGENTS.md スニペット + $gc-onboard、$gc-update-global-context をインストール
137
+ gctree scaffold --host both # 両方同時に
133
138
  ```
134
139
 
135
- ただし Git と違って、その切り替えを常に人が意識して管理する必要はありません。
140
+ どちらのプロバイダーも同じ基盤のコンテキストストアを使います。一度オンボーディングすれば、どちらのツールからでも使えます。
136
141
 
137
- 今いるリポジトリが現在のコンテキストのスコープ外なら、`gc-tree` はその文脈を「今は関係ないもの」として扱えます。だから、無関係なコンテキストが別のセッションに混ざり込みません。
142
+ **Claude Code** — `/gc-resolve-context`、`/gc-onboard`、`/gc-update-global-context` スラッシュコマンドを使用。
138
143
 
139
- その結果、長く使うコンテキストを複数抱えたままでも、毎回すべてを全部のセッションに持ち込まずに済みます。
144
+ **Codex** — `$gc-resolve-context`、`$gc-onboard`、`$gc-update-global-context` スキルを使用。`codex exec` で実際に検証済み:
140
145
 
141
- ---
146
+ ```
147
+ gctree status → gc_branch: main、doc_count: 2
148
+ gctree resolve --query 'NestJS DTO plainToInstance'
149
+ →「バックエンドコーディング規約」にマッチ(score: 3)
150
+ → DTO:class-transformer plainToInstance、class-validator 必須
151
+ → エラー処理:HttpException ベースのカスタム例外、raw Error の throw 禁止
152
+ ```
142
153
 
143
- ## 現実的なワークフロー
154
+ ---
144
155
 
145
- たとえば、こんな構成で仕事をしているとします。
156
+ ## よく使う流れ
146
157
 
147
- - 共通のプラットフォームリポジトリが 1 つ
148
- - クライアント向けリポジトリが 2 つ
149
- - 社内ツール用リポジトリが 1 つ
158
+ ### ワークストリームごとに別々のコンテキストを持つ
150
159
 
151
- `gc-tree` がないと、新しい AI セッションを開くたびに説明し直すことになります。
160
+ ```bash
161
+ gctree checkout -b client-b
162
+ gctree onboard
163
+ ```
152
164
 
153
- - 今どのクライアントの話なのか
154
- - どのリポジトリ同士がひとまとまりなのか
155
- - ここで重要なワークフローは何か
156
- - 今はどの文脈がむしろノイズになるのか
165
+ 各 gc-branch は完全に独立したコンテキストレーンです。Git ブランチと同じ感覚で行き来できます。
157
166
 
158
- `gc-tree` があれば、レーンごとにコンテキストを持ち分けて、セッションをまたいで再利用し、repo scope のルールで不要な文脈の流入も防げます。
167
+ ### 必要なときに関連コンテキストを引き出す
159
168
 
160
- 要するに、本当にやりたいのはこういうことです。
169
+ ```bash
170
+ gctree resolve --query "billing retry policy"
171
+ ```
161
172
 
162
- > プロンプトをもっと溜め込むことではなく、
163
- > **仕事の単位に合ったコンテキストを、正しいレイヤーで管理すること。**
173
+ 一致したドキュメントだけが返ります——タイトル、要約、抜粋。要約で足りなければ、ツールが全文を読みます。
164
174
 
165
- ---
175
+ ### コンテキストを常に最新に保つ
166
176
 
167
- ## コア概念
177
+ ```bash
178
+ gctree update-global-context # または:gctree update-gc / gctree ugc
179
+ ```
168
180
 
169
- - **gc-branch**
170
- 1 つのプロダクト、クライアント、ワークストリーム、ドメインのための長期コンテキストレーンです。
181
+ ガイド付き更新フロー——AI ツールが何が変わったかを確認し、新しいコンテキストを gc-branch に書き戻します。
171
182
 
172
- - **repo scope**
173
- そのコンテキストをどのリポジトリで効かせるかを決めるルールです。
183
+ ### コンテキストを特定のリポジトリに限定する
174
184
 
175
- - **provider-guided flow**
176
- JSON を手で書く代わりに、好みの AI コーディングツールでオンボードと更新を進める流れです。
185
+ ```bash
186
+ gctree set-repo-scope --branch client-b --include # 現在のリポジトリを含める
187
+ gctree set-repo-scope --branch client-b --exclude # 現在のリポジトリを除外する
188
+ ```
177
189
 
178
- - **context tree**
179
- `gc-tree` は内部的には、ブランチを意識したファイルベースの知識ツリーとしてコンテキストを整理します。
180
- ユーザーが得る価値は、プロジェクトの外までつながる再利用可能なコンテキストです。
190
+ `gc-tree` は関係のないリポジトリにコンテキストを注入しません。
181
191
 
182
192
  ---
183
193
 
184
- ## ランタイムで見える provider コマンド
194
+ ## コンテキストの保存構造
185
195
 
186
- scaffold 後に見えるコマンドは次の通りです。
187
-
188
- - **Codex:** `$gc-onboard`, `$gc-update-global-context`
189
- - **Claude Code:** `/gc-onboard`, `/gc-update-global-context`
196
+ ```
197
+ ~/.gctree/
198
+ branches/
199
+ main/
200
+ index.md ← 圧縮インデックス、≤2000 文字、最初にロード
201
+ docs/
202
+ auth.md ← 全文、必要なときだけ読む
203
+ architecture.md
204
+ client-b/
205
+ index.md
206
+ docs/
207
+ ...
208
+ branch-repo-map.json ← どのリポジトリがどの gc-branch に属するか
209
+ settings.json ← 優先プロバイダー、言語
210
+ ```
190
211
 
191
- これらのコマンドは、長期コンテキストを集めたり更新したりする前に、現在の gc-branch を必ず明示し、ユーザーが明示的に切り替えを求めない限り、保存された言語を最後まで維持するべきです。
212
+ コンテキストはリポジトリの外に保存されます——`.gitignore` 設定不要、誤コミットの心配なし、同じ gc-branch を使うすべてのプロジェクトで再利用可能。
192
213
 
193
214
  ---
194
215
 
195
- ## 主要コマンド一覧
196
-
197
- | 目的 | コマンド |
198
- | --- | --- |
199
- | gc-tree を初期化して provider を選ぶ | `gctree init` |
200
- | 現在の gc-branch を確認する | `gctree status` |
201
- | アクティブなコンテキストを検索する | `gctree resolve --query "..."` |
202
- | リポジトリ範囲ルールを確認する | `gctree repo-map` |
203
- | gc-branch に対してリポジトリを明示的に含める / 除外する | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
204
- | gc-branch を作成 / 切り替えする | `gctree checkout <branch>` / `gctree checkout -b <branch>` |
205
- | 空の gc-branch をオンボードする | `gctree onboard` |
206
- | 現在の gc-branch を長期更新する | `gctree update-global-context` / `gctree update-gc` / `gctree ugc` |
207
- | 再オンボーディング前に gc-branch をリセットする | `gctree reset-gc-branch --branch <name> --yes` |
208
- | 別環境に手動で scaffold を入れる | `gctree scaffold --host codex --target /path/to/repo` |
216
+ ## 主要コマンド
217
+
218
+ | 目的 | コマンド |
219
+ | ------------------------------------------------ | --------------------------------------------------------------- |
220
+ | gc-tree を初期化してプロバイダーを選ぶ | `gctree init` |
221
+ | アクティブな gc-branch を確認する | `gctree status` |
222
+ | アクティブなコンテキストを検索する | `gctree resolve --query "..."` |
223
+ | gc-branch を作成または切り替える | `gctree checkout <branch>` / `gctree checkout -b <branch>` |
224
+ | gc-branch を一覧表示する | `gctree branches` |
225
+ | 空の gc-branch をガイド付きオンボーディングする | `gctree onboard` |
226
+ | アクティブな gc-branch をガイド付き更新する | `gctree update-global-context` / `gctree ugc` |
227
+ | リポジトリ範囲ルールを確認する | `gctree repo-map` |
228
+ | 現在のリポジトリを gc-branch に含める / 除外する | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
229
+ | 再オンボーディング前に gc-branch をリセットする | `gctree reset-gc-branch --branch <name> --yes` |
230
+ | 別の環境に scaffold をインストールする | `gctree scaffold --host codex --target /path/to/repo` |
209
231
 
210
232
  ---
211
233
 
212
234
  ## ドキュメント
213
235
 
214
- 詳細ドキュメントは [`docs/`](https://github.com/handsupmin/gc-tree/tree/main/docs) にまとまっています。
215
-
216
236
  - **コンセプト** — [`docs/concept.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/concept.ja.md)
217
- `gctree` が何であり、どの課題を解決し、どこまでを担当するのかを説明します。
218
237
  - **原則** — [`docs/principles.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/principles.ja.md)
219
- gc-branch、リポジトリ範囲、summary-first 文書、ガイド付き更新の考え方をまとめています。
220
238
  - **使い方** — [`docs/usage.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/usage.ja.md)
221
- 標準 CLI フロー、provider コマンド、リポジトリ範囲の挙動、統合パターンを案内します。
222
- - **ローカル実行方法** — [`docs/local-development.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.ja.md)
223
- 依存関係のインストール、CLI のローカル実行、変更確認手順を説明します。
239
+ - **ローカル開発** [`docs/local-development.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.ja.md)
224
240
 
225
241
  ---
226
242
 
227
243
  ## コントリビュート
228
244
 
229
- コントリビューション歓迎です。開発フローと PR チェックリストは英語ドキュメントの [CONTRIBUTING.md](https://github.com/handsupmin/gc-tree/blob/main/CONTRIBUTING.md) を参照してください。
245
+ コントリビューション歓迎です。開発フローと PR チェックリストは [CONTRIBUTING.md](https://github.com/handsupmin/gc-tree/blob/main/CONTRIBUTING.md) を参照してください。
230
246
 
231
247
  ---
232
248