openprompt-lang 0.3.0 → 0.4.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 (90) hide show
  1. package/README.md +483 -32
  2. package/bin/cli.js +232 -41
  3. package/bin/create.js +135 -0
  4. package/bin/lint.js +20 -21
  5. package/docs/COMMANDS.md +200 -127
  6. package/docs/COMMITS/INDEX.md +1 -0
  7. package/docs/PROMPT_AI_CONTEXT.md +99 -0
  8. package/docs/langs/dotnet.md +36 -0
  9. package/docs/langs/java-spring.md +45 -0
  10. package/docs/langs/python-fastapi.md +35 -0
  11. package/docs/langs/unity.md +30 -0
  12. package/docs/langs/vue-nuxt.md +36 -0
  13. package/package.json +31 -3
  14. package/scaffolds/.cursorrules +6 -0
  15. package/scaffolds/AGENTS.md +27 -0
  16. package/scaffolds/Dockerfile +11 -0
  17. package/scaffolds/capacitor.config.ts +17 -0
  18. package/scaffolds/netlify.toml +8 -0
  19. package/scaffolds/prompt-lang.json +15 -0
  20. package/scaffolds/railway.json +12 -0
  21. package/scaffolds/tailwind.config.js +8 -0
  22. package/scaffolds/tauri.conf.json +26 -0
  23. package/schemas/language-module.json +116 -0
  24. package/schemas/prompt-lang.json +38 -3
  25. package/schemas/structures.json +145 -0
  26. package/src/ai/prompt-builder.js +184 -0
  27. package/src/ai/providers.js +247 -0
  28. package/src/annotations/registry.js +39 -0
  29. package/src/annotations/tags.json +24 -0
  30. package/src/commands/ai-gen.js +161 -0
  31. package/src/commands/component.js +242 -212
  32. package/src/commands/context.js +184 -109
  33. package/src/commands/extract.js +242 -0
  34. package/src/commands/figma.js +15 -15
  35. package/src/commands/init.js +197 -93
  36. package/src/commands/integrate.js +406 -0
  37. package/src/commands/lang.js +148 -0
  38. package/src/commands/qa-gen.js +139 -0
  39. package/src/commands/scaffold.js +127 -0
  40. package/src/commands/suggest.js +24 -14
  41. package/src/commands/teach.js +110 -0
  42. package/src/commands/validate.js +143 -83
  43. package/src/commands/wizard.js +456 -0
  44. package/src/generators/figma-prompt.js +20 -12
  45. package/src/language-service/plugin.cjs +94 -0
  46. package/src/language-service/plugin.d.ts +6 -0
  47. package/src/mcp-server.js +605 -0
  48. package/src/templates/langs/react/INDEX.json +262 -0
  49. package/src/templates/langs/react/MODULE.json +166 -0
  50. package/src/templates/langs/react/templates/hooks/useAuth.template.ts +134 -0
  51. package/src/templates/langs/react/templates/hooks/useDebounce.template.ts +45 -0
  52. package/src/templates/langs/react/templates/hooks/useForm.template.ts +146 -0
  53. package/src/templates/langs/react/templates/hooks/usePagination.template.ts +108 -0
  54. package/src/templates/langs/react/templates/services/apiService.template.ts +123 -0
  55. package/src/templates/langs/react/templates/ui/Button.template.tsx +87 -0
  56. package/src/templates/langs/react/templates/ui/Card.template.tsx +85 -0
  57. package/src/templates/langs/react/templates/ui/DataTable.template.tsx +163 -0
  58. package/src/templates/langs/react/templates/ui/Input.template.tsx +96 -0
  59. package/src/templates/langs/react/templates/ui/Modal.template.tsx +133 -0
  60. package/src/templates/langs/react/templates/ui/Select.template.tsx +99 -0
  61. package/src/templates/langs/vue/INDEX.json +246 -0
  62. package/src/templates/langs/vue/MODULE.json +105 -0
  63. package/src/templates/langs/vue/templates/composables/useAuth.template.ts +106 -0
  64. package/src/templates/langs/vue/templates/composables/useDebounce.template.ts +47 -0
  65. package/src/templates/langs/vue/templates/composables/useFetch.template.ts +54 -0
  66. package/src/templates/langs/vue/templates/composables/useForm.template.ts +127 -0
  67. package/src/templates/langs/vue/templates/composables/usePagination.template.ts +98 -0
  68. package/src/templates/langs/vue/templates/services/apiService.template.ts +116 -0
  69. package/src/templates/langs/vue/templates/ui/Button.template.vue +79 -0
  70. package/src/templates/langs/vue/templates/ui/Card.template.vue +73 -0
  71. package/src/templates/langs/vue/templates/ui/DataTable.template.vue +115 -0
  72. package/src/templates/langs/vue/templates/ui/Input.template.vue +70 -0
  73. package/src/templates/langs/vue/templates/ui/Modal.template.vue +112 -0
  74. package/src/templates/langs/vue/templates/ui/Select.template.vue +77 -0
  75. package/src/templates/scripts/log-actividad.sh +32 -0
  76. package/src/templates/scripts/log-commit.sh +35 -0
  77. package/src/templates/scripts/log-error.sh +45 -0
  78. package/src/templates/scripts/validate.sh +23 -0
  79. package/src/ts-transformer/index.cjs +86 -0
  80. package/src/utils/ai.js +35 -53
  81. package/src/utils/annotations.js +260 -214
  82. package/src/utils/config.js +61 -13
  83. package/src/utils/error-learner.js +203 -0
  84. package/src/utils/file-utils.js +119 -0
  85. package/src/utils/language-loader.js +167 -0
  86. package/src/utils/template-utils.js +45 -0
  87. package/src/vite-plugin/index.js +54 -0
  88. package/vscode-extension/package.json +23 -2
  89. package/vscode-extension/snippets/promptlang.json +1 -3
  90. package/vscode-extension/syntaxes/annotations-code.tmGrammar.json +15 -0
