openprompt-lang 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +663 -0
  3. package/bin/cli.js +110 -0
  4. package/bin/lint.js +50 -0
  5. package/docs/COMMANDS.md +229 -0
  6. package/docs/COMMITS/INDEX.md +11 -0
  7. package/docs/COMMITS/v0.1.0-existing.md +31 -0
  8. package/docs/COMMITS/v0.1.0-inicial.md +50 -0
  9. package/docs/COMMITS/v0.1.0-readme.md +24 -0
  10. package/docs/COMMITS/v0.2.0-strict-db-templates.md +50 -0
  11. package/docs/COMMITS/v0.3.0-parser-fixes-vscode.md +67 -0
  12. package/docs/COMMITS/v0.3.0-versioning-component.md +44 -0
  13. package/docs/DEPENDENCIES.md +45 -0
  14. package/docs/FRAMEWORK.md +1741 -0
  15. package/docs/SYNTAX.md +359 -0
  16. package/docs/VERSIONING.md +150 -0
  17. package/docs/referencia-metodologia/Anexos Finales Documentos de Respaldo y Estandarizaci/303/263n.md" +90 -0
  18. package/docs/referencia-metodologia/Cotizaciones.md +84 -0
  19. package/docs/referencia-metodologia/Example.md +1 -0
  20. package/docs/referencia-metodologia/ExtractorInformacion.py +78 -0
  21. package/docs/referencia-metodologia/Fase - 1 .- Desarrollo de la Metodolog/303/255a.md" +67 -0
  22. package/docs/referencia-metodologia/Fase - 2 .- Levantamiento de requisitos generales y traduccion a la IA.md +64 -0
  23. package/docs/referencia-metodologia/Fase - 3 .- Prototipado visual con IA (Figma Maker o equivalentes).md +64 -0
  24. package/docs/referencia-metodologia/Fase - 4 .- Especificacion de requisitos e iteracion con el cliente.md +58 -0
  25. package/docs/referencia-metodologia/Fase - 5 .- Estructuracion y maquetado de funciones (Scaffolding).md +118 -0
  26. package/docs/referencia-metodologia/Fase - 6 .- Estructuracion del backlog y division de tareas.md +48 -0
  27. package/docs/referencia-metodologia/Fase - 7 .- Desarrollo activo, pruebas y control de versiones.md +98 -0
  28. package/docs/referencia-metodologia/Fase - 8 .- Entrega, capacitaci/303/263n y mantenimiento.md" +55 -0
  29. package/docs/referencia-metodologia/Figma prompt template.md +130 -0
  30. package/docs/referencia-metodologia/Framework de Desarrollo Asistido por IA.md +1741 -0
  31. package/docs/referencia-metodologia/Indice General.md +83 -0
  32. package/docs/referencia-metodologia/Prompt refactorizar o creacion desde cero.md +50 -0
  33. package/docs/referencia-metodologia/docs/CONVENCIONES_DB.md +410 -0
  34. package/docs/referencia-metodologia/docs/CONVENCIONES_DOCUMENTACION.md +209 -0
  35. package/docs/referencia-metodologia/docs/PROMPTS/INDEX.md +73 -0
  36. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/01-hook-supabase.md +79 -0
  37. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/02-componente-ui.md +82 -0
  38. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/03-pagina-feature.md +70 -0
  39. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/04-comando-tauri.md +56 -0
  40. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/05-store-zustand.md +74 -0
  41. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/06-servicio-supabase.md +74 -0
  42. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/07-formulario-validacion.md +63 -0
  43. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/08-hook-capacitor.md +65 -0
  44. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/09-refactor-division.md +51 -0
  45. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/10-scaffolding-inicial.md +79 -0
  46. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/11-supabase-crud-service.md +114 -0
  47. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/12-supabase-hook-usetable.md +143 -0
  48. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/13-tauri-command-rust.md +84 -0
  49. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/14-tauri-wrapper-typescript.md +92 -0
  50. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/15-documentar-tabla-db.md +50 -0
  51. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/16-diagrama-arquitectura.md +60 -0
  52. package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/17-documentar-api-rpc.md +56 -0
  53. package/docs/referencia-metodologia/docs/PROMPTS/STACK/ionic-capacitor.md +52 -0
  54. package/docs/referencia-metodologia/docs/PROMPTS/STACK/react-web-puro.md +46 -0
  55. package/docs/referencia-metodologia/docs/PROMPTS/STACK/tauri-desktop.md +53 -0
  56. package/package.json +56 -0
  57. package/schemas/prompt-lang.json +98 -0
  58. package/src/commands/component.js +326 -0
  59. package/src/commands/context.js +206 -0
  60. package/src/commands/figma.js +63 -0
  61. package/src/commands/init.js +373 -0
  62. package/src/commands/suggest.js +31 -0
  63. package/src/commands/validate.js +183 -0
  64. package/src/generators/figma-prompt.js +56 -0
  65. package/src/utils/ai.js +143 -0
  66. package/src/utils/annotations.js +510 -0
  67. package/src/utils/config.js +60 -0
  68. package/vscode-extension/README.md +31 -0
  69. package/vscode-extension/language-configuration.json +7 -0
  70. package/vscode-extension/package.json +62 -0
  71. package/vscode-extension/snippets/promptlang.json +105 -0
  72. package/vscode-extension/syntaxes/annotations.tmGrammar.json +39 -0
  73. package/vscode-extension/syntaxes/promptlang.tmGrammar.json +14 -0
