ostacky 0.0.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 +258 -0
- package/assets/agents/ostacky.md +626 -0
- package/assets/commands/install-stack.md +87 -0
- package/dist/cli.js +1740 -0
- package/manifest.json +23 -0
- package/package.json +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# Ostacky
|
|
2
|
+
|
|
3
|
+
Instalador CLI de agentes y commands para [OpenCode](https://opencode.ai). Descarga y gestiona los recursos del directorio `.opencode/` de tu proyecto de forma reproducible y segura.
|
|
4
|
+
|
|
5
|
+
## ¿Qué es?
|
|
6
|
+
|
|
7
|
+
`Ostacky` es un CLI que instala agentes (`.opencode/agents/`) y commands (`.opencode/commands/`) directamente desde GitHub Releases. Cada instalación queda registrada en un lockfile con versión y checksum, lo que permite actualizaciones controladas y reproducibles.
|
|
8
|
+
|
|
9
|
+
## ¿Para qué sirve?
|
|
10
|
+
|
|
11
|
+
- Instalar el agente `Ostacky` y el command `install-stack` en cualquier proyecto con un solo comando
|
|
12
|
+
- Mantener un registro de qué versión está instalada (`ostacky-lock.json`)
|
|
13
|
+
- Detectar y aplicar actualizaciones mostrando el diff de versiones antes de confirmar
|
|
14
|
+
- Evitar descargas repetidas gracias al cache local en `~/.opencode/cache/`
|
|
15
|
+
|
|
16
|
+
## Requisitos
|
|
17
|
+
|
|
18
|
+
- [Node.js](https://nodejs.org/) >= 18 (para usar con `npx`)
|
|
19
|
+
- o [Bun](https://bun.sh/) >= 1.x (para usar con `bunx` o desarrollo)
|
|
20
|
+
- [OpenCode](https://opencode.ai) instalado en tu máquina
|
|
21
|
+
|
|
22
|
+
## Uso rápido (para usuarios)
|
|
23
|
+
|
|
24
|
+
No requiere instalación global ni clonar el repositorio. Se usa directamente con `npx` o `bunx`:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx ostacky
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
bunx ostacky
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Uso
|
|
35
|
+
|
|
36
|
+
### Menú interactivo
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx ostacky
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Detecta automáticamente el directorio `.opencode/` del proyecto (o lo crea) y muestra un menú para elegir qué hacer.
|
|
43
|
+
|
|
44
|
+
### Instalar todo
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx ostacky install
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Descarga todos los agentes y commands definidos en el manifest y los escribe en `.opencode/`.
|
|
51
|
+
|
|
52
|
+
### Agregar agentes o commands individualmente
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx ostacky add agent
|
|
56
|
+
npx ostacky add command
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Muestra un selector múltiple con los recursos disponibles. Indica si ya están instalados y en qué versión.
|
|
60
|
+
|
|
61
|
+
### Actualizar
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx ostacky update
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Consulta la última GitHub Release, compara las versiones instaladas contra el manifest remoto y muestra el diff antes de confirmar:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Actualizaciones disponibles
|
|
71
|
+
agente ostacky 0.0.1 → 0.0.2
|
|
72
|
+
command install-stack 0.0.1 → 0.0.2
|
|
73
|
+
|
|
74
|
+
¿Aplicar 2 actualización(es)? › Sí / No
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Solo descarga los items que cambiaron de versión.
|
|
78
|
+
|
|
79
|
+
### Desinstalar
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
npx ostacky uninstall
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Borra todos los archivos instalados (los listados en `.opencode/ostacky-lock.json`). Antes de borrar, muestra un preview con los paths a eliminar y pide confirmación.
|
|
86
|
+
|
|
87
|
+
#### Desinstalar un agente puntual
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npx ostacky uninstall agent <nombre>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Por ejemplo:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx ostacky uninstall agent ostacky
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### Desinstalar un command puntual
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
npx ostacky uninstall command <nombre>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Por ejemplo:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npx ostacky uninstall command install-stack
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Si no especificás el nombre, el CLI te muestra un selector con los items instalados para que elijas cuáles desinstalar (puede ser uno o varios).
|
|
112
|
+
|
|
113
|
+
### Otros
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
npx ostacky --version # muestra la versión del CLI
|
|
117
|
+
npx ostacky --help # muestra la ayuda
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Estructura generada
|
|
121
|
+
|
|
122
|
+
Tras instalar, el proyecto queda así:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
.opencode/
|
|
126
|
+
├── agents/
|
|
127
|
+
│ └── ostacky.md
|
|
128
|
+
├── commands/
|
|
129
|
+
│ └── install-stack.md
|
|
130
|
+
└── ostacky-lock.json ← versiones instaladas
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### ostacky-lock.json
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"version": "0.0.1",
|
|
138
|
+
"lockedAt": "2025-01-01T00:00:00.000Z",
|
|
139
|
+
"repo": "JaimeHoracio/Ostacky",
|
|
140
|
+
"tag": "v0.0.1",
|
|
141
|
+
"agents": {
|
|
142
|
+
"ostacky": {
|
|
143
|
+
"version": "0.0.1",
|
|
144
|
+
"installedAt": "2025-01-01T00:00:00.000Z",
|
|
145
|
+
"sha256": "abc123..."
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"commands": {
|
|
149
|
+
"install-stack": {
|
|
150
|
+
"version": "0.0.1",
|
|
151
|
+
"installedAt": "2025-01-01T00:00:00.000Z",
|
|
152
|
+
"sha256": "def456..."
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Se recomienda agregar `ostacky-lock.json` al control de versiones para que el equipo instale exactamente las mismas versiones.
|
|
159
|
+
|
|
160
|
+
## Después de la instalación
|
|
161
|
+
|
|
162
|
+
Al terminar la instalación, el CLI imprime en la terminal un panel con los próximos pasos. Resumidos:
|
|
163
|
+
|
|
164
|
+
1. **Recargar OpenCode** para que detecte los nuevos archivos en `.opencode/`.
|
|
165
|
+
2. Ejecutar el command:
|
|
166
|
+
```
|
|
167
|
+
/install-stack
|
|
168
|
+
```
|
|
169
|
+
Si el command `/install-stack` no aparece en la terminal, recargá OpenCode (paso 1) y volvé a tipearlo. Es un command de OpenCode — el CLI lo instala pero OpenCode necesita recargarlo para registrarlo.
|
|
170
|
+
3. **Recargar OpenCode nuevamente** después de que `/install-stack` haya corrido.
|
|
171
|
+
4. Ya puedes usar el agente:
|
|
172
|
+
```
|
|
173
|
+
@Ostacky
|
|
174
|
+
```
|
|
175
|
+
o seleccionarlo desde la interfaz de OpenCode según la configuración del proyecto. `@Ostacky` invoca al agente que el CLI instaló en `.opencode/agents/ostacky.md`.
|
|
176
|
+
|
|
177
|
+
## Seguridad
|
|
178
|
+
|
|
179
|
+
- Las URLs de descarga usan **tags de GitHub** (ej. `v0.0.1`), nunca `main` — instalaciones reproducibles
|
|
180
|
+
- Cada path de archivo descargado es validado para prevenir **path traversal**
|
|
181
|
+
- Los archivos incluyen **checksum SHA-256** opcional; si el manifest lo define, el contenido se verifica antes de escribir
|
|
182
|
+
- El cache local (`~/.opencode/cache/`) también valida integridad al servir archivos cacheados
|
|
183
|
+
|
|
184
|
+
## Cache
|
|
185
|
+
|
|
186
|
+
Los archivos descargados se guardan en:
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
~/.opencode/cache/<repo>/<tag>/<ruta-del-archivo>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Si ya existe un archivo en cache con el hash correcto, no se hace ninguna petición de red.
|
|
193
|
+
|
|
194
|
+
## Desarrollo
|
|
195
|
+
|
|
196
|
+
> Los pasos de esta sección son **solo para quienes quieran contribuir o modificar el código**. Si eres usuario final, no necesitas ejecutar nada de esto — basta con `npx ostacky`.
|
|
197
|
+
|
|
198
|
+
### Requisitos adicionales para desarrollo
|
|
199
|
+
|
|
200
|
+
- [Bun](https://bun.sh/) >= 1.x
|
|
201
|
+
|
|
202
|
+
### 1. Clonar e instalar dependencias
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
git clone https://github.com/JaimeHoracio/Ostacky.git
|
|
206
|
+
cd Ostacky
|
|
207
|
+
bun install
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
`bun install` descarga todas las dependencias definidas en `package.json` (incluyendo TypeScript y los tipos de Bun).
|
|
211
|
+
|
|
212
|
+
### 2. Ejecutar en modo desarrollo
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
bun run dev
|
|
216
|
+
# equivalente a: bun run src/cli.ts
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### 3. Compilar la CLI
|
|
220
|
+
|
|
221
|
+
La CLI se distribuye como un ejecutable JavaScript en `dist/cli.js`. Para generarlo:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
bun run build
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Este comando ejecuta internamente:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
bun build src/cli.ts --target=node --format=esm --outfile dist/cli.js && bun scripts/add-shebang.ts
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Tras compilar deberías obtener:
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
dist/
|
|
237
|
+
└── cli.js
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### 4. Probar el binario compilado
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
node dist/cli.js
|
|
244
|
+
# o
|
|
245
|
+
bun run start
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Publicar en npm
|
|
249
|
+
|
|
250
|
+
El script `prepublishOnly` ejecuta `bun run build` automáticamente antes de publicar, por lo que `dist/` siempre estará actualizado al publicar.
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
npm publish
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Licencia
|
|
257
|
+
|
|
258
|
+
MIT
|