opencode-design-system 0.1.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.
package/README.es.md ADDED
@@ -0,0 +1,244 @@
1
+ # OpenCode Design System
2
+
3
+ [![versión en npm](https://img.shields.io/npm/v/opencode-design-system)](https://www.npmjs.com/package/opencode-design-system)
4
+ [![Licencia MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/BraveOtter/opencode-design-system/blob/main/LICENSE)
5
+ [![OpenCode v2](https://img.shields.io/badge/OpenCode-v2-6f42c1)](https://opencode.ai/v2/docs/)
6
+
7
+ **Un plugin colaborativo de OpenCode v2 para crear y evolucionar sistemas de diseño portables y neutrales respecto al framework, que los agentes de IA puedan seguir de verdad.**
8
+
9
+ [English](https://github.com/BraveOtter/opencode-design-system/blob/main/README.md) · [Español](https://github.com/BraveOtter/opencode-design-system/blob/main/README.es.md) · [Português (Brasil)](https://github.com/BraveOtter/opencode-design-system/blob/main/README.pt-BR.md)
10
+
11
+ El sistema de diseño se convierte en la memoria visual duradera del proyecto: **Markdown y JSON** estructurados para tokens semánticos, preferencias explícitas, decisiones de diseño, componentes, patrones y especificaciones de pantallas. Se genera una vista HTML interactiva a partir de esas fuentes; nunca es una segunda fuente de verdad.
12
+
13
+ ## ¿Por qué este plugin?
14
+
15
+ - **Empieza con una conversación, no con un cuestionario.** Aclara solo las decisiones importantes de identidad que aún no estén definidas y conserva explícitas las preferencias del usuario.
16
+ - **Documenta lo que ya existe.** Un análisis acotado y de solo lectura ayuda a formalizar una interfaz existente sin rediseñarla silenciosamente.
17
+ - **Entrega a los agentes el contexto pertinente.** La carga progresiva proporciona los tokens, componentes, patrones y pautas relevantes para cada tarea de UI, en vez de volcar todo el sistema en cada prompt.
18
+ - **Evoluciona el sistema con coherencia.** Registra decisiones, dependencias de tokens semánticos, componentes y patrones afectados, estado y versiones del sistema de diseño.
19
+ - **Evita depender de un framework.** El formato autoritativo es Markdown y JSON, no React, Vue, Tailwind ni una vista generada.
20
+ - **Protege los archivos del proyecto.** El análisis y las comprobaciones son de solo lectura. La creación no reemplaza un directorio `design-system/` existente y conserva el contenido de `AGENTS.md` fuera del bloque administrado por el plugin.
21
+
22
+ ## Requisitos
23
+
24
+ - [OpenCode v2](https://opencode.ai/v2/docs/)
25
+ - Node.js **22.19 o posterior**
26
+
27
+ ## Instalación
28
+
29
+ ### Instalar el paquete publicado en npm
30
+
31
+ Instálalo globalmente con la CLI de OpenCode:
32
+
33
+ ```sh
34
+ opencode plugin add opencode-design-system
35
+ ```
36
+
37
+ Para fijar una versión concreta de npm, sustituye `<version>` por la versión deseada:
38
+
39
+ ```sh
40
+ opencode plugin add opencode-design-system@<version>
41
+ ```
42
+
43
+ O configúralo para un proyecto en `opencode.json` o `opencode.jsonc`:
44
+
45
+ ```jsonc
46
+ {
47
+ "$schema": "https://opencode.ai/config.json",
48
+ "plugins": ["opencode-design-system"]
49
+ }
50
+ ```
51
+
52
+ OpenCode carga los plugins configurados al iniciar. Si no aparece, reinicia OpenCode o el servicio de OpenCode.
53
+
54
+ ### Instalar directamente desde GitHub
55
+
56
+ Para instalar la versión más reciente de la rama predeterminada:
57
+
58
+ ```sh
59
+ opencode plugin add github:BraveOtter/opencode-design-system
60
+ ```
61
+
62
+ Para fijar una versión etiquetada de GitHub, sustituye `<tag>` por el tag deseado:
63
+
64
+ ```sh
65
+ opencode plugin add github:BraveOtter/opencode-design-system#<tag>
66
+ ```
67
+
68
+ ### Usar un checkout local
69
+
70
+ Clona el repositorio, instala las dependencias de desarrollo y compílalo:
71
+
72
+ ```sh
73
+ npm install
74
+ npm run build
75
+ ```
76
+
77
+ Después, indica a OpenCode la ruta del checkout (ajusta la ruta relativa a tu proyecto):
78
+
79
+ ```jsonc
80
+ {
81
+ "$schema": "https://opencode.ai/config.json",
82
+ "plugins": ["../opencode-design-system"]
83
+ }
84
+ ```
85
+
86
+ El repositorio también incluye un entrypoint local opcional para pruebas en `plugins/local/index.js`; no se carga automáticamente ni forma parte del paquete npm.
87
+
88
+ ## Primeros pasos
89
+
90
+ Crea un sistema a partir de una dirección visual:
91
+
92
+ ```text
93
+ /design-system Un espacio de trabajo sereno y compacto, con verdes apagados, superficies nítidas y sin degradados.
94
+ ```
95
+
96
+ Si el proyecto ya tiene una interfaz, pide al agente que la analice primero. Explicará lo que encontró y preguntará si quieres documentar la identidad visual existente o empezar desde cero antes de crear archivos:
97
+
98
+ ```text
99
+ /design-system Analiza la interfaz de esta aplicación y ayúdame a documentar su lenguaje visual actual.
100
+ ```
101
+
102
+ Para diseñar una pantalla sin pedir al plugin que implemente código de UI:
103
+
104
+ ```text
105
+ /design-screen Administración de usuarios con búsqueda, filtros, invitaciones y estados vacíos.
106
+ ```
107
+
108
+ También puedes pedir una especificación de pantalla en lenguaje natural sin usar `/design-screen`. Cuando existe un manifest, el plugin remite al agente a `AGENTS.md` y a las pautas pertinentes del sistema.
109
+
110
+ ## Comandos
111
+
112
+ | Comando | Función |
113
+ | --- | --- |
114
+ | `/design-system [idea]` | Crear un sistema en colaboración o conversar sobre cómo documentar una interfaz existente. |
115
+ | `/design-system/update [cambio]` | Aplicar un cambio semántico versionado e identificar la documentación dependiente. |
116
+ | `/design-system/preview` | Regenerar la vista interactiva a partir de los archivos estructurados. |
117
+ | `/design-system/check` | Comprobación heurística de solo lectura para detectar posibles diferencias entre estilos y tokens documentados. |
118
+ | `/design-screen [pantalla]` | Guardar una especificación lista para implementar, sin escribir código de UI de la aplicación. |
119
+
120
+ El plugin también registra las herramientas `design_system_create`, `design_system_read`, `design_system_analyze`, `design_system_update`, `design_system_preview`, `design_system_check` y `design_system_screen_spec` para que el agente las use cuando lo necesite.
121
+
122
+ ## Cómo funciona
123
+
124
+ ### Un flujo cuidadoso para productos existentes
125
+
126
+ La herramienta `design_system_analyze` lee posibles fuentes de UI y estilos, configuraciones reconocidas de frameworks y dependencias declaradas. Resume evidencias como variables CSS, colores, radios, espaciado, breakpoints responsive y componentes candidatos. El análisis tiene límites, omite directorios de dependencias y compilación, no sigue enlaces simbólicos y no modifica los archivos que lee. Los resultados son indicios, no una prueba de que una diferencia sea un error.
127
+
128
+ El agente explica las incertidumbres y pregunta antes de normalizar decisiones visuales importantes o ambiguas. Analizar no significa que tenga permiso para rediseñar ni modificar el código de la aplicación.
129
+
130
+ ### Protección de los archivos del proyecto
131
+
132
+ Crear un sistema escribe un nuevo directorio `design-system/` y añade o actualiza únicamente el bloque administrado por el plugin en el `AGENTS.md` raíz. Si `design-system/` ya contiene archivos, la creación no los reemplaza. Las actualizaciones escriben deliberadamente en los artefactos del sistema; las herramientas integradas de análisis y comprobación nunca editan archivos de UI de la aplicación.
133
+
134
+ Las instrucciones administradas de `AGENTS.md` son portables: indican a OpenCode y a otros agentes cómo encontrar las fuentes neutrales al framework y cargar solo lo necesario para cada tarea. El plugin no copia agentes, comandos ni skills al proyecto.
135
+
136
+ ### Una fuente de verdad portable
137
+
138
+ El directorio generado suele tener esta estructura:
139
+
140
+ ```text
141
+ design-system/
142
+ ├── README.md
143
+ ├── manifest.json
144
+ ├── tokens.json
145
+ ├── preferences.json
146
+ ├── FOUNDATIONS.md
147
+ ├── AI-GUIDELINES.md
148
+ ├── DECISIONS.md
149
+ ├── CHANGELOG.md
150
+ ├── schema/
151
+ ├── components/
152
+ ├── patterns/
153
+ ├── screens/
154
+ ├── preview/
155
+ │ └── index.html
156
+ └── tools/
157
+ └── generate-preview.mjs
158
+
159
+ AGENTS.md # El contenido existente se conserva fuera del bloque administrado.
160
+ ```
161
+
162
+ El manifest indexa temas, versiones, archivos y las referencias a tokens declaradas por cada componente y patrón. Los sistemas empiezan en `0.1.0` con la versión de esquema `1.0.0`; su estado puede ser `draft`, `review` o `stable`.
163
+
164
+ Los tokens usan rutas semánticas y pueden definir varios temas:
165
+
166
+ ```json
167
+ {
168
+ "$schema": "./schema/tokens.schema.json",
169
+ "schemaVersion": "1.0.0",
170
+ "themes": {
171
+ "light": {
172
+ "color": {
173
+ "surface": { "base": "#f6f8f7", "raised": "#ffffff" },
174
+ "text": { "primary": "#17211f", "secondary": "#65726d" },
175
+ "accent": { "primary": "#276f55" }
176
+ },
177
+ "radius": { "control": "6px", "card": "8px" },
178
+ "spacing": { "sm": "8px", "md": "16px" }
179
+ }
180
+ }
181
+ }
182
+ ```
183
+
184
+ El vocabulario puede ampliarse para incluir tipografía, layout, elevación, movimiento, breakpoints, foco y estados. Los componentes describen propósito, variantes, tokens, comportamiento, accesibilidad, adaptación responsive y relaciones. Los patrones documentan composiciones útiles, como formularios, navegación, filtros, tablas y estados vacíos.
185
+
186
+ ### Actualizaciones significativas y versionadas
187
+
188
+ `/design-system/update` lee el manifest y los documentos pertinentes antes de cambiar el sistema. Por defecto, una actualización de token semántico aplica esa ruta a todos los temas; usa el prefijo `themes.<name>.` para modificar solo uno. La actualización registra el motivo, encuentra los dependientes declarados, actualiza la documentación pertinente y regenera la vista previa.
189
+
190
+ El impacto en la versión del sistema de diseño sigue estas reglas:
191
+
192
+ - **PATCH**: correcciones compatibles o cambios de documentación.
193
+ - **MINOR**: nuevas adiciones compatibles, como un token, componente o patrón.
194
+ - **MAJOR**: cambios que pueden romper contratos de diseño existentes.
195
+
196
+ Estas versiones corresponden al sistema de diseño generado en el proyecto, no al paquete npm del plugin. De forma predeterminada, los sistemas actualizados vuelven a `draft` para que una persona pueda revisarlos.
197
+
198
+ ## Vista interactiva
199
+
200
+ `design-system/preview/index.html` se genera a partir del manifest, los tokens y las especificaciones de componentes y patrones. Incluye muestras de tokens, ejemplos de componentes, cambio de tema cuando hay varios y ejemplos interactivos. Respeta el foco visible por teclado y `prefers-reduced-motion`.
201
+
202
+ Regénérala en OpenCode con `/design-system/preview` o, sin el plugin, desde la raíz del proyecto:
203
+
204
+ ```sh
205
+ node design-system/tools/generate-preview.mjs
206
+ ```
207
+
208
+ El renderer independiente no tiene dependencias externas. Edita los archivos estructurados Markdown y JSON, no el HTML generado, para cambiar el sistema.
209
+
210
+ ## Desarrollo y pruebas
211
+
212
+ ```sh
213
+ npm install
214
+ npm run typecheck
215
+ npm test
216
+ npm run build
217
+ ```
218
+
219
+ Las pruebas cubren un flujo integrado en un proyecto temporal: análisis de solo lectura, creación y conservación de archivos del usuario, actualización del bloque administrado de `AGENTS.md`, especificaciones de pantallas, cambios de tokens entre temas, vistas previas, comprobaciones y seguridad de rutas.
220
+
221
+ ## Publicar una versión
222
+
223
+ El workflow de GitHub Actions `Publish to npm` publica al subir un tag `vX.Y.Z`, una vez superadas las comprobaciones y verificado que el tag coincide con la versión de `package.json`. Antes de la primera publicación, configura Trusted Publishing en npm para el repositorio `BraveOtter/opencode-design-system` y el workflow `publish.yml`, y permite la acción directa `npm publish`. El workflow usa OIDC, así que no hace falta guardar un token de publicación de npm en GitHub; además, npm genera automáticamente la atestación de procedencia para este repositorio público.
224
+
225
+ Para actualizar la versión del paquete y subir su commit y tag:
226
+
227
+ ```sh
228
+ npm version patch # o minor / major
229
+ git push --follow-tags
230
+ ```
231
+
232
+ ## Documentación
233
+
234
+ - [Guía de plugins de OpenCode v2](https://opencode.ai/v2/docs/build/plugins)
235
+ - [Configuración de plugins de OpenCode](https://opencode.ai/v2/docs/plugins)
236
+ - [Comandos de OpenCode](https://opencode.ai/v2/docs/commands)
237
+ - [Instrucciones de OpenCode y `AGENTS.md`](https://opencode.ai/v2/docs/instructions)
238
+ - [Referencia de la API de plugins](https://opencode.ai/v2/docs/api)
239
+ - [Paquete npm](https://www.npmjs.com/package/opencode-design-system)
240
+ - [Reportar un problema](https://github.com/BraveOtter/opencode-design-system/issues)
241
+
242
+ ## Licencia
243
+
244
+ Este proyecto está publicado bajo la [Licencia MIT](https://github.com/BraveOtter/opencode-design-system/blob/main/LICENSE).
package/README.md CHANGED
@@ -1,24 +1,46 @@
1
1
  # OpenCode Design System
2
2
 
3
- Plugin de **OpenCode v2** para crear, importar, mantener y aplicar Design Systems colaborativos, neutrales respecto al framework y legibles por agentes de IA.
3
+ [![npm version](https://img.shields.io/npm/v/opencode-design-system)](https://www.npmjs.com/package/opencode-design-system)
4
+ [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/BraveOtter/opencode-design-system/blob/main/LICENSE)
5
+ [![OpenCode v2](https://img.shields.io/badge/OpenCode-v2-6f42c1)](https://opencode.ai/v2/docs/)
4
6
 
5
- El Design System persistente es la memoria visual del proyecto: **Markdown + JSON**, con manifest indexado, preferencias explícitas, historial de decisiones y especificaciones de componentes/patrones. La preview es salida generada, no una fuente paralela.
7
+ **A collaborative OpenCode v2 plugin for creating and evolving portable, framework-neutral design systems that AI agents can actually follow.**
6
8
 
7
- ## Instalar
9
+ [English](https://github.com/BraveOtter/opencode-design-system/blob/main/README.md) · [Español](https://github.com/BraveOtter/opencode-design-system/blob/main/README.es.md) · [Português (Brasil)](https://github.com/BraveOtter/opencode-design-system/blob/main/README.pt-BR.md)
8
10
 
9
- ### Desde GitHub
11
+ The design system becomes a project's durable visual memory: structured **Markdown and JSON** for semantic tokens, explicit preferences, design decisions, components, patterns, and screen briefs. A live HTML preview is generated from those sources; it is never a second source of truth.
10
12
 
11
- Con OpenCode v2, instala directamente desde el repositorio público:
13
+ ## Why this plugin?
14
+
15
+ - **Start from a conversation, not a questionnaire.** Resolve only the important identity choices that are still unclear, and keep the user's preferences explicit.
16
+ - **Document what already exists.** Bounded, read-only analysis can help formalize an existing UI without silently redesigning it.
17
+ - **Give agents the relevant context.** Progressive loading supplies the tokens, components, patterns, and guidance relevant to a UI task instead of dumping the whole system into every prompt.
18
+ - **Evolve the system coherently.** Track decisions, semantic token dependencies, affected components and patterns, status, and design-system version changes.
19
+ - **Avoid framework lock-in.** The authoritative format is Markdown and JSON, not React, Vue, Tailwind, or a generated preview.
20
+ - **Keep project files safe.** Analysis and checks are read-only. Design-system creation refuses to replace an existing `design-system/` directory, and existing `AGENTS.md` content outside the plugin-managed block is preserved.
21
+
22
+ ## Requirements
23
+
24
+ - [OpenCode v2](https://opencode.ai/v2/docs/)
25
+ - Node.js **22.19 or newer**
26
+
27
+ ## Install
28
+
29
+ ### Install the published npm package
30
+
31
+ Install it globally with the OpenCode CLI:
12
32
 
13
33
  ```sh
14
- opencode plugin add github:BraveOtter/opencode-design-system
34
+ opencode plugin add opencode-design-system
15
35
  ```
16
36
 
17
- Para fijar la versión inicial cuando esté publicada, usa `opencode plugin add github:BraveOtter/opencode-design-system#v0.1.0`.
37
+ To pin a specific npm release, replace `<version>` with the version you want:
18
38
 
19
- ### Paquete publicado
39
+ ```sh
40
+ opencode plugin add opencode-design-system@<version>
41
+ ```
20
42
 
21
- Añade el paquete a `plugins` en `opencode.json` o `opencode.jsonc`:
43
+ Or configure it for a project in `opencode.json` or `opencode.jsonc`:
22
44
 
23
45
  ```jsonc
24
46
  {
@@ -27,91 +49,93 @@ Añade el paquete a `plugins` en `opencode.json` o `opencode.jsonc`:
27
49
  }
28
50
  ```
29
51
 
30
- OpenCode cargará el plugin al iniciar el proyecto. Los commands y tools se registran mediante la API de plugin v2. El paquete apunta a `@opencode/plugin` y `Plugin.define`; no utiliza la API de plugins v1.
52
+ OpenCode loads configured plugins at startup. If the plugin does not appear, restart OpenCode or the OpenCode service.
31
53
 
32
- ### Desarrollo local o fork
54
+ ### Install directly from GitHub
33
55
 
34
- Requiere Node.js **22.19 o posterior** para el desarrollo local y el renderer portable.
56
+ For the repository's latest default-branch version:
57
+
58
+ ```sh
59
+ opencode plugin add github:BraveOtter/opencode-design-system
60
+ ```
61
+
62
+ To pin a tagged GitHub release, replace `<tag>` with the tag you want:
63
+
64
+ ```sh
65
+ opencode plugin add github:BraveOtter/opencode-design-system#<tag>
66
+ ```
67
+
68
+ ### Use a local checkout
69
+
70
+ Clone the repository, install its development dependencies, and build it:
35
71
 
36
72
  ```sh
37
73
  npm install
38
74
  npm run build
39
75
  ```
40
76
 
41
- Este checkout incluye `opencode.jsonc` para cargar `./plugins/local`, un entrypoint local que reexporta `dist/index.js`. Después de compilar, inicia OpenCode desde la raíz del repositorio para probar los comandos. Ese entrypoint de desarrollo no forma parte del paquete publicado.
42
-
43
- Apunta OpenCode al directorio del paquete:
77
+ Then point OpenCode to the checkout directory (adjust the relative path to your project):
44
78
 
45
79
  ```jsonc
46
80
  {
47
81
  "$schema": "https://opencode.ai/config.json",
48
- "plugins": ["./tools/opencode-design-system"]
82
+ "plugins": ["../opencode-design-system"]
49
83
  }
50
84
  ```
51
85
 
52
- También se puede referenciar una ruta absoluta o un directorio local siguiendo las formas de `plugins` documentadas por OpenCode.
53
-
54
- ## Commands
86
+ The repository also contains an optional local test entry point at `plugins/local/index.js`; it is not loaded automatically and is not part of the npm package.
55
87
 
56
- | Command | Función |
57
- | --- | --- |
58
- | `/design-system [idea]` | Conversar para crear un sistema desde cero o analizar la interfaz existente antes de proponer su formalización. |
59
- | `/design-system/update [cambio]` | Interpretar un cambio, encontrar tokens y documentos dependientes, actualizar versiones/decisiones y regenerar preview. |
60
- | `/design-system/preview` | Regenerar la preview interactiva a partir de las fuentes estructuradas. |
61
- | `/design-system/check` | Inspección heurística y de solo lectura de estilos frente a los tokens. |
62
- | `/design-screen [pantalla]` | Diseñar y guardar una especificación de pantalla sin implementar código UI. |
88
+ ## Get started
63
89
 
64
- Ejemplos:
90
+ Create a system from a visual direction:
65
91
 
66
92
  ```text
67
- /design-system Quiero una interfaz sobria, compacta, sin degradados y con verdes apagados.
68
- /design-system/update Los botones y las cards se ven demasiado redondeados.
69
- /design-screen Administración de usuarios con búsqueda, filtros e invitaciones.
93
+ /design-system A calm, compact workspace with muted greens, crisp surfaces, and no gradients.
70
94
  ```
71
95
 
72
- También se puede pedir una pantalla en lenguaje natural, sin command. El plugin añade una instrucción breve al contexto del agente si existe `design-system/manifest.json`; el `AGENTS.md` generado conserva esta convención aunque el plugin no esté instalado.
96
+ If the project already has a UI, ask the agent to inspect it first. It will explain what it found and ask whether you want to document the existing identity or start fresh before creating anything:
73
97
 
74
- ### Conversación e identidad visual
98
+ ```text
99
+ /design-system Analyze this app's UI and help me document its existing visual language.
100
+ ```
75
101
 
76
- El agente pregunta solamente por decisiones de identidad que falten: producto/audiencia, referencias, tono, preferencias de color/superficie, densidad, tipografía, plataformas, motion y accesibilidad cuando sean relevantes. Puede explicar alternativas con lenguaje sencillo. No convierte el proceso en un formulario ni toma decisiones importantes en nombre del usuario.
102
+ To design a screen without asking the plugin to implement UI code:
77
103
 
78
- Las preferencias explícitas se guardan en `preferences.json`, `DECISIONS.md` y `AI-GUIDELINES.md`. El modelo puede explicar consecuencias y accesibilidad, pero no cambiar una preferencia sin consultarlo. Analizar una app existente es de solo lectura y no concede permiso para rediseñar o modificar código de aplicación.
104
+ ```text
105
+ /design-screen User management with search, filters, invitations, and empty states.
106
+ ```
79
107
 
80
- ## Arquitectura del plugin
108
+ You can also request a screen brief in natural language without invoking `/design-screen`. When a manifest exists, the plugin points the agent to the project's `AGENTS.md` and relevant design-system guidance.
81
109
 
82
- Implementación V2 basada en las APIs oficiales actuales:
110
+ ## Commands
83
111
 
84
- - `Plugin.define({ id, setup })` para el entrypoint del paquete.
85
- - `ctx.command.transform` para commands.
86
- - `ctx.tool.transform` para herramientas de creación, lectura progresiva, análisis, actualización, preview, comprobación y especificaciones de pantalla.
87
- - `ctx.skill.transform` para anunciar la Skill de uso del sistema.
88
- - `ctx.session.hook("context", ...)` para indicar a los agentes que usen la Skill cuando ya exista un manifest, sin inyectar todos los archivos.
89
- - Markdown estándar bajo `.opencode/agents`, `.opencode/commands` y `.opencode/skills` para hacer que los artefactos sobrevivan a la desinstalación.
112
+ | Command | What it does |
113
+ | --- | --- |
114
+ | `/design-system [idea]` | Collaboratively create a system from scratch or discuss documenting an existing UI. |
115
+ | `/design-system/update [change]` | Apply a semantic, versioned change and identify dependent documentation. |
116
+ | `/design-system/preview` | Regenerate the interactive preview from the structured files. |
117
+ | `/design-system/check` | Run a read-only, heuristic check for UI styles that may drift from documented tokens. |
118
+ | `/design-screen [screen]` | Save an implementation-ready screen brief without writing application UI code. |
90
119
 
91
- No se ejecutan migraciones de componentes de la aplicación. El análisis del proyecto está acotado y solo lee archivos candidatos de UI/estilos, configuraciones conocidas y dependencias declaradas.
120
+ The plugin also registers `design_system_create`, `design_system_read`, `design_system_analyze`, `design_system_update`, `design_system_preview`, `design_system_check`, and `design_system_screen_spec` tools for the agent to use as needed.
92
121
 
93
- ### Agentes
122
+ ## How it works
94
123
 
95
- Al crear el sistema se generan agentes V2 estándar:
124
+ ### A careful workflow for existing products
96
125
 
97
- - `design-system-designer`: diseñador UI/UX, arquitecto, especialista en accesibilidad e interlocutor para decisiones de identidad.
98
- - `screen-designer`: genera especificaciones de pantalla y mantiene separado el diseño de su implementación.
126
+ The `design_system_analyze` tool reads likely UI and style sources, recognized framework configuration, and declared dependencies. It summarizes evidence such as CSS variables, colors, radii, spacing, responsive breakpoints, and component candidates. The scan is bounded, skips dependency/build directories and symlinks, and does not modify the files it reads. Findings are clues—not proof that a difference is a mistake.
99
127
 
100
- Los agentes son subagentes Markdown descubiertos por OpenCode, no dependen de un formato privado del plugin. Los commands incluyen las instrucciones de trabajo necesarias desde la primera sesión, antes de que esos archivos existan.
128
+ The agent explains uncertainty and asks before normalizing important or ambiguous visual decisions. Analysis is not permission to redesign or edit application code.
101
129
 
102
- ### Skill
130
+ ### Safe project ownership
103
131
 
104
- La Skill `design-system` dirige a cualquier agente a:
132
+ Creating a system writes a new `design-system/` directory and adds or updates only the plugin-managed block in the root `AGENTS.md`. If `design-system/` already contains files, creation refuses to replace them. Updates are deliberate writes to design-system artifacts; the plugin's built-in analysis and check tools never edit application UI files.
105
133
 
106
- 1. Comprobar el manifest.
107
- 2. Leer las reglas y preferencias.
108
- 3. Cargar solo los tokens, componentes y patterns ligados a la tarea.
109
- 4. Respetar decisiones explícitas y documentar cambios reutilizables.
110
- 5. Tratar una especificación de pantalla como un artefacto distinto del código.
134
+ The managed `AGENTS.md` guidance is portable: it tells OpenCode and other coding agents how to find the framework-neutral sources and load only what a task needs. The plugin does not copy agents, commands, or skills into the project.
111
135
 
112
- No carga permanentemente todas las tablas, componentes y patrones en el contexto. El `manifest.json` sirve como índice para recuperación progresiva.
136
+ ### A portable source of truth
113
137
 
114
- ## Formato generado
138
+ The generated directory typically looks like this:
115
139
 
116
140
  ```text
117
141
  design-system/
@@ -124,39 +148,20 @@ design-system/
124
148
  ├── DECISIONS.md
125
149
  ├── CHANGELOG.md
126
150
  ├── schema/
127
- │ ├── manifest.schema.json
128
- │ └── tokens.schema.json
129
151
  ├── components/
130
- │ ├── button.md
131
- │ └── ...
132
152
  ├── patterns/
133
- │ ├── form.md
134
- │ └── ...
135
153
  ├── screens/
136
- │ └── user-management.md
137
154
  ├── preview/
138
155
  │ └── index.html
139
156
  └── tools/
140
157
  └── generate-preview.mjs
141
158
 
142
- AGENTS.md # Bloque administrado, conserva el contenido previo
143
- .opencode/
144
- ├── agents/
145
- │ ├── design-system-designer.md
146
- │ └── screen-designer.md
147
- ├── commands/
148
- │ ├── design-system.md
149
- │ ├── design-system/update.md
150
- │ ├── design-system/preview.md
151
- │ ├── design-system/check.md
152
- │ └── design-screen.md
153
- └── skills/
154
- └── design-system/SKILL.md
159
+ AGENTS.md # Existing content is kept outside the managed block.
155
160
  ```
156
161
 
157
- `manifest.json` incluye versiones, estado, temas, archivos y referencias de tokens por componente/pattern. Los estados son `draft`, `review` y `stable`. El schema base usa `schemaVersion: "1.0.0"`; la versión del sistema comienza en `0.1.0`.
162
+ The manifest indexes themes, versions, files, and the token references declared by each component and pattern. Systems begin at `0.1.0` with schema version `1.0.0`; their review status is `draft`, `review`, or `stable`.
158
163
 
159
- Los tokens son framework-neutrales y semánticos, por tema:
164
+ Tokens use semantic paths and can define multiple themes:
160
165
 
161
166
  ```json
162
167
  {
@@ -176,61 +181,33 @@ Los tokens son framework-neutrales y semánticos, por tema:
176
181
  }
177
182
  ```
178
183
 
179
- El vocabulario puede ampliarse con tipografía, jerarquías, grids, layout, bordes, elevación, iconografía, motion, breakpoints, foco, estados y otros temas. Se recomiendan rutas semánticas como `color.text.secondary`; cualquier consumidor puede generar CSS variables, temas de framework u otros adaptadores sin que estos definan el sistema.
180
-
181
- ### Componentes y patterns
182
-
183
- Cada archivo de componente documenta propósito, variantes, tamaños, tokens, estados, comportamiento, accesibilidad, responsive, cuándo usarlo/evitarlo y relaciones. Se crean los componentes útiles para el producto y se pueden ampliar más adelante; no se obliga a generar un catálogo innecesario.
184
+ The vocabulary can grow to include typography, layout, elevation, motion, breakpoints, focus, and states. Components describe purpose, variants, tokens, behavior, accessibility, responsive behavior, and relationships. Patterns document useful compositions such as forms, navigation, filters, tables, and empty states.
184
185
 
185
- Los patterns describen composiciones como formularios, navegación, búsquedas, filtros, acciones destructivas, tablas, errores, estados vacíos y onboarding. Sus referencias a componentes y tokens permiten mostrar dependencias al actualizar el sistema.
186
+ ### Meaningful, versioned updates
186
187
 
187
- ## Crear desde una aplicación existente
188
+ `/design-system/update` reads the manifest and relevant documents before changing the system. A semantic token update changes that path across themes by default; prefix a path with `themes.<name>.` for a theme-specific change. The update records the rationale, finds declared token dependents, updates relevant documentation, and regenerates the preview.
188
189
 
189
- El agente usa la herramienta `design_system_analyze`, que:
190
+ Design-system version impact follows:
190
191
 
191
- - Busca CSS/SCSS/LESS, vistas y componentes habituales, y reconoce frameworks/librerías desde `package.json`.
192
- - Resume variables CSS, colores, radios, valores de spacing y candidatos de componentes.
193
- - Marca radios cercanos o muchas decisiones visuales como posibles inconsistencias, no como errores confirmados.
194
- - Limita directorios, número y tamaño de archivos; omite dependencias, builds y artefactos generados.
195
- - No escribe en los archivos analizados.
192
+ - **PATCH** — compatible fixes or documentation changes.
193
+ - **MINOR** — compatible additions, such as a new token, component, or pattern.
194
+ - **MAJOR** — changes that may break existing design contracts.
196
195
 
197
- El agente explica las evidencias, incertidumbres y variaciones detectadas. Pregunta antes de normalizar decisiones ambiguas; conserva por defecto la identidad reconocible y distingue formalizar/normalizar de rediseñar. Solo después de la conversación crea `design-system/`.
196
+ These versions belong to the generated project design system, not the npm plugin package. Updated systems return to `draft` by default so a person can review them.
198
197
 
199
- ## Modificar, dependencias y versiones
198
+ ## Interactive preview
200
199
 
201
- `/design-system/update` lee el manifest, tokens y documentos relacionados antes de escoger un cambio. Las actualizaciones de token solo aceptan rutas existentes; por defecto una ruta semántica se actualiza coherentemente en todos los temas. Se puede limitar a un tema con una ruta como `themes.dark.color.accent.primary`.
200
+ `design-system/preview/index.html` is generated from the manifest, tokens, and component/pattern specifications. It includes token samples, component examples, theme switching when multiple themes exist, and interactive examples. It supports visible keyboard focus and `prefers-reduced-motion`.
202
201
 
203
- El plugin resuelve dependencias a partir de la lista de tokens declarada en cada componente/pattern. Registra el razonamiento en `DECISIONS.md`, actualiza `preferences.json`/`FOUNDATIONS.md` si corresponde, actualiza reglas, manifest, README y changelog, y regenera la preview. Clasificación inicial:
204
-
205
- - **PATCH** (`patch`): corrección o documentación sin cambio compatible de contrato.
206
- - **MINOR** (`minor`): nuevo comportamiento/token compatible.
207
- - **MAJOR** (`major`): cambio con posibilidad de alterar interfaces existentes.
208
-
209
- La expansión puede incorporar nuevos tokens (un valor por tema), componentes y patterns mediante la misma operación, sin reemplazar archivos existentes. Añadir un token/componente/pattern escala a `MINOR` como mínimo. El agente elige el impacto y comunica los consumidores afectados. Los cambios dejan el sistema en `draft` de forma predeterminada, hasta que el usuario lo revise.
210
-
211
- ## Preview interactiva
212
-
213
- `preview/index.html` se genera desde tokens y especificaciones. Incluye navegación responsive, swatches y referencias de tokens, ejemplos de componentes, temas disponibles, tabs, switch, modal, toast, estados de inputs y tabla. La implementación respeta `prefers-reduced-motion` y ofrece foco visible.
214
-
215
- La preview embebida se regenera con `/design-system/preview`. Para trabajar **sin el plugin**, el archivo incluido puede ejecutarse desde la raíz del proyecto:
202
+ Regenerate it in OpenCode with `/design-system/preview`, or without the plugin from the project root:
216
203
 
217
204
  ```sh
218
205
  node design-system/tools/generate-preview.mjs
219
206
  ```
220
207
 
221
- Este renderer no tiene dependencias externas; lee el manifest, los tokens y documentos actuales.
222
-
223
- ## Diseñar e implementar pantallas
208
+ The standalone renderer has no external dependencies. Edit the structured Markdown and JSON—not the generated HTML—to change the system.
224
209
 
225
- `/design-screen` crea únicamente `design-system/screens/<nombre>.md`. La especificación incluye propósito, layout, jerarquía, componentes/tokens, contenido/datos, estados/interacciones, responsive y accesibilidad. Otro agente de programación puede implementar ese brief después.
226
-
227
- Cuando un agente de código recibe una solicitud UI ordinaria, `AGENTS.md` y la Skill del proyecto le indican cómo detectar el sistema y cargar solo lo relevante. Este mecanismo también funciona sin el plugin: los tokens y documentación no dependen de React, Vue, Tailwind u OpenCode.
228
-
229
- ## Comprobación
230
-
231
- `/design-system/check` realiza una exploración de solo lectura, compara literales de color, radios y algunas alturas de controles con los valores encontrados en tokens y presenta candidatos con ruta de archivo. Es heurística: informa la evidencia en lugar de cambiar estilos automáticamente. La arquitectura puede ampliarse con adaptadores y reglas específicas de cada framework sin cambiar el formato base.
232
-
233
- ## Desarrollo
210
+ ## Develop and test
234
211
 
235
212
  ```sh
236
213
  npm install
@@ -239,13 +216,29 @@ npm test
239
216
  npm run build
240
217
  ```
241
218
 
242
- Los tests ejercitan un flujo integrado en un proyecto temporal: análisis de UI existente, creación y preservación de archivos, instrucción `AGENTS.md`, creación de especificación, propagación de token entre temas, dependencias, preview, checks y protección de rutas.
219
+ Tests cover an integrated temporary-project workflow, including read-only analysis, creation and preservation of user files, managed `AGENTS.md` updates, screen briefs, multi-theme token updates, previews, checks, and path safety.
220
+
221
+ ## Publish a release
222
+
223
+ The `Publish to npm` GitHub Actions workflow publishes when a `vX.Y.Z` tag is pushed, after checks pass and the tag matches the version in `package.json`. Before the first release, configure npm Trusted Publishing for the `BraveOtter/opencode-design-system` repository and the `publish.yml` workflow, and allow the direct `npm publish` action. The workflow uses OIDC, so no npm publish token needs to be stored in GitHub; npm also generates provenance automatically for this public repository.
243
224
 
244
- ## Documentación oficial de OpenCode v2
225
+ To bump the package version and push its commit and tag:
245
226
 
246
- - [Plugins](https://opencode.ai/v2/docs/build/plugins)
247
- - [Commands](https://opencode.ai/v2/docs/commands)
248
- - [Agents](https://opencode.ai/v2/docs/agents)
249
- - [Skills](https://opencode.ai/v2/docs/skills)
250
- - [AGENTS.md / instructions](https://opencode.ai/v2/docs/instructions)
227
+ ```sh
228
+ npm version patch # or minor / major
229
+ git push --follow-tags
230
+ ```
231
+
232
+ ## Documentation
233
+
234
+ - [OpenCode v2 plugin guide](https://opencode.ai/v2/docs/build/plugins)
235
+ - [OpenCode plugin configuration](https://opencode.ai/v2/docs/plugins)
236
+ - [OpenCode commands](https://opencode.ai/v2/docs/commands)
237
+ - [OpenCode instructions and `AGENTS.md`](https://opencode.ai/v2/docs/instructions)
251
238
  - [Plugin API reference](https://opencode.ai/v2/docs/api)
239
+ - [npm package](https://www.npmjs.com/package/opencode-design-system)
240
+ - [Report an issue](https://github.com/BraveOtter/opencode-design-system/issues)
241
+
242
+ ## License
243
+
244
+ This project is licensed under the [MIT License](https://github.com/BraveOtter/opencode-design-system/blob/main/LICENSE).