@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.es.md CHANGED
@@ -1,165 +1,249 @@
1
1
  # gc-tree
2
2
 
3
- Una capa de contexto global con ramas para herramientas de programación con IA.
3
+ <div align="center">
4
+
5
+ <img src="./logo.png" alt="logo de gc-tree" width="260" />
6
+
7
+ ### Contexto global, más allá del proyecto.
8
+
9
+ Añade a tus herramientas de IA una capa de contexto reutilizable y duradera.
10
+ Gestiona varios contextos con la misma naturalidad con la que manejas ramas de 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
- ## Introducción
20
+ </div>
8
21
 
9
- `gctree` es un **Global Context Tree** ligero para herramientas de programación con IA.
10
- Le da al contexto duradero un hogar reutilizable, basado en archivos y separado por ramas, sin obligarte a adoptar una plataforma completa de orquestación.
22
+ ---
11
23
 
12
- Cuando un solo `AGENTS.md`, `CLAUDE.md` o fragmento de prompt ya no alcanza, `gctree` te ayuda a:
24
+ ## El problema
13
25
 
14
- - separar el contexto por producto, cliente o línea de trabajo
15
- - conservar el conocimiento fuente en markdown en lugar de depender de memoria oculta
16
- - resolver el contexto activo rápidamente con un índice liviano y documentos summary-first
17
- - hacer onboarding y actualizaciones duraderas desde tu CLI LLM preferida
18
- - hacer que un gc-branch solo se use en los repos realmente relacionados
26
+ Usas Claude Code o Codex a diario. Pero tu trabajo real se extiende por múltiples repositorios, productos y clientes — y tus herramientas de IA solo conocen el archivo actual.
19
27
 
20
- ## Características rápidas
28
+ Así que acabas haciendo esto cada vez:
21
29
 
22
- - **Onboarding guiado por provider**
23
- `gctree init` primero te pregunta qué modo de provider quieres usar (`claude-code`, `codex` o `both`), luego qué idioma deben usar las respuestas, guarda esas decisiones, prepara la superficie de comandos adecuada y arranca el onboarding del gc-branch `main` por defecto.
24
- - **gc-branches con alcance por repositorio**
25
- Con `~/.gctree/branch-repo-map.json` puedes asociar un gc-branch solo a ciertos repositorios. Por ejemplo, hacer que A aplique a B/C/D y se ignore en F.
26
- - **Protección interactiva de alcance**
27
- Si `gctree resolve` detecta que el repositorio actual todavía no está asociado a ese gc-branch, puede preguntarte si quieres continuar una vez, usarlo siempre aquí o ignorarlo aquí.
28
- - **Documentación summary-first**
29
- Las herramientas pueden leer primero un resumen corto y abrir el documento completo solo cuando hace falta.
30
- - **Actualizaciones duraderas guiadas**
31
- Puedes actualizar el contexto global con el mismo flujo del provider, sin escribir JSON a mano.
30
+ - Volver a explicar qué repositorios van juntos
31
+ - Pegar el mismo documento de arquitectura en el prompt otra vez
32
+ - Recordarle al agente las convenciones que ya "sabía" la semana pasada
33
+ - Eliminar manualmente el contexto irrelevante para el repositorio actual
32
34
 
33
- ## Instalación y guía rápida
35
+ Esto no es un problema de IA. Es un **problema de gestión del contexto**.
34
36
 
35
- ### Instalar desde npm
37
+ ---
36
38
 
37
- ```bash
38
- npm install -g @handsupmin/gc-tree
39
- ```
39
+ ## Qué hace gc-tree
40
40
 
41
- Si solo quieres ejecutarlo una vez sin instalación global:
41
+ `gc-tree` opera **por encima del nivel del repositorio**. Almacena contexto en archivos Markdown estructurados y permite que tus herramientas de IA traigan solo lo relevante antes de cada sesión, de forma automática.
42
42
 
43
43
  ```bash
44
- npx @handsupmin/gc-tree init
44
+ gctree resolve --query "auth token rotation policy"
45
45
  ```
46
46
 
