zugzbot 1.0.0 → 1.0.2

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.
Files changed (41) hide show
  1. package/README.md +99 -23
  2. package/bin/init.js +8 -6
  3. package/package.json +2 -3
  4. package/.utils/docs_opencode/acp.md +0 -165
  5. package/.utils/docs_opencode/acp.pdf +0 -0
  6. package/.utils/docs_opencode/agents.md +0 -803
  7. package/.utils/docs_opencode/agents.pdf +0 -0
  8. package/.utils/docs_opencode/commands.md +0 -354
  9. package/.utils/docs_opencode/commands.pdf +0 -0
  10. package/.utils/docs_opencode/custom-tools.md +0 -209
  11. package/.utils/docs_opencode/custom-tools.pdf +0 -0
  12. package/.utils/docs_opencode/ecosystem.md +0 -81
  13. package/.utils/docs_opencode/ecosystem.pdf +0 -0
  14. package/.utils/docs_opencode/formatters.md +0 -142
  15. package/.utils/docs_opencode/formatters.pdf +0 -0
  16. package/.utils/docs_opencode/keybinds.md +0 -205
  17. package/.utils/docs_opencode/keybinds.pdf +0 -0
  18. package/.utils/docs_opencode/lsp.md +0 -202
  19. package/.utils/docs_opencode/lsp.pdf +0 -0
  20. package/.utils/docs_opencode/mcp-servers.md +0 -565
  21. package/.utils/docs_opencode/mcp-servers.pdf +0 -0
  22. package/.utils/docs_opencode/models.md +0 -234
  23. package/.utils/docs_opencode/models.pdf +0 -0
  24. package/.utils/docs_opencode/permissions.md +0 -248
  25. package/.utils/docs_opencode/permissions.pdf +0 -0
  26. package/.utils/docs_opencode/plugins.md +0 -409
  27. package/.utils/docs_opencode/plugins.pdf +0 -0
  28. package/.utils/docs_opencode/rules.md +0 -189
  29. package/.utils/docs_opencode/rules.pdf +0 -0
  30. package/.utils/docs_opencode/sdk.md +0 -522
  31. package/.utils/docs_opencode/sdk.pdf +0 -0
  32. package/.utils/docs_opencode/server.md +0 -324
  33. package/.utils/docs_opencode/server.pdf +0 -0
  34. package/.utils/docs_opencode/skills.md +0 -235
  35. package/.utils/docs_opencode/skills.pdf +0 -0
  36. package/.utils/docs_opencode/themes.md +0 -378
  37. package/.utils/docs_opencode/themes.pdf +0 -0
  38. package/.utils/docs_opencode/tools.md +0 -364
  39. package/.utils/docs_opencode/tools.pdf +0 -0
  40. package/.utils/export_opencode_session.py +0 -242
  41. package/.utils/toggle_model.py +0 -208
package/README.md CHANGED
@@ -1,63 +1,139 @@
1
1
  # 🤖 Zugzbot Harness
2
2
 
3
- > El instalador definitivo de arneses SDD (Spec-Driven Development) para proyectos con OpenCode.
3
+ > El instalador definitivo de arneses **SDD (Spec-Driven Development)** para proyectos potenciados por OpenCode.
4
4
 
5
- Este paquete NPM te permite inicializar y actualizar instantáneamente el arnés de desarrollo de **Zugzbot** en cualquier proyecto nuevo o existente en segundos.
5
+ **Zugzbot Harness** es un ecosistema autónomo de agentes de inteligencia artificial y herramientas diseñados para programar de forma rigurosa, segura y 100% autodirigida. El corazón de este arnés es la metodología **SDD**, un flujo de trabajo estructurado en el que ningún agente escribe una sola línea de código sin antes validar un contrato estricto de especificación.
6
+
7
+ Este repositorio ha sido empaquetado como un instalador interactivo global de NPM para que puedas inyectar este poderoso entorno de desarrollo en cualquier proyecto nuevo o existente en cuestión de segundos.
6
8
 
