@handsupmin/gc-tree 0.1.3 → 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
@@ -1,165 +1,249 @@
1
1
  # gc-tree
2
2
 
3
- AI コーディングツール向けのブランチ対応グローバルコンテキストレイヤー。
3
+ <div align="center">
4
+
5
+ <img src="./logo.png" alt="gc-tree logo" width="260" />
6
+
7
+ ### プロジェクトの外まで届くグローバルコンテキスト。
8
+
9
+ 今使っている AI ツールに、長く使える再利用可能なコンテキストレイヤーを重ねましょう。
10
+ Git のブランチ感覚で、複数のコンテキストを分けて持てます。
11
+
12
+ [![npm version](https://img.shields.io/npm/v/%40handsupmin%2Fgc-tree)](https://www.npmjs.com/package/@handsupmin/gc-tree)
13
+ [![npm downloads](https://img.shields.io/npm/dm/%40handsupmin%2Fgc-tree)](https://www.npmjs.com/package/@handsupmin/gc-tree)
14
+ [![GitHub stars](https://img.shields.io/github/stars/handsupmin/gc-tree)](https://github.com/handsupmin/gc-tree/stargazers)
15
+ [![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/handsupmin/gc-tree/blob/main/LICENSE)
16
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org)
4
17
 
5
18
  [English](https://github.com/handsupmin/gc-tree/blob/main/README.md) | [한국어](https://github.com/handsupmin/gc-tree/blob/main/README.ko.md) | [简体中文](https://github.com/handsupmin/gc-tree/blob/main/README.zh.md) | [日本語](https://github.com/handsupmin/gc-tree/blob/main/README.ja.md) | [Español](https://github.com/handsupmin/gc-tree/blob/main/README.es.md)
6
19
 
7
- ## 紹介
20
+ </div>
8
21
 
9
- `gctree` は AI コーディングツール向けの軽量な **Global Context Tree** です。
10
- 長期的なコンテキストに、ファイルベースで再利用しやすく、ブランチ単位で切り替えられる明確な置き場所を与え、既存のワークフローにも自然に組み込めます。
22
+ ---
11
23
 
12
- 1 つの `AGENTS.md`、`CLAUDE.md`、あるいは短いプロンプト断片だけでは足りなくなったとき、`gctree` は次のことを助けます。
24
+ ## 問題
13
25
 
14
- - プロダクト、クライアント、作業トラックごとにコンテキストを分ける
15
- - 隠れたメモリではなく、markdown 文書を source of truth として管理する
16
- - 小さなインデックスと summary-first ドキュメントで必要なコンテキストを素早く見つける
17
- - 好みの LLM CLI を使ってオンボーディングと永続更新を進める
18
- - ある gc-branch が本当に関係するリポジトリでだけ使われるようにする
26
+ Claude Code や Codex を毎日使っています。でも実際の仕事は複数のリポジトリ、プロダクト、クライアントにまたがっていて——AI ツールは今開いているファイルしか知りません。
19
27
 
20
- ## 簡単な特徴
28
+ だから毎回こうなってしまいます:
21
29
 
22
- - **Provider 駆動のオンボーディング**
23
- `gctree init` はまず `claude-code`、`codex`、`both` のどの provider モードを使うかを聞き、その後に応答言語を選ばせ、選択内容を保存して必要なコマンド面を用意したうえで、デフォルトの `main` gc-branch のオンボーディングを開始します。
24
- - **リポジトリ範囲付き gc-branch**
25
- `~/.gctree/branch-repo-map.json` により、1 つの gc-branch を特定のリポジトリ群にだけ結びつけられます。たとえば A を B/C/D にだけ適用し、F では無視できます。
26
- - **対話的な範囲ガード**
27
- `gctree resolve` が現在のリポジトリをまだこの gc-branch に結び付けていないと判断した場合、今回だけ使うか、今後も使うか、ここでは無視するかを選べます。
28
- - **Summary-first ドキュメント構造**
29
- ツールはまず短い要約を読み、必要なときだけ全文を読み込めます。
30
- - **ガイド付きの永続更新**
31
- JSON ファイルを手で作らなくても、同じ provider フローでグローバルコンテキストを更新できます。
30
+ - どのリポジトリが一緒に動くか、また最初から説明する
31
+ - 同じアーキテクチャ文書をプロンプトに貼り直す
32
+ - 先週「もう知っていた」規約をもう一度教える
33
+ - 今のリポジトリと無関係なコンテキストを手作業で取り除く
32
34
 
33
- ## インストールとクイックスタート
35
+ これは AI の問題ではありません。**コンテキスト管理の問題**です。
34
36
 
35
- ### npm からインストール
37
+ ---
36
38
 
37
- ```bash
38
- npm install -g @handsupmin/gc-tree
39
- ```
39
+ ## gc-tree がやること
40
40
 
41
- グローバルインストールなしで一度だけ実行する場合:
41
+ `gc-tree` は**リポジトリより上のレイヤー**に位置します。コンテキストを構造化された Markdown ファイルに保存し、AI ツールがセッションのたびに関連するものだけを自動で引き出せるようにします。
42
42
 
43
43
  ```bash
44
- npx @handsupmin/gc-tree init
44
+ gctree resolve --query "auth token rotation policy"
45
45
  ```
46
46
 
47
- - **パッケージ名:** `@handsupmin/gc-tree`
48
- - **CLI コマンド:** `gctree`
49
- - **要件:** Node.js 20+
50
- ソースベースの開発は [docs/local-development.md](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.md) を参照してください。
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
+ ```
51
60
 
52
- ### クイックスタート
61
+ AI ツールに渡るのは正しいコンテキスト——ナレッジベース全体ではなく、関係する部分だけです。
53
62
 
54
- #### 1) gc-tree を初期化する
63
+ **実測値:1 クエリあたり全コンテキストの約 4% だけ注入されます。** 残り 96% は実際に必要になるまでディスクに留まり、トークンウィンドウに入りません。
55
64
 
56
- ```bash
57
- gctree init
58
- ```
65
+ ---
66
+
67
+ ## こんな人に向いています
68
+
69
+ 以下に当てはまるなら、gc-tree が一番よく効きます:
70
+
71
+ - **複数のリポジトリ**にまたがって仕事をしている(モノレポチーム、プラットフォーム + クライアントリポジトリ、バックエンド + フロントエンドスタック)
72
+ - 同じ週に**複数のプロダクトやクライアント**を行き来している
73
+ - AI セッションを開くたびに**同じコンテキストを繰り返し説明**している
74
+ - AI ツールに今のファイルだけでなく**規約・アーキテクチャ・ドメイン知識**まで理解してほしい
75
+
76
+ リポジトリ一つ、プロダクト一つで完結するなら、このツールは必要ありません。`CLAUDE.md` や `.cursorrules` で十分です。
77
+
78
+ ---
79
+
80
+ ## CLAUDE.md や cursor rules との違いは?
81
+
82
+ `CLAUDE.md` は優れています——一つのリポジトリにおいては。
83
+
84
+ 複数のリポジトリ・クライアント・ワークストリームが増えた瞬間:
85
+
86
+ | | `CLAUDE.md` / cursor rules | `gc-tree` |
87
+ |---|---|---|
88
+ | スコープ | リポジトリ一つ | 複数リポジトリ、コンテキスト一つ |
89
+ | 永続化 | リポジトリ内のファイル | リポジトリ外に保存、セッション間で再利用 |
90
+ | コンテキスト切り替え | ファイルを手で編集 | `gctree checkout client-b` |
91
+ | 関連性フィルタリング | 全部か何もないか | 一致したドキュメントだけ注入(約 4%) |
92
+ | オンボーディング | 手書き | AI ツールがガイド |
93
+ | Codex 対応 | ✅ | ✅ |
94
+ | Claude Code 対応 | ✅ | ✅ |
95
+
96
+ ---
97
+
98
+ ## 検証済みのパフォーマンス
99
+
100
+ 実際の社内ドキュメントでテスト(Notion エクスポート 4 件、日本語・英語混合クエリ):
59
101
 
60
- このコマンドは次のことを行います。
102
+ | 指標 | 結果 |
103
+ |---|---|
104
+ | Recall——関連クエリが正しい文書を見つける割合 | **100%**(16/16) |
105
+ | Precision——無関係なクエリが空を返す割合 | **80%**(4/5) |
106
+ | F1 スコア | **88.9%** |
107
+ | クエリあたりの注入トークン割合(全体比) | **約 4%** |
108
+ | 日英混合クエリ対応 | ✅ |
61
109
 
62
- - `~/.gctree` を作成する
63
- - デフォルトの `main` gc-branch を作成する
64
- - provider モード(`claude-code`、`codex`、`both`)を選ばせる
65
- - `both` を選んだ場合は、今回のオンボーディングをどちらで始めるかをさらに選ばせる
66
- - 言語(`English`、`Korean`、または自由入力)を選ばせる
67
- - provider モード、実際のオンボーディング provider、言語を `~/.gctree/settings.json` に保存する
68
- - 現在の環境に必要なコマンド面を用意する
69
- - `main` が空であれば、アクティブな gc-branch のガイド付きオンボーディングを開始する
110
+ ---
70
111
 
71
- #### 2) 現在のコンテキストを解決する
112
+ ## Claude Code と Codex、両方で動作検証済み
72
113
 
73
114
  ```bash
74
- 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 # 両方同時に
75
118
  ```
76
119
 
77
- 現在のリポジトリがその gc-branch にまだ紐付いていない場合、`gctree` は次を選ばせます。
120
+ どちらのプロバイダーも同じ基盤のコンテキストストアを使います。一度オンボーディングすれば、どちらのツールからでも使えます。
78
121
 
79
- 1. 今回だけ続行する
80
- 2. 今後もこのリポジトリでこの gc-branch を使う
81
- 3. このリポジトリではこの gc-branch を無視する
122
+ **Claude Code** — `/gc-resolve-context`、`/gc-onboard`、`/gc-update-global-context` スラッシュコマンドを使用。
82
123
 
83
- 2 または 3 を選ぶと `~/.gctree/branch-repo-map.json` が更新されます。
124
+ **Codex** `$gc-resolve-context`、`$gc-onboard`、`$gc-update-global-context` スキルを使用。`codex exec` で実際に検証済み:
84
125
 
85
- #### 3) 別のコンテキストが必要なら新しい gc-branch を作る
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
+ ```
133
+
134
+ ---
135
+
136
+ ## インストール & クイックスタート
86
137
 
87
138
  ```bash
88
- gctree checkout -b client-b
139
+ npm install -g @handsupmin/gc-tree
140
+ gctree init
89
141
  ```
90
142
 
91
- `checkout -b` は**新しい空の gc-branch**を作ります。既存のブランチ文書はコピーしません。
143
+ `gctree init` が次のことを案内してくれます:
144
+ 1. プロバイダーの選択:`claude-code`、`codex`、または `both`
145
+ 2. 現在のリポジトリへの統合ファイルのインストール
146
+ 3. `main` gc-branch のガイド付きオンボーディング実行
147
+
148
+ その後は、AI ツールが計画・実装の前に `gctree resolve` を呼ぶ流れを自然に覚えます。
149
+
150
+ - **CLI:** `gctree`
151
+ - **動作条件:** Node.js 20+
92
152
 
93
- #### 4) 空の gc-branch をオンボードする
153
+ ---
154
+
155
+ ## よく使う流れ
156
+
157
+ ### ワークストリームごとに別々のコンテキストを持つ
94
158
 
95
159
  ```bash
160
+ gctree checkout -b client-b
96
161
  gctree onboard
97
162
  ```
98
163
 
99
- #### 5) 後から永続コンテキストを更新する
164
+ gc-branch は完全に独立したコンテキストレーンです。Git ブランチと同じ感覚で行き来できます。
165
+
166
+ ### 必要なときに関連コンテキストを引き出す
100
167
 
101
168
  ```bash
102
- gctree update-global-context
169
+ gctree resolve --query "billing retry policy"
103
170
  ```
104
171
 
105
- 短い別名:
172
+ 一致したドキュメントだけが返ります——タイトル、要約、抜粋。要約で足りなければ、ツールが全文を読みます。
173
+
174
+ ### コンテキストを常に最新に保つ
106
175
 
107
176
  ```bash
108
- gctree update-gc
109
- gctree ugc
177
+ gctree update-global-context # または:gctree update-gc / gctree ugc
110
178
  ```
111
179
 
112
- 実際に作業してみて、そのリポジトリが現在の gc-branch に属するべきだと分かった場合は、自然な流れはこうです。
113
-
114
- 1. まずそのリポジトリを branch repo map に追加する
115
- 2. その後 `gctree update-global-context` を実行して、そのリポジトリが何を担うのか、なぜ重要なのかといった長期コンテキストを追加する
180
+ ガイド付き更新フロー——AI ツールが何が変わったかを確認し、新しいコンテキストを gc-branch に書き戻します。
116
181
 
117
- #### 6) 再オンボーディングの前に gc-branch をリセットする
182
+ ### コンテキストを特定のリポジトリに限定する
118
183
 
119
184
  ```bash
120
- gctree reset-gc-branch --branch client-b --yes
185
+ gctree set-repo-scope --branch client-b --include # 現在のリポジトリを含める
186
+ gctree set-repo-scope --branch client-b --exclude # 現在のリポジトリを除外する
121
187
  ```
122
188
 
123
- ### ランタイムで見える provider コマンド
189
+ `gc-tree` は関係のないリポジトリにコンテキストを注入しません。
124
190
 
125
- scaffold 後に見えるコマンドは次の通りです。
191
+ ---
126
192
 
127
- - **Codex:** `$gc-onboard`, `$gc-update-global-context`
128
- - **Claude Code:** `/gc-onboard`, `/gc-update-global-context`
193
+ ## コンテキストの保存構造
194
+
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
+ ```
129
210
 
130
- これらのコマンドは、長期コンテキストを集めたり更新したりする前に、現在の gc-branch を必ず明示し、ユーザーが明示的に切り替えを求めない限り、保存された言語を最後まで維持するべきです。
211
+ コンテキストはリポジトリの外に保存されます——`.gitignore` 設定不要、誤コミットの心配なし、同じ gc-branch を使うすべてのプロジェクトで再利用可能。
131
212
 
132
- ### 主要コマンド一覧
213
+ ---
214
+
215
+ ## 主要コマンド
133
216
 
134
217
  | 目的 | コマンド |
135
- | --- | --- |
136
- | gc-tree を初期化して provider を選ぶ | `gctree init` |
137
- | 現在の gc-branch を確認する | `gctree status` |
138
- | 現在のコンテキストを検索する | `gctree resolve --query "..."` |
218
+ |---|---|
219
+ | gc-tree を初期化してプロバイダーを選ぶ | `gctree init` |
220
+ | アクティブな gc-branch を確認する | `gctree status` |
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` |
139
226
  | リポジトリ範囲ルールを確認する | `gctree repo-map` |
140
- | gc-branch に対してリポジトリを明示的に含める/除外する | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
141
- | gc-branch を作成/切り替えする | `gctree checkout <branch>` / `gctree checkout -b <branch>` |
142
- | 空の gc-branch をオンボードする | `gctree onboard` |
143
- | 現在の gc-branch を永続更新する | `gctree update-global-context` / `gctree update-gc` / `gctree ugc` |
227
+ | 現在のリポジトリを gc-branch に含める / 除外する | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
144
228
  | 再オンボーディング前に gc-branch をリセットする | `gctree reset-gc-branch --branch <name> --yes` |
145
- | 別環境に手動で scaffold を入れる | `gctree scaffold --host codex --target /path/to/repo` |
229
+ | 別の環境に scaffold をインストールする | `gctree scaffold --host codex --target /path/to/repo` |
146
230
 
147
- ## ドキュメント
231
+ ---
148
232
 
149
- 詳細ドキュメントは [`docs/`](https://github.com/handsupmin/gc-tree/tree/main/docs) にまとまっています。
233
+ ## ドキュメント
150
234
 
151
235
  - **コンセプト** — [`docs/concept.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/concept.ja.md)
152
- `gctree` が何であり、どの課題を解決し、どこまでを担当するのかを説明します。
153
236
  - **原則** — [`docs/principles.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/principles.ja.md)
154
- gc-branch、リポジトリ範囲、summary-first 文書、ガイド付き更新の考え方をまとめています。
155
237
  - **使い方** — [`docs/usage.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/usage.ja.md)
156
- 標準 CLI フロー、provider コマンド、リポジトリ範囲の挙動、統合パターンを案内します。
157
- - **ローカル実行方法** — [`docs/local-development.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.ja.md)
158
- 依存関係のインストール、CLI のローカル実行、変更確認手順を説明します。
238
+ - **ローカル開発** [`docs/local-development.ja.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.ja.md)
239
+
240
+ ---
159
241
 
160
242
  ## コントリビュート
161
243
 
162
- コントリビューション歓迎です。開発フローと 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) を参照してください。
245
+
246
+ ---
163
247
 
164
248
  ## ライセンス
165
249