ostacky 0.3.4 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -10
- package/assets/agents/ostacky.md +67 -37
- package/assets/skills/execution-mode-evaluation/SKILL.md +36 -0
- package/dist/cli.js +18 -18
- package/manifest.json +16 -16
- package/package.json +1 -1
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
|
|
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
|
|
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
|
-
│
|
|
189
|
-
└──
|
|
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.
|
|
218
|
+
"version": "0.4.0",
|
|
197
219
|
"lockedAt": "2025-01-01T00:00:00.000Z",
|
|
198
220
|
"repo": "JaimeHoracio/Ostacky",
|
|
199
|
-
"tag": "v0.
|
|
221
|
+
"tag": "v0.4.0",
|
|
200
222
|
"agents": {
|
|
201
223
|
"ostacky": {
|
|
202
|
-
"version": "0.
|
|
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.
|
|
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.
|
|
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
|
package/assets/agents/ostacky.md
CHANGED
|
@@ -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+ → "
|
|
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**
|
|
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
|
-
|
|
86
|
+
Comunicáselo al usuario:
|
|
87
87
|
|
|
88
|
-
|
|
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
|
|
97
|
-
|
|
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,44 +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. **
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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.**
|
|
141
173
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
8. Los subagentes no se usan para "hacerlo mas rapido" por defecto: se usan para aislar complejidad cuando eso reduce contexto total.
|
|
146
|
-
9. Los subagentes no crean proposals, no planifican, no inician nueva delegacion y no repiten retrieval ya resuelto por el coordinador.
|
|
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?"
|
|
147
177
|
|
|
148
|
-
|
|
178
|
+
f. **NO ejecutar nada sin la confirmación explícita del usuario.** Si el usuario no responde, detenete y esperá.
|
|
149
179
|
|
|
150
|
-
|
|
180
|
+
5. **Ejecutar cada task no completada — aplicando estas 3 reglas antes de cada edit:**
|
|
151
181
|
|
|
152
|
-
|
|
153
|
-
Paso 0: Leer el archivo actual con el Read tool. No confiar en lecturas previas
|
|
154
|
-
del contexto (pueden estar stale por edits anteriores o subagentes).
|
|
182
|
+
⚠️ **Antes de cada llamado al `edit` tool, ejecutá estas 3 reglas EN ORDEN. Si alguna falla → no edits, preguntá al usuario.**
|
|
155
183
|
|
|
156
|
-
|
|
157
|
-
|
|
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?"
|
|
158
187
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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.
|
|
162
193
|
|
|
163
|
-
|
|
164
|
-
→
|
|
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.
|
|
165
196
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
Reportar al usuario. No editar. No marcar nada.
|
|
172
|
-
```
|
|
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.
|
|
173
202
|
|
|
174
203
|
### 5. Sync y cierre
|
|
175
204
|
|
|
@@ -178,7 +207,7 @@ Output: "proceed", "skip-and-mark", "conflict"
|
|
|
178
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.
|
|
179
208
|
4. Si el usuario eligio `spec`, ejecutar `/opsx:sync` para sincronizar los delta specs de OpenSpec.
|
|
180
209
|
5. Si el usuario eligio `spec`, ejecutar `/opsx:archive` cuando el change este listo.
|
|
181
|
-
6. Si el usuario eligio `directo` (Nivel 0 o Nivel
|
|
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.
|
|
182
211
|
7. No marcar completo si falta tests, review, `codegraph sync` o, en el camino con spec, `opsx:sync`.
|
|
183
212
|
|
|
184
213
|
## Guardrails
|
|
@@ -196,6 +225,7 @@ Output: "proceed", "skip-and-mark", "conflict"
|
|
|
196
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.
|
|
197
226
|
- Context7 está disponible para consultas de documentación de librerías/APIs. No intentes responder de memoria sobre APIs externas; usá Context7.
|
|
198
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}"`.
|
|
199
229
|
|
|
200
230
|
## Memoria persistente (Engram)
|
|
201
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.
|
|
164
|
+
version: "0.4.0",
|
|
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.
|
|
879
|
+
version: "0.4.0",
|
|
880
880
|
repo: "JaimeHoracio/Ostacky",
|
|
881
|
-
tag: "v0.
|
|
881
|
+
tag: "v0.4.0",
|
|
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.
|
|
887
|
+
version: "0.4.0",
|
|
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.
|
|
896
|
+
version: "0.4.0",
|
|
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.
|
|
903
|
+
version: "0.4.0",
|
|
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.
|
|
912
|
+
version: "0.4.0",
|
|
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.
|
|
919
|
+
version: "0.4.0",
|
|
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.
|
|
926
|
+
version: "0.4.0",
|
|
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.
|
|
933
|
+
version: "0.4.0",
|
|
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.
|
|
940
|
+
version: "0.4.0",
|
|
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.
|
|
947
|
+
version: "0.4.0",
|
|
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.
|
|
954
|
+
version: "0.4.0",
|
|
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.
|
|
961
|
+
version: "0.4.0",
|
|
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.
|
|
968
|
+
version: "0.4.0",
|
|
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.
|
|
975
|
+
version: "0.4.0",
|
|
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.
|
|
982
|
+
version: "0.4.0",
|
|
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.
|
|
1168
|
+
version: "0.4.0",
|
|
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.
|
|
2
|
+
"version": "0.4.0",
|
|
3
3
|
"repo": "JaimeHoracio/Ostacky",
|
|
4
|
-
"tag": "v0.
|
|
4
|
+
"tag": "v0.4.0",
|
|
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.
|
|
10
|
+
"version": "0.4.0",
|
|
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.
|
|
19
|
+
"version": "0.4.0",
|
|
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.
|
|
26
|
+
"version": "0.4.0",
|
|
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.
|
|
35
|
+
"version": "0.4.0",
|
|
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.
|
|
42
|
+
"version": "0.4.0",
|
|
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.
|
|
49
|
+
"version": "0.4.0",
|
|
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.
|
|
56
|
+
"version": "0.4.0",
|
|
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.
|
|
63
|
+
"version": "0.4.0",
|
|
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.
|
|
70
|
+
"version": "0.4.0",
|
|
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.
|
|
77
|
+
"version": "0.4.0",
|
|
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.
|
|
84
|
+
"version": "0.4.0",
|
|
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.
|
|
91
|
+
"version": "0.4.0",
|
|
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.
|
|
98
|
+
"version": "0.4.0",
|
|
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.
|
|
105
|
+
"version": "0.4.0",
|
|
106
106
|
"sha256": "3d35905ec40a081b8fd77b144426e540c67b1f50cc5801b655313a4fdfaa087a"
|
|
107
107
|
}
|
|
108
108
|
]
|