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
@@ -0,0 +1,92 @@
1
+ ---
2
+ title: Wrapper TypeScript para comandos Tauri
3
+ tags: [tauri, typescript, wrapper, frontend]
4
+ usado_en: []
5
+ fecha_creacion: 2026-05-14
6
+ ultima_modificacion: 2026-05-14
7
+ ---
8
+
9
+ ## Cuándo usar
10
+
11
+ Cuando necesites crear el wrapper TypeScript que llama a un comando Tauri desde el frontend, con tipado estricto y manejo de errores.
12
+
13
+ ## Prompt
14
+
15
+ ```markdown
16
+ ## Contexto
17
+ Stack: Tauri v2 + React + TypeScript.
18
+ Convenciones: wrappers en src/services/tauri/, un archivo por comando, máximo 80 líneas.
19
+ Comando Rust ya creado en src-tauri/src/commands/{module}.rs con #[tauri::command].
20
+
21
+ ## Objetivo
22
+ Crear el wrapper TypeScript `{serviceName}` para el comando Tauri `{command_name}` con tipado estricto de entrada/salida, errores tipados y documentación inline.
23
+
24
+ ## Especificaciones técnicas
25
+ - Archivo: `src/services/tauri/{module}.ts`
26
+ - Usar `import { invoke } from '@tauri-apps/api/core'` (Tauri v2)
27
+ - Exportar una función por comando
28
+ - Cada función tipa inputs y output con interfaces
29
+ - Capturar errores del comando y convertirlos a un tipo manejable
30
+ - Máximo 60 líneas por archivo
31
+
32
+ ## Reglas estrictas
33
+ - Input y output tipados con interfaces dedicadas (no `Record<string, unknown>`)
34
+ - Errores del comando se capturan como `string` y se tipan con un discriminated union
35
+ - Documentar cada error posible con JSDoc
36
+ - Inferir tipos desde el comando Rust (los tipos deben coincidir 1:1)
37
+ - Funciones async siempre, el IPC de Tauri es asíncrono
38
+
39
+ ## Anti-patrones
40
+ - NO usar `any` en tipos de entrada o salida
41
+ - NO mezclar múltiples comandos en el mismo archivo
42
+ - NO hacer lógica de UI en el wrapper
43
+ - NO cachear resultados del comando en el wrapper (hacerlo en el hook)
44
+
45
+ ## Ejemplo correcto
46
+ ```typescript
47
+ import { invoke } from '@tauri-apps/api/core'
48
+
49
+ export interface ReadFileInput {
50
+ path: string
51
+ }
52
+
53
+ export interface ReadFileOutput {
54
+ content: string
55
+ }
56
+
57
+ export type ReadFileError =
58
+ | { type: 'not_found'; message: string }
59
+ | { type: 'access_denied'; message: string }
60
+ | { type: 'read_error'; message: string }
61
+
62
+ /**
63
+ * Lee el contenido de un archivo del sistema.
64
+ * @param input.path - Ruta relativa al directorio de trabajo
65
+ * @returns El contenido del archivo
66
+ * @throws ReadFileError con tipo específico
67
+ */
68
+ export async function readFileContent(input: ReadFileInput): Promise<ReadFileOutput> {
69
+ try {
70
+ const content = await invoke<string>('read_file_content', { path: input.path })
71
+ return { content }
72
+ } catch (err) {
73
+ const message = String(err)
74
+ if (message.includes('no encontrado')) throw { type: 'not_found', message } as ReadFileError
75
+ if (message.includes('denegado')) throw { type: 'access_denied', message } as ReadFileError
76
+ throw { type: 'read_error', message } as ReadFileError
77
+ }
78
+ }
79
+ ```
80
+
81
+ ## Ejemplo incorrecto
82
+ ```typescript
83
+ // ❌ Sin tipos, any, sin manejo de errores
84
+ export async function readFile(path: string) {
85
+ const result = await invoke('read_file_content', { path })
86
+ return result
87
+ }
88
+ ```
89
+
90
+ ## Formato de salida esperado
91
+ Archivo completo `src/services/tauri/{module}.ts` listo para importar desde hooks.
92
+ ```
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: Documentar tabla de base de datos
3
+ tags: [docs, database, supabase, postgresql, documentacion]
4
+ usado_en: []
5
+ fecha_creacion: 2026-05-14
6
+ ultima_modificacion: 2026-05-14
7
+ ---
8
+
9
+ ## Cuándo usar
10
+
11
+ Cuando necesites documentar una tabla de la base de datos con todas sus columnas, tipos, relaciones, RLS policies e índices. Sigue el estándar de docs/CONVENCIONES_DOCUMENTACION.md.
12
+
13
+ ## Prompt
14
+
15
+ ```markdown
16
+ ## Contexto
17
+ Stack: Supabase + PostgreSQL.
18
+ Convenciones de documentación: docs/CONVENCIONES_DOCUMENTACION.md (tabla markdown estándar + RLS + índices).
19
+ Base de datos: Supabase project {project_ref}.
20
+
21
+ ## Objetivo
22
+ Generar la documentación completa de la tabla `{table_name}` siguiendo el formato estándar definido en CONVENCIONES_DOCUMENTACION.md.
23
+
24
+ ## Especificaciones técnicas
25
+ La documentación debe incluir:
26
+ 1. Descripción de la tabla (propósito en el negocio)
27
+ 2. Tabla de columnas con:
28
+ - Nombre, tipo PostgreSQL exacto, nullable, default, FK referencias, descripción
29
+ 3. Índices existentes (nombre, columnas, tipo, condición si partial)
30
+ 4. RLS policies por operación (SELECT, INSERT, UPDATE, DELETE)
31
+ 5. Relaciones con otras tablas (FKs y referencias inversas)
32
+ 6. Notas adicionales (triggers, constraints especiales, convenciones)
33
+
34
+ Basarse en el schema real de la tabla: {DESCRIBE table_name o mostrar CREATE TABLE}
35
+
36
+ ## Reglas estrictas
37
+ - Tipos PostgreSQL exactos (TIMESTAMPTZ, no "fecha"; NUMERIC(10,2), no "número")
38
+ - RLS documentada por cada operación con la policy exacta
39
+ - FKs listadas con tabla de origen → tabla destino
40
+ - Índices incluir tipo (B-tree, GIN, BRIN) y condición si partial
41
+ - Si hay generated columns o triggers, documentarlos en notas
42
+
43
+ ## Anti-patrones
44
+ - NO abreviar tipos (escribir `text` no "string" o "varchar")
45
+ - NO omitir RLS (toda tabla con datos de usuario DEBE tener RLS)
46
+ - NO documentar columnas que no existen en el schema real
47
+
48
+ ## Formato de salida esperado
49
+ Documentación en markdown lista para agregar a `docs/DB/TABLES.md`. Usar el formato exacto de CONVENCIONES_DOCUMENTACION.md sección 1.
50
+ ```
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: Diagrama Mermaid de arquitectura y flujo de datos
3
+ tags: [docs, diagrama, mermaid, arquitectura, documentacion]
4
+ usado_en: []
5
+ fecha_creacion: 2026-05-14
6
+ ultima_modificacion: 2026-05-14
7
+ ---
8
+
9
+ ## Cuándo usar
10
+
11
+ Cuando necesites generar diagramas de arquitectura visuales para documentar un feature, página o flujo completo. Usar Mermaid para que sea renderizable en GitHub y Markdown.
12
+
13
+ ## Prompt
14
+
15
+ ```markdown
16
+ ## Contexto
17
+ Stack: React 18 + TypeScript + Vite + Supabase + Tailwind.
18
+ Convenciones de documentación: docs/CONVENCIONES_DOCUMENTACION.md (diagramas Mermaid tree y sequence).
19
+ Framework: openPrompt-Lang con anotaciones @kind, @compose, @deps, @state.
20
+
21
+ ## Objetivo
22
+ Generar diagramas Mermaid para documentar la arquitectura del feature `{feature_name}`.
23
+
24
+ Se requieren 2 diagramas:
25
+
26
+ ### 1. Árbol de componentes (graph TD)
27
+ Mostrar la jerarquía de componentes desde la página hasta los componentes UI primitivos.
28
+ Formato: `graph TD` con flechas `-->`.
29
+ Cada nodo debe tener el nombre del archivo/componente.
30
+
31
+ ### 2. Flujo de datos (sequenceDiagram)
32
+ Mostrar la interacción entre:
33
+ - Usuario (actor)
34
+ - Componente página
35
+ - Hooks personalizados
36
+ - Servicios
37
+ - Supabase / API externa
38
+ - Base de datos PostgreSQL
39
+
40
+ Formato: `sequenceDiagram` con participantes y flechas `->>`, `-->>`.
41
+
42
+ Basarse en la siguiente estructura del feature:
43
+ {describir componentes, hooks, servicios y flujo}
44
+ Anotaciones disponibles: {listar @kind y @compose del feature}
45
+
46
+ ## Reglas estrictas
47
+ - Usar sintaxis Mermaid válida (verificar que graph TD y sequenceDiagram sean correctos)
48
+ - En graph TD: nombres cortos, sin espacios, usar --> para relaciones
49
+ - En sequenceDiagram: actores con `actor U as Usuario`, participantes con mayúscula
50
+ - Incluir notas en el diagrama con `Note over X: texto` para eventos clave
51
+ - Si el feature usa soft delete o RLS, agregar nota en el sequence
52
+
53
+ ## Anti-patrones
54
+ - NO mezclar graph TD con sequenceDiagram en el mismo bloque
55
+ - NO usar caracteres especiales en nombres de nodos (espacios, puntos, paréntesis)
56
+ - NO agregar flechas de retorno implícitas (la DB no "vuelve" sola)
57
+
58
+ ## Formato de salida esperado
59
+ Dos bloques de código markdown con ```mermaid, listos para copiar a la documentación del feature.
60
+ ```
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: Documentar función RPC de Supabase
3
+ tags: [docs, supabase, rpc, api, postgresql, documentacion]
4
+ usado_en: []
5
+ fecha_creacion: 2026-05-14
6
+ ultima_modificacion: 2026-05-14
7
+ ---
8
+
9
+ ## Cuándo usar
10
+
11
+ Cuando necesites documentar una función RPC (Remote Procedure Call) de Supabase con su contrato de entrada/salida, errores posibles y ejemplo de uso desde el frontend.
12
+
13
+ ## Prompt
14
+
15
+ ```markdown
16
+ ## Contexto
17
+ Stack: Supabase + PostgreSQL + React + TypeScript.
18
+ Convenciones de documentación: docs/CONVENCIONES_DOCUMENTACION.md sección 3 (contrato RPC).
19
+ Base de datos: Supabase project {project_ref}.
20
+ Función RPC: {rpc_function_name}.
21
+
22
+ ## Objetivo
23
+ Generar la documentación completa de la función RPC `{rpc_function_name}` con contrato de entrada/salida, errores PostgreSQL posibles, seguridad y ejemplos de uso frontend.
24
+
25
+ ## Especificaciones técnicas
26
+ La documentación debe incluir:
27
+ 1. Nombre y descripción de la función
28
+ 2. Contrato:
29
+ - Parámetros de entrada: nombre, tipo PostgreSQL, descripción
30
+ - Tipo de retorno (especificar si es scalar, JSONB, TABLE)
31
+ - Errores posibles: código PostgreSQL + causa + mensaje amigable
32
+ 3. Seguridad:
33
+ - SECURITY DEFINER o SECURITY INVOKER
34
+ - RLS aplicado (si accede a tablas)
35
+ - Restricciones de ejecución (quién puede llamarla)
36
+ 4. Ejemplo de llamado desde frontend TypeScript
37
+ 5. Ejemplo de llamado SQL directo (para pruebas en consola)
38
+
39
+ Basarse en la definición real de la función:
40
+ {SHOW CREATE FUNCTION o describir la función}
41
+
42
+ ## Reglas estrictas
43
+ - Tipos PostgreSQL exactos (no abreviar)
44
+ - Códigos de error PostgreSQL documentados con su significado
45
+ - Ejemplo frontend con tipos inferidos (sin any)
46
+ - Si usa SECURITY DEFINER, indicar con qué permisos ejecuta
47
+ - Indicar explícitamente si la función es transaction-safe
48
+
49
+ ## Anti-patrones
50
+ - NO documentar parámetros que no existen en la función real
51
+ - NO omitir la sección de seguridad (especialmente con SECURITY DEFINER)
52
+ - NO asumir que el frontend puede llamar cualquier RPC (verificar RLS)
53
+
54
+ ## Formato de salida esperado
55
+ Documentación en markdown lista para agregar a `docs/DB/RPCS.md`. Incluir el contrato, errores, seguridad y ejemplos de uso.
56
+ ```
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: Contexto para proyecto mobile con Ionic + Capacitor
3
+ tags: [stack, ionic, capacitor, mobile, react]
4
+ usado_en: []
5
+ fecha_creacion: 2026-05-13
6
+ ultima_modificacion: 2026-05-13
7
+ ---
8
+
9
+ ## Cuándo usar
10
+
11
+ Cuando el proyecto requiera **empaquetado mobile** (Android/iOS) con Ionic Framework + Capacitor. Incluye tanto desarrollo mobile como web (responsive).
12
+
13
+ ## Prompt
14
+
15
+ ```markdown
16
+ ## Stack del proyecto
17
+ - React 18 + TypeScript + Vite
18
+ - Ionic Framework 8 (componentes mobile-first: IonPage, IonContent, IonButton, etc.)
19
+ - Capacitor 6 (acceso nativo: cámara, GPS, notificaciones, almacenamiento)
20
+ - Tailwind CSS 3.4 (utility-first, 0 CSS personalizado)
21
+ - Supabase (backend, autenticación)
22
+ - Zustand (estado global)
23
+ - React Router v6 (ruteo)
24
+
25
+ ## Arquitectura
26
+ - Mobile-first: diseñar primero para pantallas pequeñas, escalar a desktop
27
+ - Ionic UI para componentes mobile (listas, tabs, modales, inputs)
28
+ - Tailwind para estilos personalizados y espaciado
29
+ - Plugins nativos de Capacitor encapsulados en hooks useCapacitor*
30
+
31
+ ## Convenciones (de docs/Framework de Desarrollo Asistido por IA.md)
32
+ - Vistas mobile con componentes Ionic (`<IonPage>`, `<IonContent>`)
33
+ - Hooks de Capacitor en src/hooks/ con prefijo useCapacitor*
34
+ - NO mezclar lógica de Capacitor con Tauri
35
+ - Un componente por archivo, máximo 120 líneas
36
+ - Un hook por archivo, máximo 80 líneas
37
+ - 100% Tailwind utility classes (para lo que no cubre Ionic)
38
+ - Barrel exports en cada carpeta
39
+
40
+ ## NO aplica (este proyecto no usa)
41
+ - Tauri (desktop nativo)
42
+ - Componentes desktop-sidebar (usar tabs o menú hamburguesa)
43
+ ```
44
+
45
+ ## Plugins Capacitor comunes
46
+ | Funcionalidad | Plugin | Hook recomendado |
47
+ |---|---|---|
48
+ | Cámara | @capacitor/camera | useCapacitorCamera |
49
+ | GPS | @capacitor/geolocation | useCapacitorLocation |
50
+ | Notificaciones | @capacitor/local-notifications | useCapacitorNotifications |
51
+ | Almacenamiento | @capacitor/storage | useCapacitorStorage |
52
+ | Archivos | @capacitor/filesystem | useCapacitorFileSystem |
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: Contexto para proyecto web React + Supabase
3
+ tags: [stack, web, supabase, react, tailwind]
4
+ usado_en: []
5
+ fecha_creacion: 2026-05-13
6
+ ultima_modificacion: 2026-05-13
7
+ ---
8
+
9
+ ## Cuándo usar
10
+
11
+ Cuando inicies un proyecto **web puro** (sin Ionic, Capacitor ni Tauri). Este prompt establece el contexto completo para que la IA entienda el stack y las convenciones sin necesidad de aclararlo cada vez.
12
+
13
+ ## Prompt
14
+
15
+ ```markdown
16
+ ## Stack del proyecto
17
+ - React 18 + TypeScript + Vite
18
+ - Tailwind CSS 3.4 (utility-first, 0 CSS personalizado)
19
+ - Supabase (base de datos, autenticación, storage)
20
+ - react-hook-form + zod (formularios y validación)
21
+ - Zustand (estado global)
22
+ - React Router v6 (ruteo)
23
+ - Vitest + Testing Library (tests)
24
+
25
+ ## Arquitectura
26
+ - Fat-DB philosophy: lógica de negocio en la base de datos (RLS, funciones, triggers)
27
+ - Frontend delgado: componentes solo consumen y presentan
28
+ - Sin backend intermedio: el frontend se conecta directo a Supabase
29
+
30
+ ## Convenciones (de docs/Framework de Desarrollo Asistido por IA.md)
31
+ - Un componente por archivo, máximo 120 líneas
32
+ - Un hook por archivo, máximo 80 líneas
33
+ - Servicios en src/services/supabase/
34
+ - Features en src/features/{domain}/ (con components/, hooks/, services/, types/)
35
+ - 100% Tailwind utility classes
36
+ - Barrel exports (index.ts) en cada carpeta
37
+ - Custom hooks para toda lógica reutilizable
38
+
39
+ ## NO aplica (este proyecto no usa)
40
+ - Ionic / Capacitor
41
+ - Tauri
42
+ - Componentes nativos de dispositivo
43
+ ```
44
+
45
+ ## Cuándo NO usar
46
+ Si el proyecto requiere acceso nativo (cámara, GPS, notificaciones push) o empaquetado desktop, usa el stack correspondiente (ionic-capacitor.md o tauri-desktop.md).
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: Contexto para proyecto desktop con Tauri
3
+ tags: [stack, tauri, desktop, rust, react]
4
+ usado_en: []
5
+ fecha_creacion: 2026-05-13
6
+ ultima_modificacion: 2026-05-13
7
+ ---
8
+
9
+ ## Cuándo usar
10
+
11
+ Cuando el proyecto requiera **empaquetado desktop** (Windows/Mac/Linux) con Tauri v2. Ideal para apps de escritorio con acceso al sistema de archivos, procesos locales o rendimiento nativo.
12
+
13
+ ## Prompt
14
+
15
+ ```markdown
16
+ ## Stack del proyecto
17
+ - React 18 + TypeScript + Vite
18
+ - Tauri v2 (Rust + backend nativo)
19
+ - Tailwind CSS 3.4 (utility-first, 0 CSS personalizado)
20
+ - Supabase (backend opcional)
21
+ - Zustand (estado global)
22
+ - React Router v6 (ruteo)
23
+
24
+ ## Arquitectura
25
+ - Frontend React (webview) para UI
26
+ - Backend Rust para operaciones nativas (archivos, procesos, hardware)
27
+ - Comunicación via IPC: frontend llama comandos Tauri con invoke()
28
+ - Comandos Rust en src-tauri/src/commands/, un archivo por comando
29
+ - Llamadas desde frontend en src/services/tauri/
30
+
31
+ ## Convenciones (de docs/Framework de Desarrollo Asistido por IA.md)
32
+ - Comandos Tauri con tipado estricto en Rust (String, no &str para parámetros)
33
+ - Wrapper tipado en frontend para cada comando
34
+ - Validar inputs en Rust antes de ejecutar
35
+ - NO mezclar lógica de Tauri con Capacitor
36
+ - Un componente por archivo, máximo 120 líneas
37
+ - Un hook por archivo, máximo 80 líneas
38
+ - 100% Tailwind utility classes
39
+ - Barrel exports en cada carpeta
40
+
41
+ ## NO aplica (este proyecto no usa)
42
+ - Ionic / Capacitor (acceso nativo mobile)
43
+ - Componentes mobile (no hay IonPage, IonContent, etc.)
44
+ - Plugins de dispositivo (cámara, GPS)
45
+ ```
46
+
47
+ ## Comandos Tauri comunes
48
+ | Funcionalidad | Comando Rust | Wrapper frontend |
49
+ |---|---|---|
50
+ | Leer archivo | read_file_content | readFileContent(path) |
51
+ | Escribir archivo | write_file_content | writeFileContent(path, content) |
52
+ | Diálogo abrir archivo | dialog.open | openFileDialog() |
53
+ | Ejecutar comando | Command.execute | executeCommand(cmd) |
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "openprompt-lang",
3
+ "version": "0.3.0",
4
+ "description": "PromptLang CLI — Framework de anotaciones para desarrollo asistido por IA",
5
+ "type": "module",
6
+ "main": "./bin/cli.js",
7
+ "bin": {
8
+ "openPrompt-Lang": "./bin/cli.js"
9
+ },
10
+ "files": [
11
+ "bin/",
12
+ "src/",
13
+ "schemas/",
14
+ "docs/",
15
+ "vscode-extension/",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "scripts": {
20
+ "start": "node bin/cli.js",
21
+ "test": "vitest run",
22
+ "test:watch": "vitest",
23
+ "prepublishOnly": "npm test",
24
+ "postinstall": "node -e \"console.log('\\n📦 openPrompt-Lang instalado. Ejecuta: npx openPrompt-Lang init\\n')\""
25
+ },
26
+ "keywords": [
27
+ "prompt-lang",
28
+ "openprompt-lang",
29
+ "ai",
30
+ "development",
31
+ "framework",
32
+ "annotations",
33
+ "react",
34
+ "typescript"
35
+ ],
36
+ "license": "MIT",
37
+ "engines": {
38
+ "node": ">=18"
39
+ },
40
+ "dependencies": {
41
+ "chalk": "^5.3.0",
42
+ "commander": "^12.0.0",
43
+ "inquirer": "^9.3.0"
44
+ },
45
+ "devDependencies": {
46
+ "vitest": "^4.1.6"
47
+ },
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "https://github.com/DeadJustLive/OpenPrompt-Lang.git"
51
+ },
52
+ "bugs": {
53
+ "url": "https://github.com/DeadJustLive/OpenPrompt-Lang/issues"
54
+ },
55
+ "homepage": "https://github.com/DeadJustLive/OpenPrompt-Lang#readme"
56
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "openPrompt-Lang Config",
4
+ "description": "Configuración del proyecto para el framework openPrompt-Lang",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "description": "Nombre del proyecto"
10
+ },
11
+ "version": {
12
+ "type": "string",
13
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
14
+ "description": "Versión del proyecto (semver)"
15
+ },
16
+ "stack": {
17
+ "type": "object",
18
+ "properties": {
19
+ "base": {
20
+ "type": "array",
21
+ "items": {
22
+ "type": "string",
23
+ "enum": ["react", "typescript", "vite", "tailwind", "vue", "angular"]
24
+ },
25
+ "description": "Stack base del proyecto"
26
+ },
27
+ "extensions": {
28
+ "type": "array",
29
+ "items": {
30
+ "type": "string",
31
+ "enum": ["supabase", "ionic", "capacitor", "tauri", "firebase", "trpc", "next"]
32
+ },
33
+ "description": "Extensiones opcionales del stack"
34
+ }
35
+ },
36
+ "required": ["base"]
37
+ },
38
+ "profile": {
39
+ "type": "string",
40
+ "enum": ["junior", "mid", "senior"],
41
+ "description": "Perfil del desarrollador"
42
+ },
43
+ "pipeline": {
44
+ "type": "object",
45
+ "properties": {
46
+ "pre-commit": {
47
+ "type": "array",
48
+ "items": {
49
+ "type": "string",
50
+ "enum": ["lint", "typecheck", "doctor", "test", "build"]
51
+ },
52
+ "description": "Pasos del pipeline pre-commit"
53
+ },
54
+ "scripts": {
55
+ "type": "object",
56
+ "properties": {
57
+ "lint": { "type": "string" },
58
+ "typecheck": { "type": "string" },
59
+ "doctor": { "type": "string" },
60
+ "test": { "type": "string" },
61
+ "build": { "type": "string" }
62
+ }
63
+ }
64
+ }
65
+ },
66
+ "annotations": {
67
+ "type": "object",
68
+ "properties": {
69
+ "enabled": { "type": "boolean", "default": true },
70
+ "strict": { "type": "boolean", "default": false }
71
+ }
72
+ },
73
+ "docs": {
74
+ "type": "object",
75
+ "properties": {
76
+ "commits": { "type": "boolean", "default": true },
77
+ "logs": { "type": "boolean", "default": true },
78
+ "backlog": { "type": "boolean", "default": true }
79
+ }
80
+ },
81
+ "extractor": {
82
+ "type": "object",
83
+ "properties": {
84
+ "ignore": {
85
+ "type": "array",
86
+ "items": { "type": "string" },
87
+ "description": "Patrones a ignorar en la extracción de contexto"
88
+ },
89
+ "output": {
90
+ "type": "string",
91
+ "default": "contexto.md",
92
+ "description": "Archivo de salida del extractor"
93
+ }
94
+ }
95
+ }
96
+ },
97
+ "required": ["name", "stack"]
98
+ }