@handsupmin/gc-tree 0.1.4 → 0.2.1

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,44 +19,33 @@ 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
45
-
46
- - **Varios contextos duraderos**
47
- Puedes mantener carriles separados por producto, cliente o workstream.
39
+ ## Para quién es esto
48
40
 
49
- - **Relevancia acotada por repositorio**
50
- Puedes decidir con claridad qué contexto debe aplicarse solo a qué repos.
41
+ Sacarás más partido a `gc-tree` si:
51
42
 
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.
43
+ - Trabajas en **múltiples repositorios** (equipos con monorepo, repos de plataforma + cliente, stacks de backend + frontend)
44
+ - Cambias entre **múltiples productos o clientes** en la misma semana
45
+ - Te encuentras **explicando el mismo contexto** al inicio de cada sesión de IA
46
+ - Quieres que tus herramientas de IA entiendan tus **convenciones, arquitectura y conocimiento de dominio** — no solo el archivo actual
54
47
 
55
- - **Onboarding y actualizaciones guiadas**
56
- Puedes crear y mantener el contexto con Codex, Claude Code o ambos.
57
-
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.
48
+ Si solo trabajas en un repositorio y un producto, no necesitas esto. `CLAUDE.md` o `.cursorrules` es suficiente.
60
49
 
61
50
  ---
62
51
 
@@ -67,166 +56,193 @@ npm install -g @handsupmin/gc-tree
67
56
  gctree init
68
57
  ```
69
58
 
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.
59
+ `gctree init` te guía a través de:
72
60
 
73
- - **Comando CLI:** `gctree`
74
- - **Requisito:** Node.js 20+
61
+ 1. Elegir provider: `claude-code`, `codex` o `both`
62
+ 2. Instalar los archivos de integración en el repositorio actual
63
+ 3. Completar el onboarding guiado para el gc-branch `main`
75
64
 
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).
65
+ Después, tu herramienta de IA aprenderá a llamar a `gctree resolve` antes de planificar o implementar.
66
+
67
+ - **CLI:** `gctree`
68
+ - **Requisito:** Node.js 20+
77
69
 
78
70
  ---
79
71
 
80
- ## Movimientos habituales
72
+ ## Qué hace gc-tree
81
73
 
82
- ### Crea un contexto nuevo cuando un workstream merezca su propio carril
74
+ `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.
83
75
 
84
76
  ```bash
85
- gctree checkout -b client-b
86
- gctree onboard
77
+ gctree resolve --query "auth token rotation policy"
87
78
  ```
88
79
 
