openprompt-lang 0.3.0 → 0.5.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/README.md +553 -32
- package/bin/cli.js +343 -74
- package/bin/create.js +135 -0
- package/bin/lint.js +21 -22
- package/docs/AI-MANUAL.md +578 -0
- package/docs/COMMANDS.md +200 -127
- package/docs/COMMITS/INDEX.md +1 -0
- package/docs/PROMPT_AI_CONTEXT.md +99 -0
- package/docs/ROADMAP-DESARROLLO.md +274 -0
- package/docs/langs/dotnet.md +36 -0
- package/docs/langs/java-spring.md +45 -0
- package/docs/langs/python-fastapi.md +35 -0
- package/docs/langs/unity.md +30 -0
- package/docs/langs/vue-nuxt.md +36 -0
- package/package.json +33 -4
- package/scaffolds/.cursorrules +6 -0
- package/scaffolds/AGENTS.md +27 -0
- package/scaffolds/Dockerfile +11 -0
- package/scaffolds/capacitor.config.ts +17 -0
- package/scaffolds/netlify.toml +8 -0
- package/scaffolds/prompt-lang.json +15 -0
- package/scaffolds/railway.json +12 -0
- package/scaffolds/tailwind.config.js +8 -0
- package/scaffolds/tauri.conf.json +26 -0
- package/schemas/language-module.json +116 -0
- package/schemas/prompt-lang.json +38 -3
- package/schemas/structures.json +145 -0
- package/src/ai/learn-prompt.js +90 -0
- package/src/ai/prompt-builder.js +182 -0
- package/src/ai/providers.js +247 -0
- package/src/annotations/registry.js +39 -0
- package/src/annotations/tags.json +24 -0
- package/src/commands/ai-gen.js +161 -0
- package/src/commands/component.js +315 -227
- package/src/commands/context.js +351 -153
- package/src/commands/db-rules.js +117 -0
- package/src/commands/extract.js +562 -0
- package/src/commands/figma.js +42 -42
- package/src/commands/init.js +763 -246
- package/src/commands/integrate.js +544 -0
- package/src/commands/lang.js +148 -0
- package/src/commands/learn.js +182 -0
- package/src/commands/qa-gen.js +139 -0
- package/src/commands/scaffold.js +127 -0
- package/src/commands/suggest.js +37 -15
- package/src/commands/teach.js +109 -0
- package/src/commands/validate.js +189 -89
- package/src/commands/wizard.js +458 -0
- package/src/generators/figma-prompt.js +25 -17
- package/src/knowledge/db-rules.json +162 -0
- package/src/language-service/plugin.cjs +94 -0
- package/src/language-service/plugin.d.ts +6 -0
- package/src/mcp-server.js +710 -0
- package/src/templates/langs/react/INDEX.json +262 -0
- package/src/templates/langs/react/MODULE.json +166 -0
- package/src/templates/langs/react/templates/hooks/useAuth.template.ts +134 -0
- package/src/templates/langs/react/templates/hooks/useDebounce.template.ts +45 -0
- package/src/templates/langs/react/templates/hooks/useForm.template.ts +146 -0
- package/src/templates/langs/react/templates/hooks/usePagination.template.ts +108 -0
- package/src/templates/langs/react/templates/services/apiService.template.ts +123 -0
- package/src/templates/langs/react/templates/ui/Button.template.tsx +87 -0
- package/src/templates/langs/react/templates/ui/Card.template.tsx +85 -0
- package/src/templates/langs/react/templates/ui/DataTable.template.tsx +163 -0
- package/src/templates/langs/react/templates/ui/Input.template.tsx +96 -0
- package/src/templates/langs/react/templates/ui/Modal.template.tsx +133 -0
- package/src/templates/langs/react/templates/ui/Select.template.tsx +99 -0
- package/src/templates/langs/vue/INDEX.json +246 -0
- package/src/templates/langs/vue/MODULE.json +105 -0
- package/src/templates/langs/vue/templates/composables/useAuth.template.ts +106 -0
- package/src/templates/langs/vue/templates/composables/useDebounce.template.ts +47 -0
- package/src/templates/langs/vue/templates/composables/useFetch.template.ts +54 -0
- package/src/templates/langs/vue/templates/composables/useForm.template.ts +127 -0
- package/src/templates/langs/vue/templates/composables/usePagination.template.ts +98 -0
- package/src/templates/langs/vue/templates/services/apiService.template.ts +116 -0
- package/src/templates/langs/vue/templates/ui/Button.template.vue +79 -0
- package/src/templates/langs/vue/templates/ui/Card.template.vue +73 -0
- package/src/templates/langs/vue/templates/ui/DataTable.template.vue +115 -0
- package/src/templates/langs/vue/templates/ui/Input.template.vue +70 -0
- package/src/templates/langs/vue/templates/ui/Modal.template.vue +112 -0
- package/src/templates/langs/vue/templates/ui/Select.template.vue +77 -0
- package/src/templates/scripts/log-actividad.sh +32 -0
- package/src/templates/scripts/log-commit.sh +35 -0
- package/src/templates/scripts/log-error.sh +45 -0
- package/src/templates/scripts/validate.sh +23 -0
- package/src/templates/semantic-index.json +84 -0
- package/src/ts-transformer/index.cjs +86 -0
- package/src/utils/ai.js +66 -77
- package/src/utils/annotations.js +297 -251
- package/src/utils/config.js +85 -34
- package/src/utils/doc-ingest.js +101 -0
- package/src/utils/error-learner.js +205 -0
- package/src/utils/file-utils.js +119 -0
- package/src/utils/language-loader.js +167 -0
- package/src/utils/module-generator.js +235 -0
- package/src/utils/semantic-index.js +93 -0
- package/src/utils/template-utils.js +44 -0
- package/src/vite-plugin/index.js +54 -0
- package/vscode-extension/package.json +23 -2
- package/vscode-extension/snippets/promptlang.json +1 -3
- package/vscode-extension/syntaxes/annotations-code.tmGrammar.json +15 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenPrompt-Lang
|
|
2
2
|
|
|
3
|
-
Framework de anotaciones para desarrollo asistido por IA.
|
|
3
|
+
Framework de anotaciones **como código** para desarrollo asistido por IA. Escribe `@kind`, `@contract`, `@limit` como sintaxis directa (sin comentarios) para guiar a la IA sobre estructura, contratos y límites de tu código. Las anotaciones se eliminan automáticamente en build mediante plugins oficiales para Vite y TypeScript, y se integran con OpenCode vía MCP server. Extensible por módulos de lenguaje y tags personalizados.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
openPrompt-Lang --version
|
|
@@ -11,6 +11,14 @@ openPrompt-Lang --version
|
|
|
11
11
|
## Índice
|
|
12
12
|
|
|
13
13
|
- [Instalación](#instalación)
|
|
14
|
+
- [Nuevas Capacidades (v0.4.0)](#nuevas-capacidades-v040)
|
|
15
|
+
- [Aprender de proyectos reales](#aprender-de-proyectos-reales---extract---learn)
|
|
16
|
+
- [Aprender de documentación](#aprender-de-documentación---learn)
|
|
17
|
+
- [Transferencia de contexto](#transferencia-de-contexto---integrate---fromto)
|
|
18
|
+
- [Contexto por dominio](#contexto-por-dominio---context---domain)
|
|
19
|
+
- [Presets pre-ensamblados](#presets-pre-ensamblados---init---preset)
|
|
20
|
+
- [Reglas de base de datos](#reglas-de-base-de-datos---db-rules)
|
|
21
|
+
- [Filtros de componentes](#filtros-de-componentes---component-list---styletechvalidated)
|
|
14
22
|
- [Anotaciones PromptLang (directorio completo)](#anotaciones-promptlang-directorio-completo)
|
|
15
23
|
- [Tags de definición](#tags-de-definición)
|
|
16
24
|
- [Tags de contrato](#tags-de-contrato)
|
|
@@ -31,7 +39,6 @@ openPrompt-Lang --version
|
|
|
31
39
|
- [VS Code Extension](#vs-code-extension)
|
|
32
40
|
- [Versionado (SemVer)](#versionado-semver)
|
|
33
41
|
- [Documentación](#documentación)
|
|
34
|
-
- [Publicación en npm](#publicación-en-npm)
|
|
35
42
|
|
|
36
43
|
---
|
|
37
44
|
|
|
@@ -84,10 +91,14 @@ npx openprompt-lang --help
|
|
|
84
91
|
|
|
85
92
|
## Anotaciones PromptLang (directorio completo)
|
|
86
93
|
|
|
87
|
-
Las anotaciones se escriben
|
|
94
|
+
Las anotaciones se escriben en el código para guiar a la IA sobre restricciones, contratos y contexto del archivo. El parser detecta anotaciones tanto en comentarios como en código directo.
|
|
88
95
|
|
|
89
96
|
### Sintaxis general
|
|
90
97
|
|
|
98
|
+
Soporta **dos modos**:
|
|
99
|
+
|
|
100
|
+
#### Modo comentario (compatible con TS/JS estándar)
|
|
101
|
+
|
|
91
102
|
```typescript
|
|
92
103
|
// @nombre(args)
|
|
93
104
|
// @nombre(key: value, key2: value2)
|
|
@@ -100,6 +111,21 @@ Las anotaciones se escriben como comentarios en el código. La IA las interpreta
|
|
|
100
111
|
*/
|
|
101
112
|
```
|
|
102
113
|
|
|
114
|
+
#### Modo código (sin //)
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
@nombre(args)
|
|
118
|
+
@nombre(key: value, key2: value2)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
El parser reconoce automáticamente ambos formatos. Puedes mezclarlos libremente:
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
// @use(kind, contract, deps)
|
|
125
|
+
@kind(service)
|
|
126
|
+
@contract(in: DTO -> out: Result @error: ServiceError)
|
|
127
|
+
```
|
|
128
|
+
|
|
103
129
|
### @use — Declaración de tags (OBLIGATORIO)
|
|
104
130
|
|
|
105
131
|
Primer tag de todo archivo. Declara qué tags se usan.
|
|
@@ -273,8 +299,69 @@ Compatibilidad:
|
|
|
273
299
|
|
|
274
300
|
---
|
|
275
301
|
|
|
302
|
+
### Tags de aprendizaje y documentación
|
|
303
|
+
|
|
304
|
+
#### @learn-error — Error aprendido
|
|
305
|
+
|
|
306
|
+
Documenta un bug encontrado y su solución para prevenir regresiones:
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
// @learn-error id=BUTTON-001 input='...' expected=200 actual=500 fix='...' category=validation
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Usado por `qa-gen` para generar tests de regresión automáticamente.
|
|
313
|
+
|
|
314
|
+
#### @goodPractice — Buena práctica
|
|
315
|
+
|
|
316
|
+
Marca una sección de código como ejemplo de buena práctica:
|
|
317
|
+
|
|
318
|
+
```
|
|
319
|
+
// @goodPractice("Usar early return reduce indentación")
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
#### @badPractice — Mala práctica
|
|
323
|
+
|
|
324
|
+
Marca una sección como ejemplo de lo que no debe hacerse:
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
// @badPractice("No mutar props directamente")
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
#### @teachMe — Enseñanza estructurada
|
|
331
|
+
|
|
332
|
+
Documenta el diseño, propósito o lección de un archivo para que la IA lo entienda:
|
|
333
|
+
|
|
334
|
+
```
|
|
335
|
+
// @teachMe
|
|
336
|
+
// Este hook maneja autenticación con Supabase.
|
|
337
|
+
// Usa early return para errores de validación antes de llamar a la API.
|
|
338
|
+
// El token se persiste en localStorage y se verifica al montar.
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Usado por `openPrompt-Lang teach` y el agente de Opencode.
|
|
342
|
+
|
|
343
|
+
#### @template — Plantilla reutilizable
|
|
344
|
+
|
|
345
|
+
Marca un archivo como template reutilizable dentro del módulo de lenguaje.
|
|
346
|
+
|
|
347
|
+
#### @source — Origen de extracción
|
|
348
|
+
|
|
349
|
+
Indica el archivo original del que se extrajo un template (usado por `extract`).
|
|
350
|
+
|
|
351
|
+
#### @reuse — Reutilización
|
|
352
|
+
|
|
353
|
+
Indica cuántas veces se ha reutilizado un template extraído.
|
|
354
|
+
|
|
355
|
+
#### @extracted — Extraído
|
|
356
|
+
|
|
357
|
+
Marca un template como generado por el extractor automático.
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
276
361
|
### Ejemplos completos
|
|
277
362
|
|
|
363
|
+
#### Modo comentario
|
|
364
|
+
|
|
278
365
|
```typescript
|
|
279
366
|
// @use(kind, contract, limit, deps, platform, scope, meta)
|
|
280
367
|
// @kind(hook)
|
|
@@ -297,26 +384,128 @@ export function useAuth() { ... }
|
|
|
297
384
|
export function Button(props: ButtonProps) { ... }
|
|
298
385
|
```
|
|
299
386
|
|
|
387
|
+
#### Modo código
|
|
388
|
+
|
|
389
|
+
```typescript
|
|
390
|
+
@use(kind, contract, limit, deps, platform, scope, meta)
|
|
391
|
+
@kind(hook)
|
|
392
|
+
@limit(lines: 75, params: 1)
|
|
393
|
+
@contract(in: email, password -> out: user, token @error: AuthError)
|
|
394
|
+
@deps(@external: [supabase], @forbidden: [axios])
|
|
395
|
+
@platform(web)
|
|
396
|
+
@scope(module: auth, affects: [login, register, session])
|
|
397
|
+
@meta(@version: "1.0.0", @tags: [auth, supabase])
|
|
398
|
+
export function useAuth() { ... }
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
```typescript
|
|
402
|
+
@use(kind, props, state, limit, pattern)
|
|
403
|
+
@kind(component)
|
|
404
|
+
@props({ variant: string, size: string, children: ReactNode, disabled?: boolean })
|
|
405
|
+
@state(idle, disabled, loading)
|
|
406
|
+
@limit(lines: 90, functions: 2)
|
|
407
|
+
@pattern(composition)
|
|
408
|
+
export function Button(props: ButtonProps) { ... }
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
> **Nota:** El modo código usa la sintaxis `@tag( ... )` sin `//`. El parser solo reconoce tags conocidos (`@kind`, `@use`, `@props`, etc.) para evitar confundirlos con decoradores JS/TS como `@Component` o `@Injectable`. Funciona tanto en `.ts` como en `.js`, `.py`, `.vue`, etc.
|
|
412
|
+
|
|
300
413
|
> 📖 **Especificación completa:** `docs/SYNTAX.md`
|
|
301
414
|
|
|
302
415
|
---
|
|
303
416
|
|
|
417
|
+
## Nuevas Capacidades (v0.4.0)
|
|
418
|
+
|
|
419
|
+
### Aprender de proyectos reales — `extract --learn`
|
|
420
|
+
Analiza un proyecto y extrae sus patrones: convención de nombres, arquitectura, estilo UI, hooks, anotaciones. Genera un perfil reutilizable.
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
openPrompt-Lang extract ./proyecto-pulido --learn
|
|
424
|
+
openPrompt-Lang init --name nuevo --learn-from ./aprendizaje-perfil.json
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Aprender de documentación — `learn`
|
|
428
|
+
Usa IA para transformar documentación local en módulos de lenguaje funcionales con templates, tests y prácticas.
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
openPrompt-Lang learn --docs ./docs-rust/ --name rust
|
|
432
|
+
openPrompt-Lang learn --docs ./docs-react/ --from ./proyecto-real/ --name react
|
|
433
|
+
openPrompt-Lang learn --docs ./docs/ --name django --integrate
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
Los módulos se guardan en `~/.openprompt/knowledge/langs/<id>/` (accesibles para cualquier proyecto).
|
|
437
|
+
|
|
438
|
+
### Transferencia de contexto — `integrate --from/--to`
|
|
439
|
+
Copia el contexto de negocio entre proyectos: stack, convenciones, @kind/@contract detectados, arquitectura.
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
openPrompt-Lang integrate --from ./web-react --to ./app-mobile
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Contexto por dominio — `context --domain`
|
|
446
|
+
Filtra el contexto del proyecto por dominio de negocio: ecommerce, saas, mobile, api, admin, blog.
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
openPrompt-Lang context --domain ecommerce
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### Presets pre-ensamblados — `init --preset`
|
|
453
|
+
Stacks completos con servicios incluidos: Supabase, Stripe, Ionic, Tauri, Firebase.
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
openPrompt-Lang init --preset react-supabase-stripe --name tienda
|
|
457
|
+
openPrompt-Lang init --list-presets
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Reglas de base de datos — `db-rules`
|
|
461
|
+
Knowledge base de buenas prácticas, anti-patrones y reglas para SQL, Supabase, Postgres, Docker.
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
openPrompt-Lang db-rules --id db-001
|
|
465
|
+
openPrompt-Lang db-rules --tag performance
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### Filtros de componentes — `component list --style/--tech/--validated`
|
|
469
|
+
```bash
|
|
470
|
+
openPrompt-Lang component list --style shadcn
|
|
471
|
+
openPrompt-Lang component list --tech vue
|
|
472
|
+
openPrompt-Lang component list --validated
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
> 📖 **Manual completo para IA:** `docs/AI-MANUAL.md` — todos los comandos, workflows ordenados y configuración.
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
304
479
|
## Comandos CLI
|
|
305
480
|
|
|
306
481
|
| Comando | Descripción |
|
|
307
|
-
|
|
482
|
+
|---|---|---|
|
|
308
483
|
| `openPrompt-Lang init --name miapp` | Crea proyecto desde 0 con scaffolding completo + scripts descriptivos |
|
|
309
484
|
| `openPrompt-Lang init --existing` | Configura proyecto existente (solo archivos de config) |
|
|
310
485
|
| `openPrompt-Lang context --output contexto.md` | Extrae todo el código + anotaciones para dar contexto a la IA |
|
|
311
|
-
| `openPrompt-Lang validate` | Valida anotaciones y ejecuta pipeline de verificación |
|
|
486
|
+
| `openPrompt-Lang validate [--fix]` | Valida anotaciones y ejecuta pipeline de verificación |
|
|
312
487
|
| `openPrompt-Lang figma` | Genera prompt para diseño Figma |
|
|
313
488
|
| `openPrompt-Lang suggest "descripción"` | IA sugiere stack y estructura según descripción |
|
|
489
|
+
| `openPrompt-Lang wizard` | Asistente interactivo para configurar proyecto openPrompt-Lang |
|
|
490
|
+
| `openPrompt-Lang teach <templateId>` | Enseñanza estructurada desde template con @teachMe |
|
|
491
|
+
| `openPrompt-Lang ai-gen` | Genera componentes desde descripciones en lenguaje natural |
|
|
492
|
+
| `openPrompt-Lang ai-providers` | Lista proveedores IA disponibles y su estado |
|
|
493
|
+
| `openPrompt-Lang extract [sourceDir]` | Analiza proyecto y extrae componentes reutilizables como templates |
|
|
494
|
+
| `openPrompt-Lang analyze [sourceDir]` | Analiza estructura, dependencias y salud del proyecto |
|
|
495
|
+
| `openPrompt-Lang integrate [--all]` | Configura Opencode, Cursor y VS Code para el proyecto |
|
|
496
|
+
| `openPrompt-Lang qa-gen` | Genera tests desde errores aprendidos (@learn-error) |
|
|
497
|
+
| `openPrompt-Lang qa-learn` | Parsea @learn-error de un archivo al módulo de lenguaje |
|
|
498
|
+
| `openPrompt-Lang lang list` | Lista lenguajes disponibles |
|
|
499
|
+
| `openPrompt-Lang lang index <langId>` | Muestra índice de templates de un lenguaje |
|
|
500
|
+
| `openPrompt-Lang lang search <query>` | Busca templates en todos los lenguajes |
|
|
501
|
+
| `openPrompt-Lang lang errors [langId]` | Muestra errores aprendidos |
|
|
502
|
+
| `openPrompt-Lang scaffold folders <framework>` | Crea estructura de carpetas según framework |
|
|
503
|
+
| `openPrompt-Lang scaffold list` | Lista frameworks disponibles en el catálogo |
|
|
314
504
|
| `openPrompt-Lang component init` | Inicializa biblioteca de componentes reutilizables |
|
|
315
505
|
| `openPrompt-Lang component list` | Lista componentes disponibles (proyecto + biblioteca) |
|
|
316
506
|
| `openPrompt-Lang component add <nombre>` | Agrega componente de la biblioteca al proyecto |
|
|
317
507
|
| `openPrompt-Lang component manifest` | Muestra el manifiesto de la biblioteca |
|
|
318
|
-
|
|
319
|
-
> 📖 **Comandos y opciones detallados:** `docs/COMMANDS.md`
|
|
508
|
+
| `openPrompt-Lang mcp` | Inicia servidor MCP para integración con Opencode |
|
|
320
509
|
|
|
321
510
|
---
|
|
322
511
|
|
|
@@ -512,25 +701,77 @@ Generados automáticamente por `npm init` (o mergeables con `--existing`).
|
|
|
512
701
|
|
|
513
702
|
```
|
|
514
703
|
openPrompt-Lang/
|
|
515
|
-
├── bin/
|
|
704
|
+
├── bin/
|
|
705
|
+
│ ├── cli.js ← Entry point del CLI
|
|
706
|
+
│ ├── create.js ← Scafolder directo
|
|
707
|
+
│ └── lint.js ← Linter independiente
|
|
516
708
|
├── src/
|
|
517
709
|
│ ├── commands/
|
|
518
710
|
│ │ ├── init.js ← init + --existing
|
|
519
711
|
│ │ ├── context.js ← Extractor de contexto
|
|
520
|
-
│ │ ├── validate.js ← Validador de anotaciones
|
|
712
|
+
│ │ ├── validate.js ← Validador de anotaciones (con --fix)
|
|
521
713
|
│ │ ├── figma.js ← Generador de prompts Figma
|
|
522
|
-
│ │
|
|
523
|
-
│
|
|
524
|
-
│
|
|
525
|
-
│
|
|
526
|
-
│
|
|
714
|
+
│ │ ├── suggest.js ← Sugerencia de stack vía IA
|
|
715
|
+
│ │ ├── wizard.js ← Asistente interactivo
|
|
716
|
+
│ │ ├── teach.js ← Enseñanza desde @teachMe
|
|
717
|
+
│ │ ├── ai-gen.js ← Generación de componentes vía IA
|
|
718
|
+
│ │ ├── extract.js ← Extractor de templates reutilizables
|
|
719
|
+
│ │ ├── integrate.js ← Integración con Opencode/Cursor/VS Code
|
|
720
|
+
│ │ ├── qa-gen.js ← Generación de tests desde @learn-error
|
|
721
|
+
│ │ ├── lang.js ← Gestión de módulos de lenguaje
|
|
722
|
+
│ │ ├── scaffold.js ← Scaffolding de proyectos
|
|
723
|
+
│ │ ├── component.js ← Biblioteca de componentes
|
|
724
|
+
│ │ └── mcp-server.js ← Servidor MCP (9 herramientas)
|
|
725
|
+
│ ├── utils/
|
|
726
|
+
│ │ ├── annotations.js ← Parser + validador de anotaciones
|
|
727
|
+
│ │ ├── config.js ← Loader de prompt-lang.json + deep merge
|
|
728
|
+
│ │ ├── ai.js ← Módulo de IA (OpenAI / Anthropic / Ollama)
|
|
729
|
+
│ │ ├── language-loader.js ← Cargador de módulos de lenguaje
|
|
730
|
+
│ │ ├── error-learner.js ← Sistema de @learn-error
|
|
731
|
+
│ │ ├── file-utils.js ← findAllFiles / findComponentFiles / analyzeImports / countFiles
|
|
732
|
+
│ │ └── template-utils.js ← extractLesson / extractTags (compartido)
|
|
733
|
+
│ ├── annotations/
|
|
734
|
+
│ │ ├── tags.json ← Lista canónica de 24 tags
|
|
735
|
+
│ │ └── registry.js ← Fusiona builtin + módulo + proyecto
|
|
736
|
+
│ ├── ai/
|
|
737
|
+
│ │ ├── providers.js ← Proveedores IA (OpenAI, Anthropic, Ollama, Mock, None)
|
|
738
|
+
│ │ └── prompt-builder.js ← Constructor de prompts
|
|
739
|
+
│ ├── generators/
|
|
740
|
+
│ │ └── figma-prompt.js ← Generador de prompts Figma
|
|
741
|
+
│ ├── vite-plugin/
|
|
742
|
+
│ │ └── index.js ← Plugin Vite para eliminar anotaciones en build
|
|
743
|
+
│ └── templates/
|
|
744
|
+
│ ├── langs/
|
|
745
|
+
│ │ ├── react/ ← 11 templates (Button, Input, Select, Card, Modal, DataTable, hooks, services)
|
|
746
|
+
│ │ └── vue/ ← 12 templates (6 UI components + 5 composables + 1 service)
|
|
747
|
+
│ └── scripts/ ← Scripts shell (validate.sh, etc.)
|
|
748
|
+
├── .opencode/ ← Configuración para Opencode
|
|
749
|
+
│ ├── opencode.json ← MCP server + skills + default_agent
|
|
750
|
+
│ ├── agent/openPrompt.md ← Agente con 4 workflows + Default Workflow
|
|
751
|
+
│ └── skills/openPrompt/SKILL.md ← Skill auto-detectable con MCP tools
|
|
527
752
|
├── tests/
|
|
528
|
-
│ ├── annotations.test.js ← ~
|
|
529
|
-
│
|
|
753
|
+
│ ├── annotations.test.js ← ~45 tests de parser y validador
|
|
754
|
+
│ ├── config.test.js ← Tests de deep merge
|
|
755
|
+
│ ├── init.test.js ← Tests de init
|
|
756
|
+
│ ├── language-loader.test.js ← Tests de language-loader
|
|
757
|
+
│ ├── wizard.test.js ← Tests de qualityGate
|
|
758
|
+
│ ├── scaffold.test.js ← Tests de scaffold
|
|
759
|
+
│ ├── validate.test.js ← Tests de validate
|
|
760
|
+
│ ├── qa-gen.test.js ← Tests de QA generation
|
|
761
|
+
│ ├── mcp-integration.test.js ← 14 tests MCP end-to-end
|
|
762
|
+
│ ├── context.test.js ← Tests de extracción de contexto
|
|
763
|
+
│ ├── integrate.test.js ← Tests de integración Opencode/Cursor/VS Code
|
|
764
|
+
│ ├── file-utils.test.js ← Tests de findAllFiles / countFiles
|
|
765
|
+
│ ├── template-utils.test.js ← Tests de extractLesson / extractTags
|
|
766
|
+
│ ├── teach.test.js ← Tests de enseñanza desde templates
|
|
767
|
+
│ ├── ai-gen.test.js ← Tests de generación vía IA
|
|
768
|
+
│ ├── extract.test.js ← Tests de extracción de templates
|
|
769
|
+
│ └── component.test.js ← Tests de biblioteca de componentes
|
|
530
770
|
├── docs/
|
|
531
771
|
│ ├── COMMANDS.md ← Documentación completa de comandos
|
|
532
772
|
│ ├── SYNTAX.md ← Especificación del lenguaje PromptLang
|
|
533
773
|
│ ├── DEPENDENCIES.md ← Dependencias y versiones
|
|
774
|
+
│ ├── VERSIONING.md ← Convención SemVer
|
|
534
775
|
│ ├── FRAMEWORK.md ← Framework spec (acceso rápido)
|
|
535
776
|
│ └── referencia-metodologia/ ← Metodología completa (17 archivos)
|
|
536
777
|
│ ├── Indice General.md
|
|
@@ -540,6 +781,8 @@ openPrompt-Lang/
|
|
|
540
781
|
├── vscode-extension/ ← Extensión VS Code (highlighting + snippets)
|
|
541
782
|
├── schemas/
|
|
542
783
|
│ └── prompt-lang.json ← JSON Schema para la configuración
|
|
784
|
+
├── scaffolds/ ← Scaffolds base para proyectos
|
|
785
|
+
│ └── AGENTS.md ← Template de AGENTS.md
|
|
543
786
|
├── package.json
|
|
544
787
|
└── .gitignore
|
|
545
788
|
```
|
|
@@ -559,6 +802,7 @@ openPrompt-Lang/
|
|
|
559
802
|
| `docs/referencia-metodologia/docs/CONVENCIONES_DB.md` | 18 prácticas de base de datos (RLS, índices, batch, etc.) |
|
|
560
803
|
| `docs/referencia-metodologia/docs/CONVENCIONES_DOCUMENTACION.md` | Estándar de documentación (tablas DB, Mermaid, contratos RPC) |
|
|
561
804
|
| `docs/referencia-metodologia/docs/PROMPTS/` | Biblioteca de prompts reutilizables (17 plantillas + 3 stacks) |
|
|
805
|
+
| `docs/PROMPT_AI_CONTEXT.md` | Prompt pre-hecho para copiar-pegar a Gemini/Claude/ChatGPT |
|
|
562
806
|
| `vscode-extension/` | Extensión VS Code: syntax highlighting y snippets para anotaciones |
|
|
563
807
|
| `schemas/prompt-lang.json` | JSON Schema para validar `prompt-lang.json` |
|
|
564
808
|
|
|
@@ -571,7 +815,7 @@ openPrompt-Lang sigue [SemVer estricto](docs/VERSIONING.md):
|
|
|
571
815
|
| Bump | Cuándo | Ejemplo |
|
|
572
816
|
|---|---|---|
|
|
573
817
|
| **MAJOR** | Breaking changes en API, CLI o anotaciones | `1.0.0` → `2.0.0` |
|
|
574
|
-
| **MINOR** | Nuevas funcionalidades, comandos, tags | `0.
|
|
818
|
+
| **MINOR** | Nuevas funcionalidades, comandos, tags | `0.3.0` → `0.4.0` |
|
|
575
819
|
| **PATCH** | Fixes, docs, refactors sin cambio de API | `0.2.0` → `0.2.1` |
|
|
576
820
|
|
|
577
821
|
Pre-release: `1.0.0-alpha.1`, `1.0.0-beta.1`, `1.0.0-rc.1`
|
|
@@ -592,6 +836,139 @@ openPrompt-Lang incluye un sistema de **biblioteca de componentes reutilizables*
|
|
|
592
836
|
|
|
593
837
|
---
|
|
594
838
|
|
|
839
|
+
## Extensibilidad
|
|
840
|
+
|
|
841
|
+
El sistema de tags es extensible en tres niveles sin modificar el core:
|
|
842
|
+
|
|
843
|
+
### Nivel 1 — Módulo de lenguaje
|
|
844
|
+
|
|
845
|
+
Agrega `annotationTags` en el `MODULE.json` de tu módulo:
|
|
846
|
+
|
|
847
|
+
```json
|
|
848
|
+
{
|
|
849
|
+
"id": "react-query",
|
|
850
|
+
"name": "React Query",
|
|
851
|
+
"annotationTags": ["query", "mutation"]
|
|
852
|
+
}
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
### Nivel 2 — Configuración del proyecto
|
|
856
|
+
|
|
857
|
+
Agrega `customTags` en `prompt-lang.json`:
|
|
858
|
+
|
|
859
|
+
```json
|
|
860
|
+
{
|
|
861
|
+
"annotations": {
|
|
862
|
+
"customTags": ["audit", "security", "performance"]
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
### Nivel 3 — Plugins de build
|
|
868
|
+
|
|
869
|
+
Los plugins de Vite, TypeScript y Transformer aceptan la opción `tags` o `customTags`:
|
|
870
|
+
|
|
871
|
+
```javascript
|
|
872
|
+
// vite.config.ts
|
|
873
|
+
import { openPromptAnnotations } from "openprompt-lang/vite-plugin";
|
|
874
|
+
|
|
875
|
+
export default {
|
|
876
|
+
plugins: [
|
|
877
|
+
openPromptAnnotations({ tags: ["audit", "security"] }),
|
|
878
|
+
],
|
|
879
|
+
};
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
```jsonc
|
|
883
|
+
// tsconfig.json
|
|
884
|
+
{
|
|
885
|
+
"compilerOptions": {
|
|
886
|
+
"plugins": [
|
|
887
|
+
{ "name": "openprompt-lang/ts-plugin", "customTags": ["audit"] }
|
|
888
|
+
]
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
```
|
|
892
|
+
|
|
893
|
+
### Canonical tag list
|
|
894
|
+
|
|
895
|
+
La lista completa de tags builtin está en `src/annotations/tags.json`. El registry (`src/annotations/registry.js`) fusiona builtin + módulo + proyecto automáticamente. Todos los plugins y herramientas (parser, Vite, TS, grammar, MCP) consumen de esta misma fuente.
|
|
896
|
+
|
|
897
|
+
---
|
|
898
|
+
|
|
899
|
+
## Build Plugins
|
|
900
|
+
|
|
901
|
+
Para usar anotaciones como **código** (sin `//`), necesitas que el compilador las ignore en build.
|
|
902
|
+
|
|
903
|
+
### Vite Plugin (Recomendado)
|
|
904
|
+
|
|
905
|
+
```bash
|
|
906
|
+
npm install -D openprompt-lang
|
|
907
|
+
```
|
|
908
|
+
|
|
909
|
+
```typescript
|
|
910
|
+
// vite.config.ts
|
|
911
|
+
import { openPromptAnnotations } from "openprompt-lang/vite-plugin";
|
|
912
|
+
|
|
913
|
+
export default defineConfig({
|
|
914
|
+
plugins: [
|
|
915
|
+
openPromptAnnotations(),
|
|
916
|
+
],
|
|
917
|
+
});
|
|
918
|
+
```
|
|
919
|
+
|
|
920
|
+
Elimina las líneas `@tag(...)` antes de que esbuild las procese. Soporta paréntesis anidados y multi-línea.
|
|
921
|
+
|
|
922
|
+
### TypeScript Language Service Plugin
|
|
923
|
+
|
|
924
|
+
Para VS Code (suprime errores rojos en `@tag(...)`):
|
|
925
|
+
|
|
926
|
+
```jsonc
|
|
927
|
+
// tsconfig.json
|
|
928
|
+
{
|
|
929
|
+
"compilerOptions": {
|
|
930
|
+
"plugins": [
|
|
931
|
+
{ "name": "openprompt-lang/ts-plugin" }
|
|
932
|
+
]
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
```
|
|
936
|
+
|
|
937
|
+
### TS Transformer (para tsc / Next.js)
|
|
938
|
+
|
|
939
|
+
```javascript
|
|
940
|
+
// next.config.js o en tsconfig.json via ts-patch
|
|
941
|
+
const { createTransformer } = require("openprompt-lang/ts-transformer");
|
|
942
|
+
|
|
943
|
+
module.exports = {
|
|
944
|
+
webpack: (config) => {
|
|
945
|
+
config.module.rules.push({
|
|
946
|
+
test: /\.tsx?$/,
|
|
947
|
+
use: {
|
|
948
|
+
loader: "ts-loader",
|
|
949
|
+
options: {
|
|
950
|
+
getCustomTransformers: () => ({
|
|
951
|
+
before: [createTransformer()],
|
|
952
|
+
}),
|
|
953
|
+
},
|
|
954
|
+
},
|
|
955
|
+
});
|
|
956
|
+
return config;
|
|
957
|
+
},
|
|
958
|
+
};
|
|
959
|
+
```
|
|
960
|
+
|
|
961
|
+
### Auto-configuración
|
|
962
|
+
|
|
963
|
+
```bash
|
|
964
|
+
# Para proyectos existentes:
|
|
965
|
+
openPrompt-Lang init --existing
|
|
966
|
+
|
|
967
|
+
# Te preguntará si configurar Vite plugin y TS plugin automáticamente.
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
---
|
|
971
|
+
|
|
595
972
|
## VS Code Extension
|
|
596
973
|
|
|
597
974
|
openPrompt-Lang incluye una extensión para VS Code en `vscode-extension/` con resaltado de sintaxis y snippets.
|
|
@@ -622,7 +999,7 @@ code --install-extension openprompt-lang-*.vsix
|
|
|
622
999
|
|
|
623
1000
|
### Funcionalidades
|
|
624
1001
|
|
|
625
|
-
- **Syntax highlighting**: todos los tags (`@kind`, `@props`, `@contract`, etc.) se resaltan en comentarios
|
|
1002
|
+
- **Syntax highlighting**: todos los tags (`@kind`, `@props`, `@contract`, etc.) se resaltan tanto en comentarios (`// @kind`) como en código directo (`@kind`)
|
|
626
1003
|
- **Snippets**: escribe `@kind-` y autocompleta:
|
|
627
1004
|
- `@kind-hook` → hook con `@contract`
|
|
628
1005
|
- `@kind-component` → componente con `@props`
|
|
@@ -639,25 +1016,169 @@ code --install-extension openprompt-lang-*.vsix
|
|
|
639
1016
|
|
|
640
1017
|
---
|
|
641
1018
|
|
|
642
|
-
##
|
|
1019
|
+
## OpenCode Integration
|
|
1020
|
+
|
|
1021
|
+
openPrompt-Lang tiene integración nativa con [OpenCode](https://opencode.ai) mediante **MCP server**, **agente especializado**, y **skill auto-detectable**.
|
|
1022
|
+
|
|
1023
|
+
### Configuración rápida
|
|
643
1024
|
|
|
644
1025
|
```bash
|
|
645
|
-
|
|
646
|
-
|
|
1026
|
+
npx openprompt-lang integrate --all
|
|
1027
|
+
```
|
|
647
1028
|
|
|
648
|
-
|
|
649
|
-
npm test
|
|
1029
|
+
Esto genera:
|
|
650
1030
|
|
|
651
|
-
|
|
652
|
-
|
|
1031
|
+
- **`.opencode/opencode.json`** — Configuración con MCP server, skill paths y default_agent
|
|
1032
|
+
- **`.opencode/agent/openPrompt.md`** — Agente con 4 workflows + Default Workflow
|
|
1033
|
+
- **`.opencode/skills/openPrompt/SKILL.md`** — Skill auto-detectable (solo se activa si el proyecto usa anotaciones)
|
|
1034
|
+
- **MCP server** — Expone 9 herramientas que Opencode puede llamar directamente
|
|
653
1035
|
|
|
654
|
-
|
|
655
|
-
npm publish --access public
|
|
1036
|
+
### MCP Server
|
|
656
1037
|
|
|
657
|
-
|
|
658
|
-
|
|
1038
|
+
El MCP (Model Context Protocol) server permite que Opencode invoque herramientas de openPrompt-Lang de forma nativa, sin comandos slash. Las herramientas retornan estructura consistente:
|
|
1039
|
+
|
|
1040
|
+
```
|
|
1041
|
+
## Result: success|error|warning
|
|
1042
|
+
<summary>
|
|
1043
|
+
### Details
|
|
1044
|
+
- <detalle 1>
|
|
1045
|
+
### Recommended Actions
|
|
1046
|
+
- <acción 1>
|
|
659
1047
|
```
|
|
660
1048
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
1049
|
+
| Contexto | Herramienta | Descripción |
|
|
1050
|
+
|---|---|---|
|
|
1051
|
+
| **Auditar proyecto** | `analyze_project(dir)` | **Primera herramienta** en proyectos nuevos. Retorna config, conteo de archivos, estadísticas |
|
|
1052
|
+
| **Validar** | `validate([dir, filePath])` | Escanea proyecto/archivo buscando errores. Usar **antes de commits** |
|
|
1053
|
+
| | `lint_file(filePath, strict)` | Debug detallado de un archivo. Más información que `validate` |
|
|
1054
|
+
| | `parse_code(code)` | Valida sintaxis inline. Útil durante generación de código |
|
|
1055
|
+
| **Contexto** | `context([dir, scope])` | Extrae estructura del proyecto con resumen de config |
|
|
1056
|
+
| **Templates** | `search_templates(query, lang)` | Busca templates por keyword (button, auth, fetch) |
|
|
1057
|
+
| | `teach_template(templateId, showCode)` | Lección estructurada, prácticas y código del template |
|
|
1058
|
+
| **Testing** | `generate_tests(sourceDir, lang, output)` | Genera tests desde `@learn-error`. Usar **después de documentar un bug** |
|
|
1059
|
+
| **Scaffold** | `scaffold_project(framework, name)` | Crea estructura de proyecto y archivos base |
|
|
1060
|
+
|
|
1061
|
+
### Auto-supervisión IA (Default Workflow)
|
|
1062
|
+
|
|
1063
|
+
El **skill auto-detectable** se activa cuando el proyecto usa anotaciones y guía a la IA con este ciclo:
|
|
1064
|
+
|
|
1065
|
+
```
|
|
1066
|
+
1. analyze_project → entender el proyecto
|
|
1067
|
+
2. validate → diagnosticar errores
|
|
1068
|
+
3. lint_file → debug profundo de archivos con errores
|
|
1069
|
+
4. fix + @learn-error → documentar lo aprendido
|
|
1070
|
+
5. generate_tests → prevenir regresión
|
|
1071
|
+
6. validate → verificar que todo está limpio
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
El **agente `openPrompt`** incluye 4 workflows especializados (debugging de anotaciones, implementar componente, onboarding, nuevo proyecto) que la IA sigue automáticamente.
|
|
1075
|
+
|
|
1076
|
+
### Uso manual (sin `integrate`)
|
|
1077
|
+
|
|
1078
|
+
Crea `.opencode/opencode.json`:
|
|
1079
|
+
|
|
1080
|
+
```jsonc
|
|
1081
|
+
{
|
|
1082
|
+
"$schema": "https://opencode.ai/config.json",
|
|
1083
|
+
"mcp": {
|
|
1084
|
+
"openPrompt": {
|
|
1085
|
+
"type": "local",
|
|
1086
|
+
"command": ["npx", "openprompt-lang", "mcp"],
|
|
1087
|
+
"enabled": true
|
|
1088
|
+
}
|
|
1089
|
+
},
|
|
1090
|
+
"skills": {
|
|
1091
|
+
"paths": [".opencode/skills"]
|
|
1092
|
+
},
|
|
1093
|
+
"default_agent": "openPrompt",
|
|
1094
|
+
"instructions": ["AGENTS.md"]
|
|
1095
|
+
}
|
|
1096
|
+
```
|
|
1097
|
+
|
|
1098
|
+
Luego agrega `.opencode/agent/openPrompt.md` (instrucciones del agente) y `.opencode/skills/openPrompt/SKILL.md` (skill). O simplemente ejecuta `npx openprompt-lang integrate --all`.
|
|
1099
|
+
|
|
1100
|
+
---
|
|
1101
|
+
|
|
1102
|
+
## Tutorial: Usar openPrompt-Lang con cualquier IA
|
|
1103
|
+
|
|
1104
|
+
Puedes usar openPrompt-Lang con **cualquier asistente de IA** — Google Gemini, Claude, ChatGPT, Cursor AI, etc. El framework no depende de Opencode; las anotaciones son simplemente código que cualquier IA puede leer e interpretar.
|
|
1105
|
+
|
|
1106
|
+
### Con Google Gemini (u otro chat de IA)
|
|
1107
|
+
|
|
1108
|
+
#### Paso 1: Extraer contexto del proyecto
|
|
1109
|
+
|
|
1110
|
+
```bash
|
|
1111
|
+
npx openprompt-lang context --output contexto.md
|
|
1112
|
+
```
|
|
1113
|
+
|
|
1114
|
+
Esto genera `contexto.md` con la estructura del proyecto, configuración, y archivos anotados.
|
|
1115
|
+
|
|
1116
|
+
#### Paso 2: Compartir contexto con la IA
|
|
1117
|
+
|
|
1118
|
+
Abre Google Gemini (o Claude, ChatGPT) y proporciona:
|
|
1119
|
+
|
|
1120
|
+
1. El archivo `contexto.md` generado
|
|
1121
|
+
2. El archivo `AGENTS.md` del proyecto (stack, convenciones, reglas)
|
|
1122
|
+
3. El archivo `docs/SYNTAX.md` (especificación del lenguaje de anotaciones)
|
|
1123
|
+
|
|
1124
|
+
**Prompt sugerido:**
|
|
1125
|
+
|
|
1126
|
+
```
|
|
1127
|
+
Eres un desarrollador senior trabajando en este proyecto.
|
|
1128
|
+
Usa las anotaciones @kind, @contract, @props, @limit, @use para todo código nuevo que generes.
|
|
1129
|
+
Contexto del proyecto: [pega contexto.md]
|
|
1130
|
+
Reglas del proyecto: [pega AGENTS.md]
|
|
1131
|
+
Especificación de anotaciones: [pega SYNTAX.md]
|
|
1132
|
+
```
|
|
1133
|
+
|
|
1134
|
+
#### Paso 3: La IA genera código con anotaciones
|
|
1135
|
+
|
|
1136
|
+
La IA entenderá las anotaciones y generará código como:
|
|
1137
|
+
|
|
1138
|
+
```typescript
|
|
1139
|
+
// @use(kind, contract, limit, deps)
|
|
1140
|
+
// @kind(hook)
|
|
1141
|
+
// @limit(lines: 60, params: 1)
|
|
1142
|
+
// @contract(in: email, password -> out: User | null @error: string)
|
|
1143
|
+
// @deps(@external: [supabase])
|
|
1144
|
+
export function useAuth() { ... }
|
|
1145
|
+
```
|
|
1146
|
+
|
|
1147
|
+
#### Paso 4: Validar el resultado
|
|
1148
|
+
|
|
1149
|
+
```bash
|
|
1150
|
+
npx openprompt-lang validate src/mi-archivo.ts
|
|
1151
|
+
```
|
|
1152
|
+
|
|
1153
|
+
### Con Cursor AI
|
|
1154
|
+
|
|
1155
|
+
Cursor AI tiene integración nativa con openPrompt-Lang:
|
|
1156
|
+
|
|
1157
|
+
```bash
|
|
1158
|
+
npx openprompt-lang integrate --all
|
|
1159
|
+
```
|
|
1160
|
+
|
|
1161
|
+
Esto genera `.cursor/config.json` y `.cursorrules` con reglas específicas para que Cursor entienda las anotaciones. Luego solo abre el proyecto en Cursor:
|
|
1162
|
+
|
|
1163
|
+
1. El archivo `.cursorrules` le dice a Cursor que use `@kind`, `@props`, etc.
|
|
1164
|
+
2. Cuando Cursor genere código, seguirá las convenciones del proyecto
|
|
1165
|
+
3. Ejecuta `openPrompt-Lang validate` para verificar el código generado
|
|
1166
|
+
|
|
1167
|
+
### Con cualquier editor + API de IA
|
|
1168
|
+
|
|
1169
|
+
Flujo genérico que funciona con cualquier herramienta:
|
|
1170
|
+
|
|
1171
|
+
```
|
|
1172
|
+
1. Extraer contexto: npx openprompt-lang context --output contexto.md
|
|
1173
|
+
2. Validar proyecto: npx openprompt-lang validate
|
|
1174
|
+
3. Ver sintaxis: docs/SYNTAX.md
|
|
1175
|
+
4. Compartir: contexto.md + AGENTS.md + SYNTAX.md → IA
|
|
1176
|
+
5. Iterar: IA genera código → validar → corregir
|
|
1177
|
+
```
|
|
1178
|
+
|
|
1179
|
+
### Tips para mejores resultados
|
|
1180
|
+
|
|
1181
|
+
- **Sé explícito**: dile a la IA "usa anotaciones @kind, @contract, @limit en todo el código"
|
|
1182
|
+
- **Comparte ejemplos**: muestra un archivo anotado como referencia (los ejemplos de este README funcionan bien)
|
|
1183
|
+
- **Valida siempre**: `npx openprompt-lang validate` detecta errores que la IA podría pasar por alto
|
|
1184
|
+
- **Documenta errores**: cuando la IA cometa un error de anotación, agrega `// @learn-error` para que futuras sesiones no repitan el mismo error
|