@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 CHANGED
@@ -19,214 +19,229 @@ Gestiona varios contextos con la misma naturalidad con la que manejas ramas de G
19
19
 
20
20
  </div>
21
21
 
22
- Hecho para quienes trabajan de verdad entre varios repositorios, productos, clientes y flujos de trabajo.
23
-
24
- `gc-tree` añade a tus herramientas de programación con IA una **capa de contexto reutilizable por encima del repo**. Conserva el contexto que dura, lo aplica solo donde corresponde y se aparta cuando el repositorio actual no tiene nada que ver.
25
-
26
22
  ---
27
23
 
28
- ## Por qué gc-tree
24
+ ## El problema
29
25
 
30
- En cuanto empiezas a usar agentes de IA en trabajo real, el contexto local al repositorio se queda corto enseguida.
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.
31
27
 
32
- Cuando tu día a día se reparte entre varios repos y varias líneas de trabajo, suelen aparecer los mismos problemas:
28
+ Así que acabas haciendo esto cada vez:
33
29
 
34
- - el contexto duradero acaba metido a la fuerza en los prompts
35
- - el contexto que no toca se cuela en repositorios donde no debería
36
- - cada sesión nueva obliga a repetir la misma explicación
37
- - el conocimiento de cliente o producto vive escondido en el historial del chat
38
- - cambiar de workstream significa cambiar de contexto a mano, en tu propia cabeza
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
39
34
 
40
- `gc-tree` está pensado para gente que ya usa a fondo herramientas como Codex o Claude Code y no quiere seguir gestionando el contexto como una tarea manual más.
35
+ Esto no es un problema de IA. Es un **problema de gestión del contexto**.
41
36
 
42
37
  ---
43
38
 
44
- ## Qué te da
39
+ ## Qué hace gc-tree
45
40
 
46
- - **Varios contextos duraderos**
47
- Puedes mantener carriles separados por producto, cliente o workstream.
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.
48
42
 
49
- - **Relevancia acotada por repositorio**
50
- Puedes decidir con claridad qué contexto debe aplicarse solo a qué repos.
43
+ ```bash
44
+ gctree resolve --query "auth token rotation policy"
45
+ ```
51
46
 
52
- - **Protección de alcance más inteligente**
53
- Si entras en un repo todavía no asociado, puedes elegir si seguir solo esta vez, usar siempre ese contexto ahí o ignorarlo en ese repo.
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
+ ```
54
60
 
55
- - **Onboarding y actualizaciones guiadas**
56
- Puedes crear y mantener el contexto con Codex, Claude Code o ambos.
61
+ Tu herramienta de IA recibe el contexto correcto — no toda la base de conocimiento, solo el fragmento relevante.
57
62
 
58
- - **Conocimiento en markdown, con enfoque summary-first**
59
- El contexto vive en archivos visibles, no en memoria oculta, y las herramientas pueden leer primero el resumen corto.
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.
60
64
 
61
65
  ---
62
66
 
63
- ## Instalación y arranque rápido
67
+ ## Para quién es esto
64
68
 
65
- ```bash
66
- npm install -g @handsupmin/gc-tree
67
- gctree init
68
- ```
69
+ Sacarás más partido a `gc-tree` si:
69
70
 
70
- Con eso ya puedes arrancar.
71
- A partir de ahí, sigue trabajando como siempre: `gc-tree` simplemente añade una capa de contexto global reutilizable alrededor de tu flujo habitual.
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
72
75
 
73
- - **Comando CLI:** `gctree`
74
- - **Requisito:** Node.js 20+
75
-
76
- Si quieres trabajar desde el código fuente, consulta [docs/local-development.es.md](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.es.md).
76
+ Si solo trabajas en un repositorio y un producto, no necesitas esto. `CLAUDE.md` o `.cursorrules` es suficiente.
77
77
 
78
78
  ---
79
79
 
80
- ## Movimientos habituales
80
+ ## ¿En qué se diferencia de CLAUDE.md o cursor rules?
81
81
 
82
- ### Crea un contexto nuevo cuando un workstream merezca su propio carril
82
+ `CLAUDE.md` es genial para un solo repositorio.
83
83
 
84
- ```bash
85
- gctree checkout -b client-b
86
- gctree onboard
87
- ```
84
+ En el momento en que tienes múltiples repos, clientes o workstreams:
88
85
 
89
- Si un cliente, un producto, una migración o una iniciativa concreta necesita su propio contexto duradero, dale su propio gc-branch.
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 | ✅ | ✅ |
90
95
 
91
- ### Actualiza después el contexto duradero
96
+ ---
92
97
 
93
- ```bash
94
- gctree update-global-context
95
- ```
98
+ ## Rendimiento validado
96
99
 
97
- A medida que el trabajo avanza, añade al gc-branch activo lo que merece quedarse a largo plazo.
100
+ Probado con documentación interna real (4 exportaciones de Notion, consultas mixtas en español e inglés):
98
101
 
99
- Alias cortos:
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 | ✅ |
100
109
 
101
- ```bash
102
- gctree update-gc
103
- gctree ugc
104
- ```
110
+ ---
105
111
 
106
- ### Resuelve el contexto cuando de verdad lo necesites
112
+ ## Funciona con Claude Code y Codex ambos verificados
107
113
 
108
114
  ```bash