package/docs/COMMANDS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # openPrompt-Lang — Comandos CLI
2
2
 
3
- > **Versión:** 0.1.0
3
+ > **Versión:** 0.4.0
4
4
 
5
5
  ---
6
6
 
@@ -18,160 +18,247 @@ npx openprompt-lang <comando>
18
18
 
19
19
  ### `init` — Inicializar proyecto
20
20
 
21
- Crea la estructura base del proyecto con configuración openPrompt-Lang, incluyendo un `package.json` con scripts descriptivos.
21
+ Crea la estructura base del proyecto con configuración openPrompt-Lang.
22
22
 
23
23
  ```bash
24
- npx openPrompt-Lang init [--name nombre] [--describe "descripción"]
24
+ npx openPrompt-Lang init [--name nombre] [--describe "descripción"] [--existing]
25
25
  ```
26
26
 
27
27
  **Opciones:**
28
28
  - `--name <nombre>` — Nombre del proyecto (default: mi-proyecto)
29
29
  - `--describe <texto>` — Descripción para sugerencia de stack vía IA
30
+ - `--existing` — Configurar proyecto existente (solo prompt-lang.json + AGENTS.md)
31
+
32
+ ---
33
+
34
+ ### `context` — Extraer contexto para IA
35
+
36
+ Genera un archivo markdown con el código y anotaciones del proyecto.
30
37
 
31
- **Ejemplo interactivo:**
32
38
  ```bash
33
- npx openPrompt-Lang init
34
- # ? Project name: mi-app
35
- # ? Use AI to suggest stack? Yes
36
- # → Crea: package.json (scripts descriptivos), prompt-lang.json, AGENTS.md, docs/, scripts/, estructura src/
39
+ npx openPrompt-Lang context [--output contexto.md] [--scope auth] [--no-ai]
37
40
  ```
38
41
 
39
- **Scripts descriptivos generados:**
42
+ **Opciones:**
43
+ - `--output <archivo>` — Archivo de salida (default: contexto.md)
44
+ - `--scope <módulo>` — Filtrar por módulo (@scope)
45
+ - `--no-ai` — No incluir anotaciones PromptLang en el output
40
46
 
41
- | Script | Comando real | Propósito |
42
- |---|---|---|
43
- | `dev:start` | `vite` | Iniciar servidor de desarrollo |
44
- | `dev:preview` | `vite preview` | Vista previa del build |
45
- | `build:prod` | `vite build` | Build para producción |
46
- | `build:analyze` | `vite build --analyze` | Build con análisis de bundle |
47
- | `lint:check` | `eslint src --ext .ts,.tsx` | Verificar lint |
48
- | `lint:fix` | `eslint src --ext .ts,.tsx --fix` | Auto-corregir lint |
49
- | `type:check` | `tsc --noEmit` | Verificar tipos TypeScript |
50
- | `quality:doctor` | `npx react-doctor check ./src` | Auditoría React |
51
- | `test:unit` | `vitest run` | Ejecutar tests unitarios |
52
- | `test:watch` | `vitest` | Tests en modo watch |
53
- | `test:coverage` | `vitest run --coverage` | Tests con cobertura |
54
- | `validate:all` | lint + typecheck + doctor + test | Pipeline completo
47
+ ---
55
48
 
56
- ### `context` — Extraer contexto para IA
49
+ ### `validate` — Validar proyecto
57
50
 
58
- Genera un archivo markdown con todo el código del proyecto para dar contexto a la IA.
51
+ Ejecuta el pipeline de validación y verifica anotaciones PromptLang.
59
52
 
