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