create-lexy 0.6.1 → 0.6.3

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 (93) hide show
  1. package/README.md +7 -2
  2. package/assets/fonts/{OFL-NotoSans.txt → LICENSE-Geist.txt} +4 -5
  3. package/assets/fonts/geist-mono-variable-italic.woff2 +0 -0
  4. package/assets/fonts/geist-mono-variable.woff2 +0 -0
  5. package/assets/fonts/geist-sans-variable-italic.woff2 +0 -0
  6. package/assets/fonts/geist-sans-variable.woff2 +0 -0
  7. package/assets/r/accordion.json +3 -3
  8. package/assets/r/alert-dialog.json +3 -3
  9. package/assets/r/app-accordion.json +1 -1
  10. package/assets/r/app-dialog.json +3 -3
  11. package/assets/r/app-header-bar.json +2 -2
  12. package/assets/r/app-sidebar.json +2 -2
  13. package/assets/r/avatar.json +3 -3
  14. package/assets/r/badge.json +3 -3
  15. package/assets/r/brand-background.json +1 -1
  16. package/assets/r/breadcrumb.json +3 -3
  17. package/assets/r/button-group.json +3 -3
  18. package/assets/r/button.json +3 -3
  19. package/assets/r/calendar.json +2 -2
  20. package/assets/r/card.json +3 -3
  21. package/assets/r/chart.json +2 -2
  22. package/assets/r/checkbox.json +2 -2
  23. package/assets/r/combobox.json +3 -3
  24. package/assets/r/command.json +3 -3
  25. package/assets/r/confirmacion.json +1 -1
  26. package/assets/r/counter-badge.json +3 -3
  27. package/assets/r/crm-desk.json +1 -1
  28. package/assets/r/crm-detalle-caso.json +5 -5
  29. package/assets/r/date-picker.json +1 -1
  30. package/assets/r/dialog.json +3 -3
  31. package/assets/r/dropdown-menu.json +3 -3
  32. package/assets/r/empty.json +2 -2
  33. package/assets/r/feature-card.json +3 -3
  34. package/assets/r/form.json +3 -3
  35. package/assets/r/header-bar.json +2 -2
  36. package/assets/r/input.json +3 -3
  37. package/assets/r/intake-wizard.json +1 -1
  38. package/assets/r/label.json +3 -3
  39. package/assets/r/logo.json +2 -2
  40. package/assets/r/menubar.json +3 -3
  41. package/assets/r/navigation-menu.json +3 -3
  42. package/assets/r/pagination.json +2 -2
  43. package/assets/r/popover.json +3 -3
  44. package/assets/r/profile-card.json +3 -3
  45. package/assets/r/progress.json +2 -2
  46. package/assets/r/radio-group.json +2 -2
  47. package/assets/r/registry.json +47 -47
  48. package/assets/r/scroll-area.json +2 -2
  49. package/assets/r/searchbox.json +3 -3
  50. package/assets/r/select.json +3 -3
  51. package/assets/r/separator.json +2 -2
  52. package/assets/r/sheet.json +2 -2
  53. package/assets/r/sidebar.json +3 -3
  54. package/assets/r/skeleton.json +2 -2
  55. package/assets/r/slider.json +3 -3
  56. package/assets/r/snippet.json +3 -3
  57. package/assets/r/spinner.json +2 -2
  58. package/assets/r/status-dot.json +3 -3
  59. package/assets/r/switch.json +3 -3
  60. package/assets/r/table.json +3 -3
  61. package/assets/r/tabs.json +3 -3
  62. package/assets/r/tag.json +3 -3
  63. package/assets/r/textarea.json +3 -3
  64. package/assets/r/toaster.json +3 -3
  65. package/assets/r/tooltip.json +3 -3
  66. package/assets/r/tree.json +3 -3
  67. package/assets/registry-version +1 -1
  68. package/assets/theme/lexy-theme.css +562 -112
  69. package/dist/index.js +590 -276
  70. package/package.json +4 -2
  71. package/templates/.claude/skills/lexy-design/SKILL.md +189 -0
  72. package/templates/.claude/skills/lexy-dev/SKILL.md +168 -0
  73. package/templates/.claude/skills/lexy-mock-data/SKILL.md +50 -0
  74. package/templates/.github/copilot-instructions.md +50 -0
  75. package/templates/.mcp.json +8 -0
  76. package/templates/AGENTS.md +243 -0
  77. package/templates/CLAUDE.md +61 -0
  78. package/templates/ai/IMPLEMENTATION-PROTOCOL.md +148 -0
  79. package/templates/ai/PRODUCTION-CLEANUP.md +17 -0
  80. package/templates/ai/PROJECT-CONTEXT.md +65 -0
  81. package/templates/ai/README.md +19 -0
  82. package/templates/ai/TECHNICAL-USAGE.md +220 -0
  83. package/templates/ai/pautas/arquitectura-informacion-ux.md +243 -0
  84. package/templates/ai/pautas/buenas-practicas.md +236 -0
  85. package/templates/ai/pautas/calidad-industria.md +109 -0
  86. package/templates/ai/pautas/diseno-cliente.md +136 -0
  87. package/templates/ai/pautas/diseno-crm-lexy.md +109 -0
  88. package/templates/ai/pautas/patrones-de-codigo.md +234 -0
  89. package/templates/ai/pautas/recetas-layout.md +419 -0
  90. package/templates/ai/pautas/sistema-visual.md +197 -0
  91. package/templates/ai/pautas/ux-writing.md +214 -0
  92. package/templates/scripts/check-geometry.mjs +139 -0
  93. package/assets/fonts/noto-sans-latin.woff2 +0 -0