60
53
  ```bash
61
- npx openPrompt-Lang context [--output contexto.md] [--scope auth]
54
+ npx openPrompt-Lang validate [--fix]
62
55
  ```
63
56
 
64
57
  **Opciones:**
65
- - `--output <archivo>` Archivo de salida (default: contexto.md)
66
- - `--scope <módulo>` — Filtrar por módulo (@scope)
67
- - `--no-ai` — No incluir anotaciones PromptLang
58
+ - `--fix`Auto-corregir estructura del proyecto (crea src/, docs/, prompt-lang.json, AGENTS.md si faltan)
59
+
60
+ ---
68
61
 
69
62
  ### `figma` — Generar prompt para Figma
70
63
 
71
- Genera un prompt listo para copiar-pegar en herramientas de diseño Figma.
64
+ Genera un prompt listo para copiar-pegar en Figma.
72
65
 
73
66
  ```bash
74
67
  npx openPrompt-Lang figma
75
- # ? Tipo: Dashboard SaaS
76
- # ? Pantallas: Login, Dashboard, Products
77
- # ? Mobile-first: Yes
78
- # → docs/PROMPTS/figma-prompt.md
79
68
  ```
80
69
 
81
- ### `validate` — Validar proyecto
70
+ ---
82
71
 
83
- Ejecuta el pipeline de validación y verifica anotaciones PromptLang.
72
+ ### `suggest` Sugerir stack y estructura
73
+
74
+ Analiza una descripción y sugiere stack, módulos y prioridades vía IA.
84
75
 
85
76
  ```bash
86
- npx openPrompt-Lang validate [--fix]
77
+ npx openPrompt-Lang suggest "App de inventario con acceso mobile y dashboard"
78
+ ```
79
+
80
+ ---
81
+
82
+ ### `wizard` — Asistente interactivo
83
+
84
+ Asistente paso a paso para configurar el proyecto openPrompt-Lang, detectar stack, elegir módulos y configurar templates.
85
+
86
+ ```bash
87
+ npx openPrompt-Lang wizard
88
+ ```
89
+
90
+ ---
91
+
92
+ ### `teach` — Enseñanza desde template
93
+
94
+ Muestra lección estructurada, buenas prácticas y código desde un template con @teachMe.
95
+
96
+ ```bash
97
+ npx openPrompt-Lang teach <templateId> [--lang react] [--code] [--force]
87
98
  ```
88
99
 
89
100
  **Opciones:**
90
- - `--fix`Auto-corregir errores cuando sea posible
101
+ - `--lang <lang>` Lenguaje del template (default: react)
102
+ - `--code` — Mostrar código completo del template
103
+ - `--force` — Mostrar template aunque no tenga @teachMe
91
104
 
92
- ### `suggest` — Sugerir stack y estructura
105
+ ---
106
+
107
+ ### `ai-gen` — Generar componentes vía IA
93
108
 
94
- Analiza una descripción y sugiere stack, módulos y prioridades.
109
+ Genera componentes desde descripciones en lenguaje natural usando OpenAI/Anthropic/Ollama.
95
110
 
96
111
  ```bash
97
- npx openPrompt-Lang suggest "App de inventario con acceso mobile y dashboard"
112
+ npx openPrompt-Lang ai-gen --description "un botón con variante danger y loading state"
113
+ ```
114
+
115
+ **Opciones:**
116
+ - `--description <texto>` — Descripción de lo que generar
117
+ - `--name <nombre>` — Nombre del componente (auto-sugerido si se omite)
118
+ - `--lang <lang>` — Módulo de lenguaje (default: react)
119
+ - `--profile <profile>` — senior | mid | junior (default: mid)
120
+ - `--provider <provider>` — openai | anthropic | ollama | mock
121
+ - `--output <dir>` — Directorio de salida (default: src/components)
122
+ - `--force` — Sobrescribir archivos existentes
123
+ - `--validate` — Ejecutar validación de anotaciones después de generar
124
+ - `--temperature <num>` — Temperatura (default: 0.3)
125
+ - `--max-tokens <num>` — Max tokens (default: 4096)
126
+
127
+ ### `ai-providers` — Listar proveedores IA
128
+
129
+ ```bash
130
+ npx openPrompt-Lang ai-providers
131
+ ```
132
+
133
+ ---
134
+
135
+ ### `extract` — Extraer templates
136
+
137
+ Analiza el proyecto y extrae componentes reutilizables como templates en el módulo de lenguaje.
138
+
139
+ ```bash
140
+ npx openPrompt-Lang extract [sourceDir] [--lang react] [--min-reuse 2] [--dry-run]
141
+ ```
142
+
143
+ **Opciones:**
144
+ - `sourceDir` — Directorio a analizar (default: src)
145
+ - `--lang <lang>` — Módulo de lenguaje destino
146
+ - `--min-reuse <n>` — Mínimo de imports para calificar (default: 2)
147
+ - `--dry-run` — Solo analizar, no escribir archivos
148
+
149
+ ### `analyze` — Analizar proyecto
150
+
151
+ ```bash
152
+ npx openPrompt-Lang analyze [sourceDir]
98
153
  ```