89
- Si un cliente, un producto, una migración o una iniciativa concreta necesita su propio contexto duradero, dale su propio gc-branch.
90
-
91
- ### Actualiza después el contexto duradero
92
-
93
- ```bash
94
- gctree update-global-context
80
+ ```json
81
+ {
82
+ "gc_branch": "main",
83
+ "matches": [
84
+ {
85
+ "title": "Convenciones de Auth y Sesión",
86
+ "score": 4,
87
+ "summary": "Rotation de JWT en cada petición, refresh tokens en cookies httpOnly, TTL de 15 min para access tokens",
88
+ "excerpt": "## Flujo de Auth\nAccess token: TTL 15 min, rotation en cada petición autenticada..."
89
+ }
90
+ ]
91
+ }
95
92
  ```
96
93
 
97
- A medida que el trabajo avanza, añade al gc-branch activo lo que merece quedarse a largo plazo.
94
+ Tu herramienta de IA recibe el contexto correcto no toda la base de conocimiento, solo el fragmento relevante.
98
95
 
99
- Alias cortos:
96
+ **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.
100
97
 
101
- ```bash
102
- gctree update-gc
103
- gctree ugc
104
- ```
98
+ ---
105
99
 
106
- ### Resuelve el contexto cuando de verdad lo necesites
100
+ ## ¿En qué se diferencia de CLAUDE.md o cursor rules?
107
101
 
108
- ```bash
109
- gctree resolve --query "auth token rotation"
110
- ```
102
+ `CLAUDE.md` es genial — para un solo repositorio.
103
+
104
+ En el momento en que tienes múltiples repos, clientes o workstreams:
111
105
 
112
- Trae de vuelta el contexto relevante justo en el momento en que hace falta.
106
+ | | `CLAUDE.md` / cursor rules | `gc-tree` |
107
+ | -------------------------- | -------------------------- | --------------------------------------------- |
108
+ | Alcance | Un repositorio | Múltiples repos, un contexto |
109
+ | Persistencia | Archivo dentro del repo | Almacenado fuera, reutilizable entre sesiones |
110
+ | Cambio de contexto | Edición manual de archivos | `gctree checkout client-b` |
111
+ | Filtrado por relevancia | Todo o nada | Solo inyecta docs coincidentes (~4%) |
112
+ | Onboarding | Escrito a mano | Guiado por tu herramienta de IA |
113
+ | Compatible con Codex | ✅ | ✅ |
114
+ | Compatible con Claude Code | ✅ | ✅ |
113
115
 
114
116
  ---
115
117
 
116
- ## Por qué se siente natural
118
+ ## Rendimiento validado
117
119
 
118
- **Puedes manejar varios contextos como si fueran ramas de Git, pero sin tener que vivir pendiente de ellos.**
120
+ Probado con documentación interna real (4 exportaciones de Notion, consultas mixtas en español e inglés):
119
121
 
120
- Puedes separar contextos para:
122
+ | Métrica | Resultado |
123
+ | ------------------------------------------------------------ | ---------------- |
124
+ | Recall — consultas relevantes que encuentran el doc correcto | **100%** (16/16) |
125
+ | Precision — consultas irrelevantes que devuelven vacío | **80%** (4/5) |
126
+ | F1 score | **88.9%** |
127
+ | Tokens inyectados por consulta vs. contexto total | **~4%** |
128
+ | Compatible con consultas mixtas en varios idiomas | ✅ |
121
129
 
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
130
+ ---
127
131
 
128
- Y moverte entre ellos con comandos familiares:
132
+ ## Funciona con Claude Code y Codex — ambos verificados
129
133
 
130
134
  ```bash