47
- - **Nombre del paquete:** `@handsupmin/gc-tree`
48
- - **Comando CLI:** `gctree`
49
- - **Requisito:** Node.js 20+
50
- Para desarrollo desde el código fuente, consulta [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": "Convenciones de Auth y Sesión",
53
+ "score": 4,
54
+ "summary": "Rotation de JWT en cada petición, refresh tokens en cookies httpOnly, TTL de 15 min para access tokens",
55
+ "excerpt": "## Flujo de Auth\nAccess token: TTL 15 min, rotation en cada petición autenticada..."
56
+ }
57
+ ]
58
+ }
59
+ ```
51
60
 
52
- ### Inicio rápido
61
+ Tu herramienta de IA recibe el contexto correcto — no toda la base de conocimiento, solo el fragmento relevante.
53
62
 
54
- #### 1) Inicializa gc-tree
63
+ **En la práctica: solo ~4% del contexto total se inyecta por consulta.** El 96% restante permanece en disco, fuera de la ventana de tokens, hasta que de verdad haga falta.
55
64
 
56
- ```bash
57
- gctree init
58
- ```
65
+ ---
66
+
67
+ ## Para quién es esto
68
+
69
+ Sacarás más partido a `gc-tree` si:
70
+
71
+ - Trabajas en **múltiples repositorios** (equipos con monorepo, repos de plataforma + cliente, stacks de backend + frontend)
72
+ - Cambias entre **múltiples productos o clientes** en la misma semana
73
+ - Te encuentras **explicando el mismo contexto** al inicio de cada sesión de IA
74
+ - Quieres que tus herramientas de IA entiendan tus **convenciones, arquitectura y conocimiento de dominio** — no solo el archivo actual
75
+
76
+ Si solo trabajas en un repositorio y un producto, no necesitas esto. `CLAUDE.md` o `.cursorrules` es suficiente.
77
+
78
+ ---
79
+
80
+ ## ¿En qué se diferencia de CLAUDE.md o cursor rules?
81
+
82
+ `CLAUDE.md` es genial — para un solo repositorio.
83
+
84
+ En el momento en que tienes múltiples repos, clientes o workstreams:
85
+
86
+ | | `CLAUDE.md` / cursor rules | `gc-tree` |
87
+ |---|---|---|
88
+ | Alcance | Un repositorio | Múltiples repos, un contexto |
89
+ | Persistencia | Archivo dentro del repo | Almacenado fuera, reutilizable entre sesiones |
90
+ | Cambio de contexto | Edición manual de archivos | `gctree checkout client-b` |
91
+ | Filtrado por relevancia | Todo o nada | Solo inyecta docs coincidentes (~4%) |
92
+ | Onboarding | Escrito a mano | Guiado por tu herramienta de IA |
93
+ | Compatible con Codex | ✅ | ✅ |
94
+ | Compatible con Claude Code | ✅ | ✅ |
95
+
96
+ ---
97
+
98
+ ## Rendimiento validado
99
+
100
+ Probado con documentación interna real (4 exportaciones de Notion, consultas mixtas en español e inglés):
59
101
 
60
- Este comando:
102
+ | Métrica | Resultado |
103
+ |---|---|
104
+ | Recall — consultas relevantes que encuentran el doc correcto | **100%** (16/16) |
105
+ | Precision — consultas irrelevantes que devuelven vacío | **80%** (4/5) |
106
+ | F1 score | **88.9%** |
107
+ | Tokens inyectados por consulta vs. contexto total | **~4%** |
108
+ | Compatible con consultas mixtas en varios idiomas | ✅ |
61
109
 
62
- - crea `~/.gctree`
63
- - crea el gc-branch `main` por defecto
64
- - te pide elegir un modo de provider (`claude-code`, `codex` o `both`)
65
- - si eliges `both`, te pregunta qué provider debe iniciar este onboarding
66
- - te pide elegir el idioma (`English`, `Korean` o escribir tu propio idioma)
67
- - guarda el modo de provider, el provider real de onboarding y el idioma en `~/.gctree/settings.json`
68
- - prepara la superficie de comandos adecuada en el entorno actual
69
- - inicia el onboarding guiado del gc-branch activo cuando `main` sigue vacío
110
+ ---
70
111
 
71
- #### 2) Resuelve el contexto activo
112
+ ## Funciona con Claude Code y Codex — ambos verificados
72
113
 
73
114
  ```bash