7
9
  ---
8
10
 
9
11
  ## 🚀 Instalación y Uso Rápido
10
12
 
11
- Para instalar el arnés de Zugzbot en cualquier proyecto, simplemente abre una terminal en la raíz de tu proyecto de destino y ejecuta:
13
+ Para inyectar el arnés de Zugzbot en cualquier directorio o proyecto de tu computadora, simplemente abre una terminal en la carpeta raíz de tu proyecto de destino y ejecuta:
12
14
 
13
15
  ```bash
14
16
  npx zugzbot
15
17
  ```
16
18
 
17
- ¡Eso es todo! El instalador se encargará de copiar y configurar:
18
- * 📁 `.opencode/` — Todo el sistema de agentes, comandos, skills y herramientas personalizadas (incluyendo el catálogo offline de **Oh My Design** con 246 marcas).
19
- * ⚙️ `opencode.json`La configuración de seguridad, permisos y servidores MCP de tu bot.
20
- * 🖥️ `tui.json`Configuración opcional para interfaces TUI.
21
- * 🛡️ `.utils/`Tus scripts de utilidad ocultos (como exportadores de sesiones y conmutadores de modelos).
19
+ ¡Eso es todo! El instalador automatizado copiará de forma no destructiva y fusionará los siguientes recursos en tu proyecto:
20
+
21
+ * 📁 **`.opencode/`**El núcleo del sistema: agentes, comandos, skills y herramientas personalizadas (incluyendo el catálogo offline de **Oh My Design** con 246 marcas).
22
+ * ⚙️ **`opencode.json`**La configuración maestra de seguridad, variables de entorno, plugins y servidores MCP de tu bot.
23
+ * 🖥️ **`tui.json`**Configuración personalizada para la interfaz interactiva de terminal (TUI).
24
+
25
+ ---
26
+
27
+ ## 🏗️ ¿Cómo Funciona el Arnés? (Arquitectura bajo el capó)
28
+
29
+ El arnés se compone de tres pilares fundamentales que garantizan un desarrollo libre de errores, regresiones o improvisaciones:
30
+
31
+ ### 1. Las 5 Fases del Ciclo SDD (Spec-Driven Development)
32
+ El desarrollo se ejecuta secuencialmente a través de cinco fases estrictas, controladas por el estado global de la sesión (`sdd_get_state` y `sdd_set_phase`):
33
+
34
+ ```
35
+ ┌──────────────┐ ┌────────────────┐ ┌────────────────────┐ ┌─────────────────┐ ┌───────────────┐
36
+ │ F0_DETECT │ ───> │ F1_CONTRACT │ ───> │ F2_IMPLEMENTATION │ ───> │ F3_VERIFICATION │ ───> │ F4_DEPLOYMENT │
37
+ └──────────────┘ └────────────────┘ └────────────────────┘ └─────────────────┘ └───────────────┘
38
+ Descubrimiento Especificación Codificación Validación Despliegue
39
+ Stack & Diseño Crear contrato Fuerza de Coder & UI Unit/Visual tests Docker/Build
40
+ ```
41
+
42
+ * **`F0_DETECT` (Descubrimiento)**: Se analiza el código actual, se detecta el stack base (ej. Next.js 16 + Tailwind v4 o FastAPI + Pydantic) y se busca la marca visual deseada (Toss, Stripe, Vercel, etc.) usando el catálogo de diseño.
43
+ * **`F1_CONTRACT` (Especificación)**: El agente redactor genera un archivo estricto de contrato en `.openspec/specs/XXXX_contract.json` (OpenAPI, esquemas de entrada/salida, requerimientos de UI exactos y casos de prueba detallados). El desarrollo no avanza hasta que este contrato esté validado y sellado.
44
+ * **`F2_IMPLEMENTATION` (Codificación)**: El programador arranca la infraestructura y codifica los archivos ajustándose estrictamente a los tipos, rutas y componentes del contrato aprobado en la fase F1.
45
+ * **`F3_VERIFICATION` (Validación)**: Se corren pruebas unitarias, de integración y visuales (utilizando Playwright). El compilador de TypeScript (`tsc`) y el linter (`eslint`) actúan como gates de control Shift-Left automáticos.
46
+ * **`F4_DEPLOYMENT` (Despliegue)**: Se genera la build de producción, se limpia el entorno de Docker de forma agresiva y se levanta la aplicación localmente en contenedores optimizados.
47
+
48
+ ---
49
+
50
+ ### 2. El Ecosistema de Sub-Agentes Autónomos
51
+
52
+ `opencode.json` registra y configura un equipo especializado de agentes, cada uno con prompts personalizados, temperaturas específicas y permisos de seguridad acotados para evitar efectos colaterales no deseados:
53
+
54
+ * 👤 **`sdd-orchestrator` (El Director)**: Es el coordinador de alto nivel del flujo completo. Lee el Brain, coordina las transiciones de fases y delega las tareas técnicas a los sub-agentes correspondientes. No tiene permisos de escritura o ejecución de comandos directos para garantizar la seguridad.
55
+ * ✍️ **`sdd-spec-writer` (El Arquitecto)**: Redacta y valida de forma matemática las especificaciones OpenAPI y los escenarios de prueba en `.openspec/specs/`.
56
+ * 💻 **`sdd-coder` (El Desarrollador)**: Implementa la lógica de backend y los componentes de frontend (Shadcn/Tailwind) respetando al 100% los contratos de F1. Tiene permisos controlados para ejecutar linters y comandos de compilación.
57
+ * 🧪 **`sdd-tester` (El Auditor de Calidad)**: Diseña las suites de pruebas y las ejecuta de forma concurrente, recopilando evidencias visuales, reportes y traces.
58
+ * 🚢 **`sdd-deployer` (El DevOps)**: Gestiona la infraestructura, empaquetado multi-stage, configuraciones de red y levantamiento local mediante contenedores Docker.
59
+
60
+ ---
61
+
62
+ ### 3. Servidores MCP (Model Context Protocol) de Clase Mundial
63
+
64
+ El arnés inyecta y habilita automáticamente varios servidores MCP avanzados en tu espacio de trabajo para dar soporte contextual al bot:
65
+
66
+ * 📚 **`oh-my-design` (MCP de Diseño Offline)**:
67
+ Servidor oficial que empaqueta **246 marcas de diseño icónicas** (Toss, Stripe, Supabase, Linear, etc.). Permite buscar especificaciones estéticas (`DESIGN.md`), paletas de colores exactas, tipografía y plantillas HTML interactivas de previsualización 100% offline (sin llamadas a APIs ni coste de tokens).
68
+ * 🎨 **`shadcn` (MCP de Interfaz de Usuario)**:
69
+ Permite explorar, buscar e instalar de forma instantánea componentes del registro oficial de Shadcn UI (botones, inputs, cards, dashboards completos) directamente desde la terminal.
70
+ * 🔍 **`context7` (MCP de Consultas de Documentación)**:
71
+ Realiza búsquedas contextuales de APIs actualizadas para librerías y frameworks directamente en la nube, previniendo que los agentes utilicen sintaxis obsoletas o inventadas.
72
+ * 🎭 **`playwright` (MCP de Navegador y Automatización)**:
73
+ Ejecuta pruebas visuales de extremo a extremo, realiza capturas de pantalla, toma videos de interacciones y genera traces de auditoría visuales para guardarlos ordenadamente en `.openspec/`.
74
+ * ✨ **`lucide-icons` (MCP de Iconos)**:
75
+ Valida de forma exacta nombres de iconos de Lucide React y obtiene ejemplos de código JSX listos para copiar y pegar.
76
+
77
+ ---
78
+
79
+ ## 🧠 Sistema de Memoria Compartida (Shared Brain)
80
+
81
+ Para evitar la pérdida de contexto entre turnos y agentes, el arnés implementa un sistema de memoria centralizado en `.openspec/brain.md` (o archivo similar configurado), gestionado por las herramientas `brain_save_memory` y `brain_read_memory`.
82
+
83
+ * **Guardar Lecciones**: Cuando un agente soluciona un bug complejo de ruteo, un error visual en Tailwind, o define una decisión clave de arquitectura, la registra de forma concisa y acumulativa con marca de tiempo en categorías como `learnings`, `design`, `routing`, o `errors`.
84
+ * **Lectura al Inicio**: Al arrancar una nueva sesión, el orquestador lee selectivamente las categorías de memoria activa para absorber aprendizajes previos y evitar cometer el mismo error dos veces.
85
+
86
+ ---
87
+
88
+ ## 🔄 Modo Autopiloto (/loop)
89
+
90
+ El arnés de Zugzbot viene preparado de forma nativa para soportar el **Modo Autopiloto** mediante el comando `/loop` en OpenCode.
91
+
92
+ Cuando `loopMode === true`:
93
+ 1. **Cero Preguntas**: Los agentes tienen estrictamente prohibido usar la herramienta `question` para interrumpir el flujo. Toman decisiones óptimas por defecto de forma autónoma.
94
+ 2. **Enforcer de Barrera**: Cualquier intento de lanzar preguntas al usuario es cancelado mecánicamente por el plugin de OpenCode.
95
+ 3. **Bucle de Corrección Continua**: Si una fase de pruebas o compilación falla, el arnés realiza rollbacks incrementales, autodiagnostica el error con las herramientas de validación, corrige el código y vuelve a probar de forma recursiva hasta lograr la estabilidad.
22
96
 
