ostacky 0.8.1 → 0.8.2

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.md CHANGED
@@ -119,6 +119,7 @@ npx ostacky install --scope auto # local si existe .opencode/.git, si no glob
119
119
  Descarga todos los agentes y commands definidos en el manifest y los escribe en `.opencode/` (scope `local`) o en `~/.config/opencode` (`global`). Además copia los plugins **Ostacky-owned** `ostacky-plugin.ts` + `engram.ts` en `.opencode/plugins/` (el legacy `ostacky-guard.ts` fue fusionado en `ostacky-plugin.ts` y ya no se instala; `ostacky-controller.ts` legacy se limpia automáticamente si quedó de una instalación previa).
120
120
 
121
121
  > **Coherencia local/global:** aunque elijas `global`, los plugins y herramientas (`tools/` con CodeGraph/Engram) permanecen siempre en `<proyecto>/.opencode` local para el hard-gate por worktree. En global solo se escribe el scope global + un espejo local de plugins. Para stack completo por proyecto ejecutá `npx ostacky install --scope local` dentro de cada repo.
122
+ > **Windows — dónde se instala realmente:** `global` es `%APPDATA%\opencode` (`C:\Users\<vos>\AppData\Roaming\opencode`), **no** `C:\Users\<vos>\.opencode`. Si ves `C:\Users\...\ .opencode\tools\codegraph` y esperabas `D:\mi-proyecto\.opencode`, es porque corriste `npx ostacky` desde tu home sin estar dentro del proyecto (sin `.git`). Hacé `cd` al proyecto y re-ejecutá con `--scope local`; el log ahora muestra `projectRoot` y `toolsDir` explícitos para evitar confusión.
122
123
 
123
124
  ### Agregar agentes o commands individualmente
124
125
 
@@ -250,37 +251,37 @@ Tras instalar (`--scope local`), el proyecto queda así:
250
251
 
251
252
  ```json
252
253
  {
253
- "version": "0.8.1",
254
+ "version": "0.8.2",
254
255
  "lockedAt": "2025-01-01T00:00:00.000Z",
255
256
  "repo": "JaimeHoracio/Ostacky",
256
- "tag": "v0.8.1",
257
+ "tag": "v0.8.2",
257
258
  "agents": {
258
259
  "ostacky": {
259
- "version": "0.8.1",
260
+ "version": "0.8.2",
260
261
  "installedAt": "2025-01-01T00:00:00.000Z",
261
262
  "sha256": "abc123..."
262
263
  }
263
264
  },
264
265
  "commands": {
265
266
  "install-stack": {
266
- "version": "0.8.1",
267
+ "version": "0.8.2",
267
268
  "installedAt": "2025-01-01T00:00:00.000Z",
268
269
  "sha256": "def456..."
269
270
  },
270
271
  "opsx-sync": {
271
- "version": "0.8.1",
272
+ "version": "0.8.2",
272
273
  "installedAt": "2025-01-01T00:00:00.000Z",
273
274
  "sha256": "ghi789..."
274
275
  }
275
276
  },
276
277
  "skills": {
277
- "brainstorming": { "version": "0.8.1", ... },
278
- "execution-mode-evaluation": { "version": "0.8.1", ... },
279
- "openspec-propose": { "version": "0.8.1", ... }
278
+ "brainstorming": { "version": "0.8.2", ... },
279
+ "execution-mode-evaluation": { "version": "0.8.2", ... },
280
+ "openspec-propose": { "version": "0.8.2", ... }
280
281
  },
281
282
  "mcpServers": {
282
- "ostacky-controller": { "version": "0.8.1", ... },
283
- "openspec": { "version": "0.8.1", ... }
283
+ "ostacky-controller": { "version": "0.8.2", ... },
284
+ "openspec": { "version": "0.8.2", ... }
284
285
  }
285
286
  }
286
287
  ```
@@ -312,7 +313,7 @@ Es opcional y solo necesario si algo falló durante la instalación o si querés
312
313
  ## Seguridad
313
314
 
314
315
  - `opencode.jsonc` se versiona en el repo para compartir permisos y MCP de forma reproducible.
315
- - Las URLs de descarga usan **tags de GitHub** (ej. `v0.8.1`), nunca `main` — instalaciones reproducibles
316
+ - Las URLs de descarga usan **tags de GitHub** (ej. `v0.8.2`), nunca `main` — instalaciones reproducibles
316
317
  - Cada path de archivo descargado es validado para prevenir **path traversal**
317
318
  - Los archivos incluyen **checksum SHA-256** opcional; si el manifest lo define, el contenido se verifica antes de escribir
318
319
  - El cache local (`.opencode/cache/`) también valida integridad al servir archivos cacheados
@@ -369,6 +370,8 @@ CodeGraph está instalado en `.opencode/tools/codegraph/bin/codegraph` y se conf
369
370
  | `.opencode/tools/codegraph/bin/codegraph status` | Muestra estado del index y archivos pendientes |
370
371
  | `.opencode/tools/codegraph/bin/codegraph install --target opencode --location local --yes` | Configura CodeGraph para OpenCode y genera AGENTS.md |
371
372
 
373
+ > **Windows:** si ves `Command failed: cmd.exe /d /c call ... codegraph.cmd init -i` durante `npx ostacky install`, es un _warning_ no fatal — el binario se instaló pero el índice no se pudo crear. Reintentá con `npx ostacky install-stack --scope local` o ejecutá manualmente `.opencode\tools\codegraph\bin\codegraph.exe init -i` (o `codegraph.cmd` si no hay `.exe`) dentro del proyecto. Desde v0.8.2 el instalador usa el patrón resiliente de Engram (strip 0 + búsqueda recursiva) y loguea `projectRoot|toolsDir` para diagnosticar scope.
374
+
372
375
  ## Licencia
373
376
 
374
377
  MIT
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  description: Orquestador principal — rutea por nivel, orquesta CodeGraph + OpenSpec + Superpowers.
3
3
  mode: primary
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  ---
6
6
 
7
- Sos **Ostacky v0.8.1**, orquestás, no implementás. Interpretás, clasificás (0/0+1/1+), ruteás y coordinás.
7
+ Sos **Ostacky v0.8.2**, orquestás, no implementás. Interpretás, clasificás (0/0+1/1+), ruteás y coordinás.
8
8
 
9
- > **Versión:** `0.8.1` (sincronizada desde `package.json` vía `scripts/sync-version.ts`). Cuando te pregunten qué versión tenés, qué versión sos, o `¿qué versión tenés?` / `version` / `¿en qué versión estás?`, respondé exactamente: **"Ostacky v0.8.1"** (o `v0.8.1` si te piden solo el número). No inventes otra versión.
9
+ > **Versión:** `0.8.2` (sincronizada desde `package.json` vía `scripts/sync-version.ts`). Cuando te pregunten qué versión tenés, qué versión sos, o `¿qué versión tenés?` / `version` / `¿en qué versión estás?`, respondé exactamente: **"Ostacky v0.8.2"** (o `v0.8.2` si te piden solo el número). No inventes otra versión.
10
10
 
11
11
  ## Reglas innegociables
12
12
 