74
- gctree resolve --query "auth token rotation"
115
+ gctree scaffold --host claude-code # instala snippet en CLAUDE.md + /gc-onboard, /gc-update-global-context
116
+ gctree scaffold --host codex # instala snippet en AGENTS.md + $gc-onboard, $gc-update-global-context
117
+ gctree scaffold --host both # ambos a la vez
75
118
  ```
76
119
 
77
- Si el repositorio actual aún no está asociado a ese gc-branch, `gctree` puede dejarte elegir entre:
120
+ Los dos providers usan el mismo almacén de contexto. Haz el onboarding una vez y úsalo desde cualquiera de los dos.
78
121
 
79
- 1. continuar solo esta vez
80
- 2. usar siempre este gc-branch en este repo
81
- 3. ignorar este gc-branch en este repo
122
+ **Claude Code** usa los slash commands `/gc-resolve-context`, `/gc-onboard`, `/gc-update-global-context`.
82
123
 
83
- Si eliges 2 o 3, `~/.gctree/branch-repo-map.json` se actualiza.
124
+ **Codex** usa los skills `$gc-resolve-context`, `$gc-onboard`, `$gc-update-global-context`. Verificado con `codex exec`:
84
125
 
85
- #### 3) Crea otro gc-branch si necesitas un contexto separado
126
+ ```
127
+ gctree status → gc_branch: main, doc_count: 2
128
+ gctree resolve --query 'NestJS DTO plainToInstance'
129
+ → coincidencia con "Convenciones de Backend" (score: 3)
130
+ → DTO: class-transformer plainToInstance, class-validator obligatorio
131
+ → Manejo de errores: excepciones personalizadas basadas en HttpException, prohibido lanzar raw Error
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Instalación y arranque rápido
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` crea un **gc-branch vacío nuevo**. No copia los documentos de otra rama.
143
+ `gctree init` te guía a través de:
144
+ 1. Elegir provider: `claude-code`, `codex` o `both`
145
+ 2. Instalar los archivos de integración en el repositorio actual
146
+ 3. Completar el onboarding guiado para el gc-branch `main`
147
+
148
+ Después, tu herramienta de IA aprenderá a llamar a `gctree resolve` antes de planificar o implementar.
149
+
150
+ - **CLI:** `gctree`
151
+ - **Requisito:** Node.js 20+
152
+
153
+ ---
154
+
155
+ ## Movimientos habituales
92
156
 
93
- #### 4) Haz onboarding de un gc-branch vacío
157
+ ### Contextos separados para workstreams distintos
94
158
 
95
159
  ```bash
160
+ gctree checkout -b client-b
96
161
  gctree onboard
97
162
  ```
98
163
 
99
- #### 5) Actualiza el contexto duradero más adelante
164
+ Cada gc-branch es un carril de contexto completamente independiente. Cambia entre ellos como con ramas de Git.
165
+
166
+ ### Traer contexto relevante cuando lo necesitas
100
167
 
101
168
  ```bash
102
- gctree update-global-context
169
+ gctree resolve --query "billing retry policy"
103
170
  ```
104
171
 
105
- Alias cortos:
172
+ Solo devuelve los docs que coinciden — título, resumen y fragmento. El tool lee el doc completo únicamente si el resumen no es suficiente.
173
+
174
+ ### Mantener el contexto al día
106
175
 
107
176
  ```bash
108
- gctree update-gc
109
- gctree ugc
177
+ gctree update-global-context # o: gctree update-gc / gctree ugc
110
178
  ```
111
179
 
112
- Si al trabajar descubres que un repo realmente pertenece al gc-branch actual, el flujo natural es:
180
+ Flujo de actualización guiado tu herramienta de IA pregunta qué ha cambiado y escribe el nuevo contexto de vuelta al gc-branch.
113
181
 
114
- 1. primero añadir ese repo al branch repo map
115
- 2. después ejecutar `gctree update-global-context` para agregar contexto duradero sobre qué hace ese repo y por qué importa
116
-
117
- #### 6) Restablece un gc-branch antes de volver a hacer onboarding
182
+ ### Acotar el contexto a repos específicos
118
183
 
119
184
  ```bash
