ostacky 0.1.3 → 0.2.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 +51 -14
- package/assets/agents/ostacky.md +66 -22
- package/assets/commands/install-stack.md +98 -5
- package/dist/cli.js +17 -17
- package/manifest.json +15 -15
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,49 @@
|
|
|
1
1
|
# Ostacky
|
|
2
2
|
|
|
3
|
-
Ostacky es
|
|
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.
|
|
4
|
+
|
|
5
|
+
| Herramienta | Rol | Define |
|
|
6
|
+
| --------------------------------------------------------- | ------------------- | --------------------------------------------- |
|
|
7
|
+
| [CodeGraph](https://github.com/colbymchenry/codegraph) | Grafo de código | DÓNDE está el código y a quién impacta |
|
|
8
|
+
| [OpenSpec](https://github.com/Fission-AI/OpenSpec/) | Especificaciones | QUÉ hay que construir y POR QUÉ |
|
|
9
|
+
| [Superpowers](https://github.com/obra/superpowers) | Ejecución | CÓMO se implementa, prueba y revisa |
|
|
10
|
+
| [Engram](https://github.com/Gentleman-Programming/engram) | Memoria persistente | QUÉ aprendimos en sesiones anteriores |
|
|
11
|
+
| [Context7](https://context7.com) | Documentación viva | Documentación actualizada de librerías y APIs |
|
|
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.
|
|
14
|
+
|
|
15
|
+
## Cómo empezar
|
|
16
|
+
|
|
17
|
+
Después de instalar Ostacky (con `npx ostacky install`), necesitás iniciar OpenCode para usarlo. Tenés dos formas:
|
|
18
|
+
|
|
19
|
+
### Terminal UI (TUI) — recomendado para daily driving
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
opencode
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Abre la interfaz de terminal interactiva. Seleccioná el agente `@Ostacky` desde el panel de agentes o escribí `/agent Ostacky`.
|
|
26
|
+
|
|
27
|
+
### Web UI — para usar desde el navegador
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
opencode web --port 4096
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Abre OpenCode en el navegador en `http://localhost:4096`. Útil para sesiones largas, trabajo en equipo o cuando querés compartir pantalla sin compartir terminal.
|
|
34
|
+
|
|
35
|
+
Opciones útiles:
|
|
36
|
+
|
|
37
|
+
| Comando | Qué hace |
|
|
38
|
+
| ----------------------------------------------- | --------------------------------------------------- |
|
|
39
|
+
| `opencode web` | Puerto aleatorio, abre el navegador automáticamente |
|
|
40
|
+
| `opencode web --port 4096` | Puerto fijo |
|
|
41
|
+
| `opencode web --hostname 0.0.0.0` | Accesible desde la red local |
|
|
42
|
+
| `opencode web --mdns` | Descubrible como `opencode.local` |
|
|
43
|
+
| `OPENCODE_SERVER_PASSWORD=secreta opencode web` | Con autenticación HTTP Basic |
|
|
44
|
+
| `opencode attach http://localhost:4096` | Conectar una terminal TUI a un servidor web activo |
|
|
45
|
+
|
|
46
|
+
> 💡 Si no tenés OpenCode instalado aún: `curl -fsSL https://opencode.ai/install | bash`
|
|
4
47
|
|
|
5
48
|
## ¿Qué es?
|
|
6
49
|
|
|
@@ -8,14 +51,7 @@ Ostacky es el agente de [OpenCode](https://opencode.ai) que instalás en tu proy
|
|
|
8
51
|
|
|
9
52
|
## Stack
|
|
10
53
|
|
|
11
|
-
Ostacky
|
|
12
|
-
|
|
13
|
-
| Herramienta | Rol | Define |
|
|
14
|
-
| ------------------------------------------------------------- | ------------------- | ------------------------------------------------ |
|
|
15
|
-
| **[CodeGraph](https://github.com/colbymchenry/codegraph)** | Grafo de código | DÓNDE está el código y a quién impacta un cambio |
|
|
16
|
-
| **[OpenSpec](https://github.com/Fission-AI/OpenSpec/)** | Especificaciones | QUÉ hay que construir y POR QUÉ |
|
|
17
|
-
| **[Superpowers](https://github.com/obra/superpowers)** | Ejecución | CÓMO se implementa, prueba y revisa |
|
|
18
|
-
| **[Engram](https://github.com/Gentleman-Programming/engram)** | Memoria persistente | QUÉ aprendimos en sesiones anteriores |
|
|
54
|
+
Ostacky integra **5 herramientas** especializadas para que trabajen en conjunto sin pisarse:
|
|
19
55
|
|
|
20
56
|
### Cómo trabajan en sinergia
|
|
21
57
|
|
|
@@ -23,6 +59,7 @@ Ostacky no es solo un agente — es un **orquestador** que integra cuatro herram
|
|
|
23
59
|
2. **OpenSpec** documenta requisitos, contratos y escenarios de aceptación (proposal → design → spec → tasks).
|
|
24
60
|
3. **Superpowers** ejecuta con TDD, testing automatizado y review (brainstorming → plans → tdd → review).
|
|
25
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
|
+
5. **Context7** provee documentación actualizada de librerías y APIs en tiempo real, sin depender de training data.
|
|
26
63
|
|
|
27
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.
|
|
28
65
|
|
|
@@ -156,20 +193,20 @@ Tras instalar, el proyecto queda así:
|
|
|
156
193
|
|
|
157
194
|
```json
|
|
158
195
|
{
|
|
159
|
-
"version": "0.
|
|
196
|
+
"version": "0.2.0",
|
|
160
197
|
"lockedAt": "2025-01-01T00:00:00.000Z",
|
|
161
198
|
"repo": "JaimeHoracio/Ostacky",
|
|
162
|
-
"tag": "v0.
|
|
199
|
+
"tag": "v0.2.0",
|
|
163
200
|
"agents": {
|
|
164
201
|
"ostacky": {
|
|
165
|
-
"version": "0.
|
|
202
|
+
"version": "0.2.0",
|
|
166
203
|
"installedAt": "2025-01-01T00:00:00.000Z",
|
|
167
204
|
"sha256": "abc123..."
|
|
168
205
|
}
|
|
169
206
|
},
|
|
170
207
|
"commands": {
|
|
171
208
|
"install-stack": {
|
|
172
|
-
"version": "0.
|
|
209
|
+
"version": "0.2.0",
|
|
173
210
|
"installedAt": "2025-01-01T00:00:00.000Z",
|
|
174
211
|
"sha256": "def456..."
|
|
175
212
|
}
|
|
@@ -201,7 +238,7 @@ Ese paso es opcional. Si no aparece en la terminal, recargá OpenCode y volvé a
|
|
|
201
238
|
## Seguridad
|
|
202
239
|
|
|
203
240
|
- `opencode.jsonc` se versiona en el repo para compartir permisos y MCP de forma reproducible.
|
|
204
|
-
- Las URLs de descarga usan **tags de GitHub** (ej. `v0.
|
|
241
|
+
- Las URLs de descarga usan **tags de GitHub** (ej. `v0.2.0`), nunca `main` — instalaciones reproducibles
|
|
205
242
|
- Cada path de archivo descargado es validado para prevenir **path traversal**
|
|
206
243
|
- Los archivos incluyen **checksum SHA-256** opcional; si el manifest lo define, el contenido se verifica antes de escribir
|
|
207
244
|
- El cache local (`~/.opencode/cache/`) también valida integridad al servir archivos cacheados
|
package/assets/agents/ostacky.md
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Agente unico que orquesta OpenSpec + Superpowers + CodeGraph con ruteo inline-first por nivel de impacto y subagentes solo para trabajo realmente independiente.
|
|
3
3
|
mode: primary
|
|
4
|
-
tools:
|
|
5
|
-
write: false
|
|
6
|
-
edit: false
|
|
7
|
-
bash: false
|
|
8
|
-
webfetch: false
|
|
9
|
-
glob: false
|
|
10
|
-
grep: false
|
|
11
|
-
patch: false
|
|
12
|
-
computer: false
|
|
13
4
|
---
|
|
14
5
|
|
|
15
6
|
Eres **Ostacky**, el orquestador de desarrollo del proyecto.
|
|
@@ -22,6 +13,16 @@ Eres **Ostacky**, el orquestador de desarrollo del proyecto.
|
|
|
22
13
|
- **Superpowers:** ejecuta, prueba, revisa y delega.
|
|
23
14
|
- **Subagentes:** workers de ejecucion para slices realmente independientes; no se usan en tareas livianas porque duplican contexto y tokens.
|
|
24
15
|
|
|
16
|
+
## Regla de oro (obligatoria)
|
|
17
|
+
|
|
18
|
+
**Siempre describí tu interpretación del cambio al usuario ANTES de actuar.** No importa si te parece obvio o trivial. Mostrale qué entendés, a qué nivel de impacto corresponde y preguntale cómo proceder. Sin esa validación no ejecutes nada. El usuario es quien decide el camino.
|
|
19
|
+
|
|
20
|
+
Patrón obligatorio en cada interacción:
|
|
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á** — "¿Estás de acuerdo? ¿Querés que genere spec con OpenSpec o lo ejecuto directo?"
|
|
23
|
+
3. **Esperá** — No asumas respuesta. Si el usuario no responde, detenete y esperá.
|
|
24
|
+
4. **Actuá** — Recién después de la confirmación, seguí el flujo correspondiente.
|
|
25
|
+
|
|
25
26
|
## Principios
|
|
26
27
|
|
|
27
28
|
- **OpenSpec** define **WHAT** y **WHY**.
|
|
@@ -34,6 +35,15 @@ Eres **Ostacky**, el orquestador de desarrollo del proyecto.
|
|
|
34
35
|
|
|
35
36
|
## Flujo obligatorio
|
|
36
37
|
|
|
38
|
+
### 0. Presentación (siempre ejecutar primero)
|
|
39
|
+
|
|
40
|
+
Este paso es **obligatorio antes de cualquier consulta técnica**. Sin excepción.
|
|
41
|
+
|
|
42
|
+
1. Escuchá el pedido del usuario.
|
|
43
|
+
2. Describí tu interpretación: qué entendés que hay que hacer, qué archivos/áreas están involucrados y por qué clasificás el cambio en ese nivel.
|
|
44
|
+
3. Preguntá al usuario si está de acuerdo con la clasificación y si quiere spec o directo (adaptá la pregunta al nivel).
|
|
45
|
+
4. Recién después de recibir confirmación explícita, pasá a Discovery.
|
|
46
|
+
|
|
37
47
|
### 1. Discovery
|
|
38
48
|
|
|
39
49
|
1. Si existe un change activo, leer `proposal.md`, `design.md` y `tasks.md`.
|
|
@@ -43,25 +53,53 @@ Eres **Ostacky**, el orquestador de desarrollo del proyecto.
|
|
|
43
53
|
5. Si falta contexto, usar `codegraph_trace` o `codegraph_node`.
|
|
44
54
|
6. Si CodeGraph no devuelve una base suficiente para avanzar, detenerse y pedir un blocker concreto. No hacer repo-wide scan.
|
|
45
55
|
|
|
46
|
-
### 1.5.
|
|
56
|
+
### 1.5. Clasificación por nivel
|
|
57
|
+
|
|
58
|
+
Después de CodeGraph, clasificá el cambio y preguntá al usuario. **Nunca asumas la respuesta.**
|
|
59
|
+
|
|
60
|
+
#### Nivel 0 (muy pequeño, <5 líneas, 1 archivo, sin cambios de API)
|
|
61
|
+
|
|
62
|
+
El cambio es trivial. Preguntá al usuario:
|
|
63
|
+
|
|
64
|
+
> "Esto es un cambio Nivel 0. ¿Lo ejecuto directo o preferís spec?"
|
|
65
|
+
|
|
66
|
+
- Si elige `directo`, saltá Specification y ejecutá inline.
|
|
67
|
+
- Si elige `spec`, seguí con Specification.
|
|
47
68
|
|
|
48
|
-
|
|
49
|
-
2. **CodeGraph es obligatorio antes de decidir**: `codegraph_context` y `codegraph_impact` siempre van primero.
|
|
50
|
-
3. Si el cambio cae en ese rango, preguntar al usuario: `Este cambio parece Nivel 0+1. Quieres que genere spec con OpenSpec o que lo ejecute directo?`
|
|
51
|
-
4. Si el usuario elige `spec`, seguir con Specification.
|
|
52
|
-
5. Si el usuario elige `directo`, saltar Specification y Planning, y ejecutar inline con Superpowers usando solo los archivos que CodeGraph justifico.
|
|
53
|
-
6. Si el usuario no responde, detenerse y esperar. No asumir un camino.
|
|
69
|
+
#### Nivel 0+1 (pequeño pero no trivial, 5-10 líneas, 1-2 archivos, sin API pública nueva)
|
|
54
70
|
|
|
55
|
-
|
|
71
|
+
Un cambio es **Nivel 0+1** cuando, después de consultar CodeGraph, parece pequeño pero no trivial: normalmente entre 5 y 10 líneas, sin archivos nuevos, sin cambios de API pública, sin dependencias nuevas y sin refactors amplios.
|
|
56
72
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
73
|
+
Preguntá al usuario:
|
|
74
|
+
|
|
75
|
+
> "Esto parece Nivel 0+1. ¿Querés que genere spec con OpenSpec o que lo ejecute directo?"
|
|
76
|
+
|
|
77
|
+
- Si elige `spec`, seguí con Specification.
|
|
78
|
+
- Si elige `directo`, saltá Specification y Planning, y ejecutá inline con Superpowers usando solo los archivos que CodeGraph justificó.
|
|
79
|
+
|
|
80
|
+
#### Nivel 1+ (mediano/grande)
|
|
81
|
+
|
|
82
|
+
Un cambio es **Nivel 1+** cuando no entra en la definición de Nivel 0+1:
|
|
83
|
+
- Toca APIs públicas
|
|
84
|
+
- Agrega archivos nuevos
|
|
85
|
+
- Agrega dependencias nuevas
|
|
86
|
+
- Requiere refactors amplios
|
|
87
|
+
- Supera ~10 líneas
|
|
88
|
+
|
|
89
|
+
Nivel 1+ **requiere OpenSpec** antes de ejecutar. Comunicáselo al usuario:
|
|
90
|
+
|
|
91
|
+
> "Esto es un cambio Nivel 1+ porque [razón]. Necesito generar spec con OpenSpec antes de implementar. ¿Procedo?"
|
|
92
|
+
|
|
93
|
+
Si el usuario acepta, seguí con Specification.
|
|
94
|
+
|
|
95
|
+
#### Para todos los niveles
|
|
96
|
+
|
|
97
|
+
Si el usuario no responde, **detenete y esperá**. No asumas un camino.
|
|
60
98
|
|
|
61
99
|
### 2. Specification
|
|
62
100
|
|
|
63
101
|
1. Si el usuario eligio `spec` y faltan artefactos OpenSpec, generarlos con `/opsx:propose <idea>`.
|
|
64
|
-
2. Si el usuario eligio `directo`
|
|
102
|
+
2. Si el usuario eligio `directo` (Nivel 0 o Nivel 0+1), saltar esta etapa.
|
|
65
103
|
3. OpenSpec es la fuente de verdad para requisitos, limites y contratos del camino con spec.
|
|
66
104
|
4. No inventar comportamiento fuera de `proposal.md`, `design.md` y `tasks.md`.
|
|
67
105
|
|
|
@@ -88,7 +126,7 @@ Eres **Ostacky**, el orquestador de desarrollo del proyecto.
|
|
|
88
126
|
3. Si el proyecto no está inicializado, ejecutar primero `codegraph init -i`; después ejecutar `codegraph sync` para reflejar el estado real del codigo.
|
|
89
127
|
4. Si el usuario eligio `spec`, ejecutar `/opsx:sync` para sincronizar los delta specs de OpenSpec.
|
|
90
128
|
5. Si el usuario eligio `spec`, ejecutar `/opsx:archive` cuando el change este listo.
|
|
91
|
-
6. Si el usuario eligio `directo`
|
|
129
|
+
6. Si el usuario eligio `directo` (Nivel 0 o Nivel 0+1), no crear ni sincronizar un change OpenSpec.
|
|
92
130
|
7. No marcar completo si falta tests, review, `codegraph sync` o, en el camino con spec, `opsx:sync`.
|
|
93
131
|
|
|
94
132
|
## Guardrails
|
|
@@ -104,6 +142,7 @@ Eres **Ostacky**, el orquestador de desarrollo del proyecto.
|
|
|
104
142
|
- `opsx-sync` sincroniza OpenSpec. `codegraph sync` sincroniza el grafo. Son complementarios, no redundantes.
|
|
105
143
|
- 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/`.
|
|
106
144
|
- 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.
|
|
145
|
+
- Context7 está disponible para consultas de documentación de librerías/APIs. No intentes responder de memoria sobre APIs externas; usá Context7.
|
|
107
146
|
|
|
108
147
|
## Memoria persistente (Engram)
|
|
109
148
|
|
|
@@ -122,4 +161,9 @@ Engram es el sistema de memoria persistente del stack. Su uso es **obligatorio y
|
|
|
122
161
|
- Ejecucion compleja: `subagent-driven-development` o `dispatching-parallel-agents`
|
|
123
162
|
- Calidad y tests: `tdd`, `review`
|
|
124
163
|
- OpenSpec: `openspec-explore`, `openspec-propose`, `openspec-apply-change`, `openspec-archive-change`
|
|
164
|
+
- Documentacion viva de librerias/APIs: `context7` (skill instalado por `npx ctx7 setup --opencode`)
|
|
125
165
|
- Comandos: `/opsx:propose`, `/opsx:apply`, `/opsx:sync`, `/opsx:archive`
|
|
166
|
+
|
|
167
|
+
### Cuándo usar Context7
|
|
168
|
+
|
|
169
|
+
Cuando el usuario pregunte por APIs, librerías, frameworks, sintaxis de herramientas externas o documentación actualizada — usá el skill de Context7. No intentes responder de memoria si hay una librería de por medio. Context7 trae la documentación oficial en tiempo real.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Instala CodeGraph, skills curadas y
|
|
2
|
+
description: Instala CodeGraph, skills curadas, OpenSpec, Engram y Context7 localmente para OpenCode únicamente
|
|
3
3
|
agent: build
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Instala el stack tecnológico de desarrollo. NOTA: `npx ostacky install` ahora instala automáticamente CodeGraph, OpenSpec y
|
|
6
|
+
Instala el stack tecnológico de desarrollo. NOTA: `npx ostacky install` ahora instala automáticamente CodeGraph, OpenSpec, Engram y Context7. Este comando queda como referencia/documentación para instalación manual o verificación.
|
|
7
7
|
|
|
8
8
|
**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.
|
|
9
9
|
|
|
10
|
-
**Origen del set curado:** el set de
|
|
10
|
+
**Origen del set curado:** el set de skills (6 Superpowers + 4 OpenSpec) 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`.
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -200,15 +200,108 @@ Corre en el puerto 7437 por defecto. Los datos se almacenan en `~/.engram/engram
|
|
|
200
200
|
|
|
201
201
|
---
|
|
202
202
|
|
|
203
|
+
## Paso 6 — Context7
|
|
204
|
+
|
|
205
|
+
[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).
|
|
206
|
+
|
|
207
|
+
**RESTRICCIÓN:** configurar ÚNICAMENTE para OpenCode. No crear archivos en `.claude/`, `.cursor/` ni otros directorios de otras plataformas.
|
|
208
|
+
|
|
209
|
+
### Verificar instalación actual
|
|
210
|
+
|
|
211
|
+
Chequeá si Context7 ya está configurado para OpenCode:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
ls -la .opencode/skills/context7/ 2>/dev/null || echo "no-instalado"
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
También podés verificar si el MCP server de Context7 está en `opencode.json`:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
grep -c "context7" opencode.json 2>/dev/null || echo "no-configurado"
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Instalar
|
|
224
|
+
|
|
225
|
+
**Opción recomendada — setup automático (CLI + skills):**
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
npx ctx7 setup --opencode
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Este comando:
|
|
232
|
+
- Autentica vía OAuth y genera una API key
|
|
233
|
+
- Instala un skill en `.opencode/skills/context7/` que el agente Ostacky usa automáticamente
|
|
234
|
+
- Pregunta si preferís modo CLI + Skills o MCP
|
|
235
|
+
- **NO** toca `.claude/`, `.cursor/`, `.gemini/` ni ninguna otra plataforma
|
|
236
|
+
|
|
237
|
+
**Alternativa — solo MCP (si preferís el server remoto):**
|
|
238
|
+
|
|
239
|
+
Agregá manualmente la entrada MCP en `opencode.json`:
|
|
240
|
+
|
|
241
|
+
```json
|
|
242
|
+
{
|
|
243
|
+
"mcp": {
|
|
244
|
+
"context7": {
|
|
245
|
+
"type": "remote",
|
|
246
|
+
"url": "https://mcp.context7.com/mcp"
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Si tenés una API key de Context7 (recomendado para mejores rate limits):
|
|
253
|
+
|
|
254
|
+
```json
|
|
255
|
+
{
|
|
256
|
+
"mcp": {
|
|
257
|
+
"context7": {
|
|
258
|
+
"type": "remote",
|
|
259
|
+
"url": "https://mcp.context7.com/mcp",
|
|
260
|
+
"headers": {
|
|
261
|
+
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Desinstalar
|
|
269
|
+
|
|
270
|
+
Para remover la configuración generada por `npx ctx7 setup`:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
npx ctx7 remove
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Esto elimina el skill y la configuración de Context7. Si instalaste el CLI globalmente con `npm install -g ctx7`, también necesitás:
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
npm uninstall -g ctx7
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Para remover la entrada MCP manual, editá `opencode.json` y eliminá el bloque `mcp.context7`.
|
|
283
|
+
|
|
284
|
+
### Cómo lo usa Ostacky
|
|
285
|
+
|
|
286
|
+
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:
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
usá context7 para mostrarme la API de autenticación de Supabase
|
|
290
|
+
use context7 to find Next.js 15 app router examples
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
203
295
|
## Verificación final
|
|
204
296
|
|
|
205
297
|
Confirmá que:
|
|
206
298
|
|
|
207
|
-
1. `.opencode/skills/` contiene las
|
|
299
|
+
1. `.opencode/skills/` contiene las skills curadas (6 Superpowers + 4 OpenSpec) y opcionalmente `context7/` si se instaló con `npx ctx7 setup --opencode`
|
|
208
300
|
2. `.opencode/commands/` contiene los 5 opsx-* commands (`opsx-apply`, `opsx-archive`, `opsx-explore`, `opsx-propose`, `opsx-sync`)
|
|
209
301
|
3. `opencode.json` (o `.jsonc`) tiene los bloques `mcp.codegraph` y `mcp.engram` — sin campo `plugin`
|
|
210
302
|
4. `.codegraph/` existe en la raíz del proyecto (índice local de CodeGraph)
|
|
211
303
|
5. `engram --version` funciona y `engram setup opencode` ya fue ejecutado
|
|
212
|
-
6.
|
|
304
|
+
6. Context7 configurado: `ctx7 --version` disponible y/o `.opencode/skills/context7/SKILL.md` existe
|
|
305
|
+
7. **NO existen** archivos generados en `.claude/`, `.kiro/`, `.cursor/`, `.gemini/`, `.codex/` ni ningún directorio de otra plataforma
|
|
213
306
|
|
|
214
307
|
Reportá el estado de cada componente con ✓ o ✗.
|
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.2.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.2.0",
|
|
880
880
|
repo: "JaimeHoracio/Ostacky",
|
|
881
|
-
tag: "v0.
|
|
881
|
+
tag: "v0.2.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.2.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.2.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.2.0",
|
|
904
904
|
sha256: null
|
|
905
905
|
}
|
|
906
906
|
],
|
|
@@ -909,70 +909,70 @@ var manifest_default = {
|
|
|
909
909
|
name: "brainstorming",
|
|
910
910
|
file: "assets/skills/brainstorming/SKILL.md",
|
|
911
911
|
description: "Skill de descubrimiento y exploración (Superpowers)",
|
|
912
|
-
version: "0.
|
|
912
|
+
version: "0.2.0",
|
|
913
913
|
sha256: "ad15458c54912007ae3f708c698a11f0a4a58e2a7c7860a1ae8874db573c9e98"
|
|
914
914
|
},
|
|
915
915
|
{
|
|
916
916
|
name: "writing-plans",
|
|
917
917
|
file: "assets/skills/writing-plans/SKILL.md",
|
|
918
918
|
description: "Skill de planificación de implementación (Superpowers)",
|
|
919
|
-
version: "0.
|
|
919
|
+
version: "0.2.0",
|
|
920
920
|
sha256: "4d675df944b9c846e9066ff971861ad1c9673cd2c88375081b00a75872ad621a"
|
|
921
921
|
},
|
|
922
922
|
{
|
|
923
923
|
name: "tdd",
|
|
924
924
|
file: "assets/skills/tdd/SKILL.md",
|
|
925
925
|
description: "Skill de test-driven development (Superpowers)",
|
|
926
|
-
version: "0.
|
|
926
|
+
version: "0.2.0",
|
|
927
927
|
sha256: "7eacd8ee81dc5c0b85065c0392e37ee10314661f7edb59dd8e70a9e0dae8f371"
|
|
928
928
|
},
|
|
929
929
|
{
|
|
930
930
|
name: "subagent-driven-development",
|
|
931
931
|
file: "assets/skills/subagent-driven-development/SKILL.md",
|
|
932
932
|
description: "Skill de ejecución con subagentes (Superpowers)",
|
|
933
|
-
version: "0.
|
|
933
|
+
version: "0.2.0",
|
|
934
934
|
sha256: "14e0f685b1dc1d7e02b7226d18f037fe4b6cba49b512a1fadf67cfad2a9dcc96"
|
|
935
935
|
},
|
|
936
936
|
{
|
|
937
937
|
name: "dispatching-parallel-agents",
|
|
938
938
|
file: "assets/skills/dispatching-parallel-agents/SKILL.md",
|
|
939
939
|
description: "Skill de dispatch paralelo de agentes (Superpowers)",
|
|
940
|
-
version: "0.
|
|
940
|
+
version: "0.2.0",
|
|
941
941
|
sha256: "281edf0c38f358497c7e2066fa8217a2ba3e2a39b4205c4af0c41d328fc035a1"
|
|
942
942
|
},
|
|
943
943
|
{
|
|
944
944
|
name: "review",
|
|
945
945
|
file: "assets/skills/review/SKILL.md",
|
|
946
946
|
description: "Skill de revisión de código (Superpowers)",
|
|
947
|
-
version: "0.
|
|
947
|
+
version: "0.2.0",
|
|
948
948
|
sha256: "c78d3beff45e9bb6b5e9e1d7155910f379e082d7aaf3c61b90d651d09e0d2e2a"
|
|
949
949
|
},
|
|
950
950
|
{
|
|
951
951
|
name: "openspec-explore",
|
|
952
952
|
file: "assets/skills/openspec-explore/SKILL.md",
|
|
953
953
|
description: "Skill de exploración pre-spec (OpenSpec)",
|
|
954
|
-
version: "0.
|
|
954
|
+
version: "0.2.0",
|
|
955
955
|
sha256: "1c75cab8672c2eb8b12f27a0b31f0b7fdb73c21c72583c1e8a566e09fe4108a6"
|
|
956
956
|
},
|
|
957
957
|
{
|
|
958
958
|
name: "openspec-propose",
|
|
959
959
|
file: "assets/skills/openspec-propose/SKILL.md",
|
|
960
960
|
description: "Skill de generación de proposal (OpenSpec)",
|
|
961
|
-
version: "0.
|
|
961
|
+
version: "0.2.0",
|
|
962
962
|
sha256: "ab88e9aa22db09559ccf7987d08adc0469b7c6fbe46498e63a3b64926f19e66b"
|
|
963
963
|
},
|
|
964
964
|
{
|
|
965
965
|
name: "openspec-apply-change",
|
|
966
966
|
file: "assets/skills/openspec-apply-change/SKILL.md",
|
|
967
967
|
description: "Skill de aplicación de change (OpenSpec)",
|
|
968
|
-
version: "0.
|
|
968
|
+
version: "0.2.0",
|
|
969
969
|
sha256: "847c2f88a66e8d5946c1fec422a5367c89eca5340839b659bbaaeb6f0bdac487"
|
|
970
970
|
},
|
|
971
971
|
{
|
|
972
972
|
name: "openspec-archive-change",
|
|
973
973
|
file: "assets/skills/openspec-archive-change/SKILL.md",
|
|
974
974
|
description: "Skill de archivo de change (OpenSpec)",
|
|
975
|
-
version: "0.
|
|
975
|
+
version: "0.2.0",
|
|
976
976
|
sha256: "3d35905ec40a081b8fd77b144426e540c67b1f50cc5801b655313a4fdfaa087a"
|
|
977
977
|
}
|
|
978
978
|
]
|
|
@@ -1158,7 +1158,7 @@ function clearLockfile(opencodeRoot) {
|
|
|
1158
1158
|
const lockfile = readLockfile(opencodeRoot);
|
|
1159
1159
|
if (!lockfile) {
|
|
1160
1160
|
writeLockfile(opencodeRoot, {
|
|
1161
|
-
version: "0.
|
|
1161
|
+
version: "0.2.0",
|
|
1162
1162
|
lockedAt: new Date().toISOString(),
|
|
1163
1163
|
repo: "",
|
|
1164
1164
|
tag: "",
|
package/manifest.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.2.0",
|
|
3
3
|
"repo": "JaimeHoracio/Ostacky",
|
|
4
|
-
"tag": "v0.
|
|
4
|
+
"tag": "v0.2.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.2.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.2.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.2.0",
|
|
27
27
|
"sha256": null
|
|
28
28
|
}
|
|
29
29
|
],
|
|
@@ -32,70 +32,70 @@
|
|
|
32
32
|
"name": "brainstorming",
|
|
33
33
|
"file": "assets/skills/brainstorming/SKILL.md",
|
|
34
34
|
"description": "Skill de descubrimiento y exploración (Superpowers)",
|
|
35
|
-
"version": "0.
|
|
35
|
+
"version": "0.2.0",
|
|
36
36
|
"sha256": "ad15458c54912007ae3f708c698a11f0a4a58e2a7c7860a1ae8874db573c9e98"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"name": "writing-plans",
|
|
40
40
|
"file": "assets/skills/writing-plans/SKILL.md",
|
|
41
41
|
"description": "Skill de planificación de implementación (Superpowers)",
|
|
42
|
-
"version": "0.
|
|
42
|
+
"version": "0.2.0",
|
|
43
43
|
"sha256": "4d675df944b9c846e9066ff971861ad1c9673cd2c88375081b00a75872ad621a"
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"name": "tdd",
|
|
47
47
|
"file": "assets/skills/tdd/SKILL.md",
|
|
48
48
|
"description": "Skill de test-driven development (Superpowers)",
|
|
49
|
-
"version": "0.
|
|
49
|
+
"version": "0.2.0",
|
|
50
50
|
"sha256": "7eacd8ee81dc5c0b85065c0392e37ee10314661f7edb59dd8e70a9e0dae8f371"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"name": "subagent-driven-development",
|
|
54
54
|
"file": "assets/skills/subagent-driven-development/SKILL.md",
|
|
55
55
|
"description": "Skill de ejecución con subagentes (Superpowers)",
|
|
56
|
-
"version": "0.
|
|
56
|
+
"version": "0.2.0",
|
|
57
57
|
"sha256": "14e0f685b1dc1d7e02b7226d18f037fe4b6cba49b512a1fadf67cfad2a9dcc96"
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
"name": "dispatching-parallel-agents",
|
|
61
61
|
"file": "assets/skills/dispatching-parallel-agents/SKILL.md",
|
|
62
62
|
"description": "Skill de dispatch paralelo de agentes (Superpowers)",
|
|
63
|
-
"version": "0.
|
|
63
|
+
"version": "0.2.0",
|
|
64
64
|
"sha256": "281edf0c38f358497c7e2066fa8217a2ba3e2a39b4205c4af0c41d328fc035a1"
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
"name": "review",
|
|
68
68
|
"file": "assets/skills/review/SKILL.md",
|
|
69
69
|
"description": "Skill de revisión de código (Superpowers)",
|
|
70
|
-
"version": "0.
|
|
70
|
+
"version": "0.2.0",
|
|
71
71
|
"sha256": "c78d3beff45e9bb6b5e9e1d7155910f379e082d7aaf3c61b90d651d09e0d2e2a"
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
"name": "openspec-explore",
|
|
75
75
|
"file": "assets/skills/openspec-explore/SKILL.md",
|
|
76
76
|
"description": "Skill de exploración pre-spec (OpenSpec)",
|
|
77
|
-
"version": "0.
|
|
77
|
+
"version": "0.2.0",
|
|
78
78
|
"sha256": "1c75cab8672c2eb8b12f27a0b31f0b7fdb73c21c72583c1e8a566e09fe4108a6"
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"name": "openspec-propose",
|
|
82
82
|
"file": "assets/skills/openspec-propose/SKILL.md",
|
|
83
83
|
"description": "Skill de generación de proposal (OpenSpec)",
|
|
84
|
-
"version": "0.
|
|
84
|
+
"version": "0.2.0",
|
|
85
85
|
"sha256": "ab88e9aa22db09559ccf7987d08adc0469b7c6fbe46498e63a3b64926f19e66b"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"name": "openspec-apply-change",
|
|
89
89
|
"file": "assets/skills/openspec-apply-change/SKILL.md",
|
|
90
90
|
"description": "Skill de aplicación de change (OpenSpec)",
|
|
91
|
-
"version": "0.
|
|
91
|
+
"version": "0.2.0",
|
|
92
92
|
"sha256": "847c2f88a66e8d5946c1fec422a5367c89eca5340839b659bbaaeb6f0bdac487"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"name": "openspec-archive-change",
|
|
96
96
|
"file": "assets/skills/openspec-archive-change/SKILL.md",
|
|
97
97
|
"description": "Skill de archivo de change (OpenSpec)",
|
|
98
|
-
"version": "0.
|
|
98
|
+
"version": "0.2.0",
|
|
99
99
|
"sha256": "3d35905ec40a081b8fd77b144426e540c67b1f50cc5801b655313a4fdfaa087a"
|
|
100
100
|
}
|
|
101
101
|
]
|