package/docs/SYNTAX.md ADDED
@@ -0,0 +1,359 @@
1
+ # openPrompt-Lang — Especificación del Lenguaje de Anotaciones
2
+
3
+ > **Versión:** 0.1.0
4
+ > **Propósito:** Framework de anotaciones para desarrollo asistido por IA
5
+ > **Inspiración:** Spring Boot annotations, JSDoc, shadcn/ui
6
+
7
+ ---
8
+
9
+ ## 1. Sintaxis General
10
+
11
+ Las anotaciones se escriben como comentarios en el archivo y son interpretadas tanto por la IA como por el CLI de validación.
12
+
13
+ ### Formato básico
14
+
15
+ ```
16
+ // @nombre(args)
17
+ // @nombre(key: value, key2: value2)
18
+ ```
19
+
20
+ ### Formato bloque (múltiples anotaciones)
21
+
22
+ ```
23
+ // @use(kind, contract, limit, deps, platform, scope, meta)
24
+ // @kind(hook)
25
+ // @limit(lines: 80, params: 2)
26
+ // @contract(in: email, password -> out: user, token @error: AuthError)
27
+ ```
28
+
29
+ ### Formato multilinea
30
+
31
+ ```
32
+ /*
33
+ * @use(kind, contract, deps)
34
+ * @kind(service)
35
+ * @contract(in: CreateUserDTO -> out: User @error: ServiceError)
36
+ * @deps(@external: [supabase])
37
+ */
38
+ ```
39
+
40
+ ---
41
+
42
+ ## 2. Sistema de Imports (@use)
43
+
44
+ Todo archivo con anotaciones DEBE declarar `@use` como primer tag. Esto determina qué tags son válidos en el archivo.
45
+
46
+ ```
47
+ @use(tag1, tag2, ...)
48
+ ```
49
+
50
+ | Ejemplo | Significado |
51
+ |---|---|
52
+ | `@use(*)` | Todos los tags disponibles |
53
+ | `@use(kind, contract)` | Solo estos tags |
54
+ | `@use(hook, limit)` | Tags específicos para hooks |
55
+
56
+ **Error si:** Se usa un tag no declarado en `@use`.
57
+
58
+ ---
59
+
60
+ ## 3. Tags de Definición
61
+
62
+ ### @kind — Define el tipo de elemento
63
+
64
+ ```
65
+ @kind(tipo)
66
+ ```
67
+
68
+ | Valor | Descripción | Tags requeridos | Tags prohibidos | Límite default |
69
+ |---|---|---|---|---|
70
+ | `hook` | Custom hook React | `@contract` | `@props` | 80 lines |
71
+ | `component` | Componente UI | `@props` (recomendado) | `@contract` | 120 lines |
72
+ | `page` | Página completa | `@compose` | — | 200 lines |
73
+ | `service` | Servicio/API | `@contract` | `@props`, `@state` | 150 lines |
74
+ | `store` | Estado global | `@deps(zustand)` | — | 100 lines |
75
+ | `util` | Función utilitaria | — | `@state` | 100 lines |
76
+ | `type` | Interfaz/tipo | — | `@limit`, `@state` | — |
77
+ | `layout` | Componente de layout | — | — | 150 lines |
78
+ | `feature` | Módulo completo | `@compose` | — | — |
79
+
80
+ ### @pattern — Define el patrón de diseño
81
+
82
+ ```
83
+ @pattern(nombre)
84
+ ```
85
+
86
+ Valores válidos: `compound`, `composition`, `generic`, `render-prop`, `provider`, `singleton`
87
+
88
+ **Warning si:** `@pattern(inheritance)` — usar `composition` en su lugar.
89
+
90
+ ---
91
+
92
+ ## 4. Tags de Contrato
93
+
94
+ ### @contract — Define interfaz de función
95
+
96
+ ```
97
+ @contract(in: tipos -> out: tipo @error: tipo)
98
+ ```
99
+
100
+ Ejemplos:
101
+ ```
102
+ @contract(in: email, password -> out: User @error: AuthError)
103
+ @contract(in: ProductDTO -> out: Product @error: ValidationError)
104
+ @contract(in: void -> out: Product[] @error: string)
105
+ ```
106
+
107
+ **Errores:**
108
+ - Sin input o sin output → error
109
+ - `@contract(in: any -> out: any)` → warning
110
+ - `@contract(in: string -> )` → error (falta output)
111
+
112
+ ### @props — Define props de componente
113
+
114
+ ```
115
+ @props({ nombre: tipo, nombre2?: tipo, nombre3: tipo = default })
116
+ ```
117
+
118
+ Formato JSON-like:
119
+ ```
120
+ @props({ name: string, age?: number, label: string = "Default" })
121
+ ```
122
+
123
+ ### @state — Define estados visuales
124
+
125
+ ```
126
+ @state(lista de estados)
127
+ ```
128
+
129
+ Valores válidos: `loading`, `empty`, `error`, `success`, `idle`, `submitting`, `editing`, `disabled`
130
+
131
+ Ejemplo:
132
+ ```
133
+ @state(loading, empty, error, success)
134
+ ```
135
+
136
+ **Regla:** Si declaras `@state(error)`, debería haber `@contract(@error)` también.
137
+
138
+ ---
139
+
140
+ ## 5. Tags de Restricción
141
+
142
+ ### @limit — Límites del archivo
143
+
144
+ ```
145
+ @limit(propiedad: valor, ...)
146
+ ```
147
+
148
+ | Propiedad | Tipo | Descripción |
149
+ |---|---|---|
150
+ | `lines` | número | Máximo de líneas |
151
+ | `functions` | número | Máximo de funciones |
152
+ | `params` | número | Máximo de parámetros |
153
+ | `complexity` | número | Complejidad ciclomática |
154
+ | `nesting` | número | Nivel de anidación |
155
+
156
+ Ejemplos:
157
+ ```
158
+ @limit(lines: 120, functions: 3)
159
+ @limit(lines: 80, params: 2)
160
+ ```
161
+
162
+ **Error si:** Valor no es número.
163
+ **Defaults según @kind:** hook=80, component=120, page=200, service=150, store=100.
164
+
165
+ ### @forbidden — Prohibiciones
166
+
167
+ ```
168
+ @forbidden(lista)
169
+ ```
170
+
171
+ Valores válidos: `any`, `css-modules`, `class-components`, `any`, `any`
172
+
173
+ Ejemplo:
174
+ ```
175
+ @forbidden(any, css-modules)
176
+ ```
177
+
178
+ ---
179
+
180
+ ## 6. Tags de Composición
181
+
182
+ ### @compose — Dependencias internas
183
+
184
+ ```
185
+ @compose(ComponenteA, ComponenteB, useHook)
186
+ ```
187
+
188
+ **Requerido en:** `@kind(page)` — una página debe componer algo.
189
+
190
+ ### @deps — Dependencias externas
191
+
192
+ ```
193
+ @deps(@external: [lib1, lib2], @internal: [mod1], @forbidden: [lib3], @peer: [lib4])
194
+ ```
195
+
196
+ | Sub-tag | Descripción |
197
+ |---|---|
198
+ | `@external` | Dependencias de npm/pip/cargo |
199
+ | `@internal` | Dependencias del mismo proyecto |
200
+ | `@forbidden` | Librerías que NO deben usarse |
201
+ | `@peer` | Peer dependencies |
202
+
203
+ **Error si:** Misma librería en `@external` y `@forbidden`.
204
+
205
+ ---
206
+
207
+ ## 7. Tags de Plataforma
208
+
209
+ ### @platform — Target de ejecución
210
+
211
+ ```
212
+ @platform(web, mobile, desktop)
213
+ ```
214
+
215
+ **Reglas de compatibilidad:**
216
+ | Plataforma | `@capacitor/*` | `@tauri-apps/*` |
217
+ |---|---|---|
218
+ | `web` | ❌ Prohibido | ❌ Prohibido |
219
+ | `mobile` | ✅ Permitido | ❌ Prohibido |
220
+ | `desktop` | ❌ Prohibido | ✅ Permitido |
221
+
222
+ ---
223
+
224
+ ## 8. Tags de Alcance
225
+
226
+ ### @scope — Impacto del módulo
227
+
228
+ ```
229
+ @scope(module: nombre, affects: [mod1, mod2], breaking: boolean)
230
+ ```
231
+
232
+ | Propiedad | Tipo | Descripción |
233
+ |---|---|---|
234
+ | `module` | string | Módulo al que pertenece |
235
+ | `affects` | string[] | Qué módulos afecta |
236
+ | `breaking` | boolean | Si es cambio rompiente |
237
+
238
+ **Regla:** Si `breaking: true`, el commit debe indicar breaking change (`!`).
239
+
240
+ ---
241
+
242
+ ## 9. Tags de Testing
243
+
244
+ ### @test — Requisitos de testing
245
+
246
+ ```
247
+ @test(@unit, @integration, @mock: [servicio], @coverage: 80)
248
+ ```
249
+
250
+ | Sub-tag | Descripción |
251
+ |---|---|
252
+ | `@unit` | Test unitario requerido |
253
+ | `@integration` | Test de integración requerido |
254
+ | `@mock` | Servicios a mockear |
255
+ | `@coverage` | Porcentaje mínimo de cobertura |
256
+
257
+ **Error si:** `@coverage(120)` — no puede exceder 100.
258
+
259
+ ---
260
+
261
+ ## 10. Tags de Metadata
262
+
263
+ ### @meta — Metadatos del archivo
264
+
265
+ ```
266
+ @meta(@version: "1.0.0", @author: "nombre", @tags: [tag1, tag2])
267
+ ```
268
+
269
+ | Sub-tag | Descripción |
270
+ |---|---|
271
+ | `@version` | Versión del archivo |
272
+ | `@author` | Autor |
273
+ | `@tags` | Tags de búsqueda/clasificación |
274
+ | `@created` | Fecha de creación |
275
+ | `@updated` | Fecha de última modificación |
276
+
277
+ ---
278
+
279
+ ## 11. Dependencias y Validaciones Cruzadas
280
+
281
+ ### Matriz de compatibilidad
282
+
283
+ ```
284
+ @kind(hook)
285
+ → @contract: REQUERIDO
286
+ → @props: PROHIBIDO
287
+ → @limit(lines) default: 80
288
+
289
+ @kind(component)
290
+ → @props: RECOMENDADO
291
+ → @contract: PROHIBIDO
292
+ → @state: RECOMENDADO
293
+ → @limit(lines) default: 120
294
+
295
+ @kind(page)
296
+ → @compose: REQUERIDO (debe componer subcomponentes)
297
+ → @limit(lines) default: 200
298
+
299
+ @kind(service)
300
+ → @contract: REQUERIDO
301
+ → @props: PROHIBIDO
302
+ → @state: PROHIBIDO
303
+ → @limit(lines) default: 150
304
+
305
+ @kind(store)
306
+ → @deps(zustand) o @deps(context): RECOMENDADO
307
+ → @limit(lines) default: 100
308
+
309
+ @kind(type)
310
+ → @limit: NO APLICA
311
+ → @state: PROHIBIDO
312
+ → @docs: RECOMENDADO
313
+
314
+ @platform(mobile) + @deps(@tauri-apps/*): ERROR
315
+ @platform(desktop) + @deps(@capacitor/*): ERROR
316
+ @scope(breaking: true) → commit debe ser breaking change
317
+ ```
318
+
319
+ ---
320
+
321
+ ## 12. Ejemplos Completos
322
+
323
+ ### Hook con autenticación
324
+
325
+ ```typescript
326
+ // @use(kind, contract, limit, deps, platform, scope, meta)
327
+ // @kind(hook)
328
+ // @limit(lines: 75, params: 1)
329
+ // @contract(in: email, password -> out: user, token @error: AuthError)
330
+ // @deps(@external: [supabase], @forbidden: [axios])
331
+ // @platform(web)
332
+ // @scope(module: auth, affects: [login, register, session])
333
+ // @meta(@version: "1.0.0", @tags: [auth, supabase])
334
+ export function useAuth() { ... }
335
+ ```
336
+
337
+ ### Componente UI con variantes
338
+
339
+ ```typescript
340
+ // @use(kind, props, state, limit, pattern)
341
+ // @kind(component)
342
+ // @props({ variant: string, size: string, children: ReactNode, disabled?: boolean })
343
+ // @state(idle, disabled, loading)
344
+ // @limit(lines: 90, functions: 2)
345
+ // @pattern(composition)
346
+ export function Button(props: ButtonProps) { ... }
347
+ ```
348
+
349
+ ### Página con composición
350
+
351
+ ```typescript
352
+ // @use(kind, compose, state, limit, scope)
353
+ // @kind(page)
354
+ // @compose(Header, DataTable, Sidebar)
355
+ // @state(loading, empty, error, success)
356
+ // @limit(lines: 150)
357
+ // @scope(module: dashboard, affects: [products, users])
358
+ export function DashboardPage() { ... }
359
+ ```
@@ -0,0 +1,150 @@
1
+ # Versionado Semántico — openPrompt-Lang
2
+
3
+ > Este documento define cuándo y cómo se incrementa la versión del framework openPrompt-Lang y de los proyectos generados con `init`. Sigue SemVer 2.0.0 estricto.
4
+
5
+ ---
6
+
7
+ ## Formato
8
+
9
+ ```
10
+ MAJOR.MINOR.PATCH[-pre-release]
11
+ ```
12
+
13
+ Ejemplos: `0.1.0`, `0.2.0`, `1.0.0-beta.1`, `1.0.0`
14
+
15
+ ---
16
+
17
+ ## Reglas de incremento
18
+
19
+ ### MAJOR (x.0.0) — Cambios incompatibles
20
+
21
+ Se incrementa cuando hay cambios **incompatibles** en:
22
+
23
+ | Cambio | Ejemplo |
24
+ |---|---|
25
+ | Sintaxis de anotaciones | Renombrar `@kind` a `@type`, cambiar formato de `@contract` |
26
+ | Estructura de `prompt-lang.json` | Eliminar o renombrar campos obligatorios |
27
+ | Comandos CLI | Eliminar un comando, cambiar flags obligatorios |
28
+ | Comportamiento de validación | `strict` pasa de opcional a obligatorio sin flag |
29
+ | Formato de output de `context` | Cambiar estructura del markdown generado |
30
+
31
+ **Detectado por:** `!` en conventional commit (`feat!:`) o `@scope(breaking: true)` en anotaciones.
32
+
33
+ ### MINOR (0.x.0) — Nuevas funcionalidades (compatibles)
34
+
35
+ Se incrementa cuando se **agrega** funcionalidad sin romper nada:
36
+
37
+ | Cambio | Ejemplo |
38
+ |---|---|
39
+ | Nuevo tag de anotación | Agregar `@audit` o `@deprecated` |
40
+ | Nuevo comando CLI | Agregar `component` |
41
+ | Nuevo flag opcional | `--existing`, `--strict`, `--fix` |
42
+ | Nuevo template PROMPTS | Agregar plantillas 11-17 |
43
+ | Nueva sección en configuración | `components.source`, `components.library` |
44
+ | Nuevo archivo de documentación | `CONVENCIONES_DB.md`, `VERSIONING.md` |
45
+
46
+ **Detectado por:** `feat:` en conventional commit.
47
+
48
+ ### PATCH (0.0.x) — Correcciones y mejoras menores
49
+
50
+ Se incrementa cuando se **corrige** o **mejora** sin agregar funcionalidad nueva:
51
+
52
+ | Cambio | Ejemplo |
53
+ |---|---|
54
+ | Bug fix en parser | Error de parsing en caso edge |
55
+ | Corrección de tests | Test que fallaba por fixture incorrecto |
56
+ | Documentación | Corregir error tipográfico, mejorar ejemplo |
57
+ | Refactor interno | Renombrar variable, extraer función sin cambiar API |
58
+ | Actualizar dependencias | `vitest ^3.1.0` → `^4.1.6` |
59
+
60
+ **Detectado por:** `fix:`, `docs:`, `refactor:`, `test:`, `chore:`, `perf:` en conventional commit.
61
+
62
+ ---
63
+
64
+ ## Pre-release (alpha, beta, RC)
65
+
66
+ Se usan cuando la versión no está lista para producción:
67
+
68
+ | Tag | Significado | Cuándo usarlo |
69
+ |---|---|---|
70
+ | `-alpha.N` | Desarrollo temprano | APIs inestables, features incompletas, solo dev |
71
+ | `-beta.N` | Feature-complete | APIs estables, en testing, puede tener bugs |
72
+ | `-rc.N` | Release Candidate | Listo para producción si pasa validación |
73
+
74
+ **Reglas:**
75
+ - `alpha` no tiene restricciones de breaking changes
76
+ - `beta` congela APIs (solo bug fixes)
77
+ - `rc` requiere pipeline de validación completo
78
+
79
+ Ejemplo de progresión:
80
+ ```
81
+ 0.1.0 → 0.2.0-alpha.1 → 0.2.0-beta.1 → 0.2.0-rc.1 → 0.2.0
82
+ ```
83
+
84
+ ---
85
+
86
+ ## ¿Cuándo se bumpa la versión?
87
+
88
+ La versión se actualiza **al hacer release**, no en cada commit. Los commits acumulan cambios y al publicar se determina el bump.
89
+
90
+ ### Flujo
91
+
92
+ ```
93
+ Commit: feat: agregar comando component
94
+ Commit: fix: corregir error en parser
95
+ Commit: docs: actualizar README
96
+ → Al release: bump MINOR (0.3.0) porque hay feat
97
+
98
+ Commit: fix: corregir typo en validación
99
+ Commit: docs: mejorar ejemplos
100
+ → Al release: bump PATCH (0.2.1) porque solo fixes/docs
101
+ ```
102
+
103
+ ### Tabla de decisión
104
+
105
+ | Tipo de commit | ¿Bump? | ¿Cuál? |
106
+ |---|---|---|
107
+ | `feat!:` o breaking | ✅ | MAJOR |
108
+ | `feat:` | ✅ | MINOR |
109
+ | `fix:` | ✅ | PATCH |
110
+ | `docs:` (solo docs) | ❌ | Acumula para PATCH |
111
+ | `refactor:` | ❌ | Acumula para PATCH |
112
+ | `test:` | ❌ | Acumula para PATCH |
113
+ | `chore:` | ❌ | Acumula para PATCH |
114
+ | `perf:` | ❌ | Acumula para PATCH |
115
+ | `style:` | ❌ | Acumula para PATCH |
116
+
117
+ **Excepción:** Si es el primer commit después de un release, y no hay `feat` ni `fix`, se bumpa PATCH igual (para evitar `0.0.0`).
118
+
119
+ ---
120
+
121
+ ## Integración con commit log
122
+
123
+ Cada commit en `docs/COMMITS/` debe indicar si implica bump:
124
+
125
+ ```markdown
126
+ ### Commit: feat(core): agregar comando component
127
+ **Versión:** v0.3.0 ← próxima versión estimada
128
+ **Bump:** MINOR ← MAJOR / MINOR / PATCH / ninguno
129
+ ```
130
+
131
+ El `docs/COMMITS/INDEX.md` muestra la versión actual del proyecto:
132
+
133
+ | Fecha | Versión | Descripción | Bump |
134
+ |---|---|---|---|
135
+ | 2026-05-14 | v0.2.0 | feat: strict, validación stack, convenciones DB | MINOR |
136
+
137
+ ---
138
+
139
+ ## Equivalencia con etiquetas git
140
+
141
+ ```bash
142
+ git tag -a v0.2.0 -m "v0.2.0 — strict por defecto, validación stack, 7 templates"
143
+ git push origin v0.2.0
144
+ ```
145
+
146
+ Si hay pre-release:
147
+ ```bash
148
+ git tag -a v0.3.0-beta.1 -m "v0.3.0-beta.1 — componente library"
149
+ git push origin v0.3.0-beta.1
150
+ ```
@@ -0,0 +1,90 @@
1
+
2
+ ---
3
+
4
+ > [!info] Sobre estos anexos
5
+ > Estas plantillas y tablas están diseñadas para estandarizar el aspecto comercial y legal de tus proyectos. Te ahorrarán horas de redacción y te protegerán de clientes abusivos o alcances no definidos ("Scope Creep").
6
+
7
+ ---
8
+
9
+ ## 💰 Anexo A: Tabla de Precios de Referencia (UF / CLP)
10
+
11
+ > [!abstract] Referencia de Cálculo
12
+ > Valores calculados en base a la Unidad de Fomento (UF) al **25 de Abril de 2026** (Valor ref: **$40.053,72 CLP**). Los valores en pesos son aproximados para facilitar la lectura al cliente.
13
+
14
+ | Servicio / Tarea | Valor en UF | Valor Aprox en CLP | Descripción del Servicio |
15
+ | :--- | :--- | :--- | :--- |
16
+ | **Hora de Consultoría Técnica** | 1.0 - 1.5 UF | $40.000 - $60.000 | Reuniones extra fuera de contrato, asesoría arquitectónica o revisión de código de terceros. |
17
+ | **Soporte de Emergencia** | 2.5 UF / hora | $100.000 / hora | Caídas críticas, intervenciones urgentes fuera de horario laboral (fines de semana, festivos o madrugada). |
18
+ | **Funcionalidad Extra (Micro)** | 3.0 - 5.0 UF | $120.000 - $200.000 | Desarrollo de un nuevo endpoint básico, adición de un reporte simple o una vista extra no contemplada en el MVP. |
19
+ | **Mantención Mensual (SaaS)** | 2.0 - 4.0 UF / mes| $80.000 - $160.000 / mes | Soporte estándar, monitoreo preventivo de servidor (Railway/Netlify) y corrección de bugs menores. |
20
+ | **Upgrade de Infraestructura** | 3.0 UF | $120.000 | Configuración técnica (pago único de Setup) para escalar recursos de servidor y soportar mayor tráfico. |
21
+
22
+ ---
23
+
24
+ ## 📄 Anexo B: Plantilla - Propuesta Inicial de Desarrollo
25
+
26
+ > [!tip] Instrucciones de uso
27
+ > Copia el texto a continuación, rellena los campos entre corchetes `[ ]` y expórtalo como PDF para enviarlo al cliente después de la Fase 1.
28
+
29
+ **DOCUMENTO DE PROPUESTA TECNOLÓGICA Y COMERCIAL**
30
+ **Fecha:** [DD/MM/AAAA]
31
+ **Cliente:** [NOMBRE DEL CLIENTE / EMPRESA]
32
+ **Proyecto:** [NOMBRE DEL SISTEMA - MVP]
33
+ **Desarrollador:** Matías Retamal
34
+
35
+ **1. Entendimiento del Problema:**
36
+ De acuerdo a nuestro levantamiento inicial, el principal desafío actual en su operación es [DESCRIBIR EL DOLOR. Ej: La pérdida de dinero y tiempo debido a la falta de un control de inventario sincronizado con las ventas por WhatsApp].
37
+
38
+ **2. Solución Propuesta (Alcance del MVP):**
39
+ Se desarrollará una aplicación web adaptativa ("Mobile-First") que incluirá *exclusivamente* los siguientes módulos:
40
+ - **Módulo 1:** [Ej: Panel de administración de productos y stock]
41
+ - **Módulo 2:** [Ej: Interfaz de cajero para toma rápida de pedidos]
42
+ - **Módulo 3:** [Ej: Generación de reporte de cierre de caja diario]
43
+ *(Cualquier requerimiento, vista o integración fuera de este listado explícito será cotizado de forma independiente como una Fase 2).*
44
+
45
+ **3. Modelo de Negocio e Inversión:**
46
+ * **Opción Elegida:** [SaaS Mensual / Llave en Mano]
47
+ * **Costo de Desarrollo (Setup):** [X] UF. Pagadero en 3 hitos: 30% al inicio, 40% a la validación del prototipo visual, 30% a la entrega en producción.
48
+ * **Costo Recurrente (Si aplica):** Suscripción mensual de [Y] UF, que incluye alojamiento web, base de datos y soporte técnico básico.
49
+
50
+ **4. Tiempos Estimados:**
51
+ El desarrollo de esta primera versión tomará aproximadamente **[X] SEMANAS** a partir de la firma de este documento, la entrega de los accesos necesarios y el pago del anticipo inicial.
52
+
53
+ **Aceptación Conforme del Cliente:**
54
+ Nombre: ___________________________
55
+ Firma: ___________________________
56
+ Fecha: ___________________________
57
+
58
+ ---
59
+
60
+ ## 🤝 Anexo C: Plantilla - Acta de Entrega Final y Descargos de Responsabilidad
61
+
62
+ > [!warning] Documento Crítico
63
+ > Nunca entregues las llaves de producción ni el código fuente sin que el cliente te firme o apruebe por escrito este documento. Es tu escudo legal.
64
+
65
+ **ACTA DE RECEPCIÓN CONFORME Y CIERRE DE PROYECTO**
66
+ **Fecha:** [DD/MM/AAAA]
67
+ **Proyecto:** [NOMBRE DEL SISTEMA]
68
+ **Versión Entregada:** v1.0.0
69
+
70
+ Por medio del presente documento, **[NOMBRE DEL CLIENTE]** declara haber recibido a entera satisfacción el sistema de software especificado en la Propuesta Inicial, validando en producción que cumple con los requerimientos funcionales, visuales y técnicos acordados durante la Fase 4 de Especificación.
71
+
72
+ **1. Condiciones de Garantía:**
73
+ El desarrollador otorga una garantía técnica de **[X DÍAS/MESES]** a partir de la fecha de este documento. Esta garantía está destinada *exclusivamente* a la corrección de errores lógicos o de código (Bugs) imputables al desarrollo. No incluye modificaciones estéticas, cambios de flujo, ni la adición de nuevas funcionalidades.
74
+
75
+ **2. Descargos de Responsabilidad Legal y Operativa:**
76
+ El desarrollador **NO** asume responsabilidad legal, civil ni financiera en los siguientes escenarios:
77
+ * Pérdida, robo o corrupción de datos causada por mal manejo operativo de los usuarios del cliente (Ej: eliminación accidental de registros, compartir contraseñas, phishing al personal).
78
+ * Caídas del servicio, latencia o pérdida de datos originadas por los proveedores externos de infraestructura (Ej: fallas en servidores de Netlify, Railway, Supabase o caídas en la pasarela de pagos de Transbank/Webpay).
79
+ * Consecuencias comerciales derivadas de la inoperatividad temporal del sistema por causas de fuerza mayor o bloqueos de terceros.
80
+
81
+ **3. Finalización de Servicios y Soporte Continuo:**
82
+ Con la firma de este documento, finaliza la obligación de desarrollo activo del proyecto inicial. A partir de este momento, toda intervención técnica, capacitación extra, recuperación de datos o soporte fuera del periodo de garantía será cotizado bajo las tarifas vigentes por hora o tarea.
83
+
84
+ **Recepción Conforme (Cliente):**
85
+ Nombre: ___________________________
86
+ Firma: ___________________________
87
+
88
+ **Entrega Oficial (Desarrollador):**
89
+ Nombre: Matías Retamal
90
+ Firma: ___________________________
@@ -0,0 +1,84 @@
1
+ ---
2
+ title: Calculadora y Tarifario de Proyectos (Advanced Tables)
3
+ type: tool
4
+ tags:
5
+ - finanzas
6
+ - cotizacion
7
+ - freelance
8
+ - saas
9
+ uf_referencia: 40053.72
10
+ fecha_actualizacion: 2026-04-25
11
+ ---
12
+ # 🧮 Calculadora de Cotizaciones y Tarifario
13
+
14
+ > [!info] Parámetro Base (Actualizar mensualmente)
15
+ > **Valor UF Actual:** $40.053,72 CLP (Referencia: 25 de Abril de 2026)
16
+ > *Para esta tabla usaremos un valor cerrado de UF = 40000 para simplificar los cálculos.*
17
+
18
+ ---
19
+
20
+ ## 1. Tarifario Base por Hora / Rol
21
+ *Antes de cotizar módulos, define cuánto vale tu tiempo según la tarea.*
22
+
23
+ | Tipo de Trabajo | Valor UF / Hora | Valor CLP (Aprox) | Descripción |
24
+ | :--- | :--- | :--- | :--- |
25
+ | Desarrollo Puro (Code) | 0.8 | 32000 | Programación sin interrupciones (Backend/Frontend). |
26
+ | Reunión / Consultoría | 1.2 | 48000 | Levantamiento de requisitos, diseño UI/UX en vivo con cliente. |
27
+ | Soporte de Emergencia | 2.5 | 100000 | Intervenciones fuera de horario (noches, fines de semana). |
28
+
29
+ ---
30
+
31
+ ## 2. Calculadora de Proyecto (Plantilla a duplicar por cliente)
32
+
33
+ > [!tip] Cómo usar esta tabla con "Advanced Tables"
34
+ > 1. Llena las columnas de **Horas Estimadas** y **Tarifa UF/hr**.
35
+ > 2. Abre el menú de comandos de Obsidian (Ctrl/Cmd + P) y busca: `Advanced Tables: Evaluate table formulas`.
36
+ > 3. Las columnas de **Subtotal UF** y **Subtotal CLP** se calcularán automáticamente.
37
+
38
+ ### Nombre del Proyecto: `[Nombre del Cliente]`
39
+
40
+ | Módulo / Ítem del Backlog | Horas Estimadas | Tarifa UF/hr | Subtotal UF | Subtotal CLP |
41
+ | :--------------------------------- | :-------------- | :----------- | :---------- | :----------- |
42
+ | Fase 1 a 3 (Levantamiento y UI) | 10 | 1.2 | 0 | 0 |
43
+ | Setup Inicial (BD, Repositorios) | 4 | 0.8 | 0 | 0 |
44
+ | Módulo Auth (Login, JWT, RLS) | 8 | 0.8 | 0 | 0 |
45
+ | Módulo CRUD Productos | 12 | 0.8 | 0 | 0 |
46
+ | Módulo Carrito / Pedidos | 15 | 0.8 | 0 | 0 |
47
+ | Integración Pasarela (Webpay) | 12 | 0.8 | 0 | 0 |
48
+ | Fase 8 (Capacitación y Entrega) | 4 | 1.2 | 0 | 0 |
49
+ | **SUBTOTAL HORAS** | 0 | 0 | 0 | 0 |
50
+ | **Margen de Riesgo / QA (20%)** | 0 | 0 | 0 | 0 |
51
+ | **TOTAL PROYECTO (LLAVE EN MANO)** | 0 | 0 | 0 | 0 |
52
+ <!-- TBLFM: @2$4..@8$4=($2*$3) :: @2$5..@8$5=($4*40000) :: @9$2=sum(@2$2..@8$2) :: @9$4=sum(@2$4..@8$4) :: @9$5=sum(@2$5..@8$5) :: @10$4=(@9$4*0.2) :: @10$5=(@9$5*0.2) :: @11$4=(@9$4+@10$4) :: @11$5=(@9$5+@10$5) -->
53
+
54
+ > [!warning] *Sobre el Margen de Riesgo (20%)
55
+ > **NUNCA** cobres exactamente las horas que estimaste. En software siempre hay errores, cambios de librería o dependencias que fallan. Agrega siempre un 15% a 20% de "Margen de Riesgo" al total. Si el proyecto sale perfecto, ese 20% es tu bono de eficiencia. Si hay problemas, ese 20% cubre tus horas extra para no trabajar gratis.
56
+
57
+ ---
58
+
59
+ ## 3. Calculadora de Modelo SaaS (Suscripción Mensual)
60
+
61
+ Si en lugar de vender el proyecto de una vez (Llave en mano), vas a cobrar una mensualidad, utiliza este esquema para calcular cuánto cobrar:
62
+
63
+ > [!example] Fórmula SaaS: Setup Fee + (Hosting + Soporte + Licencia)
64
+
65
+ **A. Cobro Inicial de Instalación (Setup Fee):**
66
+ - Normalmente se cobra entre un **30% y un 50%** del Total del Proyecto (Llave en mano) para cubrir tus horas base de desarrollo.
67
+ - *Ejemplo:* Si el proyecto total valía 69 UF, cobras **25 UF de Setup** ($1.000.000 CLP) al iniciar.
68
+
69
+ **B. Cálculo de Mensualidad (Costos Fijos + Tu Ganancia):**
70
+
71
+ | Ítem de Costo Mensual | Costo Real CLP | Precio Cobrado CLP | Ganancia |
72
+ | :--- | :--- | :--- | :--- |
73
+ | Hosting Frontend (Netlify) | 0 | 15000 | 0 |
74
+ | Hosting Backend (Railway) | 5000 | 20000 | 0 |
75
+ | Base de Datos (Supabase) | 0 | 35000 | 0 |
76
+ | Mantenimiento y Soporte Base | 64000 | 80000 | 0 |
77
+ | Uso de Licencia del Software | 0 | 50000 | 0 |
78
+ | **TOTALES** | 0 | 0 | 0 |
79
+ <!-- TBLFM: @2$4..@6$4=($3-$2) :: @7$2=sum(@2$2..@6$2) :: @7$3=sum(@2$3..@6$3) :: @7$4=sum(@2$4..@6$4) -->
80
+
81
+ > [!success] Resumen para el Cliente (Modelo SaaS)
82
+ > **Cotización Final a Presentar:**
83
+ > - Pago único de instalación y adaptación: **25 UF** ($1.000.000 CLP)
84
+ > - Suscripción Mensual (Hosting, Soporte, Mejoras): **5 UF / mes** ($200.000 CLP)
@@ -0,0 +1 @@
1
+ goal: Transformar PWA Inmobiliaria en arquitectura React enterprise-grade constraints: - NO romper funcionalidad actual (mocks/offline OK) - Respeta Supabase fat-DB philosophy [docs/supabase-architecture.md] - shadcn/ui + Tailwind conventions 100% - Vitest coverage >80% artifacts: - /docs/REFACTOR-PLAN.md (diffs + métricas) - src/hooks/useSupabaseTable.ts<T> (genérico CRUD) - src/components/ui/DataTable.tsx (TanStack genérico) - src/features/properties/List.tsx (120LOC vs 502) - package.json (deps + scripts) - vitest.config.ts + tests/ - /coverage/lcov-report/index.html phases: 1. audit: run: npx eslint . --ext ts,tsx analyze: bundle size (vite-bundle-visualizer), reusability % write: /docs/REFACTOR-PLAN.md 2. hooks: create: useSupabaseTable<T>(table: string) features: query/mutate/subscribe/realtime test: vitest src/hooks/useSupabaseTable.test.ts 3. ui-primitives: add: npm i @tanstack/react-table clsx create: DataTable<T>, TableSkeleton export: src/components/ui/index.ts (barrel) 4. refactor-features: target: src/features/properties/Publicaciones.tsx split: PropertyList → DataTable<Property> + FilterTabs metrics: LOC -75%, reusability +30% 5. tests-coverage: setup: vitest.config.ts + @testing-library/react run: npm test --coverage goal: 82%+ coverage 6. verify: run: npm run dev test: Browser: Dashboard loads, offline banner, CRUD mocks bundle: npx vite-bundle-visualizer > /docs/bundle-pre-post.png success_criteria: - Reusability: 85% (DataTable usado 3+ features) - Tests: 82% coverage - Bundle: <1.2MB gzipped - No regressions: Manual QA checklist [docs/AUDITORIA.md]