120
- gctree reset-gc-branch --branch client-b --yes
185
+ gctree set-repo-scope --branch client-b --include # incluir el repo actual
186
+ gctree set-repo-scope --branch client-b --exclude # excluir el repo actual
121
187
  ```
122
188
 
123
- ### Comandos visibles dentro del runtime
189
+ `gc-tree` no inyectará un contexto en repos donde no corresponde.
190
+
191
+ ---
192
+
193
+ ## Cómo se almacena el contexto
124
194
 
125
- Después del scaffold, los comandos visibles son:
195
+ ```
196
+ ~/.gctree/
197
+ branches/
198
+ main/
199
+ index.md ← índice compacto, ≤2000 chars, se carga primero
200
+ docs/
201
+ auth.md ← doc completo, se lee solo cuando hace falta
202
+ architecture.md
203
+ client-b/
204
+ index.md
205
+ docs/
206
+ ...
207
+ branch-repo-map.json ← qué repos pertenecen a qué gc-branch
208
+ settings.json ← provider preferido, idioma
209
+ ```
126
210
 
127
- - **Codex:** `$gc-onboard`, `$gc-update-global-context`
128
- - **Claude Code:** `/gc-onboard`, `/gc-update-global-context`
211
+ El contexto vive fuera de tus repositorios — sin reglas de `.gitignore`, sin commits accidentales, reutilizable en todos los proyectos que usen el mismo gc-branch.
129
212
 
130
- Esos comandos deben dejar claro cuál es el gc-branch activo antes de empezar a recoger o actualizar contexto duradero, y también deben mantener el idioma guardado hasta el final, salvo que el usuario pida cambiarlo explícitamente.
213
+ ---
131
214
 
132
- ### Comandos clave de un vistazo
215
+ ## Comandos principales
133
216
 
134
217
  | Objetivo | Comando |
135
- | --- | --- |
218
+ |---|---|
136
219
  | Inicializar gc-tree y elegir provider | `gctree init` |
137
220
  | Confirmar el gc-branch activo | `gctree status` |
138
221
  | Buscar en el contexto activo | `gctree resolve --query "..."` |
139
- | Ver las reglas de alcance por repo | `gctree repo-map` |
140
- | Incluir o excluir un repo para un gc-branch | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
141
222
  | Crear o cambiar gc-branches | `gctree checkout <branch>` / `gctree checkout -b <branch>` |
142
- | Hacer onboarding de un gc-branch vacío | `gctree onboard` |
143
- | Actualizar el gc-branch activo | `gctree update-global-context` / `gctree update-gc` / `gctree ugc` |
144
- | Restablecer un gc-branch antes de re-onboard | `gctree reset-gc-branch --branch <name> --yes` |
145
- | Instalar scaffold manualmente en otro entorno | `gctree scaffold --host codex --target /path/to/repo` |
223
+ | Listar todos los gc-branches | `gctree branches` |
224
+ | Onboarding guiado de un gc-branch vacío | `gctree onboard` |
225
+ | Actualización guiada del gc-branch activo | `gctree update-global-context` / `gctree ugc` |
226
+ | Ver reglas de alcance por repo | `gctree repo-map` |
227
+ | Incluir o excluir el repo actual para un gc-branch | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
228
+ | Resetear un gc-branch antes de re-onboard | `gctree reset-gc-branch --branch <name> --yes` |
229
+ | Instalar scaffold en un nuevo entorno | `gctree scaffold --host codex --target /path/to/repo` |
146
230
 
147
- ## Documentación
231
+ ---
148
232
 
149
- La documentación detallada está en el directorio [`docs/`](https://github.com/handsupmin/gc-tree/tree/main/docs).
233
+ ## Documentación
150
234
 
151
235
  - **Concepto** — [`docs/concept.es.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/concept.es.md)
152
- Explica qué es `gctree`, qué problema resuelve y cuál es el alcance de la capa de contexto global.
153
236
  - **Principios** — [`docs/principles.es.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/principles.es.md)
154
- Resume las reglas de gc-branches, alcance por repositorio, documentos summary-first y actualizaciones guiadas.
155
237
  - **Uso** — [`docs/usage.es.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/usage.es.md)
156
- Describe el flujo CLI estándar, los comandos del provider, el comportamiento de alcance por repo y los patrones de integración.
157
238
  - **Desarrollo local** — [`docs/local-development.es.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.es.md)
158
- Explica cómo instalar dependencias, ejecutar la CLI localmente y verificar cambios.
239
+
240
+ ---
159
241
 
160
242
  ## Contribuir
161
243
 
162
- Las contribuciones son bienvenidas. Consulta el documento en inglés [CONTRIBUTING.md](https://github.com/handsupmin/gc-tree/blob/main/CONTRIBUTING.md) para ver el flujo de desarrollo y la checklist de PR.
244
+ Las contribuciones son bienvenidas. Consulta [CONTRIBUTING.md](https://github.com/handsupmin/gc-tree/blob/main/CONTRIBUTING.md) para el flujo de desarrollo y la checklist de PR.
245
+
246
+ ---
163
247
 
164
248
  ## Licencia
165
249