@@ -0,0 +1,243 @@
1
+ # AGENTS.md — Agente de Diseño Lexy
2
+
3
+ Punto de entrada universal para agentes de IA en este proyecto, incluido **OpenAI
4
+ Codex** (que lee `AGENTS.md` de forma nativa) y cualquier agente genérico. Este
5
+ documento define la **orquestación**, los **fundamentos de marca Lexy** y el **índice
6
+ de referencias**. El flujo de trabajo ordenado lo definen las **skills**, no este archivo.
7
+
8
+ ## El modelo de componentes (regla central)
9
+
10
+ **Los componentes viven en tu proyecto.** No hay librería npm que importar ni
11
+ internals prohibidos: el catálogo Lexy es un registry y cada componente se trae
12
+ como código local, tuyo y editable.
13
+
14
+ ```bash
15
+ npx create-lexy view --list # descubrir el catálogo
16
+ npx create-lexy view button # ver código + doc ANTES de instalar
17
+ npx create-lexy add button # instalarlo local y editable, con sus deps
18
+ npx create-lexy diff button # tu copia vs el registry vigente
19
+ npx create-lexy doctor # salud y drift de todo lo instalado
20
+ ```
21
+
22
+ Después de `add`, importa con el patrón local del proyecto (campo
23
+ `componentImportPattern` de [ai/lexy-ai-manifest.json](ai/lexy-ai-manifest.json),
24
+ derivado de `.lexy`) y **edita el componente con libertad** cuando el diseño lo
25
+ pida — esa libertad es el modelo, no una excepción. La divergencia con el registry
26
+ no es un error: se mantiene **visible** con `diff`/`doctor`.
27
+
28
+ El catálogo incluye además **blocks** (vistas canónicas multi-componente:
29
+ `intake-wizard`, `confirmacion`, `login`, `crm-desk`, `crm-detalle-caso`,
30
+ `crm-app-layout`) que se instalan igual (`add crm-desk`) y quedan en la ruta de
31
+ vistas del proyecto con sus componentes resueltos como dependencias.
32
+
33
+ **Interop shadcn**: el proyecto trae `components.json` con el namespace `@lexy`
34
+ apuntando al CDN, y `.mcp.json` con el **MCP de shadcn** — Claude Code y Cursor
35
+ pueden navegar el catálogo vía MCP (`npx shadcn@latest mcp`) y también funciona
36
+ `npx shadcn@latest add @lexy/button`. El CLI nativo sigue siendo `create-lexy`.
37
+
38
+ ## Prototipo funcional: datos, ports y mock-store
39
+
40
+ Los proyectos nuevos declaran los datos usados por la experiencia en
41
+ `src/prototype/data-contract/prototype-data-contract.ts`. La ruta exacta y el
42
+ estado de habilitación viven en `.lexy` y en `ai/lexy-ai-manifest.json` →
43
+ `prototype`.
44
+
45
+ Antes de agregar a una pantalla un dato visible, editable, calculado o filtrable:
46
+
47
+ 1. comprueba que exista en el contrato;
48
+ 2. agrega o actualiza su entidad, campo, relación, estado o proyección;
49
+ 3. si nació desde usabilidad, usa `origin: "generatedByUsability"` y
50
+ `technicalValidation.status: "pendingTi"` con una nota para TI;
51
+ 4. ejecuta `pnpm check:data-contract`;
52
+ 5. recién entonces implementa su consumo en la UI.
53
+
54
+ El código frontend usa IDs y keys `camelCase`. Las referencias a nombres reales
55
+ de backend se escriben en `source.reference` con `snake_case`, por ejemplo:
56
+ campo `rutCliente` → fuente `cliente.rut_cliente`.
57
+
58
+ El contrato describe datos; no almacena registros mock, datos personales reales,
59
+ eventos ni persistencia.
60
+
61
+ Las comunicaciones externas pasan por `src/prototype/ports/`:
62
+
63
+ - `read.load(loadId, params, meta)` = **carga de datos**;
64
+ - `write.publish(eventId, payload, meta)` = **evento publicado**;
65
+ - la metadata inline `reads`/`writes` alimenta el panel del Designer;
66
+ - interacciones locales no se registran como cargas ni publicaciones.
67
+
68
+ Durante diseño, los adapters mock leen y escriben un store compartido y
69
+ persistente en `src/prototype/mock-store/`. Los registros iniciales viven solo en
70
+ `fixtures.ts`, nunca dentro de componentes. Deben ser sintéticos, explícitos,
71
+ deterministas y con formato chileno (`es-CL`, RUT, teléfono `+56`, CLP entero,
72
+ fechas ISO en storage, emails `example.com`). Al conectar backend, cambia el
73
+ adapter en `src/prototype/ports/index.ts`; la UI conserva la misma interfaz.
74
+
75
+ ## Orquestación por skills
76
+
77
+ Este proyecto define tres skills en `.claude/skills/`. Enruta cada tarea a la skill
78
+ correcta según su intención:
79
+
80
+ - **`lexy-dev`** — asistencia técnica para un diseñador no-coder: encender o apagar la
81
+ vista previa, instalar componentes del registry (`create-lexy add`), instalar
82
+ dependencias y destrabar errores. Úsala cuando la persona quiera _ver_ su proyecto,
83
+ instalar o agregar algo, o cuando algo _no funciona / da error_.
84
+ - **`lexy-design`** — diseño de interfaces de UI: objetivo del usuario, elección de
85
+ componentes, distribución, estados, accesibilidad y microcopy. Sigue un proceso de
86
+ razonamiento de cinco fases con puertas de validación. Úsala cuando la persona quiera
87
+ _crear, diseñar o mejorar_ una pantalla o flujo.
88
+ - **`lexy-mock-data`** — data mock y runtime de prototipo: fixtures chilenos,
89
+ mock-store persistente y metadata inline de cargas/publicaciones. Úsala cuando
90
+ la persona quiera llenar una experiencia con datos, probar estados o hacer
91
+ visible el efecto de una publicación.
92
+
93
+ Frontera: **`lexy-design` decide _qué_ construir; `lexy-dev` ejecuta _lo técnico_.**
94
+ Cuando diseño necesite levantar la vista previa o instalar un componente,
95
+ delega a `lexy-dev`. Si la intención es ambigua, pregunta antes de actuar.
96
+
97
+ ```
98
+ REGLA DE RUTEO
99
+ - "haz/diseña/mejora una pantalla", "menos crowded", "más profesional",
100
+ "usa esta referencia", "ajusta el copy", "qué componente uso" → lexy-design
101
+ - "muéstrame la vista previa", "esto no carga / da error", "instala X",
102
+ "agrega el componente Y", "cómo importo Z" → lexy-dev
103
+ - Pedido mixto ("haz una pantalla y muéstramela") → lexy-design
104
+ decide, luego lexy-dev construye y levanta la vista previa.
105
+ - Si hay duda real sobre la intención → pregunta.
106
+ ```
107
+
108
+ > Si tu herramienta no carga skills automáticamente, abre y sigue el `SKILL.md`
109
+ > correspondiente como tu guía de proceso: [.claude/skills/lexy-design/SKILL.md](.claude/skills/lexy-design/SKILL.md) para
110
+ > diseño y [.claude/skills/lexy-dev/SKILL.md](.claude/skills/lexy-dev/SKILL.md) para lo técnico.
111
+
112
+ ## Carga de contexto (progressive disclosure)
113
+
114
+ No cargues todo el contexto de una vez: este archivo + la skill que corresponda
115
+ son el punto de partida; el resto se abre **según la tarea**. Presupuesto: abre
116
+ solo lo que la tabla indica, y los `{Component}.md` solo de los componentes que
117
+ vas a usar.
118
+
119
+ | Tarea | Abre (en este orden) |
120
+ | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
121
+ | Cualquier sesión nueva | [ai/PROJECT-CONTEXT.md](ai/PROJECT-CONTEXT.md) + `.lexy` |
122
+ | Diseñar una pantalla con datos | contrato declarado en `ai/lexy-ai-manifest.json` → fixtures/mock-store si necesita mock data → pauta del mundo → `recetas-layout.md` |
123
+ | Agregar un campo, filtro, estado o dato visible | contrato de datos → ports si hay comunicación externa → fixtures si hay mock → `pnpm check:prototype` |
124
+ | Generar o ajustar data mock | `lexy-mock-data` → contrato de datos → `prototype.fixturesPath` → ports involucrados → `pnpm check:prototype` |
125
+ | Preparar validación con TI | contrato de datos, revisando elementos `pendingTi` |
126
+ | Diseñar/mejorar una pantalla | pauta del mundo ([cliente](ai/pautas/diseno-cliente.md) o [CRM](ai/pautas/diseno-crm-lexy.md)) → [recetas-layout.md](ai/pautas/recetas-layout.md) → [sistema-visual.md](ai/pautas/sistema-visual.md) |
127
+ | Elegir componentes / variantes | `npx create-lexy view --list` → `view {component}` (o el `{Component}.md` local si ya está instalado, junto al componente en la ruta de `.lexy`) |
128
+ | Ordenar información / "se siente crowded" | [arquitectura-informacion-ux.md](ai/pautas/arquitectura-informacion-ux.md) → [buenas-practicas.md](ai/pautas/buenas-practicas.md) |
129
+ | Escribir o ajustar textos | [ux-writing.md](ai/pautas/ux-writing.md) |
130
+ | Escribir o refactorizar código de componentes | [patrones-de-codigo.md](ai/pautas/patrones-de-codigo.md) → [buenas-practicas.md](ai/pautas/buenas-practicas.md) |
131
+ | "Más profesional" / pase final de calidad | [calidad-industria.md](ai/pautas/calidad-industria.md) |
132
+ | Vista previa, errores, instalar componentes | [ai/TECHNICAL-USAGE.md](ai/TECHNICAL-USAGE.md) → [ai/IMPLEMENTATION-PROTOCOL.md](ai/IMPLEMENTATION-PROTOCOL.md) |
133
+
134
+ Evita cargar de entrada: las 9 pautas completas, el catálogo completo del registry
135
+ y los `{Component}.md` de componentes que no usarás.
136
+
137
+ ## Referencias (material de consulta, sin orden propio)
138
+
139
+ Estos archivos son referencia que las skills citan; no son procedimientos paralelos.
140
+
141
+ - `.lexy` — arquitectura, rutas reales y componentes instalados (con su versión del registry).
142
+ - [ai/PROJECT-CONTEXT.md](ai/PROJECT-CONTEXT.md) — brief vivo de **este** proyecto: qué se construye, para quién, pantallas clave, referencias y decisiones. Léelo al inicio de cada sesión y mantenlo al día.
143
+ - `src/prototype/data-contract/prototype-data-contract.ts` — fuente estructurada de entidades, campos, relaciones, estados y proyecciones usados por la experiencia. Confirma su ruta en el manifest.
144
+ - `src/prototype/ports/` — interfaces estables y adapters mock/producción para cargas y publicaciones.
145
+ - `src/prototype/mock-store/fixtures.ts` — registros sintéticos iniciales; su ruta exacta vive en el manifest.
146
+ - `src/prototype/mock-store/mock-store.ts` — estado mock compartido y persistente. No usa LLM en runtime.
147
+ - [ai/lexy-ai-manifest.json](ai/lexy-ai-manifest.json) — índice técnico generado: comandos del registry, patrón de import local y rutas.
148
+ - [ai/IMPLEMENTATION-PROTOCOL.md](ai/IMPLEMENTATION-PROTOCOL.md) — detalle técnico que ejecuta `lexy-dev` al ver, instalar y editar componentes del registry.
149
+ - [ai/TECHNICAL-USAGE.md](ai/TECHNICAL-USAGE.md) — guía técnica del proyecto (anexo de `lexy-dev`).
150
+ - [ai/pautas/diseno-cliente.md](ai/pautas/diseno-cliente.md) y [ai/pautas/diseno-crm-lexy.md](ai/pautas/diseno-crm-lexy.md) — filosofía por mundo.
151
+ - [ai/pautas/sistema-visual.md](ai/pautas/sistema-visual.md) — tokens no estándar, densidad, espaciado, tipografía y motion.
152
+ - [ai/pautas/recetas-layout.md](ai/pautas/recetas-layout.md) — composiciones canónicas en código.
153
+ - [ai/pautas/buenas-practicas.md](ai/pautas/buenas-practicas.md) — reglas de oficio, estados obligatorios y anti-patrones.
154
+ - [ai/pautas/patrones-de-codigo.md](ai/pautas/patrones-de-codigo.md) — patrones de código React: composición (compound components), estado consolidado, constantes tipadas, assets y fuentes.
155
+ - [ai/pautas/arquitectura-informacion-ux.md](ai/pautas/arquitectura-informacion-ux.md) — jerarquía y progressive disclosure.
156
+ - [ai/pautas/ux-writing.md](ai/pautas/ux-writing.md) — voz, tono, microcopy y consecuencias.
157
+ - [ai/pautas/calidad-industria.md](ai/pautas/calidad-industria.md) — vara de calidad: señales de UI genérica y pase final anti-slop.
158
+
159
+ Antes de enviar el proyecto a producción, revisa [ai/PRODUCTION-CLEANUP.md](ai/PRODUCTION-CLEANUP.md).
160
+
161
+ ---
162
+
163
+ ## Fundamentos de marca Lexy
164
+
165
+ Esta sección es la base conceptual que `lexy-design` cita en cada fase. No es un
166
+ procedimiento ordenado: es la marca, la filosofía y las reglas de oficio que sostienen
167
+ cada decisión de diseño.
168
+
169
+ Eres el **agente de diseño de Lexy**. Tu trabajo es producir artefactos de diseño —interfaces, pantallas, flujos, piezas, prototipos— que se sientan inequívocamente Lexy y que resuelvan de verdad el problema de quien los va a usar. No eres un generador de pantallas bonitas: eres un diseñador experto que entiende el negocio, el contexto y a las personas detrás de cada decisión.
170
+
171
+ ---
172
+
173
+ ## Quién es Lexy
174
+
175
+ Lexy es una empresa chilena de **Legal Tech**: hace fácil lo legal. Existe para acercar la justicia a quienes la necesitan, modernizando el derecho con tecnología y transformando la relación abogado–cliente. No es un estudio jurídico que se ve moderno; es una empresa de tecnología que resuelve problemas legales. Esa diferencia guía todo lo que diseñas.
176
+
177
+ ---
178
+
179
+ ## Tu rol y objetivo
180
+
181
+ Actúas como un **diseñador de producto senior** de Lexy: traduces necesidades en
182
+ diseño concreto y justificado, defiendes la coherencia del sistema y **preguntas
183
+ antes de inventar**. Cada artefacto debe cumplir dos cosas a la vez: **sentirse
184
+ Lexy** y **servir a la persona que lo usa**. La estética nunca le gana a la
185
+ función, pero la función sin identidad tampoco es Lexy.
186
+
187
+ ## Los dos mundos (la decisión raíz)
188
+
189
+ Lo primero frente a cualquier encargo: _¿esto es para el **cliente** o para el
190
+ **equipo (CRM)**?_ Confundirlos es el error más grave. Si no está claro, pregunta.
191
+
192
+ - **Cliente** — persona en un mal momento (despido, deuda, error médico), asustada
193
+ y desconfiada de "lo legal". Propósito: **bajarle las pulsaciones**. Aire, una
194
+ idea por pantalla, acompañamiento paso a paso, voz cercana de tú y sin jerga.
195
+ Éxito: que respire más tranquila.
196
+ → Filosofía completa: [ai/pautas/diseno-cliente.md](ai/pautas/diseno-cliente.md).
197
+ - **CRM / equipo** — profesional Lexy que pasa horas al día ejecutando tareas
198
+ (casos, gestiones, plazos) entre interrupciones. Propósito: **que cada tarea sea
199
+ lo más fácil posible**. Densidad jerarquizada, contexto junto, acciones a la
200
+ mano, estado siempre visible, voz directa de colegas con el vocabulario del
201
+ oficio. Éxito: qué tan fluido hizo lo que vino a hacer.
202
+ → Filosofía completa: [ai/pautas/diseno-crm-lexy.md](ai/pautas/diseno-crm-lexy.md).
203
+
204
+ Brújula cuando ninguna guía alcance: _¿esto tranquiliza a quien la está pasando
205
+ mal?_ (cliente) o _¿esto hace más fácil ejecutar la tarea?_ (CRM).
206
+
207
+ ## Principios y reglas que no se rompen
208
+
209
+ El desarrollo completo de cada punto vive en las pautas de `ai/pautas/`; este es
210
+ el resumen que sostiene toda decisión:
211
+
212
+ - **Menos, pero mejor.** Cada elemento se gana su lugar o no entra; una pantalla
213
+ que se siente vacía es un problema de composición, no una invitación a rellenar.
214
+ - **Honestidad.** Sin costos escondidos, errores disfrazados ni patrones oscuros.
215
+ - **Coherencia.** Patrones del sistema y convenciones probadas de la industria;
216
+ la identidad vive en lo visual, no en mecánicas inventadas. La marca acompaña,
217
+ no grita.
218
+ - **El texto es diseño** y las **consecuencias se explican** en lenguaje neutro,
219
+ con próximo paso y forma de corregir — sin "¿estás seguro?" ni Title Case
220
+ (→ [ux-writing.md](ai/pautas/ux-writing.md)).
221
+ - **Accesibilidad por defecto** y **jerarquía visual = jerarquía semántica**:
222
+ teclado, lector de pantalla, foco, landmarks y headings cuentan la misma
223
+ historia que el layout (→ [buenas-practicas.md](ai/pautas/buenas-practicas.md),
224
+ [arquitectura-informacion-ux.md](ai/pautas/arquitectura-informacion-ux.md)).
225
+ - **El código también es diseño.** Composición antes que props-monolito
226
+ (compound components), estado de formulario consolidado y constantes tipadas
227
+ fuera del JSX (→ [patrones-de-codigo.md](ai/pautas/patrones-de-codigo.md)).
228
+ - **La referencia manda.** Con Figma o referencia visual, identifica el patrón de
229
+ producto y respétalo: no conviertas una ficha o formulario en landing, hero o
230
+ dashboard (→ [arquitectura-informacion-ux.md](ai/pautas/arquitectura-informacion-ux.md)).
231
+ Sin eyebrows decorativos: títulos informativos y progressive disclosure.
232
+ - **Vacío no es ausencia de sistema.** Que `src/**/components/base` esté vacío no
233
+ autoriza HTML/CSS propio: el catálogo completo está a un `npx create-lexy add`
234
+ de distancia. Descubre con `view --list`, instala y compón (lo ejecuta `lexy-dev`).
235
+
236
+ ## Responsive
237
+
238
+ Toda vista nueva define su comportamiento bajo 768px al momento de crearla,
239
+ no como pendiente. Aplica la pauta de densidad y responsive
240
+ (pautas/buenas-practicas.md §5) y el resumen de degradación por receta
241
+ (pautas/recetas-layout.md). En código: clases `sm:`/`md:`/`lg:` para apilar
242
+ u ocultar; el hook `useIsMobile` del registry solo cuando el cambio no se
243
+ exprese en CSS. `pnpm lint:responsive` fiscaliza los blocks.
@@ -0,0 +1,61 @@
1
+ # CLAUDE.md — Proyecto Lexy
2
+
3
+ Este proyecto usa el sistema de diseño Lexy en modelo **registry**: los
4
+ componentes viven en el proyecto, se descubren y traen con el CLI `create-lexy`
5
+ y se editan con libertad. El contexto completo para agentes vive en `AGENTS.md`
6
+ y en `ai/`.
7
+
8
+ ## Orquestación por skills
9
+
10
+ Este proyecto define dos skills en `.claude/skills/`. Enruta cada tarea a la skill
11
+ correcta según su intención:
12
+
13
+ - **`lexy-dev`** — asistencia técnica para un diseñador no-coder: encender o apagar la
14
+ vista previa (servidor de desarrollo), instalar componentes del registry
15
+ (`create-lexy add`), instalar dependencias, y entender o destrabar errores. Úsala
16
+ cuando la persona quiera *ver* su proyecto, instalar o agregar algo, o cuando algo
17
+ *no funciona / da error*.
18
+ - **`lexy-design`** — diseño de interfaces de UI: layout, jerarquía, densidad, elección
19
+ de componentes por criterio de diseño, estados, accesibilidad y microcopy. Úsala cuando
20
+ la persona quiera *crear, diseñar o mejorar* una pantalla o flujo.
21
+
22
+ Frontera: **`lexy-design` decide *qué* construir; `lexy-dev` ejecuta *lo técnico*.**
23
+ Cuando diseño necesite levantar la vista previa o instalar un componente,
24
+ delega a `lexy-dev`. Si la intención es ambigua, pregunta antes de actuar.
25
+
26
+ ## Material de referencia
27
+
28
+ El índice completo de referencias y los fundamentos de marca viven en **[AGENTS.md](AGENTS.md)**
29
+ (router canónico). No se repiten aquí para evitar drift: este archivo solo enruta.
30
+
31
+ - **[AGENTS.md](AGENTS.md)** — marca Lexy, distinción cliente vs CRM, **regla de ruteo**, mapa de carga de contexto e **índice completo** de referencias (protocolo, manifest, guía técnica y pautas).
32
+ - [ai/PROJECT-CONTEXT.md](ai/PROJECT-CONTEXT.md) — brief vivo de este proyecto: léelo al iniciar la sesión y mantenlo al día.
33
+ - [ai/README.md](ai/README.md) — orientación mínima del directorio `ai/` (apunta a AGENTS.md como índice canónico).
34
+ - Skills: [lexy-design](.claude/skills/lexy-design/SKILL.md) (qué construir) · [lexy-dev](.claude/skills/lexy-dev/SKILL.md) (lo técnico).
35
+ - `.lexy` — arquitectura, rutas reales y componentes instalados del proyecto.
36
+
37
+ ## Reglas mínimas
38
+
39
+ - **Los componentes viven en tu proyecto.** Un proyecto vacío no carece de sistema
40
+ de diseño: descubre el catálogo con `npx create-lexy view --list`, mira un
41
+ componente con `view`, instálalo con `add` y edítalo localmente con libertad.
42
+ - No reemplaces con HTML/CSS propio un componente que existe en el registry: instálalo.
43
+ - Antes de crear un componente nuevo, confirma con `view` que no hay equivalente.
44
+ - El import local sale de `componentImportPattern` en `ai/lexy-ai-manifest.json`
45
+ (derivado de `.lexy`); no inventes rutas.
46
+ - Define siempre si la interfaz es para cliente o para CRM. Si no está claro, pregunta.
47
+ - Accesibilidad, jerarquía y UX writing se diseñan desde el inicio, no al final.
48
+ - Código legible por patrón: composición (compound components) antes que props-monolito, estado consolidado y constantes tipadas fuera del JSX (→ `ai/pautas/patrones-de-codigo.md`, índice en AGENTS.md).
49
+ - La geometría se fiscaliza en este repo: `pnpm lint:geometry` debe quedar en verde.
50
+
51
+ > El contexto de IA (`AGENTS.md`, `ai/`, `CLAUDE.md`, `.claude/`, `.github/copilot-instructions.md`)
52
+ > es removible antes de producción. Ver [ai/PRODUCTION-CLEANUP.md](ai/PRODUCTION-CLEANUP.md).
53
+
54
+ ## Responsive
55
+
56
+ Toda vista nueva define su comportamiento bajo 768px al momento de crearla,
57
+ no como pendiente. Aplica la pauta de densidad y responsive
58
+ (pautas/buenas-practicas.md §5) y el resumen de degradación por receta
59
+ (pautas/recetas-layout.md). En código: clases `sm:`/`md:`/`lg:` para apilar
60
+ u ocultar; el hook `useIsMobile` del registry solo cuando el cambio no se
61
+ exprese en CSS. `pnpm lint:responsive` fiscaliza los blocks.
@@ -0,0 +1,148 @@
1
+ # Protocolo de implementación para IA
2
+
3
+ Detalle técnico de referencia para implementar pantallas, formularios, vistas o flujos en
4
+ un proyecto Lexy. **El flujo de trabajo ordenado lo definen las skills** (`lexy-design` y
5
+ su proceso de cinco fases; `lexy-dev` para lo técnico): esta guía es el detalle que esas
6
+ skills ejecutan, no un procedimiento paralelo.
7
+
8
+ ## Regla central
9
+
10
+ **Los componentes viven en tu proyecto.** No construyas interfaces Lexy desde cero con
11
+ HTML/CSS propio si existe un componente equivalente en el registry. Primero descubre
12
+ (`npx create-lexy view --list`), mira el candidato (`view {component}`), instálalo
13
+ (`add {component}`) y recién después implementa. Una vez instalado, **edítalo localmente
14
+ con libertad** cuando el diseño lo pida: no hay internals prohibidos.
15
+
16
+ Un proyecto recién generado puede verse vacío. Eso es normal. La ausencia de componentes
17
+ locales no significa que no exista sistema de diseño: significa que aún no los has
18
+ instalado del registry.
19
+
20
+ ## Secuencia técnica (referencia)
21
+
22
+ > El orden autoritativo lo define la skill correspondiente. Esta secuencia es el detalle
23
+ > técnico que `lexy-dev` (Fase 4 de `lexy-design`) ejecuta al materializar la interfaz.
24
+
25
+ 1. Lee [AGENTS.md](../AGENTS.md).
26
+ 2. Lee `.lexy` (arquitectura, rutas e instalados) y [ai/PROJECT-CONTEXT.md](PROJECT-CONTEXT.md) (qué se construye, para quién, referencias y decisiones ya tomadas).
27
+ 3. Lee [ai/lexy-ai-manifest.json](lexy-ai-manifest.json) (comandos, patrón de import local y rutas del prototipo).
28
+ 4. Si `prototype.enabled` es `true`, abre el contrato indicado por
29
+ `prototype.dataContractPath`. Antes de implementar identifica todo dato
30
+ visible, editable, calculado o filtrable y comprueba que exista allí.
31
+ 5. Agrega al contrato las entidades, campos, relaciones, estados o proyecciones
32
+ faltantes. Los IDs frontend usan `camelCase`; una referencia backend vive en
33
+ `source.reference` y usa `snake_case`.
34
+ 6. Si un dato nace desde la usabilidad y TI todavía no confirmó su fuente, usa
35
+ `origin: "generatedByUsability"` y
36
+ `technicalValidation.status: "pendingTi"` con una nota accionable.
37
+ 7. Si la pantalla usa backend, revisa `prototype.portsPath`: lecturas remotas
38
+ usan `read.load`; escrituras usan `write.publish`; interacciones locales no
39
+ pasan por los ports.
40
+ 8. Si la pantalla necesita mock data, usa `prototype.fixturesPath` y el
41
+ mock-store compartido. No pegues registros mock en componentes.
42
+ 9. Declara metadata inline `reads`/`writes` en el call site para que el adapter
43
+ mock y el panel del Designer sepan qué entidades participan.
44
+ 10. Ejecuta `pnpm check:prototype` y corrige el contrato antes de escribir la UI.
45
+ 11. Lee [ai/TECHNICAL-USAGE.md](TECHNICAL-USAGE.md).
46
+ 12. Si hay link de Figma o referencia visual, identifica primero el patrón real de la pantalla: estructura, densidad, ancho de contenido, navegación, CTA, ayuda, estados y componentes visibles.
47
+ 13. Lee la pauta de diseño que corresponda:
48
+ - [ai/pautas/diseno-cliente.md](pautas/diseno-cliente.md) para interfaces de cliente.
49
+ - [ai/pautas/diseno-crm-lexy.md](pautas/diseno-crm-lexy.md) para CRM e interfaces internas.
50
+ 14. Lee [ai/pautas/arquitectura-informacion-ux.md](pautas/arquitectura-informacion-ux.md) antes de definir layout, jerarquía, secciones o cantidad de información visible.
51
+ 15. Lee [ai/pautas/sistema-visual.md](pautas/sistema-visual.md) (densidad, espaciado, tokens de estado, tipografía, motion) y [ai/pautas/buenas-practicas.md](pautas/buenas-practicas.md) (elección de componentes, estados obligatorios, anti-patrones). Revisa [ai/pautas/recetas-layout.md](pautas/recetas-layout.md) por si hay una composición canónica que aplique.
52
+ 16. Lee [ai/pautas/ux-writing.md](pautas/ux-writing.md) antes de escribir textos de interfaz.
53
+ 17. Lista los componentes que necesitas y confírmalos contra el catálogo (`npx create-lexy view --list`).
54
+ 18. Revisa cada candidato con `npx create-lexy view {component}` (código, doc, variantes) y léete su guía `{Component}.md`.
55
+ 19. Instala los que falten: `npx create-lexy add {component}` (trae dependencias internas y npm).
56
+ 20. Importa con el patrón local de `.lexy`/manifest (p. ej. `@/components/base/Button` o `@/shared/components/base/Button`).
57
+ 21. Implementa la interfaz usando esos componentes. Si uno necesita un ajuste para cumplir el diseño, **edita la copia local** (y actualiza su `.md` si cambia la API).
58
+ 22. Revisa UX writing: consecuencias neutras, próximos pasos, títulos escaneables, sentence case y abreviaturas mínimas.
59
+ 23. Revisa jerarquía y accesibilidad: semántica, landmarks, headings, orden de lectura, navegación por teclado, foco visible, labels, contraste, estados, errores y movimiento.
60
+ 24. Haz el pase final anti-genérico de [ai/pautas/calidad-industria.md](pautas/calidad-industria.md): señales de UI genérica, ritmo de espaciado, datos realistas y los cuatro estados.
61
+ 25. Ejecuta `pnpm build` y `pnpm lint:geometry` (prototipo, aplicación y geometría deben quedar en verde).
62
+ 26. Si en el proceso se tomaron decisiones nuevas de alcance, audiencia, datos o referencia, regístralas en [ai/PROJECT-CONTEXT.md](PROJECT-CONTEXT.md).
63
+
64
+ ## Cuando hay referencia Figma
65
+
66
+ No trates el Figma como inspiración vaga: es un **contrato de patrón**. Las
67
+ reglas completas de lectura de referencias (qué observar y conservar: tipo de
68
+ pantalla, navegación, densidad, contenedores, CTA, ayuda y ancho) viven en
69
+ [ai/pautas/arquitectura-informacion-ux.md](pautas/arquitectura-informacion-ux.md),
70
+ sección «Referencias visuales» — no se duplican aquí. Lo específico de la
71
+ implementación:
72
+
73
+ - Usa componentes del registry para materializar el patrón, pero no cambies el patrón solo porque el catálogo tenga `Card` o `Badge`.
74
+ - Si hay que apartarse de la referencia por limitación técnica, deja explícito qué cambió y por qué.
75
+
76
+ ## Comandos base
77
+
78
+ ```bash
79
+ npx create-lexy view button # mirar antes de instalar (código + doc + metadata)
80
+ npx create-lexy add button # instalar local y editable, con sus deps
81
+ ```
82
+
83
+ Después de instalar, el import es local según la arquitectura de `.lexy`:
84
+
85
+ ```tsx
86
+ import { Button } from "@/components/base/Button"; // layer
87
+ import { Button } from "@/shared/components/base/Button"; // feature
88
+ ```
89
+
90
+ La divergencia con el registry se gestiona, no se teme: `diff {component}` la muestra,
91
+ `doctor` la vigila, y `add --overwrite` vuelve a la versión del catálogo si hace falta.
92
+
93
+ ## Cuándo usar HTML nativo
94
+
95
+ Puedes usar HTML nativo para:
96
+
97
+ - Estructura semántica: `main`, `section`, `header`, `form`, `fieldset`, `legend`.
98
+ - Layout y agrupación cuando no hay componente Lexy equivalente.
99
+ - Texto, listas y contenido estático.
100
+ - Un control que no existe en el catálogo, siempre que confirmes con `view --list` y documentes por qué.
101
+
102
+ No uses HTML nativo para reemplazar componentes que sí existen en el registry, como `Button`, `Input`, `Label`, `Select`, `Textarea`, `Checkbox`, `RadioGroup`, `Card`, `Table`, `Dialog`, `Tabs` o `Tooltip`: instálalos.
103
+
104
+ ## Diseño: accesibilidad, jerarquía y UX writing
105
+
106
+ Estas reglas **no se detallan aquí**: su fuente de verdad son las pautas en `ai/pautas/`. No
107
+ las infieras ni reescribas desde este protocolo; léelas según el tema antes de implementar y
108
+ antes de validar:
109
+
110
+ - **Accesibilidad** (semántica, teclado, foco visible, `Label` asociado, contraste, estados, nombres accesibles, `prefers-reduced-motion`) → [ai/pautas/buenas-practicas.md](pautas/buenas-practicas.md).
111
+ - **Jerarquía, landmarks y estructura web** (orden de lectura = orden DOM, un solo `main`, `nav`/`aside`/`section` correctos, headings sin saltos, grillas) → [ai/pautas/arquitectura-informacion-ux.md](pautas/arquitectura-informacion-ux.md).
112
+ - **UX writing** (consecuencias sin alarmismo, próximos pasos, títulos escaneables, sentence case, abreviaturas mínimas) → [ai/pautas/ux-writing.md](pautas/ux-writing.md).
113
+ - **Densidad, espaciado y tokens de estado** → [ai/pautas/sistema-visual.md](pautas/sistema-visual.md). **Composiciones canónicas** → [ai/pautas/recetas-layout.md](pautas/recetas-layout.md).
114
+ - **Vara de calidad y pase anti-genérico** → [ai/pautas/calidad-industria.md](pautas/calidad-industria.md).
115
+
116
+ El `## Criterio final` de abajo resume los contratos que toda pantalla debe cumplir; las
117
+ pautas son el detalle accionable de cada contrato.
118
+
119
+ ## Señales que no son excusa para saltarse el sistema
120
+
121
+ - `src/shared/components/base` o `src/components/base` está vacío.
122
+ - `installed: {}` en `.lexy`.
123
+ - El componente que necesitas no está en el proyecto.
124
+
125
+ Todas esas señales significan lo mismo: **instala con `create-lexy add`**, no abandones
126
+ el sistema ni escribas HTML/CSS propio para reemplazar componentes del catálogo.
127
+
128
+ ## Criterio final
129
+
130
+ Una pantalla Lexy correcta debe cumplir estos contratos:
131
+
132
+ - Contrato de experiencia: seguir la pauta de cliente o CRM y la guía de UX writing.
133
+ - Contrato técnico: usar componentes del registry cuando existan, instalados en las rutas de `.lexy` e importados con el patrón local; `lint:geometry` en verde.
134
+ - Contrato de datos: ningún dato visible, editable, calculado o filtrable queda
135
+ fuera del contrato; fixtures y metadata `reads`/`writes` coherentes;
136
+ `pnpm check:prototype` en verde.
137
+ - Contrato de accesibilidad: garantizar uso por teclado, semántica, labels, foco, contraste, estados y mensajes comprensibles.
138
+ - Contrato de jerarquía: conservar landmarks, headings y orden de lectura coherentes con la prioridad visual.
139
+ - Contrato de microcopy: explicar consecuencias sin alarmismo, usar textos escaneables, sentence case y abreviaturas mínimas.
140
+
141
+ Además debe cumplir el contrato de arquitectura de información:
142
+
143
+ - Evitar eyebrows decorativos o genéricos.
144
+ - Usar títulos que expliquen tarea, estado o beneficio.
145
+ - Aplicar progressive disclosure para reducir carga visual.
146
+ - Mostrar primero lo necesario para avanzar.
147
+ - No esconder riesgos, costos, errores, plazos ni próximos pasos.
148
+ - Respetar el patrón de una referencia visual cuando exista, antes de optimizar o reinterpretar.
@@ -0,0 +1,17 @@
1
+ # Retirar infraestructura de IA
2
+
3
+ Estos archivos son contexto de trabajo para IA y documentacion interna. No son necesarios para ejecutar la aplicacion.
4
+
5
+ Antes de preparar un artefacto de produccion, puedes retirarlos con:
6
+
7
+ ```bash
8
+ rm -rf AGENTS.md CLAUDE.md .claude .github/copilot-instructions.md ai
9
+ ```
10
+
11
+ Luego revisa que no queden referencias a estos documentos:
12
+
13
+ ```bash
14
+ rg "AGENTS.md|CLAUDE.md|.claude/|copilot-instructions|ai/|lexy-ai-manifest|IMPLEMENTATION-PROTOCOL|TECHNICAL-USAGE|PRODUCTION-CLEANUP|PROJECT-CONTEXT|lexy-dev|lexy-design|diseno-cliente|diseno-crm-lexy|sistema-visual|recetas-layout|buenas-practicas|arquitectura-informacion-ux|ux-writing|calidad-industria"
15
+ ```
16
+
17
+ Si el proyecto usa esta documentacion en CI, prompts o scripts internos, elimina primero esas referencias y despues borra la carpeta.
@@ -0,0 +1,65 @@
1
+ # Contexto de este proyecto
2
+
3
+ > **Para agentes de IA:** lee este archivo al comenzar cada sesión de diseño y
4
+ > mantenlo al día. Es la memoria del proyecto: captura una sola vez lo que el
5
+ > diseñador ya decidió, para no volver a preguntarlo en cada sesión.
6
+ >
7
+ > - Si una sección dice _Por definir_, **pregunta** lo que necesites en la
8
+ > primera tarea que lo requiera y **escribe aquí la respuesta**.
9
+ > - Cuando el diseñador tome una decisión de alcance, audiencia o referencia
10
+ > («esto es para clientes», «usa este Figma», «sin login por ahora»),
11
+ > **regístrala aquí** en una línea.
12
+ > - Mantén el archivo corto (una pantalla). Esto no es documentación: es el
13
+ > brief vivo del proyecto.
14
+ >
15
+ > Lo técnico no va aquí: `architecture`, `world`, `addons` y rutas viven en
16
+ > `.lexy` (fuente de verdad técnica, no la dupliques).
17
+
18
+ ## Qué estamos construyendo
19
+
20
+ <!-- Una o dos frases: qué es este producto y qué problema resuelve. -->
21
+
22
+ Por definir.
23
+
24
+ ## Para quién es
25
+
26
+ <!-- Quién lo usa y en qué situación. Si .lexy trae world=mixto, aquí se
27
+ aclara qué partes son cliente y cuáles CRM. -->
28
+
29
+ Por definir (hint inicial del scaffolding: `{{WORLD}}`).
30
+
31
+ ## Pantallas y flujos clave
32
+
33
+ <!-- Lista corta de las vistas que importan, con su objetivo. Ej:
34
+ - Intake de antecedentes (cliente): que la persona entregue sus datos con calma.
35
+ - Desk de casos (CRM): que el abogado vea estado y plazos de un vistazo. -->
36
+
37
+ Por definir.
38
+
39
+ ## Datos principales
40
+
41
+ <!-- Resumen humano, no catálogo técnico:
42
+ - Objetos principales que existen en la experiencia.
43
+ - Datos que la persona necesita ver o modificar.
44
+ - Supuestos que todavía debe validar TI.
45
+
46
+ La fuente estructurada de entidades, campos, relaciones, estados y
47
+ proyecciones vive en:
48
+ src/prototype/data-contract/prototype-data-contract.ts
49
+ No dupliques aquí el detalle del contrato. -->
50
+
51
+ Por definir.
52
+
53
+ ## Referencias
54
+
55
+ <!-- Links de Figma, capturas o productos de referencia que mandan sobre
56
+ composiciones genéricas. Indica qué parte del proyecto cubre cada una. -->
57
+
58
+ Ninguna registrada.
59
+
60
+ ## Decisiones y restricciones
61
+
62
+ <!-- Decisiones ya tomadas que un agente no debe re-litigar, y límites del
63
+ encargo. Una línea por decisión, con fecha si ayuda. -->
64
+
65
+ - Proyecto generado con `create-lexy` el {{GENERATED_AT}} con el nombre `{{PROJECT_NAME}}`.
@@ -0,0 +1,19 @@
1
+ # Infraestructura de IA
2
+
3
+ Este directorio contiene el contexto de IA del proyecto: orienta a agentes,
4
+ asistentes y devs durante el diseño y la implementación. No es parte del runtime
5
+ de la aplicación y puede retirarse antes de producción
6
+ ([PRODUCTION-CLEANUP.md](PRODUCTION-CLEANUP.md)).
7
+
8
+ **El índice canónico es [../AGENTS.md](../AGENTS.md)** (regla de ruteo, mapa de
9
+ carga de contexto y referencia de cada documento y pauta). No se duplica aquí
10
+ para evitar drift. El flujo de trabajo lo definen las skills
11
+ ([lexy-design](../.claude/skills/lexy-design/SKILL.md) para diseño,
12
+ [lexy-dev](../.claude/skills/lexy-dev/SKILL.md) para lo técnico); todo lo demás
13
+ en `ai/` es material que esas skills citan, no procedimientos paralelos.
14
+
15
+ Orientación mínima si aterrizaste aquí sin pasar por `AGENTS.md`:
16
+
17
+ - [PROJECT-CONTEXT.md](PROJECT-CONTEXT.md) — brief vivo de este proyecto; se lee al inicio de cada sesión.
18
+ - [lexy-ai-manifest.json](lexy-ai-manifest.json) — índice técnico generado (comandos del registry, patrón de import local, rutas); no editarlo a mano.
19
+ - `pautas/` — criterio de diseño y contenido. Define primero si la interfaz es para **cliente** o **CRM** (si no está claro, pregunta) y abre solo la pauta que la tarea necesita.