23
97
  ---
24
98
 
25
- ## 🛠️ Desarrollo Local e Instalación para Pruebas
99
+ ## 🛠️ Desarrollo Local (Para Desarrolladores del Arnés)
26
100
 
27
- Si deseas realizar modificaciones en este arnés y probarlas localmente antes de publicarlas:
101
+ Si deseas realizar modificaciones en este instalador o probar el código localmente:
28
102
 
29
- 1. Clona este repositorio:
103
+ 1. Clona el repositorio:
30
104
  ```bash
31
105
  git clone https://github.com/Danielisla96/zugzbot.git
32
106
  cd zugzbot
33
107
  ```
34
- 2. Enlaza el paquete de forma global:
108
+ 2. Instala las dependencias y crea el enlace local global:
35
109
  ```bash
110
+ npm install
36
111
  npm link
37
112
  ```
38
- 3. Ahora puedes ejecutar el comando `zugzbot` de forma global en cualquier parte de tu computadora para probar la instalación.
113
+ 3. Prueba el instalador en cualquier directorio ejecutando directamente:
114
+ ```bash
115
+ zugzbot
116
+ ```
39
117
 
40
118
  ---
41
119
 
42
- ## 📦 Publicar en NPM (Para Desarrolladores)
120
+ ## 📦 Publicación de Actualizaciones en NPM
43
121
 