131
- gctree checkout -b client-b
132
- gctree checkout main
135
+ gctree scaffold --host claude-code # instala snippet en CLAUDE.md + /gc-onboard, /gc-update-global-context
136
+ gctree scaffold --host codex # instala snippet en AGENTS.md + $gc-onboard, $gc-update-global-context
137
+ gctree scaffold --host both # ambos a la vez
133
138
  ```
134
139
 
135
- Pero, a diferencia de Git, no tienes que vigilar ese cambio manualmente todo el tiempo.
140
+ Los dos providers usan el mismo almacén de contexto. Haz el onboarding una vez y úsalo desde cualquiera de los dos.
136
141
 
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.
142
+ **Claude Code** usa los slash commands `/gc-resolve-context`, `/gc-onboard`, `/gc-update-global-context`.
138
143
 
139
- Eso te permite mantener varios contextos a largo plazo sin arrastrarlos todos a cada sesión de trabajo.
144
+ **Codex** usa los skills `$gc-resolve-context`, `$gc-onboard`, `$gc-update-global-context`. Verificado con `codex exec`:
140
145
 
141
- ---
146
+ ```
147
+ gctree status → gc_branch: main, doc_count: 2
148
+ gctree resolve --query 'NestJS DTO plainToInstance'
149
+ → coincidencia con "Convenciones de Backend" (score: 3)
150
+ → DTO: class-transformer plainToInstance, class-validator obligatorio
151
+ → Manejo de errores: excepciones personalizadas basadas en HttpException, prohibido lanzar raw Error
152
+ ```
142
153
 
143
- ## Un flujo de trabajo realista
154
+ ---
144
155
 
145
- Imagina que trabajas entre:
156
+ ## Movimientos habituales
146
157
 
147
- - un repo compartido de plataforma
148
- - dos repos de cliente
149
- - un repo de tooling interno
158
+ ### Contextos separados para workstreams distintos
150
159
 
151
- Sin `gc-tree`, cada sesión nueva con IA obliga a volver a explicar:
160
+ ```bash
161
+ gctree checkout -b client-b
162
+ gctree onboard
163
+ ```
152
164
 
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
165
+ Cada gc-branch es un carril de contexto completamente independiente. Cambia entre ellos como con ramas de Git.
157
166
 
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.
167
+ ### Traer contexto relevante cuando lo necesitas
159
168
 
160
- Ese es el trabajo real que resuelve:
169
+ ```bash
170
+ gctree resolve --query "billing retry policy"
171
+ ```
161
172
 
162
- > no “guardar más texto de prompt”,
163
- > sino **gestionar el contexto correcto en el nivel correcto del trabajo**.
173
+ 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
174
 
165
- ---
175
+ ### Mantener el contexto al día
166
176
 
167
- ## Conceptos clave
177
+ ```bash
178
+ gctree update-global-context # o: gctree update-gc / gctree ugc
179
+ ```
168
180
 
169
- - **gc-branch**
170
- Un carril de contexto duradero para un producto, cliente, workstream o dominio.
181
+ Flujo de actualización guiado — tu herramienta de IA pregunta qué ha cambiado y escribe el nuevo contexto de vuelta al gc-branch.
171
182
 
172
- - **repo scope**
173
- Las reglas que deciden en qué repositorios debe aplicarse un contexto.
183
+ ### Acotar el contexto a repos específicos
174
184
 
175
- - **provider-guided flow**
176
- En vez de escribir JSON a mano, haces onboarding y actualizaciones desde tu herramienta de IA preferida.
185
+ ```bash
186
+ gctree set-repo-scope --branch client-b --include # incluir el repo actual
187
+ gctree set-repo-scope --branch client-b --exclude # excluir el repo actual
188
+ ```
177
189
 
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.
190
+ `gc-tree` no inyectará un contexto en repos donde no corresponde.
181
191
 
182
192
  ---
183
193
 
184
- ## Comandos visibles dentro del runtime
185
-
186
- Después del scaffold, los comandos visibles son:
194
+ ## Cómo se almacena el contexto
187
195
 
188
- - **Codex:** `$gc-onboard`, `$gc-update-global-context`
189
- - **Claude Code:** `/gc-onboard`, `/gc-update-global-context`
196
+ ```
197
+ ~/.gctree/
198
+ branches/
199
+ main/
200
+ index.md ← índice compacto, ≤2000 chars, se carga primero
201
+ docs/
202
+ auth.md ← doc completo, se lee solo cuando hace falta
203
+ architecture.md
204
+ client-b/
205
+ index.md
206
+ docs/
207
+ ...
208
+ branch-repo-map.json ← qué repos pertenecen a qué gc-branch
209
+ settings.json ← provider preferido, idioma
210
+ ```
190
211
 
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.
212
+ 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
213
 
193
214
  ---
194
215
 
195
- ## Comandos clave de un vistazo
196
-
197
- | Objetivo | Comando |
198
- | --- | --- |
199
- | Inicializar gc-tree y elegir provider | `gctree init` |
200
- | Confirmar el gc-branch activo | `gctree status` |
201
- | 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
- | 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` |
216
+ ## Comandos principales
217
+
218
+ | Objetivo | Comando |
219
+ | -------------------------------------------------- | --------------------------------------------------------------- |
220
+ | Inicializar gc-tree y elegir provider | `gctree init` |
221
+ | Confirmar el gc-branch activo | `gctree status` |
222
+ | Buscar en el contexto activo | `gctree resolve --query "..."` |
223
+ | Crear o cambiar gc-branches | `gctree checkout <branch>` / `gctree checkout -b <branch>` |
224
+ | Listar todos los gc-branches | `gctree branches` |
225
+ | Onboarding guiado de un gc-branch vacío | `gctree onboard` |
226
+ | Actualización guiada del gc-branch activo | `gctree update-global-context` / `gctree ugc` |
227
+ | Ver reglas de alcance por repo | `gctree repo-map` |
228
+ | Incluir o excluir el repo actual para un gc-branch | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
229
+ | Resetear un gc-branch antes de re-onboard | `gctree reset-gc-branch --branch <name> --yes` |
230
+ | Instalar scaffold en un nuevo entorno | `gctree scaffold --host codex --target /path/to/repo` |
209
231
 
210
232
  ---
211
233
 
212
234
  ## Documentación
213
235
 
214
- La documentación detallada está en el directorio [`docs/`](https://github.com/handsupmin/gc-tree/tree/main/docs).
215
-
216
236
  - **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
237
  - **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
238
  - **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
239
  - **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
240
 
225
241
  ---
226
242
 
227
243
  ## Contribuir
228
244
 
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.
245
+ 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
246
 
231
247
  ---
232
248