ostacky 0.3.2 → 0.3.3

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
@@ -193,20 +193,20 @@ Tras instalar, el proyecto queda así:
193
193
 
194
194
  ```json
195
195
  {
196
- "version": "0.3.2",
196
+ "version": "0.3.3",
197
197
  "lockedAt": "2025-01-01T00:00:00.000Z",
198
198
  "repo": "JaimeHoracio/Ostacky",
199
- "tag": "v0.3.2",
199
+ "tag": "v0.3.3",
200
200
  "agents": {
201
201
  "ostacky": {
202
- "version": "0.3.2",
202
+ "version": "0.3.3",
203
203
  "installedAt": "2025-01-01T00:00:00.000Z",
204
204
  "sha256": "abc123..."
205
205
  }
206
206
  },
207
207
  "commands": {
208
208
  "install-stack": {
209
- "version": "0.3.2",
209
+ "version": "0.3.3",
210
210
  "installedAt": "2025-01-01T00:00:00.000Z",
211
211
  "sha256": "def456..."
212
212
  }
@@ -239,7 +239,7 @@ Es opcional y solo necesario si algo falló durante la instalación o si querés
239
239
  ## Seguridad
240
240
 
241
241
  - `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.2`), nunca `main` — instalaciones reproducibles
242
+ - Las URLs de descarga usan **tags de GitHub** (ej. `v0.3.3`), nunca `main` — instalaciones reproducibles
243
243
  - Cada path de archivo descargado es validado para prevenir **path traversal**
244
244
  - Los archivos incluyen **checksum SHA-256** opcional; si el manifest lo define, el contenido se verifica antes de escribir
245
245
  - El cache local (`~/.opencode/cache/`) también valida integridad al servir archivos cacheados
@@ -106,12 +106,25 @@ Si el usuario no responde, **detenete y esperá**. No asumas un camino.
106
106
 
107
107
  ### 4. Execution
108
108
 
109
- 1. **Cargar AHORA el skill `execution-mode-evaluation` usando el Skill tool.**
110
- Seguir el procedimiento del skill (Paso 0 a Paso 4) estrictamente, con reglas en orden de precedencia.
111
- **No continuar al paso 2 hasta tener el output JSON del skill en contexto.**
112
- Si el output no está disponible o está incompleto, recargar el skill.
113
-
114
- 2. **Elegir el modo SEGUN el output del skill:**
109
+ 1. **Consultar estado actual (Engram) obligatorio antes de cualquier otra cosa:**
110
+ a. Ejecutar `mem_search(query: "completed for change {changeId}")` para identificar qué tasks ya están completadas.
111
+ b. Excluir del plan de ejecución las tasks ya completadas.
112
+ c. Si Engram no responde continuar sin tracking (degradación graceful, ejecutar todas).
113
+
114
+ 2. **Cargar el skill `execution-mode-evaluation` (con recovery acotado):**
115
+ a. Primer intento de carga del skill.
116
+ b. Si el tool call falla (error MCP, timeout):
117
+ - Esperar 1 segundo, reintentar.
118
+ - Esperar 2 segundos, reintentar.
119
+ - Si falla 3 veces → reportar bloqueo al usuario. No avanzar.
120
+ c. Si se carga pero el output está incompleto:
121
+ - NO reintentar la carga del skill (el contenido será el mismo).
122
+ - Ejecutar `codegraph_context` de nuevo para obtener más datos.
123
+ - Si aún así no alcanza para decidir → reportar bloqueo al usuario.
124
+ - No avanzar sin poder decidir el modo de ejecución.
125
+ d. Seguir el procedimiento del skill (Paso 0 a Paso 4) estrictamente, con reglas en orden de precedencia.
126
+
127
+ 3. **Elegir el modo SEGUN el output del skill:**
115
128
  - Si `mode` es `"inline"` → ejecutar inline (norma general)
116
129
  - Si `mode` es `"subagent-driven"` → ejecutar con subagentes
117
130
  - Usar `phaseRecommendations` para planificar el orden de ejecucion:
@@ -119,10 +132,41 @@ Si el usuario no responde, **detenete y esperá**. No asumas un camino.
119
132
  * Despues las fases con `mode: "subagent-driven"`
120
133
  - Si el output no tiene `phaseRecommendations`, todo el cambio va en el modo global.
121
134
 
122
- 3. **Superpowers** es el unico orquestador de ejecucion, TDD, review y delegacion.
123
- 4. Los subagentes son **execution-only**.
124
- 5. Los subagentes no se usan para "hacerlo mas rapido" por defecto: se usan para aislar complejidad cuando eso reduce contexto total.
125
- 6. Los subagentes no crean proposals, no planifican, no inician nueva delegacion y no repiten retrieval ya resuelto por el coordinador.
135
+ 4. **Ejecutar cada task no completada aplicando pre-edit validation:**
136
+ a. Aplicar la sección "Pre-edit validation" antes de cada llamada al edit tool.
137
+ b. Si pre-edit devuelve "skip-and-mark" no editar. Ejecutar `mem_save` con topic_key del change.
138
+ c. Si pre-edit devuelve "conflict" reportar al usuario. No editar ni marcar.
139
+ d. Después de completar exitosamente una task → `mem_save` con topic_key del change.
140
+ e. Si una task falla → reportar al usuario. No reintentar automáticamente.
141
+
142
+ 5. **Superpowers** es el unico orquestador de ejecucion, TDD, review y delegacion.
143
+ 6. Los subagentes son **execution-only**.
144
+ 7. Los subagentes no se usan para "hacerlo mas rapido" por defecto: se usan para aislar complejidad cuando eso reduce contexto total.
145
+ 8. Los subagentes no crean proposals, no planifican, no inician nueva delegacion y no repiten retrieval ya resuelto por el coordinador.
146
+
147
+ ### 4a. Pre-edit validation (obligatorio antes de cada edit)
148
+
149
+ Antes de cada llamada al `edit` tool, ejecutar esta validación:
150
+
151
+ ```
152
+ Input: filePath, oldString, newString
153
+ Output: "proceed", "skip-and-mark", "conflict"
154
+
155
+ 1. oldString === newString?
156
+ → "skip-and-mark": el cambio ya está aplicado.
157
+ Ejecutar mem_save con topic_key del change. No editar.
158
+
159
+ 2. oldString existe en el archivo (según lectura actual)?
160
+ → "proceed": ejecutar edit normalmente.
161
+
162
+ 3. oldString NO existe en el archivo:
163
+ a. Leer el archivo actual con el Read tool y buscar newString en su contenido.
164
+ ¿newString ya existe (exactamente, incluyendo whitespace)?
165
+ → Sí: "skip-and-mark": cambio ya aplicado (por otro paso/agente).
166
+ Ejecutar mem_save con topic_key del change.
167
+ → No: "conflict": el archivo cambió inesperadamente.
168
+ Reportar al usuario. No editar. No marcar nada.
169
+ ```
126
170
 
127
171
  ### 5. Sync y cierre
128
172
 
@@ -148,6 +192,7 @@ Si el usuario no responde, **detenete y esperá**. No asumas un camino.
148
192
  - Este proyecto NO usa CLAUDE.md. Si un skill referencia CLAUDE.md, usar el override local en `assets/skills/<skill>/` que reemplaza esas referencias por AGENTS.md y `.opencode/`.
149
193
  - 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.
150
194
  - Context7 está disponible para consultas de documentación de librerías/APIs. No intentes responder de memoria sobre APIs externas; usá Context7.
195
+ - 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.
151
196
 
152
197
  ## Memoria persistente (Engram)
153
198
 
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.2",
164
+ version: "0.3.3",
165
165
  description: "Instalador interactivo de agentes y comandos para OpenCode",
166
166
  type: "module",
167
167
  bin: {
@@ -876,15 +876,15 @@ var L2 = () => {
876
876
  import { join as join5 } from "path";
877
877
  // manifest.json
878
878
  var manifest_default = {
879
- version: "0.3.2",
879
+ version: "0.3.3",
880
880
  repo: "JaimeHoracio/Ostacky",
881
- tag: "v0.3.2",
881
+ tag: "v0.3.3",
882
882
  agents: [
883
883
  {
884
884
  name: "ostacky",
885
885
  file: "assets/agents/ostacky.md",
886
886
  description: "Agente principal de desarrollo con ejecución inline-first y local-first",
887
- version: "0.3.2",
887
+ version: "0.3.3",
888
888
  sha256: null
889
889
  }
890
890
  ],
@@ -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.2",
896
+ version: "0.3.3",
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.2",
903
+ version: "0.3.3",
904
904
  sha256: null
905
905
  }
906
906
  ],
@@ -909,77 +909,77 @@ var manifest_default = {
909
909
  name: "execution-mode-evaluation",
910
910
  file: "assets/skills/execution-mode-evaluation/SKILL.md",
911
911
  description: "Skill de decision de modo de ejecucion inline vs subagent-driven con CodeGraph",
912
- version: "0.3.2",
912
+ version: "0.3.3",
913
913
  sha256: "eaa7cd3205b22c6db79a5d5f542ea554d5f1ca2d57127490011ba3abe4cb912b"
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.2",
919
+ version: "0.3.3",
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.2",
926
+ version: "0.3.3",
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.2",
933
+ version: "0.3.3",
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.2",
940
+ version: "0.3.3",
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.2",
947
+ version: "0.3.3",
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.2",
954
+ version: "0.3.3",
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.2",
961
+ version: "0.3.3",
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.2",
968
+ version: "0.3.3",
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.2",
975
+ version: "0.3.3",
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.2",
982
+ version: "0.3.3",
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.2",
1168
+ version: "0.3.3",
1169
1169
  lockedAt: new Date().toISOString(),
1170
1170
  repo: "",
1171
1171
  tag: "",
package/manifest.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
- "version": "0.3.2",
2
+ "version": "0.3.3",
3
3
  "repo": "JaimeHoracio/Ostacky",
4
- "tag": "v0.3.2",
4
+ "tag": "v0.3.3",
5
5
  "agents": [
6
6
  {
7
7
  "name": "ostacky",
8
8
  "file": "assets/agents/ostacky.md",
9
9
  "description": "Agente principal de desarrollo con ejecución inline-first y local-first",
10
- "version": "0.3.2",
10
+ "version": "0.3.3",
11
11
  "sha256": null
12
12
  }
13
13
  ],
@@ -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.2",
19
+ "version": "0.3.3",
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.2",
26
+ "version": "0.3.3",
27
27
  "sha256": null
28
28
  }
29
29
  ],
@@ -32,77 +32,77 @@
32
32
  "name": "execution-mode-evaluation",
33
33
  "file": "assets/skills/execution-mode-evaluation/SKILL.md",
34
34
  "description": "Skill de decision de modo de ejecucion inline vs subagent-driven con CodeGraph",
35
- "version": "0.3.2",
35
+ "version": "0.3.3",
36
36
  "sha256": "eaa7cd3205b22c6db79a5d5f542ea554d5f1ca2d57127490011ba3abe4cb912b"
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.2",
42
+ "version": "0.3.3",
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.2",
49
+ "version": "0.3.3",
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.2",
56
+ "version": "0.3.3",
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.2",
63
+ "version": "0.3.3",
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.2",
70
+ "version": "0.3.3",
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.2",
77
+ "version": "0.3.3",
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.2",
84
+ "version": "0.3.3",
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.2",
91
+ "version": "0.3.3",
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.2",
98
+ "version": "0.3.3",
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.2",
105
+ "version": "0.3.3",
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.2",
3
+ "version": "0.3.3",
4
4
  "description": "Instalador interactivo de agentes y comandos para OpenCode",
5
5
  "type": "module",
6
6
  "bin": {