99
154
 
100
- ### `component` Gestionar biblioteca de componentes
155
+ Muestra estructura, dependencias y salud del código.
156
+
157
+ ---
158
+
159
+ ### `integrate` — Integrar con editores
101
160
 
102
- Gestiona componentes reutilizables desde una biblioteca externa.
161
+ Configura Opencode, Cursor y VS Code para el proyecto.
103
162
 
104
163
  ```bash
105
- # Inicializar una biblioteca de componentes
106
- npx openPrompt-Lang component init --library ./diseno-componentes
164
+ npx openPrompt-Lang integrate [--all] [--lang react] [--no-ask]
165
+ ```
107
166
 
108
- # Listar componentes disponibles (proyecto + biblioteca)
109
- npx openPrompt-Lang component list
167
+ **Opciones:**
168
+ - `--all` — Configurar todas las integraciones sin preguntar
169
+ - `--lang <lang>` — Lenguaje (auto-detectado desde prompt-lang.json)
170
+ - `--no-ask` — Saltar prompts interactivos
110
171
 
111
- # Agregar un componente de la biblioteca al proyecto
112
- npx openPrompt-Lang component add ConfirmModal
172
+ Genera:
173
+ - `.opencode/opencode.json` + `.opencode/agent/openPrompt.md` + `.opencode/skills/openPrompt/SKILL.md`
174
+ - `.cursor/config.json` + `.cursorrules`
175
+ - `.vscode/settings.json` + `.vscode/extensions.json`
113
176
 
114
- # Ver el manifiesto de la biblioteca
115
- npx openPrompt-Lang component manifest
177
+ ---
116
178
 
117
- # Usar --library si no está configurado en prompt-lang.json
118
- npx openPrompt-Lang component list --library ./diseno-componentes
179
+ ### `qa-gen` Generar tests desde errores aprendidos
180
+
181
+ Genera tests Vitest desde anotaciones @learn-error.
182
+
183
+ ```bash
184
+ npx openPrompt-Lang qa-gen [--lang react] [--source src] [--output tests/] [--dry-run]
119
185
  ```
120
186
 
121
- **Estructura de la biblioteca:**
187
+ **Opciones:**
188
+ - `--lang <lang>` — Módulo de lenguaje
189
+ - `--source <dir>` — Directorio a escanear por @learn-error
190
+ - `--output <dir>` — Directorio de salida (default: src/__tests__)
191
+ - `--template <id>` — Generar tests solo para un template específico
192
+ - `--dry-run` — Previsualizar sin escribir archivos
193
+ - `--no-scan` — Saltar escaneo de nuevas anotaciones @learn-error
194
+
195
+ ### `qa-learn` — Aprender de errores
122
196
 
197
+ Parsea @learn-error de un archivo y lo persiste al módulo de lenguaje.
198
+
199
+ ```bash
200
+ npx openPrompt-Lang qa-learn --file src/mi-archivo.ts [--lang react]
123
201
  ```
124
- diseno-componentes/
125
- ├── componentes.json ← Manifiesto con nombre, versión, lista de componentes
126
- ├── ui/
127
- │ ├── Button.tsx ← Botón con variantes (primary, danger, ghost)
128
- │ ├── ConfirmModal.tsx ← Modal centrado para acciones destructivas
129
- │ ├── Input.tsx ← Input con label y error
130
- │ └── index.ts ← Barrel export
131
- └── layouts/ ← Layouts reutilizables
202
+
203
+ ---
204
+
205
+ ### `lang` Gestión de módulos de lenguaje
206
+
207
+ ```bash
208
+ npx openPrompt-Lang lang list # Listar lenguajes
209
+ npx openPrompt-Lang lang index react [--category components] # Índice de templates
210
+ npx openPrompt-Lang lang search "button" [--lang react] # Buscar templates
211
+ npx openPrompt-Lang lang errors [react] [--template button-primary] # Errores aprendidos
132
212
  ```
133
213
 