109
- 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
110
118
  ```
111
119
 
112
- Trae de vuelta el contexto relevante justo en el momento en que hace falta.
113
-
114
- ---
120
+ Los dos providers usan el mismo almacén de contexto. Haz el onboarding una vez y úsalo desde cualquiera de los dos.
115
121
 
116
- ## Por qué se siente natural
122
+ **Claude Code** usa los slash commands `/gc-resolve-context`, `/gc-onboard`, `/gc-update-global-context`.
117
123
 
118
- **Puedes manejar varios contextos como si fueran ramas de Git, pero sin tener que vivir pendiente de ellos.**
124
+ **Codex** usa los skills `$gc-resolve-context`, `$gc-onboard`, `$gc-update-global-context`. Verificado con `codex exec`:
119
125
 
120
- Puedes separar contextos para:
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
+ ```
121
133
 
122
- - un cliente
123
- - una línea de producto
124
- - un equipo de plataforma
125
- - un stack compartido de backend + frontend
126
- - una iniciativa temporal o una migración
134
+ ---
127
135
 
128
- Y moverte entre ellos con comandos familiares:
136
+ ## Instalación y arranque rápido
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
- Pero, a diferencia de Git, no tienes que vigilar ese cambio manualmente todo el tiempo.
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`
136
147
 
137
- Si el repo en el que estás queda fuera del alcance del contexto activo, `gc-tree` puede tratar ese contexto como irrelevante en lugar de dejar que se cuele en la sesión equivocada.
148
+ Después, tu herramienta de IA aprenderá a llamar a `gctree resolve` antes de planificar o implementar.
138
149
 
139
- Eso te permite mantener varios contextos a largo plazo sin arrastrarlos todos a cada sesión de trabajo.
150
+ - **CLI:** `gctree`
151
+ - **Requisito:** Node.js 20+
140
152
 
141
153
  ---
142
154
 
143
- ## Un flujo de trabajo realista
144
-
145
- Imagina que trabajas entre:
155
+ ## Movimientos habituales
146
156
 
147
- - un repo compartido de plataforma
148
- - dos repos de cliente
149
- - un repo de tooling interno
157
+ ### Contextos separados para workstreams distintos
150
158
 
151
- Sin `gc-tree`, cada sesión nueva con IA obliga a volver a explicar:
159
+ ```bash
160
+ gctree checkout -b client-b
161
+ gctree onboard
162
+ ```
152
163
 
153
- - de qué cliente estamos hablando ahora
154
- - qué repos forman realmente un mismo conjunto
155
- - qué flujo importa en este contexto
156
- - qué contexto sobra y solo mete ruido
164
+ Cada gc-branch es un carril de contexto completamente independiente. Cambia entre ellos como con ramas de Git.
157
165
 
158
- Con `gc-tree`, puedes mantener contextos separados por carril, reutilizarlos entre sesiones y dejar que las reglas de repo scope bloqueen el contexto que no toca.
166
+ ### Traer contexto relevante cuando lo necesitas
159
167
 
160
- Ese es el trabajo real que resuelve:
168
+ ```bash
169
+ gctree resolve --query "billing retry policy"
170
+ ```
161
171
 
162
- > no “guardar más texto de prompt”,
163
- > sino **gestionar el contexto correcto en el nivel correcto del trabajo**.
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.
164
173
 
165
- ---
174
+ ### Mantener el contexto al día
166
175
 
167
- ## Conceptos clave
176
+ ```bash
177
+ gctree update-global-context # o: gctree update-gc / gctree ugc
178
+ ```
168
179
 
169
- - **gc-branch**
170
- Un carril de contexto duradero para un producto, cliente, workstream o dominio.
180
+ Flujo de actualización guiado — tu herramienta de IA pregunta qué ha cambiado y escribe el nuevo contexto de vuelta al gc-branch.
171
181
 
172
- - **repo scope**
173
- Las reglas que deciden en qué repositorios debe aplicarse un contexto.
182
+ ### Acotar el contexto a repos específicos
174
183
 
175
- - **provider-guided flow**
176
- En vez de escribir JSON a mano, haces onboarding y actualizaciones desde tu herramienta de IA preferida.
184
+ ```bash
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
187
+ ```
177
188
 
178
- - **context tree**
179
- Por dentro, `gc-tree` organiza el contexto como conocimiento en archivos, consciente de las ramas.
180
- Lo que tú ganas es contexto reutilizable más allá de un solo proyecto.
189
+ `gc-tree` no inyectará un contexto en repos donde no corresponde.
181
190
 
182
191
  ---
183
192
 
184
- ## Comandos visibles dentro del runtime
185
-
186
- Después del scaffold, los comandos visibles son:
193
+ ## Cómo se almacena el contexto
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 ← í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
+ ```
190
210
 