@@ -1,17 +1,17 @@
1
1
  ---
2
- description: Instala CodeGraph, skills curadas, OpenSpec, Engram y Context7 localmente para OpenCode únicamente
2
+ description: Instala CodeGraph, skills curadas, OpenSpec y Engram localmente para OpenCode únicamente
3
3
  agent: build
4
4
  ---
5
5
 
6
6
  Instala el stack tecnológico de desarrollo para OpenCode. **IMPORTANTE:** las herramientas se instalan por separado (cada una con su propio CLI/comando). `npx ostacky install` solo instala el agente y commands de Ostacky en `.opencode/`. Este comando (`/install-stack`) es la guía de referencia para la instalación manual completa paso a paso.
7
7
 
8
- **Nota:** A partir de v0.8.1, `npx ostacky install` ya instala automáticamente el stack completo (CodeGraph, OpenSpec, Engram, Context7, MCPs bundleados) además del agente y skills. Este comando es útil para instalación manual, verificación, o cuando algo falló y necesita reinstalarse.
8
+ **Nota:** A partir de v0.8.2, `npx ostacky install` ya instala automáticamente el stack completo (CodeGraph, OpenSpec, Engram, MCPs bundleados) además del agente y skills. Este comando es útil para instalación manual, verificación, o cuando algo falló y necesita reinstalarse.
9
9
 
10
10
  **RESTRICCIÓN ABSOLUTA:** instalar ÚNICAMENTE para OpenCode. Está terminantemente prohibido crear o modificar archivos en `.claude/`, `.kiro/`, `.cursor/`, `.gemini/`, `.codex/`, `.antigravity/`, `.windsurf/` o cualquier otro directorio de plataformas externas.
11
11
 
12
- **Origen del set curado:** el set de 15 skills referenciado en `assets/agents/ostacky.md` está bundleado en `assets/skills/` dentro del paquete npm. Context7 agrega su propio skill vía `npx ctx7 setup --opencode`. La definición del set y su trazabilidad viven en `manifest.json` y `.opencode/ostacky-lock.json`.
12
+ **Origen del set curado:** el set de 15 skills referenciado en `assets/agents/ostacky.md` está bundleado en `assets/skills/` dentro del paquete npm. La definición del set y su trazabilidad viven en `manifest.json` y `.opencode/ostacky-lock.json`.
13
13
 
14
- ## Scope de instalación — local vs global (desde v0.8.1)
14
+ ## Scope de instalación — local vs global (desde v0.8.2)
15
15
 
16
16
  `npx ostacky install` soporta `--scope local|global|auto` (también `--scope=...`):
17
17
 
@@ -164,7 +164,7 @@ Ostacky automáticamente detecta la ausencia del controller y opera en modo degr
164
164
 
165
165
  ## Paso 2 — Skills curadas (bundleadas)
166
166
 
167
- Las **15 skills curadas** están bundleadas dentro del paquete Ostacky en `assets/skills/`. No se descargan ni clonan; ya vienen en el paquete npm. Context7 agrega su propia skill aparte (Paso 6).
167
+ Las **15 skills curadas** están bundleadas dentro del paquete Ostacky en `assets/skills/`. No se descargan ni clonan; ya vienen en el paquete npm.
168
168
 
169
169
  Copiá cada skill bundleada a `.opencode/skills/<nombre>/` preservando la estructura interna (incluyendo `SKILL.md` y cualquier subdirectorio como `scripts/` o `references/`):
170
170
 
@@ -215,11 +215,6 @@ Leé `opencode.json` (o `opencode.jsonc`) en la raíz del proyecto.
215
215
  "command": [".opencode/tools/engram/bin/engram", "mcp"],
216
216
  "enabled": true
217
217
  },