134
- **Configuración en prompt-lang.json:**
135
- ```json
136
- {
137
- "components": {
138
- "source": "src/components/ui",
139
- "library": "./diseno-componentes"
140
- }
141
- }
214
+ ---
215
+
216
+ ### `scaffold` — Scaffolding de proyectos
217
+
218
+ ```bash
219
+ npx openPrompt-Lang scaffold folders react [--name mi-app] [--force] # Crear estructura
220
+ npx openPrompt-Lang scaffold list # Frameworks disponibles
142
221
  ```
143
222
 
144
223
  ---
145
224
 
146
- ## Configuración (prompt-lang.json)
225
+ ### `component` — Biblioteca de componentes
147
226
 
148
- ```json
149
- {
150
- "name": "mi-app",
151
- "version": "0.1.0",
152
- "stack": {
153
- "base": ["react", "typescript", "vite", "tailwind"],
154
- "extensions": ["supabase"]
155
- },
156
- "profile": "senior",
157
- "pipeline": {
158
- "pre-commit": ["lint", "typecheck", "doctor", "test"],
159
- "scripts": {
160
- "lint:check": "eslint src --ext .ts,.tsx",
161
- "type:check": "tsc --noEmit",
162
- "quality:doctor": "npx react-doctor check ./src",
163
- "test:unit": "vitest run"
164
- }
165
- },
166
- "annotations": { "enabled": true, "strict": false },
167
- "docs": { "commits": true, "logs": true, "backlog": true },
168
- "extractor": {
169
- "ignore": [".env", "*.local", "dist"],
170
- "output": "contexto.md"
171
- }
172
- }
227
+ ```bash
228
+ npx openPrompt-Lang component init [--library ./diseno-componentes] [--name ...] # Inicializar biblioteca
229
+ npx openPrompt-Lang component list [--library ./diseno-componentes] # Listar componentes
230
+ npx openPrompt-Lang component add ConfirmModal [--library ./diseno-componentes] # Agregar componente
231
+ npx openPrompt-Lang component manifest [--library ./diseno-componentes] # Mostrar manifiesto
173
232
  ```
174
233
 
234
+ Agregar componente con opciones:
235
+ ```bash
236
+ npx openPrompt-Lang component add Button --template --lang react --variants primary,danger --output MiBoton --force
237
+ ```
238
+
239
+ ---
240
+
241
+ ### `mcp` — Servidor MCP
242
+
243
+ Inicia el servidor MCP (Model Context Protocol) para integración con Opencode.
244
+
245
+ ```bash
246
+ npx openPrompt-Lang mcp
247
+ ```
248
+
249
+ Lee JSON-RPC de stdin y escribe respuestas en stdout. Expone 9 herramientas:
250
+ `validate`, `lint_file`, `parse_code`, `context`, `search_templates`, `teach_template`, `generate_tests`, `analyze_project`, `scaffold_project`.
251
+
252
+ ---
253
+
254
+ ### `lint` — Linting de anotaciones (por archivo)
255
+
256
+ ```bash
257
+ npx openPrompt-Lang lint src/hooks/useAuth.ts
258
+ ```
259
+
260
+ Muestra anotaciones encontradas, errores y warnings. Internamente usa `lintFile()` del parser de anotaciones.
261
+
175
262
  ---
176
263
 
177
264
  ## Pipeline de Validación
@@ -181,18 +268,13 @@ npx openPrompt-Lang validate
181
268
  # → 1. Verifica estructura del proyecto
182
269
  # → 2. Valida prompt-lang.json y AGENTS.md
183
270
  # → 3. Analiza anotaciones PromptLang en archivos
184
- # → 4. Ejecuta pipeline configurado (lint:check → type:check → quality:doctor → test:unit)
185
- # → 5. Reporta resumen
271
+ # → 4. Reporta resumen de errores/warnings
186
272
  ```
187
273
 
188
- ---
189
-
190
- ## Linting de Anotaciones (por archivo)
191
-
274
+ Con `--fix`:
192
275
  ```bash
