@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.es.md +133 -118
- package/README.ja.md +135 -120
- package/README.ko.md +137 -122
- package/README.md +138 -123
- package/README.zh.md +135 -119
- package/dist/src/resolve.js +40 -6
- package/package.json +9 -2
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
74
|
-
-
|
|
71
|
+
- **複数のリポジトリ**にまたがって仕事をしている(モノレポチーム、プラットフォーム + クライアントリポジトリ、バックエンド + フロントエンドスタック)
|
|
72
|
+
- 同じ週に**複数のプロダクトやクライアント**を行き来している
|
|
73
|
+
- AI セッションを開くたびに**同じコンテキストを繰り返し説明**している
|
|
74
|
+
- AI ツールに今のファイルだけでなく**規約・アーキテクチャ・ドメイン知識**まで理解してほしい
|
|
75
75
|
|
|
76
|
-
|
|
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
|
-
|
|
85
|
-
gctree checkout -b client-b
|
|
86
|
-
gctree onboard
|
|
87
|
-
```
|
|
84
|
+
複数のリポジトリ・クライアント・ワークストリームが増えた瞬間:
|
|
88
85
|
|
|
89
|
-
|
|
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
|
-
|
|
94
|
-
gctree update-global-context
|
|
95
|
-
```
|
|
98
|
+
## 検証済みのパフォーマンス
|
|
96
99
|
|
|
97
|
-
|
|
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
|
-
|
|
102
|
-
gctree update-gc
|
|
103
|
-
gctree ugc
|
|
104
|
-
```
|
|
110
|
+
---
|
|
105
111
|
|
|
106
|
-
|
|
112
|
+
## Claude Code と Codex、両方で動作検証済み
|
|
107
113
|
|
|
108
114
|
```bash
|
|
109
|
-
gctree
|
|
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
|
-
**
|
|
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
|
-
|
|
132
|
-
gctree
|
|
139
|
+
npm install -g @handsupmin/gc-tree
|
|
140
|
+
gctree init
|
|
133
141
|
```
|
|
134
142
|
|
|
135
|
-
|
|
143
|
+
`gctree init` が次のことを案内してくれます:
|
|
144
|
+
1. プロバイダーの選択:`claude-code`、`codex`、または `both`
|
|
145
|
+
2. 現在のリポジトリへの統合ファイルのインストール
|
|
146
|
+
3. `main` gc-branch のガイド付きオンボーディング実行
|
|
136
147
|
|
|
137
|
-
|
|
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
|
-
|
|
148
|
-
- クライアント向けリポジトリが 2 つ
|
|
149
|
-
- 社内ツール用リポジトリが 1 つ
|
|
157
|
+
### ワークストリームごとに別々のコンテキストを持つ
|
|
150
158
|
|
|
151
|
-
|
|
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
|
-
|
|
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
|
-
|
|
170
|
-
1 つのプロダクト、クライアント、ワークストリーム、ドメインのための長期コンテキストレーンです。
|
|
180
|
+
ガイド付き更新フロー——AI ツールが何が変わったかを確認し、新しいコンテキストを gc-branch に書き戻します。
|
|
171
181
|
|
|
172
|
-
|
|
173
|
-
そのコンテキストをどのリポジトリで効かせるかを決めるルールです。
|
|
182
|
+
### コンテキストを特定のリポジトリに限定する
|
|
174
183
|
|
|
175
|
-
|
|
176
|
-
|
|
184
|
+
```bash
|
|
185
|
+
gctree set-repo-scope --branch client-b --include # 現在のリポジトリを含める
|
|
186
|
+
gctree set-repo-scope --branch client-b --exclude # 現在のリポジトリを除外する
|
|
187
|
+
```
|
|
177
188
|
|
|
178
|
-
-
|
|
179
|
-
`gc-tree` は内部的には、ブランチを意識したファイルベースの知識ツリーとしてコンテキストを整理します。
|
|
180
|
-
ユーザーが得る価値は、プロジェクトの外までつながる再利用可能なコンテキストです。
|
|
189
|
+
`gc-tree` は関係のないリポジトリにコンテキストを注入しません。
|
|
181
190
|
|
|
182
191
|
---
|
|
183
192
|
|
|
184
|
-
##
|
|
185
|
-
|
|
186
|
-
scaffold 後に見えるコマンドは次の通りです。
|
|
193
|
+
## コンテキストの保存構造
|
|
187
194
|
|
|
188
|
-
|
|
189
|
-
|
|
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
|
-
|
|
211
|
+
コンテキストはリポジトリの外に保存されます——`.gitignore` 設定不要、誤コミットの心配なし、同じ gc-branch を使うすべてのプロジェクトで再利用可能。
|
|
192
212
|
|
|
193
213
|
---
|
|
194
214
|
|
|
195
|
-
##
|
|
215
|
+
## 主要コマンド
|
|
196
216
|
|
|
197
217
|
| 目的 | コマンド |
|
|
198
|
-
|
|
199
|
-
| gc-tree
|
|
200
|
-
|
|
|
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
|
|
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
|
-
|
|
|
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
|
-
|
|
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
|
|
244
|
+
コントリビューション歓迎です。開発フローと PR チェックリストは [CONTRIBUTING.md](https://github.com/handsupmin/gc-tree/blob/main/CONTRIBUTING.md) を参照してください。
|
|
230
245
|
|
|
231
246
|
---
|
|
232
247
|
|