218
- "context7": {
219
- "type": "remote",
220
- "url": "https://mcp.context7.com/mcp",
221
- "enabled": true
222
- },
223
218
  "ostacky-controller": {
224
219
  "type": "local",
225
220
  "command": ["node", ".opencode/mcp/ostacky-controller/index.js"],
@@ -353,99 +348,6 @@ rm -rf ~/.engram/
353
348
 
354
349
  ---
355
350
 
356
- ## Paso 6 — Context7
357
-
358
- [Context7](https://context7.com) provee documentación actualizada de librerías y APIs directamente en el contexto del agente. Se instala como un CLI vía `npx`, sin dependencias globales ni MCP server necesario (aunque también soporta MCP).
359
-
360
- **RESTRICCIÓN:** configurar ÚNICAMENTE para OpenCode. Está terminantemente prohibido crear archivos en `.claude/`, `.kiro/`, `.cursor/`, `.gemini/`, `.codex/`, `.antigravity/`, `.windsurf/` o cualquier otro directorio de plataformas externas.
361
-
362
- ### Verificar instalación actual
363
-
364
- Chequeá si Context7 ya está configurado para OpenCode:
365
-
366
- ```bash
367
- ls -la .opencode/skills/context7/ 2>/dev/null || echo "no-instalado"
368
- ```
369
-
370
- También podés verificar si el MCP server de Context7 está en `opencode.json`:
371
-
372
- ```bash
373
- grep -c "context7" opencode.json 2>/dev/null || echo "no-configurado"
374
- ```
375
-
376
- ### Instalar
377
-
378
- **Opción recomendada — setup automático (CLI + skills):**
379
-
380
- ```bash
381
- npx ctx7 setup --opencode
382
- ```
383
-
384
- Este comando:
385
-
386
- - Autentica vía OAuth y genera una API key
387
- - Instala un skill en `.opencode/skills/context7/` que el agente Ostacky usa automáticamente
388
- - Pregunta si preferís modo CLI + Skills o MCP
389
- - **NO** toca `.claude/`, `.cursor/`, `.gemini/` ni ninguna otra plataforma
390
-
391
- **Alternativa — solo MCP (si preferís el server remoto):**
392
-
393
- Agregá manualmente la entrada MCP en `opencode.json`:
394
-
395
- ```json
396
- {
397
- "mcp": {
398
- "context7": {
399
- "type": "remote",
400
- "url": "https://mcp.context7.com/mcp"
401
- }
402
- }
403
- }
404
- ```
405
-
406
- Si tenés una API key de Context7 (recomendado para mejores rate limits):
407
-
408
- ```json
409
- {
410
- "mcp": {
411
- "context7": {
412
- "type": "remote",
413
- "url": "https://mcp.context7.com/mcp",
414
- "headers": {
415
- "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
416
- }
417
- }
418
- }
419
- }
420
- ```
421
-
422
- ### Desinstalar
423
-
424
- Para remover la configuración generada por `npx ctx7 setup`:
425
-
426
- ```bash
427
- npx ctx7 remove
428
- ```
429
-
430
- Esto elimina el skill y la configuración de Context7. Si instalaste el CLI globalmente con `npm install -g ctx7`, también necesitás:
431
-
432
- ```bash
433
- npm uninstall -g ctx7
434
- ```
435
-
436
- Para remover la entrada MCP manual, editá `opencode.json` y eliminá el bloque `mcp.context7`.
437
-
438
- ### Cómo lo usa Ostacky
439
-
440
- El skill de Context7 instalado le indica al agente Ostacky que use Context7 automáticamente cuando necesite documentación de librerías, APIs o frameworks. También se puede invocar explícitamente:
441
-
442
- ```
443
- usá context7 para mostrarme la API de autenticación de Supabase
444
- use context7 to find Next.js 15 app router examples
445
- ```
446
-
447
- ---
448
-
449
351
  ## Estructura de herramientas
450
352
 
451
353
  Cada herramienta se instala en su propia carpeta dentro de `.opencode/` para mantener una instalación limpia y aislada. El installer crea automáticamente `.opencode/tools/<nombre>/` para cada herramienta externa:
@@ -481,10 +383,9 @@ Cada herramienta se instala en su propia carpeta dentro de `.opencode/` para man
481
383
  │ ├── using-superpowers/
482
384
  │ ├── writing-skills/
483
385
  │ └── graceful-degradation/
484
- ├── tools/ # Config y archivos de herramientas externas
485
- │ ├── codegraph/ # Config de CodeGraph (AGENTS.md si codegraph lo crea)
486
- ├── engram/ # Config project-local de Engram
487
- │ └── context7/ # Config de Context7
386
+ ├── tools/ # Binarios locales de herramientas externas
387
+ │ ├── codegraph/ # Binario local de CodeGraph
388
+ └── engram/ # Binario local de Engram
488
389
  └── plugins/ # Plugins de OpenCode
489
390
  ```
490
391
 
@@ -493,24 +394,23 @@ Cada herramienta se instala en su propia carpeta dentro de `.opencode/` para man
493
394
  - `.codegraph/` (índice de CodeGraph) vive en la raíz del proyecto — CodeGraph lo espera ahí.
494
395
  - El binario de CodeGraph es **local al proyecto** en `.opencode/tools/codegraph/bin/`; en Windows puede ser `codegraph.cmd`. No se instala globalmente.
495
396
  - El binario de Engram es **local al proyecto** en `.opencode/tools/engram/bin/engram` (o `engram.exe` en Windows). No se instala globalmente.
496
- - Context7 se registra como MCP remoto en `opencode.jsonc`. Su skill opcional se instala via `npx ctx7 setup --opencode` en `.opencode/skills/context7/`.
397
+ - El binary de CodeGraph y Engram vive siempre en `<proyecto>/.opencode/tools/` por reproducibilidad, nunca global.
497
398
  - El controller publicado se bundlea como un único `index.js`; durante desarrollo el installer instala sus dependencias en staging y valida el servidor antes de activarlo.
498
399
 
499
400
  ## Verificación final
500
401
 
501
402
  Confirmá que:
502
403
 
503
- 1. `.opencode/skills/` contiene las 15 skills curadas y opcionalmente `context7/` si se instaló con `npx ctx7 setup --opencode`
404
+ 1. `.opencode/skills/` contiene las 15 skills curadas
504
405
  2. `.opencode/commands/` contiene los commands bundleados por Ostacky (`install-stack`, `opsx-sync`) y los 4 commands generados por OpenSpec (`opsx-apply`, `opsx-archive`, `opsx-explore`, `opsx-propose`) si OpenSpec fue inicializado
505
- 3. `opencode.json` (o `.jsonc`) tiene los bloques MCP: `codegraph`, `engram`, `context7`, `ostacky-controller` — sin campo `plugin`
406
+ 3. `opencode.json` (o `.jsonc`) tiene los bloques MCP: `codegraph`, `engram`, `ostacky-controller` — sin campo `plugin`
506
407
  4. `.codegraph/` existe en la raíz del proyecto (índice local de CodeGraph)
507
408
  5. El launcher local de CodeGraph funciona (`codegraph.cmd --version` en Windows o `codegraph --version` en Unix)
508
409
  6. El binario local de Engram funciona (`engram.exe --version` en Windows o `engram --version` en Unix)
509
- 7. Context7 configurado: `mcp.context7` presente en `opencode.jsonc` y/o `.opencode/skills/context7/SKILL.md` existe
510
- 8. OpenSpec generó sus commands/skills para OpenCode mediante `openspec init --tools opencode`
511
- 9. `.opencode/tools/` contiene subdirectorios para `codegraph/`, `engram/` y `context7/`
512
- 10. **NO existen** archivos generados en `.claude/`, `.kiro/`, `.cursor/`, `.gemini/`, `.codex/` ni ningún directorio de otra plataforma
513
- 11. Un `AGENTS.md` preexistente en la raíz del proyecto se preserva sin cambios
410
+ 7. OpenSpec generó sus commands/skills para OpenCode mediante `openspec init --tools opencode` (si se usó)
411
+ 8. `.opencode/tools/` contiene subdirectorios para `codegraph/` y `engram/`
412
+ 9. **NO existen** archivos generados en `.claude/`, `.kiro/`, `.cursor/`, `.gemini/`, `.codex/` ni ningún directorio de otra plataforma
413
+ 10. Un `AGENTS.md` preexistente en la raíz del proyecto se preserva sin cambios
514
414
 
515
415
  Reportá el estado de cada componente con ✓ o ✗.
516
416
 
@@ -26,7 +26,6 @@ BLOCKED: replan→INTERPRETATION_PENDING, abandon→DONE
26
26
  | codegraph_* | 10s | 1 | Engram → Read+Glob |
27
27
  | controller_* | 5s | 1 | degraded |
28
28
  | engram_* | 5s | 1 | sin memoria |
29
- | context7_* | 10s | 1 | sin docs |
30
29
 
31
30
  ## Cache
32
31
 
@@ -75,5 +74,4 @@ Principio: **eficacia > recorte** — si recorte rompiera caché y saliera más
75
74
 
76
75
  - `ostacky.md` 109→72 líneas (diet estable cacheable). Tiered vía suffix, no reemplazo `system[0]`.
77
76
  - `controller` descriptions <150 chars
78
- - `context7` lazy: `enabled:false` default, trigger `docs|api|lib|Context7` habilita
79
77
  - `MEMORY_INSTRUCTIONS` lazy: siempre pointer (~1 línea) en `system.transform`; full vive en `assets/docs/engram-protocol.md` on-demand via `Read` (ahorro ~1.2k en FULL, trivial ya era pointer)
@@ -2371,7 +2371,7 @@ function safeHandler(fn, options = {}) {
2371
2371
 
2372
2372
  const server = new McpServer({
2373
2373
  name: 'ostacky-controller',
2374
- version: '0.8.1',
2374
+ version: '0.8.2',
2375
2375
  });
2376
2376
 
2377
2377
  server.registerTool(
@@ -2971,7 +2971,7 @@ function setupGracefulShutdown(ctrl) {
2971
2971
  }
2972
2972
 
2973
2973
  async function main() {
2974
- log('Starting ostacky-controller MCP v0.8.1...');
2974
+ log('Starting ostacky-controller MCP v0.8.2...');
2975
2975
  log('State path:', { path: statePath });
2976
2976
  // Clean up stale tmp/lock files from previous runs
2977
2977
  cleanupTmpFiles(statePath);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ostacky-controller",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -38,7 +38,7 @@ Do NOT invoke any implementation skill, write any code, or scaffold any project
38
38
 
39
39
  1. **Check discovery-cache first** — `src/discovery-cache.ts` `getDiscoverySnapshot(query)` + `getEngramDedup(query, requestId)`. Si hit válido (TTL+gitDiffHash), **reusar** sin llamar tools. Solo si miss → `engram_mem_search` + `codegraph_codegraph_explore` y **SHALL `putDiscoverySnapshot`** antes de avanzar. No re-llamar si área difiere <30% del snapshot.
40
40
  2. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
41
- 4. **Propose 2-3 approaches (hardening-v2 — SHALL)** — con tabla trade-offs (coste|riesgo|complejidad) + evidencia CodeGraph+Engram (+Context7 si librería) sin alucinar, YAGNI, y recomendación con razón; cada approach cita symbols existentes y mem_search hits verificables
41
+ 4. **Propose 2-3 approaches (hardening-v2 — SHALL)** — con tabla trade-offs (coste|riesgo|complejidad) + evidencia CodeGraph+Engram sin alucinar, YAGNI, y recomendación con razón; cada approach cita symbols existentes y mem_search hits verificables
42
42
  5. **Present design** — in sections scaled to complexity, get user approval after each section. **Gate post-brainstorming (hardening-v2):** tras presentar diseño, preguntar "¿Procedo con este diseño o querés ajustar algo?" y esperar confirmación explícita antes de `record_discovery`, `openspec-propose` o implementación directa
43
43
  6. **Write design doc (output path condicional — router exclusivo):**
44
44
  - Si trigger + `level 1+` no-downgradeable (`estLines>30` o `fileCount>2` o API pública) y change activo → escribir `openspec/changes/<id>/design.md` sección `## Alternatives Considered` con 2-3 approaches (tabla coste|riesgo|complejidad + evidencia CodeGraph+Engram), no `docs/`. No invocar `openspec-propose` separado — este es el diseño.
@@ -20,7 +20,6 @@ When critical tools are unavailable, this skill provides a systematic approach t
20
20
  | CodeGraph | MCP server | Engram → Read + Glob | No structural analysis, manual exploration |
21
21
  | Engram | MCP server | Continue without memory | No persistence across sessions |
22
22
  | Controller | MCP server | Inline validation + manual state | No state machine, no edit validation |
23
- | Context7 | MCP server (remote) | Skip documentation | No external API docs |
24
23
 
25
24
  ## Detection
26
25
 
@@ -108,12 +107,6 @@ Incluso en degraded, el guard de credenciales sigue activo (hard gate incluso en
108
107
  - No state persistence across crashes
109
108
  - No pending state enforcement (check_pending_state unavailable)
110
109
 
111
- ### Without Context7
112
-
113
- **Impact:** Minimal — only affects external API documentation lookups.
114
-
115
- **Workflow:** Proceed normally. Use existing knowledge.
116
-
117
110
  ## Communication Protocol
118
111
 
119
112
  ### Status Report Format
@@ -141,7 +134,6 @@ Herramientas disponibles:
141
134
  ✅ Controller — ping OK
142
135
  ❌ CodeGraph — timeout 10s
143
136
  ✅ Engram — disponible
144
- ✅ Context7 — disponible
145
137
 
146
138
  ¿Continuar con lectura manual de archivos?
147
139
  ```
@@ -154,7 +146,6 @@ Herramientas disponibles:
154
146
  ❌ Controller — no responde
155
147
  ❌ CodeGraph — no instalado
156
148
  ❌ Engram — timeout 5s
157
- ✅ Context7 — disponible (pero sin docs relevantes)
158
149
 
159
150
  Modo básico: sin validación de edits, sin memoria persistente, sin análisis estructural.
160
151
  ¿Continuar o cancelar?
package/dist/cli.js CHANGED
@@ -744,31 +744,31 @@ var init_fs = __esm(() => {
744
744
  var manifest_default;
745
745
  var init_manifest = __esm(() => {
746
746
  manifest_default = {
747
- version: "0.8.1",
747
+ version: "0.8.2",
748
748
  repo: "JaimeHoracio/Ostacky",
749
- tag: "v0.8.1",
749
+ tag: "v0.8.2",
750
750
  agents: [
751
751
  {
752
752
  name: "ostacky",
753
753
  file: "assets/agents/ostacky.md",
754
- description: "Orquestador con recuperación automática (nunca se congela), ruteo por nivel de impacto, controller MCP con SDK oficial, edición segura con fallback inline, y delegación en OpenSpec + Superpowers. v0.8.1: prune de skills obsoletas, lastHandoff, getAvailableTransitions, consecutiveFailures real, mem_session_summary automático al cierre.",
755
- version: "0.8.1",
756
- sha256: "1dea56ffe3866e830c5138b44ff3e7531324ddd2784b1d34a8956614a53c5ec9"
754
+ description: "Orquestador con recuperación automática (nunca se congela), ruteo por nivel de impacto, controller MCP con SDK oficial, edición segura con fallback inline, y delegación en OpenSpec + Superpowers. v0.8.2: prune de skills obsoletas, lastHandoff, getAvailableTransitions, consecutiveFailures real, mem_session_summary automático al cierre.",
755
+ version: "0.8.2",
756
+ sha256: "7b2be94d05cd371fab5be5844ef7d82e542e84c2869d8171ccd63dc14e922dc3"
757
757
  }
758
758
  ],
759
759
  commands: [
760
760
  {
761
761
  name: "install-stack",
762
762
  file: "assets/commands/install-stack.md",
763
- description: "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, controller plugin). v0.8.1: controller plugin como alma hard-gate, Context7 removido del stack.",
764
- version: "0.8.1",
765
- sha256: "43ad96a63ceab8730cf0459838e7fad2953333307cfc664a849ca39f7ba7d532"
763
+ description: "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, controller plugin). v0.8.2: controller plugin como alma hard-gate, Context7 removido del stack.",
764
+ version: "0.8.2",
765
+ sha256: "24802dc29675a584dacf4d0ac8a944dd935ee0f96a4e804a9b1c5bdb3709438c"
766
766
  },
767
767
  {
768
768
  name: "opsx-sync",
769
769
  file: "assets/commands/opsx-sync.md",
770
770
  description: "Sincroniza delta specs del change activo sin inicializar CodeGraph si ya existe índice",
771
- version: "0.8.1",
771
+ version: "0.8.2",
772
772
  sha256: "fe0158478f2ca63b315037a85fc1632b77868532e319af6c7384285441767d64"
773
773
  }
774
774
  ],
@@ -776,15 +776,15 @@ var init_manifest = __esm(() => {
776
776
  {
777
777
  name: "ostacky-controller",
778
778
  file: "assets/mcp/ostacky-controller/",
779
- description: "Máquina de estados persistida con @modelcontextprotocol/server SDK. v0.8.1: 22 tools (incluye set_handoff, get_handoff, clear_handoff, get_available_transitions funcional). Bugfixes: consecutiveFailures real, lastHandoff state, defaultChoice persistido. Robustez: degraded mode automático tras 3 fallos, persistence condicional para Nivel 0, prune de skills obsoletas.",
780
- version: "0.8.1",
781
- sha256: "ec554bc97f9d9b1e64c0b42813547dedc923e86e326c43ae87afab88ba249b90"
779
+ description: "Máquina de estados persistida con @modelcontextprotocol/server SDK. v0.8.2: 22 tools (incluye set_handoff, get_handoff, clear_handoff, get_available_transitions funcional). Bugfixes: consecutiveFailures real, lastHandoff state, defaultChoice persistido. Robustez: degraded mode automático tras 3 fallos, persistence condicional para Nivel 0, prune de skills obsoletas.",
780
+ version: "0.8.2",
781
+ sha256: "a9d45b027a88e8037a4e29704b84f78a1d03d41654ba7445a3091a0c6767d094"
782
782
  },
783
783
  {
784
784
  name: "openspec",
785
785
  file: "assets/mcp/openspec/",
786
786
  description: "MCP server local para OpenSpec - proposal, apply, archive, sync de cambios",
787
- version: "0.8.1",
787
+ version: "0.8.2",
788
788
  sha256: "fa4be28bfc1e75db8f1a037e2580f04a60066c80e8e5934e90e1041020d04609"
789
789
  }
790
790
  ],
@@ -793,106 +793,106 @@ var init_manifest = __esm(() => {
793
793
  name: "brainstorming",
794
794
  file: "assets/skills/brainstorming/SKILL.md",
795
795
  description: "Skill unificado de pensamiento con dos modos: creative-design (producción de diseño → transición a implementación directa o openspec-propose) y open-exploration (exploración libre)",
796
- version: "0.8.1",
797
- sha256: "87f8d6ed28205f9272792d3865d8cd3232ab5e511a604d6d63d41e3a02a5f422"
796
+ version: "0.8.2",
797
+ sha256: "4c54604d4680bc695b7049c70cf8680296d8d2602e5790ddfc1cce7ba7c6f1fc"
798
798
  },
799
799
  {
800
800
  name: "execution-mode-evaluation",
801
801
  file: "assets/skills/execution-mode-evaluation/SKILL.md",
802
802
  description: "Skill de análisis de modo de ejecución — output reconciliado con controller snapshot contract (recommendation field)",
803
- version: "0.8.1",
803
+ version: "0.8.2",
804
804
  sha256: "7b89dda29927c88f1eb13ffcea541a12423384c172f66c4f3d9b61efe0c7a163"
805
805
  },
806
806
  {
807
807
  name: "tdd",
808
808
  file: "assets/skills/tdd/SKILL.md",
809
809
  description: "Skill de test-driven development (Superpowers)",
810
- version: "0.8.1",
810
+ version: "0.8.2",
811
811
  sha256: "aa412298980b7826165c211145c1b8e9135f68f36247bb3cb96d0a0eae274486"
812
812
  },
813
813
  {
814
814
  name: "subagent-driven-development",
815
815
  file: "assets/skills/subagent-driven-development/SKILL.md",
816
816
  description: "Skill de ejecución con subagentes (Superpowers) — ejecuta solo después de confirmación del coordinador Ostacky",
817
- version: "0.8.1",
817
+ version: "0.8.2",
818
818
  sha256: "1a42d714a9a13faf05f0bf7b580e8d837c2e77a5633839542ccce603023419e8"
819
819
  },
820
820
  {
821
821
  name: "dispatching-parallel-agents",
822
822
  file: "assets/skills/dispatching-parallel-agents/SKILL.md",
823
823
  description: "Skill de dispatch paralelo de agentes (Superpowers)",
824
- version: "0.8.1",
824
+ version: "0.8.2",
825
825
  sha256: "3c8a66d51ae2e719e877d02c3dac32bd804722c3bb9227c258ecae78252a20ab"
826
826
  },
827
827
  {
828
828
  name: "review",
829
829
  file: "assets/skills/review/SKILL.md",
830
830
  description: "Skill de revisión de código (Superpowers)",
831
- version: "0.8.1",
831
+ version: "0.8.2",
832
832
  sha256: "b19650ed4d1d4d9857a4dd5b7e08e91328a1a1fc9c45bcc2fb600fa9d0213279"
833
833
  },
834
834
  {
835
835
  name: "receiving-code-review",
836
836
  file: "assets/skills/receiving-code-review/SKILL.md",
837
837
  description: "Skill de recibir y procesar feedback de code review",
838
- version: "0.8.1",
838
+ version: "0.8.2",
839
839
  sha256: "d761e884e71d8d3476ac734d287cae403a4024506a7d12e7361a448217c0a831"
840
840
  },
841
841
  {
842
842
  name: "openspec-propose",
843
843
  file: "assets/skills/openspec-propose/SKILL.md",
844
844
  description: "Skill de generación de proposal (OpenSpec)",
845
- version: "0.8.1",
845
+ version: "0.8.2",
846
846
  sha256: "bb59100b9fd3c9f9a1ec6509fa975ec55bf7fc737df4fe73bb3e9bbc217b83f7"
847
847
  },
848
848
  {
849
849
  name: "openspec-apply-change",
850
850
  file: "assets/skills/openspec-apply-change/SKILL.md",
851
851
  description: "Skill de aplicación de change (OpenSpec)",
852
- version: "0.8.1",
852
+ version: "0.8.2",
853
853
  sha256: "dfc823bf89fc7505e91ab6dee9c1f004be38a410bd3d88fb67b211b1b6cbb1d0"
854
854
  },
855
855
  {
856
856
  name: "openspec-archive-change",
857
857
  file: "assets/skills/openspec-archive-change/SKILL.md",
858
858
  description: "Skill de archivo de change (OpenSpec)",
859
- version: "0.8.1",
859
+ version: "0.8.2",
860
860
  sha256: "16e4b561de7747283663fed602e506abf502452c49a8d4b86d7a5539c40f0195"
861
861
  },
862
862
  {
863
863
  name: "openspec-explore",
864
864
  file: "assets/skills/openspec-explore/SKILL.md",
865
865
  description: "Modo explore para OpenSpec — thinking partner para explorar ideas, investigar problemas y clarificar requisitos antes/durante un cambio",
866
- version: "0.8.1",
866
+ version: "0.8.2",
867
867
  sha256: "37ae4aaf17ea71a395bab6dc4d9d61b9a49d7910f6692535ae8553244c46880b"
868
868
  },
869
869
  {
870
870
  name: "using-git-worktrees",
871
871
  file: "assets/skills/using-git-worktrees/SKILL.md",
872
872
  description: "Skill de uso de git worktrees para aislamiento de trabajo",
873
- version: "0.8.1",
873
+ version: "0.8.2",
874
874
  sha256: "93341bc1b7c053618a8b6dc07e3615b77990d7b549a0201f5835d95fef67ce13"
875
875
  },
876
876
  {
877
877
  name: "using-superpowers",
878
878
  file: "assets/skills/using-superpowers/SKILL.md",
879
879
  description: "Skill de orquestación de Superpowers skills",
880
- version: "0.8.1",
880
+ version: "0.8.2",
881
881
  sha256: "7e54536f96d2a379185a10bfc1e970850caa2561b6d8aca7080f0defea0381a4"
882
882
  },
883
883
  {
884
884
  name: "writing-skills",
885
885
  file: "assets/skills/writing-skills/SKILL.md",
886
886
  description: "Skill de creación y edición de skills",
887
- version: "0.8.1",
887
+ version: "0.8.2",
888
888
  sha256: "3d76b906cee518a2b809febb70db95697a35b9f368986bb504b4120c3bfb437a"
889
889
  },
890
890
  {
891
891
  name: "graceful-degradation",
892
892
  file: "assets/skills/graceful-degradation/SKILL.md",
893
893
  description: "Skill de degradación graceful cuando múltiples tools están indisponibles",
894
- version: "0.8.1",
895
- sha256: "40f929e8032b70d51b3548bddcc383b931d6044fd9d4acce8a5b9f7acd014f59"
894
+ version: "0.8.2",
895
+ sha256: "79d0eeb2116382cb5db5b753277a333b7ca5682f4a541170b4a6158125c2cb50"
896
896
  }
897
897
  ]
898
898
  };
@@ -1260,12 +1260,6 @@ function patchOpenCodeConfig(projectRoot = findProjectRoot()) {
1260
1260
  delete config.plugin;
1261
1261
  changed = true;
1262
1262
  }
1263
- if (config.mcp && typeof config.mcp === "object" && "context7" in config.mcp) {
1264
- delete config.mcp.context7;
1265
- if (Object.keys(config.mcp).length === 0)
1266
- delete config.mcp;
1267
- changed = true;
1268
- }
1269
1263
  if (changed) {
1270
1264
  writeOpenCodeConfig(configPath, config);
1271
1265
  return { success: true, message: "Config actualizada (plugin legacy eliminado)" };
@@ -1303,11 +1297,21 @@ function resolveToolInstallLocation(toolsDir) {
1303
1297
  }
1304
1298
  function runTool(binary, args, cwd, timeout = 30000) {
1305
1299
  const invocation = getCommandInvocation(binary, args);
1306
- execFileSync3(invocation.command, invocation.args, {
1307
- cwd,
1308
- stdio: "pipe",
1309
- timeout
1310
- });
1300
+ try {
1301
+ execFileSync3(invocation.command, invocation.args, {
1302
+ cwd,
1303
+ stdio: "pipe",
1304
+ timeout
1305
+ });
1306
+ } catch (error) {
1307
+ const err = error;
1308
+ const stdout = err.stdout ? Buffer.from(err.stdout).toString().trim() : "";
1309
+ const stderr = err.stderr ? Buffer.from(err.stderr).toString().trim() : "";
1310
+ const detail = [stderr, stdout].filter(Boolean).join(`
1311
+ `) || err.message;
1312
+ const invocationStr = `${invocation.command} ${invocation.args.join(" ")}`;
1313
+ throw new Error(`${detail} (invocación: ${invocationStr}, cwd: ${cwd ?? process.cwd()})`);
1314
+ }
1311
1315
  }
1312
1316
  function findToolBinary(toolDir, name) {
1313
1317
  const binDir = join7(toolDir, "bin");
@@ -1396,18 +1400,36 @@ async function installCodeGraph(toolsDir) {
1396
1400
  const ext = process.platform === "win32" ? "zip" : "tar.gz";
1397
1401
  const url = `https://github.com/colbymchenry/codegraph/releases/download/${tag}/codegraph-${target}.${ext}`;
1398
1402
  try {
1399
- archivePromotion = await downloadAndExtractWithRetry(url, cgToolDir, 1, 180000, 2);
1403
+ archivePromotion = await downloadAndExtractWithRetry(url, cgToolDir, 0, 180000, 2);
1400
1404
  } catch (e2) {
1401
1405
  return {
1402
1406
  success: false,
1403
1407
  message: `Error descargando CodeGraph ${tag}: ${e2.message}`
1404
1408
  };
1405
1409
  }
1406
- localBin = findToolBinary(cgToolDir, "codegraph");
1407
- if (!localBin) {
1410
+ const expectedBin = join7(cgToolDir, "bin", getExecutableName("codegraph"));
1411
+ let found = findToolBinary(cgToolDir, "codegraph");
1412
+ if (!found)
1413
+ found = findBinaryInDir(cgToolDir, "codegraph");
1414
+ if (!found) {
1408
1415
  return failAfterExtraction(`Descarga de CodeGraph ${tag} completada pero no se encontró el binario en ${join7(cgToolDir, "bin")}.`);
1409
1416
  }
1410
- if (process.platform !== "win32") {
1417
+ try {
1418
+ if (found !== expectedBin) {
1419
+ mkdirSync4(join7(cgToolDir, "bin"), { recursive: true });
1420
+ if (found.toLowerCase().endsWith(".cmd") && expectedBin.toLowerCase().endsWith(".exe")) {
1421
+ localBin = found;
1422
+ } else {
1423
+ copyFileSync3(found, expectedBin);
1424
+ localBin = expectedBin;
1425
+ }
1426
+ } else {
1427
+ localBin = found;
1428
+ }
1429
+ } catch (error) {
1430
+ return failAfterExtraction(`CodeGraph fue descargado pero no se pudo materializar el binario local: ${error.message}`);
1431
+ }
1432
+ if (process.platform !== "win32" && localBin) {
1411
1433
  try {
1412
1434
  chmodSync(localBin, 493);
1413
1435
  } catch {}
@@ -1422,7 +1444,8 @@ async function installCodeGraph(toolsDir) {
1422
1444
  try {
1423
1445
  runTool(localBin, ["init", "-i"], projectRoot, 120000);
1424
1446
  } catch (error) {
1425
- indexWarning = `El índice no se pudo inicializar todavía: ${error.message}`;
1447
+ const msg = error.message;
1448
+ indexWarning = `El índice no se pudo inicializar todavía: ${msg}. Sugerencia: ejecutá manualmente \`${localBin} init -i\` en ${projectRoot} o \`npx ostacky install-stack --scope local\` para reintentar. Si el path del binario (${localBin}) apunta a ${cgToolDir} y esperabas otro proyecto, verificá que corriste el comando dentro del proyecto correcto (con .git) y con --scope local.`;
1426
1449
  }
1427
1450
  try {
1428
1451
  configureLocalTool(projectRoot, "codegraph", buildLocalMcpCommand(localBin, ["serve", "--mcp"]));
@@ -1621,7 +1644,7 @@ function uninstallStackConfig(paths) {
1621
1644
  const mcp = config.mcp;
1622
1645
  let changed = false;
1623
1646
  if (mcp) {
1624
- for (const name of ["codegraph", "engram", "context7"]) {
1647
+ for (const name of ["codegraph", "engram"]) {
1625
1648
  if (name in mcp) {
1626
1649
  delete mcp[name];
1627
1650
  removed.push(`mcp.${name}`);
@@ -1691,7 +1714,7 @@ var init_stack = __esm(() => {
1691
1714
  // package.json
1692
1715
  var package_default = {
1693
1716
  name: "ostacky",
1694
- version: "0.8.1",
1717
+ version: "0.8.2",
1695
1718
  description: "Instalador interactivo de agentes y comandos para OpenCode",
1696
1719
  type: "module",
1697
1720
  bin: {
@@ -2866,7 +2889,7 @@ async function probeMcpServer(nodeExecutable, serverPath, cwd, statePath, option
2866
2889
  params: {
2867
2890
  protocolVersion: "2025-03-26",
2868
2891
  capabilities: {},
2869
- clientInfo: { name: "ostacky-installer", version: "0.8.1" }
2892
+ clientInfo: { name: "ostacky-installer", version: "0.8.2" }
2870
2893
  }
2871
2894
  });
2872
2895
  });
@@ -3366,6 +3389,16 @@ async function doInstallStack(toolsDir, projectRoot) {
3366
3389
  const spin = L2();
3367
3390
  let allOk = true;
3368
3391
  const resolvedProjectRoot = projectRoot ?? dirname6(dirname6(toolsDir ?? join8(process.cwd(), ".opencode", "tools")));
3392
+ const resolvedToolsDir = toolsDir ?? join8(resolvedProjectRoot, ".opencode", "tools");
3393
+ v2.info(`Stack → projectRoot: ${resolvedProjectRoot} | toolsDir: ${resolvedToolsDir}`);
3394
+ try {
3395
+ const { homedir: homedir2 } = await import("os");
3396
+ const home = homedir2();
3397
+ const inHome = resolvedProjectRoot.replace(/\\/g, "/") === home.replace(/\\/g, "/");
3398
+ if (inHome && !existsSync7(join8(home, ".git"))) {
3399
+ v2.warn(`Estás instalando el stack en tu home (${home}). Si esperabas instalar en un proyecto, hacé cd al proyecto y usá --scope local.`);
3400
+ }
3401
+ } catch {}
3369
3402
  spin.start("Instalando CodeGraph...");
3370
3403
  const cg = await installCodeGraph(toolsDir);
3371
3404
  spin.stop(cg.success ? `✓ ${cg.message}` : `✗ ${cg.message}`);
@@ -3396,6 +3429,7 @@ async function doInstallAll(manifest, paths) {
3396
3429
  const spin = L2();
3397
3430
  let errors = 0;
3398
3431
  const isGlobal = isGlobalScope(paths);
3432
+ v2.info(`Scope → ${isGlobal ? "global" : "local"} | opencodeDir: ${paths.root} | tools: ${paths.tools}`);
3399
3433
  if (!isGlobal) {
3400
3434
  ensureToolDirs(paths.tools, ["codegraph", "engram"]);
3401
3435
  } else {
package/manifest.json CHANGED
@@ -1,29 +1,29 @@
1
1
  {
2
- "version": "0.8.1",
2
+ "version": "0.8.2",
3
3
  "repo": "JaimeHoracio/Ostacky",
4
- "tag": "v0.8.1",
4
+ "tag": "v0.8.2",
5
5
  "agents": [
6
6
  {
7
7
  "name": "ostacky",
8
8
  "file": "assets/agents/ostacky.md",
9
- "description": "Orquestador con recuperación automática (nunca se congela), ruteo por nivel de impacto, controller MCP con SDK oficial, edición segura con fallback inline, y delegación en OpenSpec + Superpowers. v0.8.1: prune de skills obsoletas, lastHandoff, getAvailableTransitions, consecutiveFailures real, mem_session_summary automático al cierre.",
10
- "version": "0.8.1",
11
- "sha256": "1dea56ffe3866e830c5138b44ff3e7531324ddd2784b1d34a8956614a53c5ec9"
9
+ "description": "Orquestador con recuperación automática (nunca se congela), ruteo por nivel de impacto, controller MCP con SDK oficial, edición segura con fallback inline, y delegación en OpenSpec + Superpowers. v0.8.2: prune de skills obsoletas, lastHandoff, getAvailableTransitions, consecutiveFailures real, mem_session_summary automático al cierre.",
10
+ "version": "0.8.2",
11
+ "sha256": "7b2be94d05cd371fab5be5844ef7d82e542e84c2869d8171ccd63dc14e922dc3"
12
12
  }
13
13
  ],
14
14
  "commands": [
15
15
  {
16
16
  "name": "install-stack",
17
17
  "file": "assets/commands/install-stack.md",
18
- "description": "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, controller plugin). v0.8.1: controller plugin como alma hard-gate, Context7 removido del stack.",
19
- "version": "0.8.1",
20
- "sha256": "43ad96a63ceab8730cf0459838e7fad2953333307cfc664a849ca39f7ba7d532"
18
+ "description": "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, controller plugin). v0.8.2: controller plugin como alma hard-gate, Context7 removido del stack.",
19
+ "version": "0.8.2",
20
+ "sha256": "24802dc29675a584dacf4d0ac8a944dd935ee0f96a4e804a9b1c5bdb3709438c"
21
21
  },
22
22
  {
23
23
  "name": "opsx-sync",
24
24
  "file": "assets/commands/opsx-sync.md",
25
25
  "description": "Sincroniza delta specs del change activo sin inicializar CodeGraph si ya existe índice",
26
- "version": "0.8.1",
26
+ "version": "0.8.2",
27
27
  "sha256": "fe0158478f2ca63b315037a85fc1632b77868532e319af6c7384285441767d64"
28
28
  }
29
29
  ],
@@ -31,15 +31,15 @@
31
31
  {
32
32
  "name": "ostacky-controller",
33
33
  "file": "assets/mcp/ostacky-controller/",
34
- "description": "Máquina de estados persistida con @modelcontextprotocol/server SDK. v0.8.1: 22 tools (incluye set_handoff, get_handoff, clear_handoff, get_available_transitions funcional). Bugfixes: consecutiveFailures real, lastHandoff state, defaultChoice persistido. Robustez: degraded mode automático tras 3 fallos, persistence condicional para Nivel 0, prune de skills obsoletas.",
35
- "version": "0.8.1",
36
- "sha256": "ec554bc97f9d9b1e64c0b42813547dedc923e86e326c43ae87afab88ba249b90"
34
+ "description": "Máquina de estados persistida con @modelcontextprotocol/server SDK. v0.8.2: 22 tools (incluye set_handoff, get_handoff, clear_handoff, get_available_transitions funcional). Bugfixes: consecutiveFailures real, lastHandoff state, defaultChoice persistido. Robustez: degraded mode automático tras 3 fallos, persistence condicional para Nivel 0, prune de skills obsoletas.",
35
+ "version": "0.8.2",
36
+ "sha256": "a9d45b027a88e8037a4e29704b84f78a1d03d41654ba7445a3091a0c6767d094"
37
37
  },
38
38
  {
39
39
  "name": "openspec",
40
40
  "file": "assets/mcp/openspec/",
41
41
  "description": "MCP server local para OpenSpec - proposal, apply, archive, sync de cambios",
42
- "version": "0.8.1",
42
+ "version": "0.8.2",
43
43
  "sha256": "fa4be28bfc1e75db8f1a037e2580f04a60066c80e8e5934e90e1041020d04609"
44
44
  }
45
45
  ],
@@ -48,106 +48,106 @@
48
48
  "name": "brainstorming",
49
49
  "file": "assets/skills/brainstorming/SKILL.md",
50
50
  "description": "Skill unificado de pensamiento con dos modos: creative-design (producción de diseño → transición a implementación directa o openspec-propose) y open-exploration (exploración libre)",
51
- "version": "0.8.1",
52
- "sha256": "87f8d6ed28205f9272792d3865d8cd3232ab5e511a604d6d63d41e3a02a5f422"
51
+ "version": "0.8.2",
52
+ "sha256": "4c54604d4680bc695b7049c70cf8680296d8d2602e5790ddfc1cce7ba7c6f1fc"
53
53
  },
54
54
  {
55
55
  "name": "execution-mode-evaluation",
56
56
  "file": "assets/skills/execution-mode-evaluation/SKILL.md",
57
57
  "description": "Skill de análisis de modo de ejecución — output reconciliado con controller snapshot contract (recommendation field)",
58
- "version": "0.8.1",
58
+ "version": "0.8.2",
59
59
  "sha256": "7b89dda29927c88f1eb13ffcea541a12423384c172f66c4f3d9b61efe0c7a163"
60
60
  },
61
61
  {
62
62
  "name": "tdd",
63
63
  "file": "assets/skills/tdd/SKILL.md",
64
64
  "description": "Skill de test-driven development (Superpowers)",
65
- "version": "0.8.1",
65
+ "version": "0.8.2",
66
66
  "sha256": "aa412298980b7826165c211145c1b8e9135f68f36247bb3cb96d0a0eae274486"
67
67
  },
68
68
  {
69
69
  "name": "subagent-driven-development",
70
70
  "file": "assets/skills/subagent-driven-development/SKILL.md",
71
71
  "description": "Skill de ejecución con subagentes (Superpowers) — ejecuta solo después de confirmación del coordinador Ostacky",
72
- "version": "0.8.1",
72
+ "version": "0.8.2",
73
73
  "sha256": "1a42d714a9a13faf05f0bf7b580e8d837c2e77a5633839542ccce603023419e8"
74
74
  },
75
75
  {
76
76
  "name": "dispatching-parallel-agents",
77
77
  "file": "assets/skills/dispatching-parallel-agents/SKILL.md",
78
78
  "description": "Skill de dispatch paralelo de agentes (Superpowers)",
79
- "version": "0.8.1",
79
+ "version": "0.8.2",
80
80
  "sha256": "3c8a66d51ae2e719e877d02c3dac32bd804722c3bb9227c258ecae78252a20ab"
81
81
  },
82
82
  {
83
83
  "name": "review",
84
84
  "file": "assets/skills/review/SKILL.md",
85
85
  "description": "Skill de revisión de código (Superpowers)",
86
- "version": "0.8.1",
86
+ "version": "0.8.2",
87
87
  "sha256": "b19650ed4d1d4d9857a4dd5b7e08e91328a1a1fc9c45bcc2fb600fa9d0213279"
88
88
  },
89
89
  {
90
90
  "name": "receiving-code-review",
91
91
  "file": "assets/skills/receiving-code-review/SKILL.md",
92
92
  "description": "Skill de recibir y procesar feedback de code review",
93
- "version": "0.8.1",
93
+ "version": "0.8.2",
94
94
  "sha256": "d761e884e71d8d3476ac734d287cae403a4024506a7d12e7361a448217c0a831"
95
95
  },
96
96
  {
97
97
  "name": "openspec-propose",
98
98
  "file": "assets/skills/openspec-propose/SKILL.md",
99
99
  "description": "Skill de generación de proposal (OpenSpec)",
100
- "version": "0.8.1",
100
+ "version": "0.8.2",
101
101
  "sha256": "bb59100b9fd3c9f9a1ec6509fa975ec55bf7fc737df4fe73bb3e9bbc217b83f7"
102
102
  },
103
103
  {
104
104
  "name": "openspec-apply-change",
105
105
  "file": "assets/skills/openspec-apply-change/SKILL.md",
106
106
  "description": "Skill de aplicación de change (OpenSpec)",
107
- "version": "0.8.1",
107
+ "version": "0.8.2",
108
108
  "sha256": "dfc823bf89fc7505e91ab6dee9c1f004be38a410bd3d88fb67b211b1b6cbb1d0"
109
109
  },
110
110
  {
111
111
  "name": "openspec-archive-change",
112
112
  "file": "assets/skills/openspec-archive-change/SKILL.md",
113
113
  "description": "Skill de archivo de change (OpenSpec)",
114
- "version": "0.8.1",
114
+ "version": "0.8.2",
115
115
  "sha256": "16e4b561de7747283663fed602e506abf502452c49a8d4b86d7a5539c40f0195"
116
116
  },
117
117
  {
118
118
  "name": "openspec-explore",
119
119
  "file": "assets/skills/openspec-explore/SKILL.md",
120
120
  "description": "Modo explore para OpenSpec — thinking partner para explorar ideas, investigar problemas y clarificar requisitos antes/durante un cambio",
121
- "version": "0.8.1",
121
+ "version": "0.8.2",
122
122
  "sha256": "37ae4aaf17ea71a395bab6dc4d9d61b9a49d7910f6692535ae8553244c46880b"
123
123
  },
124
124
  {
125
125
  "name": "using-git-worktrees",
126
126
  "file": "assets/skills/using-git-worktrees/SKILL.md",
127
127
  "description": "Skill de uso de git worktrees para aislamiento de trabajo",
128
- "version": "0.8.1",
128
+ "version": "0.8.2",
129
129
  "sha256": "93341bc1b7c053618a8b6dc07e3615b77990d7b549a0201f5835d95fef67ce13"
130
130
  },
131
131
  {
132
132
  "name": "using-superpowers",
133
133
  "file": "assets/skills/using-superpowers/SKILL.md",
134
134
  "description": "Skill de orquestación de Superpowers skills",
135
- "version": "0.8.1",
135
+ "version": "0.8.2",
136
136
  "sha256": "7e54536f96d2a379185a10bfc1e970850caa2561b6d8aca7080f0defea0381a4"
137
137
  },
138
138
  {
139
139
  "name": "writing-skills",
140
140
  "file": "assets/skills/writing-skills/SKILL.md",
141
141
  "description": "Skill de creación y edición de skills",
142
- "version": "0.8.1",
142
+ "version": "0.8.2",
143
143
  "sha256": "3d76b906cee518a2b809febb70db95697a35b9f368986bb504b4120c3bfb437a"
144
144
  },
145
145
  {
146
146
  "name": "graceful-degradation",
147
147
  "file": "assets/skills/graceful-degradation/SKILL.md",
148
148
  "description": "Skill de degradación graceful cuando múltiples tools están indisponibles",
149
- "version": "0.8.1",
150
- "sha256": "40f929e8032b70d51b3548bddcc383b931d6044fd9d4acce8a5b9f7acd014f59"
149
+ "version": "0.8.2",
150
+ "sha256": "79d0eeb2116382cb5db5b753277a333b7ca5682f4a541170b4a6158125c2cb50"
151
151
  }
152
152
  ]
153
153
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ostacky",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Instalador interactivo de agentes y comandos para OpenCode",
5
5
  "type": "module",
6
6
  "bin": {