193
- npx openPrompt-Lang lint src/hooks/useAuth.ts
194
- # → Muestra anotaciones encontradas
195
- # → Reporta errores y warnings
276
+ npx openPrompt-Lang validate --fix
277
+ # → Además: crea src/, docs/, prompt-lang.json, AGENTS.md si faltan
196
278
  ```
197
279
 
198
280
  ---
@@ -200,30 +282,21 @@ npx openPrompt-Lang lint src/hooks/useAuth.ts
200
282
  ## Variables de Entorno
201
283
 
202
284
  | Variable | Propósito |
203
- |---|---|---|
204
- | `OPENAI_API_KEY` | API key de OpenAI para sugerencias IA |
205
- | `OPENPROMPT_API_KEY` | API key alternativa para openPrompt-Lang |
285
+ |---|---|
286
+ | `OPENAI_API_KEY` | API key de OpenAI para sugerencias IA / ai-gen |
287
+ | `ANTHROPIC_API_KEY` | API key de Anthropic para ai-gen |
288
+ | `OPENPROMPT_API_KEY` | API key alternativa |
206
289
 
207
290
  ---
208
291
 
209
292
  ## VS Code Extension
210
293
 
211
- El paquete incluye una extensión para VS Code en `vscode-extension/`:
212
-
213
- - **Syntax highlighting**: todos los tags PromptLang (`@kind`, `@props`, `@contract`, etc.) se resaltan en comentarios de TypeScript/JavaScript
214
- - **Snippets**: prefijo `@kind-` para insertar estructuras completas:
215
- - `@kind-hook` → hook con `@contract`
216
- - `@kind-component` → componente con `@props`
217
- - `@kind-service` → servicio con `@contract` + `@platform`
218
- - `@kind-page` → página con `@compose`
219
- - `@kind-store` → store Zustand
220
- - `@use-header` → declaración `@use()`
221
- - `@props-ts` → props con sintaxis tipo TypeScript
222
- - **Instalación**:
223
- ```bash
224
- # Desde el proyecto
225
- code --install-extension vscode-extension/
226
-
227
- # O empaquetar como .vsix
228
- cd vscode-extension && npx @vscode/vsce package && code --install-extension *.vsix
229
- ```
294
+ El paquete incluye una extensión VS Code en `vscode-extension/`:
295
+
296
+ - **Syntax highlighting**: todos los tags PromptLang se resaltan
297
+ - **Snippets**: `@kind-hook`, `@kind-component`, `@kind-service`, `@kind-page`, `@kind-store`, `@use-header`, `@props-ts`
298
+
299
+ **Instalación:**
300
+ ```bash
301
+ code --install-extension ./node_modules/openprompt-lang/vscode-extension/
302
+ ```
@@ -9,3 +9,4 @@
9
9
  | 2026-05-14 | v0.3.0 | feat: versionado SemVer, sistema de componentes, preparar npm publish |
10
10
  | 2026-05-15 | v0.3.0 | fix: eliminar dependencia glob no usada |
11
11
  | 2026-05-15 | v0.3.0 | fix: parser paréntesis anidados, @props TS-like, @state(error) condicional, VS Code extension |
12
+ | 2026-05-15 | v0.4.0 | feat: 16 tests nuevos (ai-gen, extract, component), 12 templates Vue, ESLint+Prettier, bugfix analyzeImports |
@@ -0,0 +1,99 @@
1
+ # Prompt para dar contexto de openPrompt-Lang a cualquier IA
2
+
3
+ Copia y pega este prompt al empezar una conversación con **Google Gemini**, **Claude**, **ChatGPT**, o cualquier asistente de IA.
4
+
5
+ ---
6
+
7
+ ## Prompt base
8
+
9
+ ```
10
+ Eres un desarrollador senior especializado en React + TypeScript.
11
+ Vas a trabajar en un proyecto que usa **openPrompt-Lang** — un framework de anotaciones como código para desarrollo asistido por IA.
12
+
13
+ ## Reglas obligatorias
14
+
15
+ 1. TODO archivo nuevo debe empezar con `// @use()` declarando los tags que usa
16
+ 2. Usa `@kind` para definir el tipo de elemento (component, hook, service, page, store, util)
17
+ 3. Respeta los límites de líneas por archivo:
18
+ - hook: max 80 líneas
19
+ - component: max 120 líneas
20
+ - page: max 200 líneas
21
+ - service: max 150 líneas
22
+ - util: max 100 líneas
23
+ 4. Cada componente debe manejar los estados: loading, empty, error, success
24
+ 5. 100% Tailwind utility classes (no CSS personalizado)
25
+ 6. Named exports, no default exports
26
+ 7. No usar `any` — usa `unknown` + narrowing
27
+
28
+ ## Anotaciones disponibles
29
+
30
+ | Tag | Propósito | Ejemplo |
31
+ |-----|-----------|---------|
32
+ | @use | Importar tags | `// @use(kind, contract, limit, deps)` |
33
+ | @kind | Tipo de elemento | `// @kind(component)` |
34
+ | @contract | Contrato de función | `// @contract(in: X -> out: Y @error: Z)` |
35
+ | @props | Props de componente | `// @props({ name: string, age?: number })` |
36
+ | @limit | Límites del archivo | `// @limit(lines: 120, functions: 3)` |
37
+ | @state | Estados visuales | `// @state(loading, empty, error, success)` |
38
+ | @compose | Dependencias internas | `// @compose(Header, Sidebar)` |
39
+ | @deps | Dependencias externas | `// @deps(@external: [react, zustand])` |
40
+ | @platform | Plataforma target | `// @platform(web)` |
41
+ | @scope | Módulo de impacto | `// @scope(module: auth, affects: [login])` |
42
+ | @pattern | Patrón de diseño | `// @pattern(composition)` |
43
+ | @test | Requisitos de test | `// @test(@coverage: 80)` |
44
+ | @meta | Metadatos | `// @meta(@version: "1.0.0")` |
45
+ | @learn-error | Documentar bug | `// @learn-error id=X input='...' expected=N actual=N fix='...'` |
46
+
47
+ ## Validación cruzada
48
+
49
+ - `@kind(hook)` → requiere `@contract`, prohíbe `@props`, max 80 líneas
50
+ - `@kind(component)` → requiere `@props` (recomendado), prohíbe `@contract`, max 120 líneas
51
+ - `@kind(page)` → requiere `@compose`, max 200 líneas
52
+ - `@kind(service)` → requiere `@contract`, prohíbe `@props` y `@state`, max 150 líneas
53
+ - `@kind(store)` → sugiere `@deps`, max 100 líneas
54
+
55
+ ## Ejemplo
56
+
57
+ ```typescript
58
+ // @use(kind, props, state, limit, pattern)
59
+ // @kind(component)
60
+ // @props({ variant: string, size: string, children: ReactNode, disabled?: boolean })
61
+ // @state(idle, disabled, loading)
62
+ // @limit(lines: 90, functions: 2)
63
+ // @pattern(composition)
64
+ export function Button(props: ButtonProps) { ... }
65
+ ```
66
+
67
+ ## Contexto del proyecto
68
+
69
+ [PEGA AQUI EL CONTENIDO DE contexto.md GENERADO CON: npx openprompt-lang context]
70
+ ```
71
+
72
+ ---
73
+
74
+ ## Cómo usarlo
75
+
76
+ 1. **Extrae el contexto del proyecto:**
77
+ ```bash
78
+ npx openprompt-lang context --output contexto.md
79
+ ```
80
+
81
+ 2. **Copia el prompt base arriba y pégalo en la conversación con la IA.**
82
+
83
+ 3. **Reemplaza `[PEGA AQUI EL CONTENIDO DE contexto.md]` con el contenido real de `contexto.md`.**
84
+
85
+ 4. **Alternativa rápida** (si el proyecto es pequeño):
86
+ ```bash
87
+ # Pega directamente estos archivos a la IA:
88
+ cat contexto.md AGENTS.md docs/SYNTAX.md | pbcopy # macOS
89
+ cat contexto.md AGENTS.md docs/SYNTAX.md | clip # Windows
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Tips para mejores resultados
95
+
96
+ - **Sé específico**: di "genera un hook useAuth con @kind(hook) y @contract" en vez de solo "genera un hook"
97
+ - **Muestra ejemplos**: si la IA genera código sin anotaciones, muestra un ejemplo concreto
98
+ - **Valida siempre**: `npx openprompt-lang validate` detecta errores que la IA pueda pasar por alto
99
+ - **Documenta errores**: cuando la IA cometa un error, agrega `// @learn-error` para que futuras sesiones no lo repitan
@@ -0,0 +1,36 @@
1
+ # PromptLang para C# / .NET
2
+
3
+ ## Tags Adaptados
4
+
5
+ | Tag PromptLang | Equivalente C# | Descripción |
6
+ |---|---|---|
7
+ | `@kind(controller)` | `[ApiController]` | Controlador Web API |
8
+ | `@kind(service)` | `class Service` | Lógica de negocio |
9
+ | `@kind(repository)` | `DbContext` / `Repository` | Acceso a datos EF Core |
10
+ | `@kind(entity)` | `class Entity` | Modelo de datos |
11
+ | `@kind(dto)` | `record` | DTO |
12
+ | `@kind(middleware)` | `Middleware` | Middleware pipeline |
13
+
14
+ ## Contratos
15
+
16
+ ```csharp
17
+ // @kind(controller)
18
+ // @contract(in: CreateUserRequest -> out: UserResponse @error: ValidationProblemDetails)
19
+ // @platform(dotnet)
20
+ [ApiController]
21
+ [Route("api/[controller]")]
22
+ public class UsersController : ControllerBase { ... }
23
+
24
+ // @kind(service)
25
+ // @contract(in: UserDto -> out: User @error: DbUpdateException)
26
+ // @limit(lines: 120)
27
+ public class UserService { ... }
28
+ ```
29
+
30
+ ## Scaffolding Generado
31
+
32
+ - `UsersController.cs` (endpoints REST)
33
+ - `UserService.cs` (lógica con DI)
34
+ - `UserRepository.cs` (EF Core queries)
35
+ - `User.cs` (entidad con data annotations)
36
+ - `UserDto.cs` (record inmutable)
@@ -0,0 +1,45 @@
1
+ # PromptLang para Java Spring Boot
2
+
3
+ ## Tags Adaptados
4
+
5
+ | Tag PromptLang | Equivalente Java | Descripción |
6
+ |---|---|---|
7
+ | `@kind(service)` | `@Service` | Servicio con lógica de negocio |
8
+ | `@kind(controller)` | `@RestController` | Controlador REST |
9
+ | `@kind(repository)` | `@Repository` | Acceso a datos JPA |
10
+ | `@kind(entity)` | `@Entity` | Entidad JPA |
11
+ | `@kind(dto)` | `record` / `class` | DTO de entrada/salida |
12
+ | `@kind(config)` | `@Configuration` | Configuración |
13
+ | `@kind(exception)` | `@ControllerAdvice` | Manejador de excepciones |
14
+
15
+ ## Contratos
16
+
17
+ ```java
18
+ // @kind(controller)
19
+ // @contract(in: CreateUserDTO -> out: UserDTO @error: ValidationException)
20
+ // @platform(spring-boot)
21
+ @RestController
22
+ @RequestMapping("/api/users")
23
+ public class UserController { ... }
24
+
25
+ // @kind(service)
26
+ // @contract(in: UserDTO -> out: User @error: DataIntegrityException)
27
+ // @limit(lines: 100)
28
+ @Service
29
+ public class UserService { ... }
30
+
31
+ // @kind(repository)
32
+ // @contract(in: Long -> out: Optional<User>)
33
+ @Repository
34
+ public interface UserRepository extends JpaRepository<User, Long> { ... }
35
+ ```
36
+
37
+ ## Scaffolding Generado
38
+
39
+ `npx scaffold service --platform=spring-boot --contract="DTO->Entity"` genera:
40
+ - `UserController.java` (REST endpoints)
41
+ - `UserService.java` (lógica con @Transactional)
42
+ - `UserRepository.java` (JPA CRUD)
43
+ - `User.java` (entidad con validaciones @NotNull, @Email)
44
+ - `UserDTO.java` (record con @Valid)
45
+ - `GlobalExceptionHandler.java` (manejo errores)
@@ -0,0 +1,35 @@
1
+ # PromptLang para Python FastAPI
2
+
3
+ ## Tags Adaptados
4
+
5
+ | Tag PromptLang | Equivalente Python | Descripción |
6
+ |---|---|---|
7
+ | `@kind(router)` | `@router` | Router de FastAPI |
8
+ | `@kind(service)` | `class Service` | Lógica de negocio |
9
+ | `@kind(model)` | `BaseModel` (Pydantic) | Modelo de datos |
10
+ | `@kind(schema)` | `BaseModel` | Esquema request/response |
11
+ | `@kind(deps)` | `Depends()` | Dependencias FastAPI |
12
+
13
+ ## Contratos
14
+
15
+ ```python
16
+ # @kind(router)
17
+ # @contract(in: CreateUserSchema -> out: UserSchema @error: HTTPException)
18
+ # @platform(fastapi)
19
+ @router.post("/users", response_model=UserSchema)
20
+ async def create_user(data: CreateUserSchema): ...
21
+
22
+ # @kind(service)
23
+ # @contract(in: UserCreate -> out: User @error: IntegrityError)
24
+ # @limit(lines: 80)
25
+ class UserService:
26
+ async def create(self, data: UserCreate) -> User: ...
27
+ ```
28
+
29
+ ## Scaffolding Generado
30
+
31
+ - `routes/users.py` (endpoints)
32
+ - `services/user_service.py` (lógica)
33
+ - `models/user.py` (SQLAlchemy model)
34
+ - `schemas/user.py` (Pydantic schemas)
35
+ - `core/database.py` (conexión)
@@ -0,0 +1,30 @@
1
+ # PromptLang para Unity (C#)
2
+
3
+ ## Tags Adaptados
4
+
5
+ | Tag PromptLang | Equivalente Unity | Descripción |
6
+ |---|---|---|
7
+ | `@kind(monobehaviour)` | `MonoBehaviour` | Componente Unity |
8
+ | `@kind(scriptable)` | `ScriptableObject` | Configuración/Data |
9
+ | `@kind(manager)` | `GameManager` | Singleton manager |
10
+ | `@kind(ui)` | `UI Behaviour` | Componente UI Unity |
11
+ | `@kind(state)` | `StateMachine` | Máquina de estados |
12
+
13
+ ## Contratos
14
+
15
+ ```csharp
16
+ // @kind(monobehaviour)
17
+ // @contract(in: float -> out: Vector3)
18
+ // @limit(lines: 150)
19
+ // @platform(unity)
20
+ public class PlayerMovement : MonoBehaviour { ... }
21
+
22
+ // @kind(manager)
23
+ // @contract(in: GameEvent -> out: Unit @error: GameException)
24
+ public class GameManager : MonoBehaviour { ... }
25
+ ```
26
+
27
+ ## Notas
28
+ - `@limit` default para MonoBehaviour: 150 líneas
29
+ - `@state` se mapea a animator parameters
30
+ - Usar `@deps(@external: [UniTask, DOTween])` para dependencias comunes