ostacky 0.3.5 → 0.4.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.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ostacky
2
2
 
3
- Ostacky es un **agent harness** para [OpenCode](https://opencode.ai). No es solo un agente más: es el orquestador que instalás en tu proyecto para que **5 herramientas** trabajen en sinergia sin pisarse y sin quemar tokens al pedo.
3
+ Ostacky es un **agent harness** para [OpenCode](https://opencode.ai). No es solo un agente más: es el orquestador que instalás en tu proyecto para que **5 herramientas** trabajen en sinergia sin pisarse y sin quemar tokens de mas.
4
4
 
5
5
  | Herramienta | Rol | Define |
6
6
  | --------------------------------------------------------- | ------------------- | --------------------------------------------- |
@@ -10,7 +10,7 @@ Ostacky es un **agent harness** para [OpenCode](https://opencode.ai). No es solo
10
10
  | [Engram](https://github.com/Gentleman-Programming/engram) | Memoria persistente | QUÉ aprendimos en sesiones anteriores |
11
11
  | [Context7](https://context7.com) | Documentación viva | Documentación actualizada de librerías y APIs |
12
12
 
13
- Ostacky las rutea según el **nivel de impacto del cambio** (Nivel 0, Nivel 0+1, Nivel 1+), priorizando siempre eficiencia de tokens y preguntándote antes de actuar.
13
+ Ostacky las rutea según el **nivel de impacto del cambio** (Nivel 0, Nivel 0+1, Nivel 1+), priorizando siempre eficiencia de tokens y preguntándote antes de actuar. Para cambios grandes usa OpenSpec (spec-driven development); para cambios chicos ejecuta directo con Superpowers skills.
14
14
 
15
15
  ## Cómo empezar
16
16
 
@@ -61,7 +61,15 @@ Ostacky integra **5 herramientas** especializadas para que trabajen en conjunto
61
61
  4. **Engram** persiste decisiones, bugs y descubrimientos con `mem_save` para que el agente no pierda contexto entre sesiones ni necesite re-ejecutar tool calls.
62
62
  5. **Context7** provee documentación actualizada de librerías y APIs en tiempo real, sin depender de training data.
63
63
 
64
- Ostacky decide **cuándo y cómo** usar cada herramienta según el nivel de impacto del cambio (Nivel 0, Nivel 0+1, Nivel 1+), priorizando siempre eficiencia de tokens.
64
+ Ostacky decide **cuándo y cómo** usar cada herramienta según el **nivel de impacto** del cambio:
65
+
66
+ | Nivel | Cuándo aplica | Flujo |
67
+ | ------- | ---------------------------------------- | ---------------------------------------------------------------------- |
68
+ | **0** | <5 líneas, 1 archivo, trivial | CodeGraph → directo a inline |
69
+ | **0+1** | 5-10 líneas, 1-2 archivos, sin API nueva | CodeGraph → usuario elige: spec o directo |
70
+ | **1+** | >10 líneas, API pública, refactors | CodeGraph → OpenSpec → execution-mode-evaluation → subagentes o inline |
71
+
72
+ Antes de ejecutar, Ostacky **muestra el análisis de archivos compartidos** (qué tasks tocan los mismos archivos) para que el usuario decida el modo de ejecución informado. Usa `execution-mode-evaluation` para recomendar inline o subagent-driven según clusters de archivos compartidos.
65
73
 
66
74
  ## ¿Para qué sirve?
67
75
 
@@ -70,6 +78,7 @@ Ostacky decide **cuándo y cómo** usar cada herramienta según el nivel de impa
70
78
  - Detectar y aplicar actualizaciones mostrando el diff de versiones antes de confirmar
71
79
  - Evitar descargas repetidas gracias al cache local en `~/.opencode/cache/`
72
80
  - Resolver tareas chicas sin overhead extra de coordinación.
81
+ - Ejecutar tareas independientes en paralelo con **subagentes** cuando no comparten archivos, o inline secuencial cuando se pisan.
73
82
 
74
83
  ## Requisitos
75
84
 
@@ -185,31 +194,54 @@ Tras instalar, el proyecto queda así:
185
194
  ├── agents/
186
195
  │ └── ostacky.md
187
196
  ├── commands/
188
- └── install-stack.md
189
- └── ostacky-lock.json ← versiones instaladas
197
+ ├── install-stack.md
198
+ └── opsx-sync.md
199
+ ├── skills/
200
+ │ ├── brainstorming/
201
+ │ ├── writing-plans/
202
+ │ ├── tdd/
203
+ │ ├── review/
204
+ │ ├── execution-mode-evaluation/
205
+ │ ├── subagent-driven-development/
206
+ │ ├── dispatching-parallel-agents/
207
+ │ ├── openspec-explore/
208
+ │ ├── openspec-propose/
209
+ │ ├── openspec-apply-change/
210
+ │ └── openspec-archive-change/
211
+ └── ostacky-lock.json ← versiones instaladas (agentes, commands y skills)
190
212
  ```
191
213
 
192
214
  ### ostacky-lock.json
193
215
 
194
216
  ```json
195
217
  {
196
- "version": "0.3.5",
218
+ "version": "0.4.0",
197
219
  "lockedAt": "2025-01-01T00:00:00.000Z",
198
220
  "repo": "JaimeHoracio/Ostacky",
199
- "tag": "v0.3.5",
221
+ "tag": "v0.4.0",
200
222
  "agents": {
201
223
  "ostacky": {
202
- "version": "0.3.5",
224
+ "version": "0.4.0",
203
225
  "installedAt": "2025-01-01T00:00:00.000Z",
204
226
  "sha256": "abc123..."
205
227
  }
206
228
  },
207
229
  "commands": {
208
230
  "install-stack": {
209
- "version": "0.3.5",
231
+ "version": "0.4.0",
210
232
  "installedAt": "2025-01-01T00:00:00.000Z",
211
233
  "sha256": "def456..."
234
+ },
235
+ "opsx-sync": {
236
+ "version": "0.4.0",
237
+ "installedAt": "2025-01-01T00:00:00.000Z",
238
+ "sha256": "ghi789..."
212
239
  }
240
+ },
241
+ "skills": {
242
+ "brainstorming": { "version": "0.4.0", ... },
243
+ "execution-mode-evaluation": { "version": "0.4.0", ... },
244
+ "openspec-propose": { "version": "0.4.0", ... }
213
245
  }
214
246
  }
215
247
  ```
@@ -239,7 +271,7 @@ Es opcional y solo necesario si algo falló durante la instalación o si querés
239
271
  ## Seguridad
240
272
 
241
273
  - `opencode.jsonc` se versiona en el repo para compartir permisos y MCP de forma reproducible.
242
- - Las URLs de descarga usan **tags de GitHub** (ej. `v0.3.5`), nunca `main` — instalaciones reproducibles
274
+ - Las URLs de descarga usan **tags de GitHub** (ej. `v0.4.0`), nunca `main` — instalaciones reproducibles
243
275
  - Cada path de archivo descargado es validado para prevenir **path traversal**
244
276
  - Los archivos incluyen **checksum SHA-256** opcional; si el manifest lo define, el contenido se verifica antes de escribir
245
277
  - El cache local (`~/.opencode/cache/`) también valida integridad al servir archivos cacheados
@@ -19,7 +19,7 @@ Eres **Ostacky**, el orquestador de desarrollo del proyecto.
19
19
 
20
20
  Patrón obligatorio en cada interacción:
21
21
  1. **Interpretá** — "Entendé que querés [X]. Esto afecta a [archivos/áreas]. Lo clasifico como Nivel [0/0+1/1+] porque [razón breve]."
22
- 2. **Preguntá** — Según el nivel: para Nivel 0/0+1 → "¿Querés spec con OpenSpec o lo ejecuto directo?"; para Nivel 1+ → "Requiere spec con OpenSpec. ¿Procedo?"
22
+ 2. **Preguntá** — Según el nivel: para Nivel 0/0+1 → "¿Querés spec con OpenSpec o lo ejecuto directo?"; para Nivel 1+ → "Recomiendo spec para mantener trazabilidad, pero si preferís agilidad lo ejecuto directo. ¿Cómo lo hacemos?"
23
23
  3. **Esperá** — No asumas respuesta. Si el usuario no responde, detenete y esperá.
24
24
  4. **Actuá** — Recién después de la confirmación, seguí el flujo correspondiente.
25
25
 
@@ -81,11 +81,14 @@ Un cambio es **Nivel 1+** cuando no entra en la definición de Nivel 0+1:
81
81
  - Requiere refactors amplios
82
82
  - Supera ~10 líneas
83
83
 
84
- Nivel 1+ **requiere OpenSpec** antes de ejecutar. Comunicáselo al usuario:
84
+ Nivel 1+ **requiere OpenSpec** para cambios que afectan la API pública o tienen dependencias entre módulos. Pero si el usuario prioriza agilidad, podés ofrecer ejecución directa sin artifacts.
85
85
 
86
- > "Esto es un cambio Nivel 1+ porque [razón]. Necesito generar spec con OpenSpec antes de implementar. ¿Procedo?"
86
+ Comunicáselo al usuario:
87
87
 
88
- Si el usuario acepta, seguí con Specification.
88
+ > "Esto es un cambio Nivel 1+ porque [razón]. Recomiendo generar spec con OpenSpec para mantener trazabilidad, pero si preferís agilidad puedo ejecutarlo directo sin artifacts. ¿Cómo lo hacemos?"
89
+
90
+ - Si elige `spec`, seguí con Specification.
91
+ - Si elige `directo`, ejecutá con el mismo rigor que Nivel 0+1 directo: CodeGraph + pre-edit guard, sin generar artifacts OpenSpec.
89
92
 
90
93
  #### Para todos los niveles
91
94
 
@@ -93,9 +96,17 @@ Si el usuario no responde, **detenete y esperá**. No asumas un camino.
93
96
 
94
97
  ### 2. Specification
95
98
 
96
- 1. Si el usuario eligio `spec` y faltan artefactos OpenSpec, generarlos con `/opsx:propose <idea>`.
97
- 2. Si el usuario eligio `directo` (Nivel 0 o Nivel 0+1), saltar esta etapa.
99
+ 1. Si el usuario eligio `spec`:
100
+ a. **Preguntá primero si quiere explorar requisitos:**
101
+ > "Este cambio requiere spec. ¿Ya tenés claros los requisitos o preferís que exploremos juntos con brainstorming primero?"
102
+ b. Si elige explorar → cargá el skill `brainstorming`, iterá con el usuario hasta tener claridad, y recién después pasá a openspec-propose.
103
+ c. Si elige directo a spec → `openspec-propose` sin brainstorming.
104
+ d. Si los requisitos se ven vagos o incompletos, sugerí exploración pero sin insistir si el usuario dice que no.
105
+
106
+ 2. Si el usuario eligio `directo` (Nivel 0, Nivel 0+1, o Nivel 1+ con opción directa), saltar esta etapa.
107
+
98
108
  3. OpenSpec es la fuente de verdad para requisitos, limites y contratos del camino con spec.
109
+
99
110
  4. No inventar comportamiento fuera de `proposal.md`, `design.md` y `tasks.md`.
100
111
 
101
112
  ### 3. Planning
@@ -132,31 +143,62 @@ Si el usuario no responde, **detenete y esperá**. No asumas un camino.
132
143
  * Despues las fases con `mode: "subagent-driven"`
133
144
  - Si el output no tiene `phaseRecommendations`, todo el cambio va en el modo global.
134
145
 
135
- 4. **Ejecutar cada task no completada siguiendo este procedimiento exacto para CADA archivo que la task modifica:**
146
+ 4. **Mostrar el análisis al usuario y preguntar ANTES de ejecutar:**
147
+
148
+ Antes de ejecutar cualquier task, mostrá al usuario el análisis que generó el skill:
149
+
150
+ a. **Mostrar el mapa de tareas y archivos:**
151
+ ```
152
+ Task A → src/archivo1.ts
153
+ Task B → src/archivo2.ts, src/archivo3.ts
154
+ ...
155
+ ```
156
+
157
+ b. **Mostrar archivos compartidos (sharedFiles) si los hay:**
158
+ ```
159
+ Archivos compartidos:
160
+ src/logging.ts → Task 2.2, Task 2.4
161
+ src/cli.ts → Task 2.3, Task 3.1
162
+ ```
163
+
164
+ c. **Mostrar clusters identificados (qué tasks comparten archivos):**
165
+ ```
166
+ Clusters:
167
+ Cluster A → [Task 2.2, Task 2.4, Task 2.5] (comparten logging.ts)
168
+ Cluster B → [Task 2.3, Task 3.1] (comparten cli.ts)
169
+ Cluster C → [Task 2.1] (independiente)
170
+ ```
171
+
172
+ d. **Mostrar dependencias secuenciales entre tasks si las hay.**
136
173
 
137
- ⚠️ **ATENCIÓN: Nunca uses `edit` sin antes ejecutar los pasos 4a→4f en orden. No saltees pasos.**
174
+ e. **Mostrar la recomendación del skill y su razón:**
175
+ > "Recomendación: [inline/subagent-driven] porque [razón del skill]."
176
+ > "Según este análisis, ¿cómo preferís ejecutar?"
138
177
 
139
- a. **Leer el archivo actual con el Read tool.** Obligatorio aunque ya lo hayas leído antes. No confiar en lecturas previas del contexto (pueden estar stale).
178
+ f. **NO ejecutar nada sin la confirmación explícita del usuario.** Si el usuario no responde, detenete y esperá.
140
179
 
141
- b. **Preparar oldString y newString.** IMPORTANTE: el Read tool devuelve el contenido CON prefijos de línea ("1: const foo"). El `edit` tool espera el contenido SIN esos prefijos ("const foo"). Asegurate de extraer el texto raw del archivo, sin incluir los números de línea ni el ": " que los sigue.
180
+ 5. **Ejecutar cada task no completada aplicando estas 3 reglas antes de cada edit:**
142
181
 
143
- c. **Verificar que oldString !== newString.** Si son idénticos skip. No editar. Ejecutar `mem_save` con topic_key del change. Ir al paso 4f.
182
+ ⚠️ **Antes de cada llamado al `edit` tool, ejecutá estas 3 reglas EN ORDEN. Si alguna falla no edits, preguntá al usuario.**
144
183
 
145
- d. **Verificar que oldString existe en el contenido fresco del paso 4a.** Buscá coincidencia exacta (whitespace, indentación, saltos de línea). IMPORTANTE: buscá en el contenido sin prefijos de línea.
146
- - Si existeejecutar `edit` con confianza. Ir al paso 4e.
147
- - Si NO existe verificar si newString ya existe en el contenido fresco:
148
- - Si newString existe → skip: cambio ya aplicado. Ejecutar `mem_save`. Ir al paso 4f.
149
- - Si newString no existe → CONFLICTO: el archivo cambió inesperadamente. Reportar al usuario. No editar. No marcar nada.
184
+ **Regla 1 Cambio real:** oldString debe ser diferente de newString.
185
+ - Si son iguales skip: el cambio ya está aplicado. Ejecutá `mem_save` con topic_key del change. No edites.
186
+ - Preguntá al usuario: "Este cambio parece ya aplicado. ¿Verifico manualmente?"
150
187
 
151
- e. **Después de cada `edit` exitoso** ejecutar `mem_save` con topic_key del change.
188
+ **Regla 2 Coincidencia exacta:** oldString debe existir exactamente (whitespace, indentación, saltos de línea) en el contenido actual del archivo.
189
+ - Leé el archivo con el `Read` tool justo antes de verificar. No uses lecturas previas del contexto (pueden estar stale).
190
+ - El `Read` tool devuelve el contenido CON prefijos de línea ("1: const foo"). El `edit` tool espera el contenido SIN esos prefijos ("const foo"). Extraé el texto raw.
191
+ - Si oldString NO existe exactamente → CONFLICTO: el archivo cambió inesperadamente.
192
+ - Reportá el conflicto al usuario. No edites. No marques nada.
152
193
 
153
- f. **Si una task falla** reportar al usuario. No reintentar automáticamente.
194
+ **Regla 3 Post-edit:** después de cada `edit` exitoso, ejecutá `mem_save` con topic_key del change inmediatamente.
195
+ - Si una task falla → reportá al usuario. No reintentes automáticamente.
154
196
 
155
- 5. **Superpowers** es el unico orquestador de ejecucion, TDD, review y delegacion.
156
- 6. Los subagentes son **execution-only**.
157
- 7. **Subagentes heredan el mismo procedimiento.** Incluir los pasos 4a→4f completos en el brief de cada subagente para que aplique la misma validación antes de editar.
158
- 8. Los subagentes no se usan para "hacerlo mas rapido" por defecto: se usan para aislar complejidad cuando eso reduce contexto total.
159
- 9. Los subagentes no crean proposals, no planifican, no inician nueva delegacion y no repiten retrieval ya resuelto por el coordinador.
197
+ 6. **Superpowers** es el unico orquestador de ejecucion, TDD, review y delegacion.
198
+ 7. Los subagentes son **execution-only**.
199
+ 8. **Subagentes heredan el mismo procedimiento.** Incluir las 3 reglas de validación (paso 5) completas en el brief de cada subagente para que aplique la misma validación antes de editar.
200
+ 9. Los subagentes no se usan para "hacerlo mas rapido" por defecto: se usan para aislar complejidad cuando eso reduce contexto total.
201
+ 10. Los subagentes no crean proposals, no planifican, no inician nueva delegacion y no repiten retrieval ya resuelto por el coordinador.
160
202
 
161
203
  ### 5. Sync y cierre
162
204
 
@@ -165,7 +207,7 @@ Si el usuario no responde, **detenete y esperá**. No asumas un camino.
165
207
  3. Si el proyecto no está inicializado, ejecutar primero `codegraph init -i`; después ejecutar `codegraph sync` para reflejar el estado real del codigo.
166
208
  4. Si el usuario eligio `spec`, ejecutar `/opsx:sync` para sincronizar los delta specs de OpenSpec.
167
209
  5. Si el usuario eligio `spec`, ejecutar `/opsx:archive` cuando el change este listo.
168
- 6. Si el usuario eligio `directo` (Nivel 0 o Nivel 0+1), no crear ni sincronizar un change OpenSpec.
210
+ 6. Si el usuario eligio `directo` (Nivel 0, Nivel 0+1 o Nivel 1+ con opción directa), no crear ni sincronizar un change OpenSpec.
169
211
  7. No marcar completo si falta tests, review, `codegraph sync` o, en el camino con spec, `opsx:sync`.
170
212
 
171
213
  ## Guardrails
@@ -183,6 +225,7 @@ Si el usuario no responde, **detenete y esperá**. No asumas un camino.
183
225
  - Browser/local URL use is never suggested proactively; it is only allowed when the user explicitly asks for browser/visual help, and the default is text-only to conserve tokens.
184
226
  - Context7 está disponible para consultas de documentación de librerías/APIs. No intentes responder de memoria sobre APIs externas; usá Context7.
185
227
  - Fase gate: si estás en Step 4 (Execution) o Step 5 (Sync), no volvás a Discovery, Planning o Specification automáticamente. Si encontrás un error que requiere re-planificar, reportalo al usuario y preguntá cómo proceder.
228
+ - Feedback loop de preferencias del usuario: si detectás un patrón recurrente en las decisiones del usuario (ej: siempre elige "directo" para Nivel 0+1, o siempre prefiere inline), podés sugerirlo amablemente. **NUNCA apliques un cambio de comportamiento sin consultar.** Ejemplo: "Noté que en las últimas N veces preferiste [opción]. ¿Querés que la próxima asuma esa preferencia y solo confirme?" La preferencia se puede persistir via `mem_save` con `topic_key: "user/preference/{tipo}"`.
186
229
 
187
230
  ## Memoria persistente (Engram)
188
231
 
@@ -49,6 +49,42 @@ Revisá el contexto actual de la sesión.
49
49
 
50
50
  ---
51
51
 
52
+ ### Paso 0.5: Early exit para cambios pequeños
53
+
54
+ Si el cambio tiene **≤2 tasks de implementación** Y **no comparten archivos entre sí** (según `tasks.md` o el contexto disponible):
55
+
56
+ → Devolver directamente este JSON sin ejecutar Pasos 1, 2, 3a, 3b:
57
+
58
+ ```json
59
+ {
60
+ "mode": "inline",
61
+ "confidence": 1.0,
62
+ "reasons": ["Cambio pequeño (≤2 tasks independientes sin archivos compartidos). Inline directo."],
63
+ "codegraphUsed": [],
64
+ "globalRuleTriggered": "early-exit",
65
+ "taskAnalysis": {
66
+ "taskCount": <N>,
67
+ "sharedFiles": {},
68
+ "fileClusters": [<cada task como cluster propio>],
69
+ "clusterCount": <taskCount>,
70
+ "sequentialDeps": [],
71
+ "estLines": <estimación>,
72
+ "hasExplicitContract": false
73
+ },
74
+ "phaseRecommendations": []
75
+ }
76
+ ```
77
+
78
+ **Qué considerar "archivos compartidos":** si dos tasks mencionan modificar el mismo archivo, NO aplicar early exit. El early exit solo es seguro cuando cada task toca archivos distintos.
79
+
80
+ **Si el cambio tiene 1 sola task:** early exit aplica siempre (no hay con quién compartir archivos).
81
+
82
+ **Si el cambio tiene 2 tasks:** verificar que no compartan archivos según tasks.md. Si comparten archivos, NO aplicar early exit — ejecutar el skill completo.
83
+
84
+ **Output esperado:** `globalRuleTriggered: "early-exit"` para trazabilidad de que la decisión vino de este atajo, no de las reglas principales.
85
+
86
+ ---
87
+
52
88
  ### Paso 1: Obtener datos de CodeGraph
53
89
 
54
90
  Ejecutá esta consulta:
package/dist/cli.js CHANGED
@@ -161,7 +161,7 @@ var require_picocolors = __commonJS((exports, module) => {
161
161
  // package.json
162
162
  var package_default = {
163
163
  name: "ostacky",
164
- version: "0.3.5",
164
+ version: "0.4.1",
165
165
  description: "Instalador interactivo de agentes y comandos para OpenCode",
166
166
  type: "module",
167
167
  bin: {
@@ -876,16 +876,16 @@ var L2 = () => {
876
876
  import { join as join5 } from "path";
877
877
  // manifest.json
878
878
  var manifest_default = {
879
- version: "0.3.5",
879
+ version: "0.4.1",
880
880
  repo: "JaimeHoracio/Ostacky",
881
- tag: "v0.3.5",
881
+ tag: "v0.4.1",
882
882
  agents: [
883
883
  {
884
884
  name: "ostacky",
885
885
  file: "assets/agents/ostacky.md",
886
- description: "Agente principal de desarrollo con ejecución inline-first y local-first",
887
- version: "0.3.5",
888
- sha256: null
886
+ description: "Agente principal de desarrollo con ejecución inline-first, análisis transparente de archivos compartidos y pre-edit guard simplificado",
887
+ version: "0.4.1",
888
+ sha256: "1287c743d073b85513ca05c7222ade892aef73a2f4ac7e59ac6d828d0d265b22"
889
889
  }
890
890
  ],
891
891
  commands: [
@@ -893,14 +893,14 @@ var manifest_default = {
893
893
  name: "install-stack",
894
894
  file: "assets/commands/install-stack.md",
895
895
  description: "Instala el stack tecnológico del proyecto",
896
- version: "0.3.5",
896
+ version: "0.4.1",
897
897
  sha256: null
898
898
  },
899
899
  {
900
900
  name: "opsx-sync",
901
901
  file: "assets/commands/opsx-sync.md",
902
902
  description: "Sincroniza delta specs del change activo (wrapper de openspec update)",
903
- version: "0.3.5",
903
+ version: "0.4.1",
904
904
  sha256: null
905
905
  }
906
906
  ],
@@ -908,78 +908,78 @@ var manifest_default = {
908
908
  {
909
909
  name: "execution-mode-evaluation",
910
910
  file: "assets/skills/execution-mode-evaluation/SKILL.md",
911
- description: "Skill de decision de modo de ejecucion inline vs subagent-driven con CodeGraph",
912
- version: "0.3.5",
913
- sha256: "eaa7cd3205b22c6db79a5d5f542ea554d5f1ca2d57127490011ba3abe4cb912b"
911
+ description: "Skill de decision de modo de ejecucion inline vs subagent-driven con CodeGraph y early exit para cambios pequeños",
912
+ version: "0.4.1",
913
+ sha256: "cd7404518893742ede707ea7b8393cd5d28d0602f0900c2f16f8470756869b7d"
914
914
  },
915
915
  {
916
916
  name: "brainstorming",
917
917
  file: "assets/skills/brainstorming/SKILL.md",
918
918
  description: "Skill de descubrimiento y exploración (Superpowers)",
919
- version: "0.3.5",
919
+ version: "0.4.1",
920
920
  sha256: "ad15458c54912007ae3f708c698a11f0a4a58e2a7c7860a1ae8874db573c9e98"
921
921
  },
922
922
  {
923
923
  name: "writing-plans",
924
924
  file: "assets/skills/writing-plans/SKILL.md",
925
925
  description: "Skill de planificación de implementación (Superpowers)",
926
- version: "0.3.5",
926
+ version: "0.4.1",
927
927
  sha256: "4d675df944b9c846e9066ff971861ad1c9673cd2c88375081b00a75872ad621a"
928
928
  },
929
929
  {
930
930
  name: "tdd",
931
931
  file: "assets/skills/tdd/SKILL.md",
932
932
  description: "Skill de test-driven development (Superpowers)",
933
- version: "0.3.5",
933
+ version: "0.4.1",
934
934
  sha256: "7eacd8ee81dc5c0b85065c0392e37ee10314661f7edb59dd8e70a9e0dae8f371"
935
935
  },
936
936
  {
937
937
  name: "subagent-driven-development",
938
938
  file: "assets/skills/subagent-driven-development/SKILL.md",
939
939
  description: "Skill de ejecución con subagentes (Superpowers)",
940
- version: "0.3.5",
940
+ version: "0.4.1",
941
941
  sha256: "14e0f685b1dc1d7e02b7226d18f037fe4b6cba49b512a1fadf67cfad2a9dcc96"
942
942
  },
943
943
  {
944
944
  name: "dispatching-parallel-agents",
945
945
  file: "assets/skills/dispatching-parallel-agents/SKILL.md",
946
946
  description: "Skill de dispatch paralelo de agentes (Superpowers)",
947
- version: "0.3.5",
947
+ version: "0.4.1",
948
948
  sha256: "281edf0c38f358497c7e2066fa8217a2ba3e2a39b4205c4af0c41d328fc035a1"
949
949
  },
950
950
  {
951
951
  name: "review",
952
952
  file: "assets/skills/review/SKILL.md",
953
953
  description: "Skill de revisión de código (Superpowers)",
954
- version: "0.3.5",
954
+ version: "0.4.1",
955
955
  sha256: "c78d3beff45e9bb6b5e9e1d7155910f379e082d7aaf3c61b90d651d09e0d2e2a"
956
956
  },
957
957
  {
958
958
  name: "openspec-explore",
959
959
  file: "assets/skills/openspec-explore/SKILL.md",
960
960
  description: "Skill de exploración pre-spec (OpenSpec)",
961
- version: "0.3.5",
961
+ version: "0.4.1",
962
962
  sha256: "1c75cab8672c2eb8b12f27a0b31f0b7fdb73c21c72583c1e8a566e09fe4108a6"
963
963
  },
964
964
  {
965
965
  name: "openspec-propose",
966
966
  file: "assets/skills/openspec-propose/SKILL.md",
967
967
  description: "Skill de generación de proposal (OpenSpec)",
968
- version: "0.3.5",
968
+ version: "0.4.1",
969
969
  sha256: "ab88e9aa22db09559ccf7987d08adc0469b7c6fbe46498e63a3b64926f19e66b"
970
970
  },
971
971
  {
972
972
  name: "openspec-apply-change",
973
973
  file: "assets/skills/openspec-apply-change/SKILL.md",
974
974
  description: "Skill de aplicación de change (OpenSpec)",
975
- version: "0.3.5",
975
+ version: "0.4.1",
976
976
  sha256: "847c2f88a66e8d5946c1fec422a5367c89eca5340839b659bbaaeb6f0bdac487"
977
977
  },
978
978
  {
979
979
  name: "openspec-archive-change",
980
980
  file: "assets/skills/openspec-archive-change/SKILL.md",
981
981
  description: "Skill de archivo de change (OpenSpec)",
982
- version: "0.3.5",
982
+ version: "0.4.1",
983
983
  sha256: "3d35905ec40a081b8fd77b144426e540c67b1f50cc5801b655313a4fdfaa087a"
984
984
  }
985
985
  ]
@@ -1165,7 +1165,7 @@ function clearLockfile(opencodeRoot) {
1165
1165
  const lockfile = readLockfile(opencodeRoot);
1166
1166
  if (!lockfile) {
1167
1167
  writeLockfile(opencodeRoot, {
1168
- version: "0.3.5",
1168
+ version: "0.4.0",
1169
1169
  lockedAt: new Date().toISOString(),
1170
1170
  repo: "",
1171
1171
  tag: "",
package/manifest.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
- "version": "0.3.5",
2
+ "version": "0.4.1",
3
3
  "repo": "JaimeHoracio/Ostacky",
4
- "tag": "v0.3.5",
4
+ "tag": "v0.4.1",
5
5
  "agents": [
6
6
  {
7
7
  "name": "ostacky",
8
8
  "file": "assets/agents/ostacky.md",
9
- "description": "Agente principal de desarrollo con ejecución inline-first y local-first",
10
- "version": "0.3.5",
11
- "sha256": null
9
+ "description": "Agente principal de desarrollo con ejecución inline-first, análisis transparente de archivos compartidos y pre-edit guard simplificado",
10
+ "version": "0.4.1",
11
+ "sha256": "1287c743d073b85513ca05c7222ade892aef73a2f4ac7e59ac6d828d0d265b22"
12
12
  }
13
13
  ],
14
14
  "commands": [
@@ -16,14 +16,14 @@
16
16
  "name": "install-stack",
17
17
  "file": "assets/commands/install-stack.md",
18
18
  "description": "Instala el stack tecnológico del proyecto",
19
- "version": "0.3.5",
19
+ "version": "0.4.1",
20
20
  "sha256": null
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 (wrapper de openspec update)",
26
- "version": "0.3.5",
26
+ "version": "0.4.1",
27
27
  "sha256": null
28
28
  }
29
29
  ],
@@ -31,78 +31,78 @@
31
31
  {
32
32
  "name": "execution-mode-evaluation",
33
33
  "file": "assets/skills/execution-mode-evaluation/SKILL.md",
34
- "description": "Skill de decision de modo de ejecucion inline vs subagent-driven con CodeGraph",
35
- "version": "0.3.5",
36
- "sha256": "eaa7cd3205b22c6db79a5d5f542ea554d5f1ca2d57127490011ba3abe4cb912b"
34
+ "description": "Skill de decision de modo de ejecucion inline vs subagent-driven con CodeGraph y early exit para cambios pequeños",
35
+ "version": "0.4.1",
36
+ "sha256": "cd7404518893742ede707ea7b8393cd5d28d0602f0900c2f16f8470756869b7d"
37
37
  },
38
38
  {
39
39
  "name": "brainstorming",
40
40
  "file": "assets/skills/brainstorming/SKILL.md",
41
41
  "description": "Skill de descubrimiento y exploración (Superpowers)",
42
- "version": "0.3.5",
42
+ "version": "0.4.1",
43
43
  "sha256": "ad15458c54912007ae3f708c698a11f0a4a58e2a7c7860a1ae8874db573c9e98"
44
44
  },
45
45
  {
46
46
  "name": "writing-plans",
47
47
  "file": "assets/skills/writing-plans/SKILL.md",
48
48
  "description": "Skill de planificación de implementación (Superpowers)",
49
- "version": "0.3.5",
49
+ "version": "0.4.1",
50
50
  "sha256": "4d675df944b9c846e9066ff971861ad1c9673cd2c88375081b00a75872ad621a"
51
51
  },
52
52
  {
53
53
  "name": "tdd",
54
54
  "file": "assets/skills/tdd/SKILL.md",
55
55
  "description": "Skill de test-driven development (Superpowers)",
56
- "version": "0.3.5",
56
+ "version": "0.4.1",
57
57
  "sha256": "7eacd8ee81dc5c0b85065c0392e37ee10314661f7edb59dd8e70a9e0dae8f371"
58
58
  },
59
59
  {
60
60
  "name": "subagent-driven-development",
61
61
  "file": "assets/skills/subagent-driven-development/SKILL.md",
62
62
  "description": "Skill de ejecución con subagentes (Superpowers)",
63
- "version": "0.3.5",
63
+ "version": "0.4.1",
64
64
  "sha256": "14e0f685b1dc1d7e02b7226d18f037fe4b6cba49b512a1fadf67cfad2a9dcc96"
65
65
  },
66
66
  {
67
67
  "name": "dispatching-parallel-agents",
68
68
  "file": "assets/skills/dispatching-parallel-agents/SKILL.md",
69
69
  "description": "Skill de dispatch paralelo de agentes (Superpowers)",
70
- "version": "0.3.5",
70
+ "version": "0.4.1",
71
71
  "sha256": "281edf0c38f358497c7e2066fa8217a2ba3e2a39b4205c4af0c41d328fc035a1"
72
72
  },
73
73
  {
74
74
  "name": "review",
75
75
  "file": "assets/skills/review/SKILL.md",
76
76
  "description": "Skill de revisión de código (Superpowers)",
77
- "version": "0.3.5",
77
+ "version": "0.4.1",
78
78
  "sha256": "c78d3beff45e9bb6b5e9e1d7155910f379e082d7aaf3c61b90d651d09e0d2e2a"
79
79
  },
80
80
  {
81
81
  "name": "openspec-explore",
82
82
  "file": "assets/skills/openspec-explore/SKILL.md",
83
83
  "description": "Skill de exploración pre-spec (OpenSpec)",
84
- "version": "0.3.5",
84
+ "version": "0.4.1",
85
85
  "sha256": "1c75cab8672c2eb8b12f27a0b31f0b7fdb73c21c72583c1e8a566e09fe4108a6"
86
86
  },
87
87
  {
88
88
  "name": "openspec-propose",
89
89
  "file": "assets/skills/openspec-propose/SKILL.md",
90
90
  "description": "Skill de generación de proposal (OpenSpec)",
91
- "version": "0.3.5",
91
+ "version": "0.4.1",
92
92
  "sha256": "ab88e9aa22db09559ccf7987d08adc0469b7c6fbe46498e63a3b64926f19e66b"
93
93
  },
94
94
  {
95
95
  "name": "openspec-apply-change",
96
96
  "file": "assets/skills/openspec-apply-change/SKILL.md",
97
97
  "description": "Skill de aplicación de change (OpenSpec)",
98
- "version": "0.3.5",
98
+ "version": "0.4.1",
99
99
  "sha256": "847c2f88a66e8d5946c1fec422a5367c89eca5340839b659bbaaeb6f0bdac487"
100
100
  },
101
101
  {
102
102
  "name": "openspec-archive-change",
103
103
  "file": "assets/skills/openspec-archive-change/SKILL.md",
104
104
  "description": "Skill de archivo de change (OpenSpec)",
105
- "version": "0.3.5",
105
+ "version": "0.4.1",
106
106
  "sha256": "3d35905ec40a081b8fd77b144426e540c67b1f50cc5801b655313a4fdfaa087a"
107
107
  }
108
108
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ostacky",
3
- "version": "0.3.5",
3
+ "version": "0.4.1",
4
4
  "description": "Instalador interactivo de agentes y comandos para OpenCode",
5
5
  "type": "module",
6
6
  "bin": {