191
- 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.
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.
192
212
 
193
213
  ---
194
214
 
195
- ## Comandos clave de un vistazo
215
+ ## Comandos principales
196
216
 
197
217
  | Objetivo | Comando |
198
- | --- | --- |
218
+ |---|---|
199
219
  | Inicializar gc-tree y elegir provider | `gctree init` |
200
220
  | Confirmar el gc-branch activo | `gctree status` |
201
221
  | Buscar en el contexto activo | `gctree resolve --query "..."` |
202
- | Ver las reglas de alcance por repo | `gctree repo-map` |
203
- | Incluir o excluir un repo para un gc-branch | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
204
222
  | Crear o cambiar gc-branches | `gctree checkout <branch>` / `gctree checkout -b <branch>` |
205
- | Hacer onboarding de un gc-branch vacío | `gctree onboard` |
206
- | Actualizar el gc-branch activo | `gctree update-global-context` / `gctree update-gc` / `gctree ugc` |
207
- | Restablecer un gc-branch antes de re-onboard | `gctree reset-gc-branch --branch <name> --yes` |
208
- | 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` |
209
230
 
210
231
  ---
211
232
 
212
233
  ## Documentación
213
234
 
214
- La documentación detallada está en el directorio [`docs/`](https://github.com/handsupmin/gc-tree/tree/main/docs).
215
-
216
235
  - **Concepto** — [`docs/concept.es.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/concept.es.md)
217
- Explica qué es `gctree`, qué problema resuelve y cuál es el alcance de la capa de contexto global.
218
236
  - **Principios** — [`docs/principles.es.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/principles.es.md)
219
- Resume las reglas de gc-branches, alcance por repositorio, documentos summary-first y actualizaciones guiadas.
220
237
  - **Uso** — [`docs/usage.es.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/usage.es.md)
221
- Describe el flujo CLI estándar, los comandos del provider, el comportamiento de alcance por repo y los patrones de integración.
222
238
  - **Desarrollo local** — [`docs/local-development.es.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.es.md)
223
- Explica cómo instalar dependencias, ejecutar la CLI localmente y verificar cambios.
224
239
 
225
240
  ---
226
241
 
227
242
  ## Contribuir
228
243
 
229
- 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.
230
245
 
231
246
  ---
232
247