openprompt-lang 1.5.0 → 1.6.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/bin/cli.js +1 -14
- package/bin/mcp-plan.js +4 -4
- package/docs/02-STANDARDS/AGENTS.template.md +11 -5
- package/docs/02-STANDARDS/sections/00-first-5-min.md +40 -0
- package/docs/02-STANDARDS/sections/01-workflow.md +150 -0
- package/docs/02-STANDARDS/sections/02-annotations.md +89 -0
- package/docs/02-STANDARDS/sections/03-conventions.md +56 -0
- package/docs/02-STANDARDS/sections/04-commands.md +54 -0
- package/docs/02-STANDARDS/sections/05-reference.md +46 -0
- package/docs/02-STANDARDS/sections/06-project-setup.md +137 -0
- package/docs/AI_IMPROVEMENTS.md +3 -0
- package/docs/FRAMEWORK.md +7 -59
- package/package.json +1 -1
- package/src/cli/commands-context.js +69 -0
- package/src/cli/commands-misc.js +217 -4
- package/src/cli/commands-opl.js +12 -0
- package/src/cli/commands-teach.js +49 -0
- package/src/cli/commands-workflow.js +96 -38
- package/src/commands/init-core.js +226 -279
- package/src/commands/init-infer.js +313 -0
- package/src/commands/init.js +5 -14
- package/src/commands/knowledge.js +226 -3
- package/src/commands/opl-embeddings.js +177 -3
- package/src/commands/scar.js +106 -0
- package/src/commands/teach/assess/index.js +16 -30
- package/src/commands/teach/progress/index.js +14 -16
- package/src/commands/teach/project-guide/index.js +19 -30
- package/src/commands/teach/study/index.js +22 -31
- package/src/commands/ticket.js +76 -7
- package/src/commands/validate.js +33 -3
- package/src/commands/work-context/check.js +85 -0
- package/src/commands/work-context/init.js +68 -0
- package/src/commands/work-context/learn.js +45 -0
- package/src/commands/work-context/log.js +14 -0
- package/src/commands/work-context/plan.js +198 -0
- package/src/commands/work-context/report.js +45 -0
- package/src/commands/work-context/session.js +196 -0
- package/src/commands/work-context/utils.js +499 -0
- package/src/commands/work-context.js +7 -1028
- package/src/commands/workflow/close/index.js +23 -37
- package/src/commands/workflow/delivery/index.js +20 -33
- package/src/context/gates.js +136 -0
- package/src/context/index.js +280 -0
- package/src/context/plan.js +140 -0
- package/src/context/session.js +44 -0
- package/src/core/knowledge-graph/index.js +301 -0
- package/src/core/knowledge-graph/loader.js +356 -0
- package/src/core/knowledge-graph/store.js +210 -0
- package/src/core/knowledge-graph/types.js +280 -0
- package/src/core/search/anti-knowledge.js +292 -0
- package/src/core/search/echo-fusion.js +229 -0
- package/src/core/search/scar-integration.js +190 -0
- package/src/core/search/spreading-activation.js +312 -0
- package/src/core/workflow/gates.js +2 -2
- package/src/core/workflow/phases.js +1 -1
- package/src/core/workflow/selector.js +97 -641
- package/src/core/workflow/state-machine.js +1 -1
- package/src/docgen/session-docs.js +4 -5
- package/src/embeddings/chunker.js +79 -21
- package/src/embeddings/embedder.js +48 -9
- package/src/embeddings/index-pipeline.js +62 -35
- package/src/embeddings/vector-store.js +363 -352
- package/src/mcp-refactor/handlers/context.js +15 -20
- package/src/mcp-refactor/handlers/plan.js +339 -0
- package/src/mcp-refactor/handlers/teaching.js +9 -17
- package/src/mcp-refactor/handlers/workflow.js +8 -13
- package/src/mcp-refactor/router.js +21 -18
- package/src/mcp-refactor/tools.js +56 -67
- package/src/mcp-server.js +1 -1
- package/src/mcp-session.js +104 -84
- package/src/mcp-shared-state.js +64 -196
- package/src/mcp-workflow.js +90 -160
- package/src/persistence/json/store.js +364 -0
- package/src/utils/annotations.js +18 -1
- package/src/boost/agent-pool.js +0 -442
- package/src/boost/agents/index.js +0 -79
- package/src/boost/cache.js +0 -241
- package/src/boost/context-compressor.js +0 -354
- package/src/boost/fewshot-retriever.js +0 -332
- package/src/boost/hardware-detector.js +0 -486
- package/src/boost/hydrator.js +0 -398
- package/src/boost/index.js +0 -60
- package/src/boost/orchestrator.js +0 -615
- package/src/boost/preamble.js +0 -217
- package/src/boost/profile-registry.js +0 -264
- package/src/boost/self-learn.js +0 -247
- package/src/boost/skeletons/component.skeleton.js +0 -24
- package/src/boost/skeletons/hook.skeleton.js +0 -27
- package/src/boost/skeletons/index.js +0 -67
- package/src/boost/skeletons/page.skeleton.js +0 -22
- package/src/boost/skeletons/service.skeleton.js +0 -20
- package/src/boost/skeletons/store.skeleton.js +0 -18
- package/src/boost/skeletons/type.skeleton.js +0 -11
- package/src/boost/task-dispatcher.js +0 -142
- package/src/boost/validation-loop.js +0 -502
- package/src/cli/commands-ai.js +0 -58
- package/src/cli/commands-boost.js +0 -394
- package/src/cli/commands-init.js +0 -82
- package/src/cli/commands-knowledge.js +0 -79
- package/src/cli/commands-lang.js +0 -43
- package/src/cli/commands-learning.js +0 -54
- package/src/cli/commands-work.js +0 -95
- package/src/commands/context-compact.js +0 -129
- package/src/commands/wizard.js +0 -458
- package/src/commands/workflow/discovery/index.js +0 -86
- package/src/commands/workflow/specification/index.js +0 -115
- package/src/docgen/generator.js +0 -200
- package/src/docgen/mermaid/generator.js +0 -147
- package/src/docgen/templates/architecture.hbs +0 -51
- package/src/docgen/templates/backlog.hbs +0 -32
- package/src/docgen/templates/requirements.hbs +0 -44
- package/src/docgen/templates/user-stories.hbs +0 -27
- package/src/docgen/templates/vision.hbs +0 -20
- package/src/mcp-plan-server.js +0 -895
- package/src/mcp-refactor/handlers/boost.js +0 -295
- package/src/persistence/sqlite/connection.js +0 -125
- package/src/persistence/sqlite/migrations.js +0 -139
- package/src/persistence/sqlite/queries.js +0 -529
- package/src/persistence/sqlite/schema.js +0 -164
- package/src/wizard/orchestrator.js +0 -217
package/bin/cli.js
CHANGED
|
@@ -10,18 +10,12 @@ import { readFileSync } from "fs"
|
|
|
10
10
|
import { join, dirname } from "path"
|
|
11
11
|
import { fileURLToPath } from "url"
|
|
12
12
|
|
|
13
|
-
import { register as registerInit } from "../src/cli/commands-init.js"
|
|
14
13
|
import { register as registerContext } from "../src/cli/commands-context.js"
|
|
15
|
-
import { register as registerAi } from "../src/cli/commands-ai.js"
|
|
16
|
-
import { register as registerLang } from "../src/cli/commands-lang.js"
|
|
17
|
-
import { register as registerKnowledge } from "../src/cli/commands-knowledge.js"
|
|
18
|
-
import { register as registerWork } from "../src/cli/commands-work.js"
|
|
19
|
-
import { register as registerLearning } from "../src/cli/commands-learning.js"
|
|
20
14
|
import { register as registerOpl } from "../src/cli/commands-opl.js"
|
|
21
15
|
import { register as registerMisc } from "../src/cli/commands-misc.js"
|
|
22
16
|
import { register as registerWorkflow } from "../src/cli/commands-workflow.js"
|
|
23
17
|
import { register as registerTeach } from "../src/cli/commands-teach.js"
|
|
24
|
-
|
|
18
|
+
|
|
25
19
|
|
|
26
20
|
import { handleUncaughtErrors, EXIT_CODES } from "../src/utils/errors.js"
|
|
27
21
|
|
|
@@ -58,17 +52,10 @@ program
|
|
|
58
52
|
registerOpl(program)
|
|
59
53
|
|
|
60
54
|
// Registrar comandos existentes
|
|
61
|
-
registerInit(program)
|
|
62
55
|
registerContext(program)
|
|
63
|
-
registerAi(program)
|
|
64
|
-
registerLang(program)
|
|
65
|
-
registerKnowledge(program)
|
|
66
|
-
registerWork(program)
|
|
67
|
-
registerLearning(program)
|
|
68
56
|
registerMisc(program)
|
|
69
57
|
registerWorkflow(program)
|
|
70
58
|
registerTeach(program)
|
|
71
|
-
registerBoost(program)
|
|
72
59
|
|
|
73
60
|
try {
|
|
74
61
|
await program.parseAsync(process.argv)
|
package/bin/mcp-plan.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// @contract(in: argv -> out: void, sideEffect: inicia servidor MCP modo plan)
|
|
5
5
|
// @limit(lines: 20)
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { startServer } from "../src/mcp-server.js"
|
|
8
8
|
|
|
9
|
-
// MCP Plan Server —
|
|
10
|
-
//
|
|
11
|
-
await
|
|
9
|
+
// MCP Plan Server — tools de planificación están ahora en el servidor principal
|
|
10
|
+
// (merged in BUG-012: mcp-plan-server.js eliminado, tools integradas en mcp-server.js)
|
|
11
|
+
await startServer()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AGENTS.template.md — Plantilla Universal para Proyectos
|
|
2
2
|
|
|
3
|
-
> **Versión:**
|
|
3
|
+
> **Versión:** 2.0 (estructura navegable)
|
|
4
4
|
> **Uso:** La IA debe ejecutar el Protocolo de Inicialización al detectar un proyecto sin AGENTS.md o con AGENTS.md incompleto.
|
|
5
5
|
|
|
6
6
|
---
|
|
@@ -25,11 +25,16 @@ Leer package.json:
|
|
|
25
25
|
ejecutar: opl init → Crea prompt-lang.json y estructura base docs/
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
### Paso 3: Generar AGENTS.md
|
|
28
|
+
### Paso 3: Generar AGENTS.md y secciones
|
|
29
29
|
```
|
|
30
|
-
Copiar ESTE archivo como AGENTS.md en la raíz del proyecto
|
|
31
|
-
Reemplazar "## Stack" con las tecnologías detectadas
|
|
32
|
-
|
|
30
|
+
1. Copiar ESTE archivo como AGENTS.md en la raíz del proyecto (versión resumida)
|
|
31
|
+
2. Reemplazar "## Stack" con las tecnologías detectadas
|
|
32
|
+
3. CREAR docs/02-STANDARDS/sections/ con archivos extraídos:
|
|
33
|
+
- 01-workflow.md → Workflow + gates + enforcement
|
|
34
|
+
- 02-annotations.md → @kind, @limit, cobertura
|
|
35
|
+
- 03-conventions.md → Stack detallado, código, UI
|
|
36
|
+
- 04-commands.md → CLI, PRA, knowledge
|
|
37
|
+
- 05-reference.md → Doc structure, setup
|
|
33
38
|
```
|
|
34
39
|
|
|
35
40
|
### Paso 4: Detectar archivos fuente sin anotaciones
|
|
@@ -87,3 +92,4 @@ senior
|
|
|
87
92
|
## Referencias
|
|
88
93
|
- Framework: openPrompt-Lang
|
|
89
94
|
- Tickets OPL: `opl ticket list`
|
|
95
|
+
- Estructura navegable: `docs/02-STANDARDS/sections/` — 01-workflow, 02-annotations, 03-conventions, 04-commands, 05-reference
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// @use(kind, contract, limit)
|
|
2
|
+
// @kind(guide)
|
|
3
|
+
// @contract(in: session start -> out: readiness, sideEffect: AI carga los contextos correctos, evita errores comunes)
|
|
4
|
+
// @limit(lines: 40)
|
|
5
|
+
|
|
6
|
+
# 🆕 Primeros 5 Minutos — Playbook de Inicio
|
|
7
|
+
|
|
8
|
+
Esto se lee **al empezar cualquier sesión** (después de AGENTS.md + 01-workflow.md + 02-annotations.md).
|
|
9
|
+
|
|
10
|
+
## 1. ¿Qué estoy haciendo?
|
|
11
|
+
| Si la tarea es... | Workflow |
|
|
12
|
+
|-------------------|----------|
|
|
13
|
+
| Bugfix / depuración | Bugfix → ticket primero, fix rápido, validate |
|
|
14
|
+
| Feature nueva | Feature → plan + implementación con anotaciones |
|
|
15
|
+
| Refactor | Refactor → analyze_blast_radius, plan, implementar |
|
|
16
|
+
| Research / exploración | Research → knowledge_search, recall |
|
|
17
|
+
| Revisión de PR | Review → validate, lint_file |
|
|
18
|
+
|
|
19
|
+
## 2. Pasos automáticos al arrancar
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
1. analyze_project → entender estructura
|
|
23
|
+
2. context_unified → búsqueda cruzada en 7 fuentes
|
|
24
|
+
3. recall "tema" → errores pasados relacionados
|
|
25
|
+
4. Todowrite → desglosar tareas
|
|
26
|
+
5. work_context_start → iniciar tracking
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 3. Errores comunes al empezar (no repetir)
|
|
30
|
+
|
|
31
|
+
- ❌ Leer el AGENTS.md completo → leer solo índice, cargar bajo demanda
|
|
32
|
+
- ❌ Implementar sin `work_context_start` → siempre iniciar sesión primero
|
|
33
|
+
- ❌ Crear componente sin buscar template primero → `search_templates` + `teach_template`
|
|
34
|
+
- ❌ Hacer un refactor sin `analyze_blast_radius` → siempre analizar impacto
|
|
35
|
+
- ❌ Commitear sin `opl validate` → el pre-commit hook te va a bloquear igual
|
|
36
|
+
|
|
37
|
+
## 4. ¿Tengo claro lo que voy a hacer antes de escribir?
|
|
38
|
+
|
|
39
|
+
Sí → `work_context_plan` si es feature/refactor, después implementar
|
|
40
|
+
No → `context_unified` + `knowledge_search` primero
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// @use(kind, contract, limit)
|
|
2
|
+
// @kind(guide)
|
|
3
|
+
// @contract(in: session awareness -> out: workflow selected, sideEffect: AI sigue el flujo correcto)
|
|
4
|
+
// @limit(lines: 150)
|
|
5
|
+
|
|
6
|
+
# Workflow OPL — Reglas Absolutas y Flujo Único
|
|
7
|
+
|
|
8
|
+
→ Complementos: [02-annotations.md](./02-annotations.md) para reglas de anotación | [00-first-5-min.md](./00-first-5-min.md) para onboarding rápido
|
|
9
|
+
|
|
10
|
+
## ⛔ Regla Fundacional
|
|
11
|
+
`@limit(lines: N)` NO es sugerencia — bloquea el commit. Refactorizar antes de committiar.
|
|
12
|
+
Excepción: `// @limit(lines: 250, reason: "justificación")` documenta deuda técnica.
|
|
13
|
+
|
|
14
|
+
## 🧭 Árbol de Decisión — ¿Qué flujo sigo?
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
¿Qué tipo de tarea?
|
|
18
|
+
├── Bugfix / debug
|
|
19
|
+
│ → ticket → analyze_blast_radius → fix → @learn-error → validate → close
|
|
20
|
+
├── Feature nueva
|
|
21
|
+
│ → context_unified → plan → implementar (anotaciones primero) → validate → close
|
|
22
|
+
├── Refactor / deuda técnica
|
|
23
|
+
│ → analyze_blast_radius → plan → implementar → validate → close
|
|
24
|
+
├── Research / explorar
|
|
25
|
+
│ → knowledge_search + recall → documentar hallazgos → close
|
|
26
|
+
└── Onboarding / proyecto nuevo
|
|
27
|
+
→ analyze_project → domain_status → context_unified → recall → templates → close
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Flujo Obligatorio (8 pasos, siempre este orden)
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
1. → workflow_select "opl workflow select <descripción>"
|
|
34
|
+
(OBLIGATORIO — bloquea implementación)
|
|
35
|
+
2. → create_ticket "opl ticket create --title ... --severity ..."
|
|
36
|
+
(OBLIGATORIO — bloquea escritura de código)
|
|
37
|
+
3. → check_gates workflow_selected ✓, ticket_created ✓, plan_approved ✓ (si aplica)
|
|
38
|
+
4. → work_context_plan Planificar (features/refactors, bugfixes pueden saltar)
|
|
39
|
+
5. → implementar Codificar con anotaciones OPL primero
|
|
40
|
+
6. → validate "opl validate" antes de cerrar
|
|
41
|
+
7. → docs_updated Actualizar documentación (OBLIGATORIO)
|
|
42
|
+
8. → work_context_close Cerrar sesión con reporte
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Regla #1:** `workflow select` primero — Sin workflow no hay implementación.
|
|
46
|
+
**Regla #2:** `ticket create` antes de código — Sin ticket no se escribe código.
|
|
47
|
+
**Regla #3:** `docs_updated` antes de cerrar — Sin docs no se cierra sesión.
|
|
48
|
+
**Regla #4:** `work_context_plan` para features/refactors — Bugfixes simples pueden saltar.
|
|
49
|
+
|
|
50
|
+
## Gates Evaluados Automáticamente
|
|
51
|
+
|
|
52
|
+
| Gate | Verifica | Bloquea |
|
|
53
|
+
|------|----------|---------|
|
|
54
|
+
| `workflow_selected` | `workflow select` ejecutado | Siempre |
|
|
55
|
+
| `ticket_created` | Ticket abierto existe | Siempre |
|
|
56
|
+
| `plan_approved` | Plan reciente existe | Features/refactors |
|
|
57
|
+
| `docs_updated` | Docs actualizados (<4h) | Antes de cerrar |
|
|
58
|
+
|
|
59
|
+
## Enforcement MCP (v0.10.0+)
|
|
60
|
+
|
|
61
|
+
El servidor MCP rastrea tu sesión y verifica que sigas el workflow. Si omites pasos:
|
|
62
|
+
- **Guide mode** (default): Recibirás sugerencias con tiempo ahorrado estimado — el tool se ejecuta igual
|
|
63
|
+
- **Gate mode** (`strictMode: true` en prompt-lang.json): El tool se BLOQUEA hasta que cumplas los prerrequisitos
|
|
64
|
+
- **Learn mode**: Si encuentras errores tras omitir pasos, se crea un ticket automático
|
|
65
|
+
|
|
66
|
+
### Flujo Obligatorio (MCP tools)
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
1. analyze_project → Conoce el proyecto (30s, ahorra ~15min)
|
|
70
|
+
2. workflow_check → Verifica qué pasos faltan en tu sesión
|
|
71
|
+
3. context_unified → Búsqueda cruzada en 7 fuentes
|
|
72
|
+
4. knowledge_search o recall → Buscar antes de crear (10s, ahorra ~30min)
|
|
73
|
+
5. work_context_plan → Planificar antes de implementar (1min, ahorra ~1hr)
|
|
74
|
+
6. work_context_start → Iniciar sesión con tracking
|
|
75
|
+
7. work_context_close → Cerrar sesión y registrar métricas
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Workflow: Debugging annotation errors
|
|
79
|
+
1. `analyze_project` → ver el panorama
|
|
80
|
+
2. `validate` → encontrar errores
|
|
81
|
+
3. `lint_file` → debug de archivos específicos
|
|
82
|
+
4. Fix + `@learn-error` → documentar
|
|
83
|
+
5. `generate_tests` → tests de regresión
|
|
84
|
+
6. `validate` → verificar fix
|
|
85
|
+
|
|
86
|
+
### Workflow: Nueva feature o implementación
|
|
87
|
+
1. `context_unified` + `knowledge_search` → buscar antes de crear
|
|
88
|
+
2. `domain_status` → ver dominio activo y patrones
|
|
89
|
+
3. `search_templates` + `teach_template` → aprender patrones existentes
|
|
90
|
+
4. `work_context_plan` → planificar
|
|
91
|
+
5. `work_context_start` → iniciar sesión
|
|
92
|
+
6. Implementar con anotaciones
|
|
93
|
+
7. `validate` → verificar
|
|
94
|
+
8. `work_context_close` → cerrar sesión
|
|
95
|
+
|
|
96
|
+
### Workflow: Onboarding a proyecto nuevo
|
|
97
|
+
1. `analyze_project` → estructura
|
|
98
|
+
2. `domain_status` → dominios y patrones
|
|
99
|
+
3. `context_unified` → contexto completo en 7 fuentes
|
|
100
|
+
4. `recall "keyword"` → memoria del proyecto
|
|
101
|
+
5. `search_templates` + `teach_template` → patrones clave
|
|
102
|
+
|
|
103
|
+
### Autonomía Táctica (Tridente para mutaciones)
|
|
104
|
+
`analyze_blast_radius` → `ast_patch_mutate` → `execute_sandbox`
|
|
105
|
+
1. No se muta código a ciegas
|
|
106
|
+
2. Toda mutación pasa por análisis de impacto previo
|
|
107
|
+
3. Todo parche se verifica en sandbox antes de cerrarse
|
|
108
|
+
|
|
109
|
+
## Hook pre-commit
|
|
110
|
+
`.husky/pre-commit` corre `npx openprompt-lang validate --strict` antes de cada commit.
|
|
111
|
+
Bloquea commits si hay violaciones @limit o errores de anotaciones.
|
|
112
|
+
Emergencias: `git commit --no-verify` (documentar por qué).
|
|
113
|
+
|
|
114
|
+
Setup completo: [05-reference.md](./05-reference.md#setup-de-enforcement)
|
|
115
|
+
|
|
116
|
+
## ⛔ NUNCA
|
|
117
|
+
- Cerrar sesión sin `work_context_close`
|
|
118
|
+
- Implementar sin `work_context_start`
|
|
119
|
+
- Fixear bug sin crear ticket
|
|
120
|
+
- Hacer commit sin `opl validate --strict`
|
|
121
|
+
- Saltear `opl workflow select`
|
|
122
|
+
- Detectar bug y fixearlo sin ticket primero
|
|
123
|
+
- Cerrar sesión sin actualizar documentación
|
|
124
|
+
- Corregir error sin `@learn-error` (→ ver [02-annotations.md](./02-annotations.md#-learn-error))
|
|
125
|
+
- Crear plan sin revisar `recall` primero
|
|
126
|
+
- Crear archivo sin `@use` con anotaciones
|
|
127
|
+
- Modificar `*.template.*` directamente
|
|
128
|
+
- Modificar `prompt-lang.json` sin consultar
|
|
129
|
+
|
|
130
|
+
## 📋 Reporte de Workflow (obligatorio al cerrar)
|
|
131
|
+
```
|
|
132
|
+
## 📋 Reporte de Workflow — Sesión [FECHA]
|
|
133
|
+
|
|
134
|
+
### ✅ Pasos Ejecutados
|
|
135
|
+
| Paso | Comando | Resultado |
|
|
136
|
+
|------|---------|-----------|
|
|
137
|
+
| 1. Iniciar sesión | work_context_start | ✅ |
|
|
138
|
+
| 2. Analizar proyecto | analyze_project | ✅ |
|
|
139
|
+
| 3. Validar anotaciones | opl validate | ✅ 0 errores |
|
|
140
|
+
| 4. Buscar errores previos | recall | ✅ N encontrados |
|
|
141
|
+
| 5. Seleccionar workflow | opl workflow select | ✅ |
|
|
142
|
+
| 6. TODO list | todowrite | ✅ N tareas |
|
|
143
|
+
|
|
144
|
+
### 🔍 Validación Final
|
|
145
|
+
| Check | Resultado |
|
|
146
|
+
|-------|-----------|
|
|
147
|
+
| tsc --noEmit | ✅ 0 errores |
|
|
148
|
+
| opl validate | ✅ 0 errores |
|
|
149
|
+
| Cobertura @use | X% |
|
|
150
|
+
```
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// @use(kind, contract, limit)
|
|
2
|
+
// @kind(reference)
|
|
3
|
+
// @contract(in: file creation/modification -> out: properly annotated code, sideEffect: prevents commit blocks from @limit violations)
|
|
4
|
+
// @limit(lines: 100)
|
|
5
|
+
|
|
6
|
+
# Anotaciones OPL — @kind, @limit, Cobertura
|
|
7
|
+
|
|
8
|
+
→ Complementos: [01-workflow.md](./01-workflow.md) para flujo de trabajo | [03-conventions.md](./03-conventions.md) para stack y convenciones de código
|
|
9
|
+
|
|
10
|
+
## 📐 Límites de Líneas (OBLIGATORIOS, bloquean commit)
|
|
11
|
+
|
|
12
|
+
| @kind | Líneas máx | Anotaciones requeridas | Prohibido |
|
|
13
|
+
|-------|------------|------------------------|-----------|
|
|
14
|
+
| `hook` | 80 | `@contract` | `@props` |
|
|
15
|
+
| `component` | 120 | `@props` | `@contract` |
|
|
16
|
+
| `page` | 200 | `@compose` | — |
|
|
17
|
+
| `service` | 150 | `@contract` | `@props` |
|
|
18
|
+
| `store` | 100 | `@deps` | — |
|
|
19
|
+
| `layout` | 150 | — | — |
|
|
20
|
+
| `util` | 100 | — | `@state` |
|
|
21
|
+
| `type` | sin límite | — | `@limit` |
|
|
22
|
+
|
|
23
|
+
Excepción documentada:
|
|
24
|
+
```typescript
|
|
25
|
+
// @limit(lines: 250, reason: "justificación obligatoria de por qué se excede")
|
|
26
|
+
```
|
|
27
|
+
Sin `reason`, el límite bloquea en strict mode. Con `reason`, aparece como deuda documentada.
|
|
28
|
+
|
|
29
|
+
## 📋 Reglas de Cobertura de Anotaciones
|
|
30
|
+
|
|
31
|
+
**Deben tener `@use` al inicio:**
|
|
32
|
+
|
|
33
|
+
| Patrón | @kind requerido |
|
|
34
|
+
|--------|-----------------|
|
|
35
|
+
| `src/lib/api/*.ts` | `@kind(service)` |
|
|
36
|
+
| `src/lib/*.ts` | `@kind(service)` o `@kind(utility)` |
|
|
37
|
+
| `src/features/*/hooks/*.ts` | `@kind(hook)` |
|
|
38
|
+
| `src/pages/*.tsx` | `@kind(page)` |
|
|
39
|
+
| `src/features/*/pages/*.tsx` | `@kind(page)` |
|
|
40
|
+
| `src/contexts/*.tsx` | `@kind(context)` |
|
|
41
|
+
| `src/features/*/components/*.tsx` | `@kind(component)` |
|
|
42
|
+
|
|
43
|
+
**KPI cobertura objetivo: > 80% de archivos fuente con @use**
|
|
44
|
+
|
|
45
|
+
## Secuencia obligatoria de anotaciones
|
|
46
|
+
1. Identificar archivo y su capa (commands/, core/, persistence/, etc.)
|
|
47
|
+
2. Definir propósito, responsabilidades y límites
|
|
48
|
+
3. Escribir anotaciones en este orden: `@kind` → `@contract` → `@limit` → `@deps` → `@pattern` → `@teachMe`/`@level`/`@prerequisite`/`@learning-objective`
|
|
49
|
+
4. Validar coherencia con capa, dominio y workflow activo
|
|
50
|
+
5. **Recién entonces** implementar la lógica
|
|
51
|
+
|
|
52
|
+
## Anotaciones esperadas por capa
|
|
53
|
+
|
|
54
|
+
| Capa | @kind | @contract | @limit | @deps | Otras |
|
|
55
|
+
|------|-------|-----------|--------|-------|-------|
|
|
56
|
+
| commands/ | `module` | Requerido | 150 | Según deps | — |
|
|
57
|
+
| core/ | `module` | Requerido | 150 | Según deps | @pattern si aplica |
|
|
58
|
+
| persistence/ | `module` | Requerido | 150 | Según deps | — |
|
|
59
|
+
| wizard/ | `module` | Requerido | 200 | Según deps | @pattern si aplica |
|
|
60
|
+
| docgen/ | `module` | Requerido | 200 | Según deps | @pattern si aplica |
|
|
61
|
+
|
|
62
|
+
**Regla:** No iniciar implementación si el archivo no tiene anotaciones OPL primero.
|
|
63
|
+
|
|
64
|
+
## 🧠 @learn-error — Aprendizaje Obligatorio de Errores
|
|
65
|
+
|
|
66
|
+
Cada vez que se corrige un error:
|
|
67
|
+
1. Crear ticket: `opl ticket create --title "..." --severity <level>`
|
|
68
|
+
2. Fixear el bug
|
|
69
|
+
3. Documentar con `@learn-error` en el código:
|
|
70
|
+
```typescript
|
|
71
|
+
// @learn-error(id: '<CATEGORÍA>-<NNN>', input: 'qué causó el error', expected: 'cómo debería ser', actual: 'qué pasó', fix: 'cómo se corrigió')
|
|
72
|
+
```
|
|
73
|
+
4. Cerrar ticket: `opl ticket close BUG-XXX`
|
|
74
|
+
5. El `@learn-error` se consulta automáticamente con `recall` en la próxima sesión
|
|
75
|
+
|
|
76
|
+
**Antes de crear un plan:** ejecutar `recall` para buscar @learn-error relacionados. Incluir precauciones en el plan.
|
|
77
|
+
|
|
78
|
+
## @scar — Cicatrices de Guerra (conocimiento negativo)
|
|
79
|
+
```typescript
|
|
80
|
+
// @scar(id: 'modal-scroll-lock', symptom: 'Modales anidados rompen scroll', cause: 'Estado local aislado', fix: 'hook centralizado', detect: 'document.body.style.overflow === "hidden" && !useLayoutScrollLock', severity: 'blocker', domains: ['frontend', 'accessibility'])
|
|
81
|
+
```
|
|
82
|
+
Campos: id (req), symptom (req), cause (req), fix (req), detect (opcional), severity (opcional: blocker/critical/warning/info), domains (opcional)
|
|
83
|
+
|
|
84
|
+
## Contratos Abstractos
|
|
85
|
+
IR que separa Contrato (esencia) de Sintaxis (framework):
|
|
86
|
+
```
|
|
87
|
+
Contrato Real = Contrato Abstracto + Adapter Sintáctico
|
|
88
|
+
```
|
|
89
|
+
- `opl contract list/show/search` — Gestionar contratos
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// @use(kind, contract, limit)
|
|
2
|
+
// @kind(reference)
|
|
3
|
+
// @contract(in: coding task -> out: code following project conventions, sideEffect: consistent code style across files)
|
|
4
|
+
// @limit(lines: 60)
|
|
5
|
+
|
|
6
|
+
# Convenciones — Stack, Código, UI, Templates
|
|
7
|
+
|
|
8
|
+
→ Complementos: [02-annotations.md](./02-annotations.md) para reglas de anotación por capa | [04-commands.md](./04-commands.md) para templates disponibles via teach_template
|
|
9
|
+
|
|
10
|
+
## Stack del proyecto
|
|
11
|
+
- React 19 + TypeScript + Vite 7 + Tailwind v4 (Estándar consistente)
|
|
12
|
+
- Node.js + Express (TypeScript, ESM)
|
|
13
|
+
- Spring Boot + Java (Controllers, Services, Repositories, DTOs)
|
|
14
|
+
- Supabase (Backend/Auth/Storage)
|
|
15
|
+
- Lucide React (Iconos) · Sonner (Notificaciones) · Radix UI (Primitivos accesibles)
|
|
16
|
+
|
|
17
|
+
## Módulos de Lenguaje (Templates)
|
|
18
|
+
| Módulo | Templates | Versión |
|
|
19
|
+
|--------|-----------|---------|
|
|
20
|
+
| React + TypeScript (Vite) | 23 | 1.1.0 |
|
|
21
|
+
| Vue 3 + Nuxt | 12 | 1.0.0 |
|
|
22
|
+
| Node.js + Express (TypeScript) | 12 | 1.0.0 |
|
|
23
|
+
| Spring Boot (Java) | 8 | 1.0.0 |
|
|
24
|
+
| OpenPrompt Core Knowledge | 3 | 1.0.0 |
|
|
25
|
+
|
|
26
|
+
## Convenciones de Código
|
|
27
|
+
- **Context Engine**: openPrompt-Lang (@kind, @contract, @limit annotations)
|
|
28
|
+
- **Anotaciones primero**: No escribir implementación sin anotaciones previas
|
|
29
|
+
- **Exports**: Named Exports sobre Default Exports
|
|
30
|
+
- **Funciones**: Preferir `export function Name() {}` sobre arrow functions para componentes
|
|
31
|
+
- **Tipado**: NO usar `any`. Tipar retornos de hooks y props de componentes.
|
|
32
|
+
- **Iconos**: Preferir SVG inline o componentes dedicados si son pocos
|
|
33
|
+
- **Validación**: `npx openPrompt-Lang validate` antes de cada commit
|
|
34
|
+
|
|
35
|
+
### Convenciones por lenguaje
|
|
36
|
+
- **React**: component/page/hook/service/store → shadcn/ui pattern (cva + cn())
|
|
37
|
+
- **Node.js**: controller/service/route/middleware/model/repository → ESM imports, no CommonJS
|
|
38
|
+
- **Java/Spring Boot**: controller/service/repository/entity/DTO → getters/setters explícitos (no Lombok)
|
|
39
|
+
|
|
40
|
+
## UI & Diseño
|
|
41
|
+
- **Colores**: El usuario elige la paleta. La IA NO inventa colores base a menos que se le pida.
|
|
42
|
+
- **Modo Oscuro**: Soporte nativo (default: dark).
|
|
43
|
+
- **Componentes**: Patrón shadcn/ui (cva + cn()).
|
|
44
|
+
- **Layout**: Header tipo "pill flotante" centrado con backdrop-blur para landing pages.
|
|
45
|
+
|
|
46
|
+
## Templates disponibles
|
|
47
|
+
- `button-shadcn`, `input-shadcn`, `select-shadcn`, `card-shadcn`, `modal-dialog`, `datatable-shadcn`
|
|
48
|
+
- `hook-useAuth`, `hook-useDebounce`, `hook-usePagination`, `hook-useForm`
|
|
49
|
+
- `service-api`
|
|
50
|
+
|
|
51
|
+
Buscar: `search_templates` / `teach_template` para aprender patrones existentes.
|
|
52
|
+
|
|
53
|
+
## Calidad y QA
|
|
54
|
+
- **Errores**: Documentar con `// @learn-error id=ID fix='...'`
|
|
55
|
+
- **Tests**: `npx openPrompt-Lang qa-gen` tras corregir errores
|
|
56
|
+
- **Anotaciones**: `@use()` al inicio si se usan utilidades externas
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Comandos OPL — CLI, PRA, Knowledge, Pipeline
|
|
2
|
+
|
|
3
|
+
## CLI — Comandos principales
|
|
4
|
+
- `opl` (sin args) → Pantalla de bienvenida "puerta de entrada"
|
|
5
|
+
- `opl help` → Misma pantalla de bienvenida
|
|
6
|
+
- `opl tutorial` → Recorrido guiado interactivo (7 min)
|
|
7
|
+
- `opl workflow select <desc>` → Seleccionar workflow con detección automática
|
|
8
|
+
- `opl ticket create/list/close` → Gestión de tickets (OBLIGATORIO antes de código)
|
|
9
|
+
- `opl init --knowledge` → Configurar biblioteca personal ~/.opl/knowledge/
|
|
10
|
+
- `opl upgrade` → Migrar configuración a versión actual
|
|
11
|
+
- `opl validate [--file <path>] [--strict]` → Validar anotaciones
|
|
12
|
+
- `opl lint_file <path>` → Debug de anotaciones de archivo específico
|
|
13
|
+
- `opl generate_tests` → Generar tests de regresión desde @learn-error
|
|
14
|
+
- `opl session doc/close/diff` → Gestión de sesiones con documentación
|
|
15
|
+
- `opl doc flow/framework` → Generar documentación (Mermaid, FRAMEWORK.md)
|
|
16
|
+
|
|
17
|
+
## Comandos de Conocimiento
|
|
18
|
+
- `opl index [path]` → Navegar conocimiento por niveles
|
|
19
|
+
- `opl read <dominio>/<id>` → Leer contenido (--chapter n --full)
|
|
20
|
+
- `opl search <query>` → Búsqueda híbrida (tags + fulltext + semántica)
|
|
21
|
+
- `opl system [name]` → Explorar sistemas de conocimiento (10 sistemas)
|
|
22
|
+
- `opl contract list/show/search` → Gestionar contratos abstractos
|
|
23
|
+
- `opl graph [concept]` → Grafo de relaciones entre conceptos
|
|
24
|
+
|
|
25
|
+
## Production Readiness Assessment (PRA)
|
|
26
|
+
- **7 dimensiones**: Funcionalidad (25%), Calidad (20%), Seguridad (15%), Resiliencia (10%), Observabilidad (10%), Compliance (10%), Despliegue (10%)
|
|
27
|
+
- **28 criterios** con scoring 0-100 por criterio
|
|
28
|
+
- **Rangos**: 💀 Pre-Alfa (0-20) → 🔴 Alfa (21-40) → 🟡 Beta (41-60) → 🟢 RC (61-80) → 🔵 Prod-Ready (81-95) → 🟣 Hardened (96-100)
|
|
29
|
+
- **Zero-tolerance**: F5 (transacciones atómicas), S2 (deny-by-default), S4 (no hardcoded secrets)
|
|
30
|
+
- **IA ceiling**: 78 solo código / 85 con config / 90 con guías deploy
|
|
31
|
+
- `opl assess [--verbose] [--save]` → Evaluar PRA
|
|
32
|
+
- `opl workflow qa-assess` → Evaluación completa con PRA + recall + validate + findings
|
|
33
|
+
|
|
34
|
+
## Comandos Dominio y Pattern
|
|
35
|
+
- `context domain init/use/switch/clear/status/load` — Dominios modulares
|
|
36
|
+
- `learn-pattern --from <docs> --type <type> --name <name>` — Extraer patrones
|
|
37
|
+
- `pattern-list [--domain <domain>]` — Listar patrones por dominio
|
|
38
|
+
|
|
39
|
+
Todos los comandos `knowledge list/learning search/ticket create/list/recall` aceptan `--domain`.
|
|
40
|
+
|
|
41
|
+
## Pipeline Auto-curativo
|
|
42
|
+
validate paso [4/5] tiene auto-healing loop:
|
|
43
|
+
1. Ejecuta tsc/lint/format-check
|
|
44
|
+
2. Si falla → lint:fix / format:fix
|
|
45
|
+
3. Reintenta hasta 3 veces
|
|
46
|
+
4. Si persiste → registra @learn-error automático
|
|
47
|
+
|
|
48
|
+
Configurable en `prompt-lang.json` → `pipeline.autoheal`
|
|
49
|
+
|
|
50
|
+
## Conocimiento (Knowledge)
|
|
51
|
+
- **13 dominios**: payments, mobile-pwa, systems, qa, frontend, backend, accessibility, algorithms, fundamentals, architecture, typescript, saas, restaurant
|
|
52
|
+
- **13 playbooks**: flow-integration, capacitor-setup, rust-ownership, scrum-workflow, frontend-react, backend-nodejs, accessibility-wcag, algorithms-patterns, fundamentals-programs, spa-auth-flow, api-rest-design, db-schema-design, microservice-architecture
|
|
53
|
+
- **35 fuentes** de conocimiento empaquetadas (libros/docs + 2 proyectos reales)
|
|
54
|
+
- **10 sistemas de conocimiento**: agrupaciones de fuentes que se necesitan juntas
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Referencia — Documentación, Estructura, Setup
|
|
2
|
+
|
|
3
|
+
## Documentación del proyecto
|
|
4
|
+
```
|
|
5
|
+
docs/
|
|
6
|
+
├── INDEX.md ← Mapa maestro del proyecto
|
|
7
|
+
├── 00-ARCHITECTURE/ ← Stack, flujos, esquemas
|
|
8
|
+
├── 01-AUDITS/ ← Auditorías de código y recursos
|
|
9
|
+
├── 02-STANDARDS/ ← Convenciones, patrones, guías OPL
|
|
10
|
+
│ ├── sections/ ← Archivos extraídos de AGENTS.md (carga bajo demanda)
|
|
11
|
+
│ └── ticket-driven-development.md ← Proceso TDD completo
|
|
12
|
+
├── 03-SPRINTS/ ← Planificación ágil por sprint
|
|
13
|
+
├── 04-TICKETS/ ← Tickets ejecutables por sprint
|
|
14
|
+
└── 05-REFERENCES/ ← Referencias externas
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Referencia Canónica
|
|
18
|
+
- **Manual completo**: `.openprompt/FRAMEWORK.md` — anotaciones, comandos CLI, MCP, dominios, módulos, reglas estrictas
|
|
19
|
+
- **Proceso TDD**: `docs/02-STANDARDS/ticket-driven-development.md`
|
|
20
|
+
- **Plantilla universal AGENTS.md**: `docs/02-STANDARDS/AGENTS.template.md`
|
|
21
|
+
- **Pre-commit hook**: `scripts/pre-commit-opl.sh` (deployable), `.husky/pre-commit` (activo)
|
|
22
|
+
- **Enforce setup**: `scripts/opl-enforce-setup.mjs` (interactivo), `npm run opl:enforce`
|
|
23
|
+
|
|
24
|
+
## Setup de Enforcement
|
|
25
|
+
```bash
|
|
26
|
+
# Configurar enforcement completo (Ollama + pre-commit hook + agentes)
|
|
27
|
+
npm run opl:enforce
|
|
28
|
+
|
|
29
|
+
# O manualmente:
|
|
30
|
+
cp scripts/pre-commit-opl.sh .git/hooks/pre-commit
|
|
31
|
+
chmod +x .git/hooks/pre-commit
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Contexto Navegable (NIVEL 0-3)
|
|
35
|
+
La IA debe navegar el contexto por niveles:
|
|
36
|
+
- **NIVEL 0**: AGENTS.md — Índice (~200 tokens). Leer siempre primero.
|
|
37
|
+
- **NIVEL 1**: sections/01-workflow.md + 02-annotations.md — Obligatorios (~750 tokens)
|
|
38
|
+
- **NIVEL 2**: sections/03-conventions.md + 04-commands.md — Bajo demanda (~600 tokens)
|
|
39
|
+
- **NIVEL 3**: sections/05-reference.md — Solo cuando necesitas setup o estructura (~200 tokens)
|
|
40
|
+
|
|
41
|
+
## Proceso de Documentación Pre-Close
|
|
42
|
+
Cada sesión se documenta antes de cerrar:
|
|
43
|
+
- `opl session doc` → Documentación automática
|
|
44
|
+
- `opl session close` → Cerrar con validación
|
|
45
|
+
- Gate mode bloquea close si falta documentación
|
|
46
|
+
- Cada sesión deja: resumen.md, decisiones.md, errores.md, aprendizajes.md
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Project Setup — AI Playbook
|
|
2
|
+
|
|
3
|
+
Usa esto cuando necesites configurar un proyecto OPL o entender los requisitos de un proyecto nuevo.
|
|
4
|
+
|
|
5
|
+
## Dos modos
|
|
6
|
+
|
|
7
|
+
### Modo A: Proyecto nuevo (no hay archivos)
|
|
8
|
+
Usa `opl init` (materials-first inference). El CLI pregunta "¿Qué quieres construir?" en **1 pregunta conversacional** — no 54 preguntas secuenciales.
|
|
9
|
+
|
|
10
|
+
El AI detecta automáticamente: framework, lenguaje, bundler, CSS, UI, extensiones.
|
|
11
|
+
|
|
12
|
+
**Si la inferencia es ambigua o incompleta**, puedes hacer preguntas adicionales usando las guías abajo. Pero no las hagas todas — solo las necesarias para resolver ambigüedades.
|
|
13
|
+
|
|
14
|
+
### Modo B: Proyecto existente (hay archivos)
|
|
15
|
+
`opl init` infiere desde materiales reales:
|
|
16
|
+
- `package.json` → dependencias, scripts
|
|
17
|
+
- `tsconfig.json` → JSX, module, target
|
|
18
|
+
- Estructura de archivos → framework, patrones
|
|
19
|
+
- Descripción opcional del usuario
|
|
20
|
+
|
|
21
|
+
Cero preguntas si la inferencia es completa.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Preguntas de Discovery (para AI, conversacionales)
|
|
26
|
+
|
|
27
|
+
Si la inferencia no es suficiente, usa estas preguntas **como guía, no como formulario**. Pregunta naturalmente, una conversación fluida. No preguntes todo — solo lo que falte.
|
|
28
|
+
|
|
29
|
+
### 1️⃣ Problema y Visión
|
|
30
|
+
- ¿Qué problema resuelve el sistema?
|
|
31
|
+
- ¿Para quién es?
|
|
32
|
+
- ¿Qué valor diferencial aporta?
|
|
33
|
+
- ¿Qué pasa si no existe?
|
|
34
|
+
|
|
35
|
+
### 2️⃣ Usuarios y Actores
|
|
36
|
+
- ¿Quiénes usan el sistema? (roles/usuarios)
|
|
37
|
+
- ¿Hay usuarios externos o internos?
|
|
38
|
+
- ¿Hay otros sistemas que interactúan?
|
|
39
|
+
- ¿Qué permisos necesita cada rol?
|
|
40
|
+
|
|
41
|
+
### 3️⃣ Alcance del MVP (MoSCoW)
|
|
42
|
+
- MUST: ¿Qué es indispensable para el MVP?
|
|
43
|
+
- SHOULD: ¿Qué es importante pero no crítico?
|
|
44
|
+
- COULD: ¿Qué se puede agregar después?
|
|
45
|
+
- WON'T: ¿Qué queda fuera del alcance?
|
|
46
|
+
|
|
47
|
+
### 4️⃣ Funcionalidades Clave
|
|
48
|
+
- ¿Cuáles son las 5-7 capacidades principales?
|
|
49
|
+
- ¿Cuál es el flujo principal del usuario?
|
|
50
|
+
- ¿Qué funcionalidades tienen más riesgo técnico?
|
|
51
|
+
|
|
52
|
+
### 5️⃣ Restricciones
|
|
53
|
+
- ¿Restricciones técnicas? (stack, hosting, escalabilidad)
|
|
54
|
+
- ¿Restricciones legales? (GDPR, facturación, retención)
|
|
55
|
+
- ¿Restricciones de negocio? (presupuesto, timeline)
|
|
56
|
+
- ¿Restricciones de UX? (idioma, accesibilidad, dispositivos)
|
|
57
|
+
|
|
58
|
+
### 6️⃣ Integraciones
|
|
59
|
+
- ¿APIs externas? (pagos, auth, envíos, notificaciones)
|
|
60
|
+
- ¿Servicios internos? (microservicios, BD, colas)
|
|
61
|
+
- ¿Webhooks o eventos?
|
|
62
|
+
|
|
63
|
+
### 7️⃣ Riesgos
|
|
64
|
+
- ¿Qué puede salir mal? (riesgos técnicos)
|
|
65
|
+
- ¿Riesgos de negocio?
|
|
66
|
+
- ¿Dependencias críticas?
|
|
67
|
+
- ¿Qué riesgos necesitan mitigación inmediata?
|
|
68
|
+
|
|
69
|
+
### 8️⃣ Criterios de Éxito
|
|
70
|
+
- ¿Cómo saber si el proyecto está bien encaminado?
|
|
71
|
+
- ¿Cuáles son los KPIs del MVP?
|
|
72
|
+
- ¿Qué definirá que el proyecto es exitoso?
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Technical Stack — preguntas de refinamiento por tipo de proyecto
|
|
77
|
+
|
|
78
|
+
Usa SOLO si el usuario no mencionó el área y necesitas decidir.
|
|
79
|
+
|
|
80
|
+
### API
|
|
81
|
+
- Autenticación: none | JWT | Supabase | Auth.js | Clerk
|
|
82
|
+
- Base de datos: none | SQLite | PostgreSQL | MongoDB | Supabase
|
|
83
|
+
- ORM: none | Drizzle | Prisma | TypeORM | Knex
|
|
84
|
+
- Validación: none | Zod | Yup | Joi
|
|
85
|
+
- Testing: Vitest | Jest | none
|
|
86
|
+
|
|
87
|
+
### Web
|
|
88
|
+
- Routing: React Router | TanStack Router | File-based | none
|
|
89
|
+
- Data fetching: TanStack Query | SWR | RTK Query | none
|
|
90
|
+
- State management: Zustand | Redux Toolkit | Jotai | Context only | none
|
|
91
|
+
- Styling: Tailwind | CSS Modules | Styled Components | Vanilla CSS
|
|
92
|
+
|
|
93
|
+
### Mobile
|
|
94
|
+
- Framework: React Native | Capacitor | Tauri
|
|
95
|
+
- Navigation: React Navigation | File-based (Expo) | none
|
|
96
|
+
|
|
97
|
+
### Desktop
|
|
98
|
+
- Framework: Tauri | Electron
|
|
99
|
+
|
|
100
|
+
### Library
|
|
101
|
+
- Bundler: tsup | Rollup | Vite library mode
|
|
102
|
+
- Publish: npm | GitHub Packages | none
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Convenciones de configuración (para IA)
|
|
107
|
+
|
|
108
|
+
Cuando generes `prompt-lang.json` tras el setup:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"name": "<project-name>",
|
|
113
|
+
"version": "0.1.0",
|
|
114
|
+
"lenguaje": "react | vue | node | springboot",
|
|
115
|
+
"strictMode": true,
|
|
116
|
+
"stack": {
|
|
117
|
+
"base": ["react", "typescript", "vite", "tailwind"],
|
|
118
|
+
"ui": "shadcn | mantine | none",
|
|
119
|
+
"extensions": ["supabase", "stripe"],
|
|
120
|
+
"domain": "general | ecommerce | saas"
|
|
121
|
+
},
|
|
122
|
+
"mcp": {
|
|
123
|
+
"servers": { "OPL": "src/mcp-server.js" },
|
|
124
|
+
"protocol": "json-rpc-2.0"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Estructura de directorios (init crea esto)
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
.opencode/work-context/PLANS/
|
|
133
|
+
.opencode/work-context/REPORTS/
|
|
134
|
+
.openprompt/
|
|
135
|
+
docs/COMMITS/
|
|
136
|
+
docs/02-STANDARDS/
|
|
137
|
+
```
|
package/docs/AI_IMPROVEMENTS.md
CHANGED
|
@@ -2,3 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
| Fecha | Mejora | Estado |
|
|
4
4
|
|---|---|---|
|
|
5
|
+
| 2026-06-04 | AGENTS.md rediseñado como índice navegable (418 líneas → 36 líneas). Contenido extraído a 5 secciones bajo demanda en `docs/02-STANDARDS/sections/`. Incluye: `00-first-5-min.md` (playbook de inicio), `01-workflow.md` (workflow + gates + decision tree), `02-annotations.md` (@kind, @limit, @learn-error, @scar), `03-conventions.md` (stack, código, UI), `04-commands.md` (CLI, PRA, knowledge), `05-reference.md` (doc structure, setup). La IA lee ~1K tokens base + 0-300 bajo demanda (vs ~1,800 del monolito). | done |
|
|
6
|
+
| 2026-06-04 | @learn-error AGENTS-001 y AGENTS-002 documentan el problema del monolito y la falta de triggers de lectura. Triggers agregados al índice para secciones bajo demanda. | done |
|
|
7
|
+
| 2026-06-04 | AGENTS.template.md actualizado a v2.0 — instruye crear estructura seccionada en lugar de AGENTS.md plano. | done |
|