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.
- package/LICENSE +21 -0
- package/README.md +663 -0
- package/bin/cli.js +110 -0
- package/bin/lint.js +50 -0
- package/docs/COMMANDS.md +229 -0
- package/docs/COMMITS/INDEX.md +11 -0
- package/docs/COMMITS/v0.1.0-existing.md +31 -0
- package/docs/COMMITS/v0.1.0-inicial.md +50 -0
- package/docs/COMMITS/v0.1.0-readme.md +24 -0
- package/docs/COMMITS/v0.2.0-strict-db-templates.md +50 -0
- package/docs/COMMITS/v0.3.0-parser-fixes-vscode.md +67 -0
- package/docs/COMMITS/v0.3.0-versioning-component.md +44 -0
- package/docs/DEPENDENCIES.md +45 -0
- package/docs/FRAMEWORK.md +1741 -0
- package/docs/SYNTAX.md +359 -0
- package/docs/VERSIONING.md +150 -0
- package/docs/referencia-metodologia/Anexos Finales Documentos de Respaldo y Estandarizaci/303/263n.md" +90 -0
- package/docs/referencia-metodologia/Cotizaciones.md +84 -0
- package/docs/referencia-metodologia/Example.md +1 -0
- package/docs/referencia-metodologia/ExtractorInformacion.py +78 -0
- package/docs/referencia-metodologia/Fase - 1 .- Desarrollo de la Metodolog/303/255a.md" +67 -0
- package/docs/referencia-metodologia/Fase - 2 .- Levantamiento de requisitos generales y traduccion a la IA.md +64 -0
- package/docs/referencia-metodologia/Fase - 3 .- Prototipado visual con IA (Figma Maker o equivalentes).md +64 -0
- package/docs/referencia-metodologia/Fase - 4 .- Especificacion de requisitos e iteracion con el cliente.md +58 -0
- package/docs/referencia-metodologia/Fase - 5 .- Estructuracion y maquetado de funciones (Scaffolding).md +118 -0
- package/docs/referencia-metodologia/Fase - 6 .- Estructuracion del backlog y division de tareas.md +48 -0
- package/docs/referencia-metodologia/Fase - 7 .- Desarrollo activo, pruebas y control de versiones.md +98 -0
- package/docs/referencia-metodologia/Fase - 8 .- Entrega, capacitaci/303/263n y mantenimiento.md" +55 -0
- package/docs/referencia-metodologia/Figma prompt template.md +130 -0
- package/docs/referencia-metodologia/Framework de Desarrollo Asistido por IA.md +1741 -0
- package/docs/referencia-metodologia/Indice General.md +83 -0
- package/docs/referencia-metodologia/Prompt refactorizar o creacion desde cero.md +50 -0
- package/docs/referencia-metodologia/docs/CONVENCIONES_DB.md +410 -0
- package/docs/referencia-metodologia/docs/CONVENCIONES_DOCUMENTACION.md +209 -0
- package/docs/referencia-metodologia/docs/PROMPTS/INDEX.md +73 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/01-hook-supabase.md +79 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/02-componente-ui.md +82 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/03-pagina-feature.md +70 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/04-comando-tauri.md +56 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/05-store-zustand.md +74 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/06-servicio-supabase.md +74 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/07-formulario-validacion.md +63 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/08-hook-capacitor.md +65 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/09-refactor-division.md +51 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/10-scaffolding-inicial.md +79 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/11-supabase-crud-service.md +114 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/12-supabase-hook-usetable.md +143 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/13-tauri-command-rust.md +84 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/14-tauri-wrapper-typescript.md +92 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/15-documentar-tabla-db.md +50 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/16-diagrama-arquitectura.md +60 -0
- package/docs/referencia-metodologia/docs/PROMPTS/PLANTILLAS/17-documentar-api-rpc.md +56 -0
- package/docs/referencia-metodologia/docs/PROMPTS/STACK/ionic-capacitor.md +52 -0
- package/docs/referencia-metodologia/docs/PROMPTS/STACK/react-web-puro.md +46 -0
- package/docs/referencia-metodologia/docs/PROMPTS/STACK/tauri-desktop.md +53 -0
- package/package.json +56 -0
- package/schemas/prompt-lang.json +98 -0
- package/src/commands/component.js +326 -0
- package/src/commands/context.js +206 -0
- package/src/commands/figma.js +63 -0
- package/src/commands/init.js +373 -0
- package/src/commands/suggest.js +31 -0
- package/src/commands/validate.js +183 -0
- package/src/generators/figma-prompt.js +56 -0
- package/src/utils/ai.js +143 -0
- package/src/utils/annotations.js +510 -0
- package/src/utils/config.js +60 -0
- package/vscode-extension/README.md +31 -0
- package/vscode-extension/language-configuration.json +7 -0
- package/vscode-extension/package.json +62 -0
- package/vscode-extension/snippets/promptlang.json +105 -0
- package/vscode-extension/syntaxes/annotations.tmGrammar.json +39 -0
- 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
|
+
}
|