44
- El nombre de paquete **`zugzbot`** se encuentra totalmente disponible en el registro público de NPM. Para publicarlo por primera vez y dejarlo disponible para todos:
122
+ Para publicar una nueva versión de Zugzbot en el registro público de NPM:
45
123
 
46
- 1. **Inicia sesión en tu cuenta de NPM** (si no tienes una, créala gratis en [npmjs.com](https://www.npmjs.com/)):
124
+ 1. Incrementa la versión en el `package.json` de la raíz (ej. `1.0.1`).
125
+ 2. Compila el servidor standalone de `oh-my-design` (si modificaste código TypeScript del MCP) ejecutando en la carpeta `.opencode/oh-my-design/packages/mcp`:
47
126
  ```bash
48
- npm login
127
+ npm run build
49
128
  ```
50
- 2. **Publica el paquete de forma pública**:
129
+ 3. Inicia sesión y publica desde la raíz de tu proyecto:
51
130
  ```bash
131
+ npm login
52
132
  npm publish --access public
53
133
  ```
54
134
 
55
- Cada vez que quieras subir una nueva actualización:
56
- 1. Incrementa la versión en el `package.json` (ej: `1.0.1`).
57
- 2. Ejecuta `npm publish`.
58
-
59
135
  ---
60
136
 
61
137
  ## 📄 Licencia
62
138
 
63
- Este proyecto está bajo la Licencia MIT.
139
+ Este proyecto se distribuye bajo la licencia **MIT**. Siéntete libre de clonarlo, modificarlo y adaptarlo para construir tus propios equipos de agentes automatizados.
package/bin/init.js CHANGED
@@ -24,15 +24,17 @@ const targetDir = process.cwd();
24
24
  const itemsToCopy = [
25
25
  { name: '.opencode', src: join(pkgRoot, '.opencode'), dest: join(targetDir, '.opencode'), type: 'dir' },
26
26
  { name: 'opencode.json', src: join(pkgRoot, 'opencode.json'), dest: join(targetDir, 'opencode.json'), type: 'file' },
27
- { name: 'tui.json', src: join(pkgRoot, 'tui.json'), dest: join(targetDir, 'tui.json'), type: 'file' },
28
- { name: '.utils', src: join(pkgRoot, '.utils'), dest: join(targetDir, '.utils'), type: 'dir' }
27
+ { name: 'tui.json', src: join(pkgRoot, 'tui.json'), dest: join(targetDir, 'tui.json'), type: 'file' }
29
28
  ];
30
29
 
31
- // Helper to filter out node_modules and .git files
30
+ // Helper to filter out node_modules and .git files relative to the package root
32
31
  const filterFunc = (srcPath) => {
33
- const isIgnored = srcPath.includes('node_modules') ||
34
- srcPath.includes('.git') ||
35
- srcPath.includes('.openspec');
32
+ const relativeSrc = relative(pkgRoot, srcPath);
33
+ const isIgnored = relativeSrc.split(/[/\\]/).some(part =>
34
+ part === 'node_modules' ||
35
+ part === '.git' ||
36
+ part === '.openspec'
37
+ );
36
38
  return !isIgnored;
37
39
  };
38
40
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zugzbot",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Fácil instalador del arnés SDD de Zugzbot para proyectos OpenCode",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,8 +10,7 @@
10
10
  "bin/",
11
11
  ".opencode/",
12
12
  "opencode.json",
13
- "tui.json",
14
- ".utils/"
13
+ "tui.json"
15
14
  ],
16
15
  "engines": {
17
16
  "node": ">=16.0.0"
@@ -1,165 +0,0 @@
1
- # Soporte ACP
2
-
3
- Utilice OpenCode en cualquier editor compatible con ACP.
4
-
5
- OpenCode admite el [Agent Client Protocol](https://agentclientprotocol.com) o (ACP), lo que le permite usarlo directamente en editores e IDE compatibles.
6
-
7
- > [!TIP]
8
- > Para obtener una lista de editores y herramientas compatibles con ACP, consulte el [informe de progreso de ACP](https://zed.dev/blog/acp-progress-report#available-now).
9
-
10
- ACP es un protocolo abierto que estandariza la comunicación entre editores de código y agentes de codificación de IA.
11
-
12
- ---
13
-
14
- ## [Configuración](#configuración)
15
-
16
- Para usar OpenCode a través de ACP, configure su editor para ejecutar el comando `opencode acp`.
17
-
18
- El comando inicia OpenCode como un subproceso compatible con ACP que se comunica con su editor a través de JSON-RPC a través de stdio.
19
-
20
- A continuación se muestran ejemplos de editores populares que admiten ACP.
21
-
22
- ---
23
-
24
- ### [Zed](#zed)
25
-
26
- Agregue a su configuración [Zed](https://zed.dev) (`~/.config/zed/settings.json`):
27
-
28
- **File**: ~/.config/zed/settings.json
29
-
30
- ```json
31
- {
32
- "agent_servers": {
33
- "OpenCode": {
34
- "command": "opencode",
35
- "args": ["acp"]
36
- }
37
- }
38
- }
39
- ```
40
-
41
- Para abrirlo, use la acción `agent: new thread` en la **Paleta de comandos**.
42
-
43
- También puedes vincular un atajo de teclado editando tu `keymap.json`:
44
-
45
- **File**: keymap.json
46
-
47
- ```json
48
- [
49
- {
50
- "bindings": {
51
- "cmd-alt-o": [
52
- "agent::NewExternalAgentThread",
53
- {
54
- "agent": {
55
- "custom": {
56
- "name": "OpenCode",
57
- "command": {
58
- "command": "opencode",
59
- "args": ["acp"]
60
- }
61
- }
62
- }
63
- }
64
- ]
65
- }
66
- }
67
- ]
68
- ```
69
-
70
- ---
71
-
72
- ### [JetBrains IDEs](#jetbrains-ides)
73
-
74
- Agregue a su [JetBrains IDE](https://www.jetbrains.com/) acp.json de acuerdo con la [documentación](https://www.jetbrains.com/help/ai-assistant/acp.html):
75
-
76
- **File**: acp.json
77
-
78
- ```json
79
- {
80
- "agent_servers": {
81
- "OpenCode": {
82
- "command": "/absolute/path/bin/opencode",
83
- "args": ["acp"]
84
- }
85
- }
86
- }
87
- ```
88
-
89
- Para abrirlo, use el nuevo agente ‘OpenCode’ en el selector de agentes de AI Chat.
90
-
91
- ---
92
-
93
- ### [Avante.nvim](#avantenvim)
94
-
95
- Agregue a su configuración [Avante.nvim](https://github.com/yetone/avante.nvim):
96
-
97
- **File**:
98
-
99
- ```lua
100
- {
101
- acp_providers = {
102
- ["opencode"] = {
103
- command = "opencode",
104
- args = { "acp" }
105
- }
106
- }
107
- }
108
- ```
109
-
110
- Si necesita pasar variables de entorno:
111
-
112
- **File**:
113
-
114
- ```lua
115
- {
116
- acp_providers = {
117
- ["opencode"] = {
118
- command = "opencode",
119
- args = { "acp" },
120
- env = {
121
- OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
122
- }
123
- }
124
- }
125
- }
126
- ```
127
-
128
- ---
129
-
130
- ### [CodeCompanion.nvim](#codecompanionnvim)
131
-
132
- Para usar OpenCode como agente ACP en [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), agregue lo siguiente a su configuración de Neovim:
133
-
134
- **File**:
135
-
136
- ```lua
137
- require("codecompanion").setup({
138
- interactions = {
139
- chat = {
140
- adapter = {
141
- name = "opencode",
142
- model = "claude-sonnet-4",
143
- },
144
- },
145
- },
146
- })
147
- ```
148
-
149
- Esta configuración configura CodeCompanion para usar OpenCode como agente ACP para el chat.
150
-
151
- Si necesita pasar variables de entorno (como `OPENCODE_API_KEY`), consulte [Configuración de adaptadores: variables de entorno](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) en la documentación de CodeCompanion.nvim para obtener detalles completos.
152
-
153
- ## [Soporte](#soporte)
154
-
155
- OpenCode funciona igual a través de ACP que en la terminal. Todas las funciones son compatibles:
156
-
157
- > [!NOTE]
158
- > Algunos comandos de barra integrados como `/undo` y `/redo` no son compatibles actualmente.
159
-
160
- - Herramientas integradas (operaciones de archivos, comandos de terminal, etc.)
161
- - Herramientas personalizadas y comandos de barra
162
- - Servidores MCP configurados en su configuración OpenCode
163
- - Reglas específicas del proyecto de `AGENTS.md`
164
- - Formateadores y linters personalizados
165
- - Sistema de agentes y permisos.
Binary file