el-primor 3.0.0 → 3.0.1
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 +98 -101
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,115 +1,141 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 🏆 El Primor v3.0.0
|
|
2
2
|
|
|
3
3
|
[](https://github.com/fxMT-nx/el-primor)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
[](https://github.com/anomalyco/opencode)
|
|
6
|
+
[](https://www.npmjs.com/package/el-primor)
|
|
6
7
|
|
|
7
|
-
>
|
|
8
|
-
>
|
|
9
|
-
> *The AI assistant that researches, learns, executes, and persists.*
|
|
8
|
+
> *No basta con que funcione. Tiene que estar excelente.*
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
**El Primor** es un sistema de agentes para [OpenCode](https://github.com/anomalyco/opencode) que combina 7 skills especializadas con memoria semántica persistente (TurboVec + SQLite). Diseñado para funcionar con **DeepSeek V4 Pro**, ofrece capacidades de investigación, razonamiento y ejecución que van más allá del conocimiento nativo del LLM.
|
|
10
|
+
**El Primor** es un agente de coding para OpenCode que **recuerda**. No empieza de cero cada sesión — construye una memoria semántica de tu stack, tus decisiones, tus errores y tus patrones. Cuanto más lo usas, más tuyo es.
|
|
14
11
|
|
|
15
12
|
---
|
|
16
13
|
|
|
17
|
-
## 🚀
|
|
14
|
+
## 🚀 Instalación
|
|
18
15
|
|
|
19
|
-
**
|
|
16
|
+
**Humanos:**
|
|
20
17
|
```bash
|
|
21
18
|
npx el-primor init
|
|
22
19
|
```
|
|
23
20
|
|
|
24
|
-
**
|
|
21
|
+
**Agentes AI:** solo dile a tu agente de OpenCode:
|
|
25
22
|
|
|
26
23
|
> *"instala El Primor"*
|
|
27
24
|
|
|
28
|
-
|
|
25
|
+
El agente ejecutará `npx el-primor init` y configurará todo automáticamente: AGENTS.md, 7 skills, TurboVec, MCP server. Sin URLs, sin clones, sin comandos manuales.
|
|
29
26
|
|
|
30
27
|
---
|
|
31
28
|
|
|
32
|
-
## 🧠
|
|
29
|
+
## 🧠 Cómo funciona
|
|
33
30
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
31
|
+
```
|
|
32
|
+
TÚ EL PRIMOR MEMORIA
|
|
33
|
+
│ │ │
|
|
34
|
+
│ "crea un endpoint │ │
|
|
35
|
+
│ de auth con JWT" │ │
|
|
36
|
+
│ ──────────────────────►│ │
|
|
37
|
+
│ │ ┌───────────────────┐ │
|
|
38
|
+
│ │ │ Fase 0: MEMORIA │ │
|
|
39
|
+
│ │ │ turbo_vec_search() │──► busca "auth JWT"
|
|
40
|
+
│ │ └───────────────────┘ │ en ~/.primor/
|
|
41
|
+
│ │ │ │
|
|
42
|
+
│ │ │ ◄────────────│ "Ya hicimos esto
|
|
43
|
+
│ │ │ recupera │ con bcrypt, no JWT"
|
|
44
|
+
│ │ │ contexto │
|
|
45
|
+
│ │ ┌───────────────────┐ │
|
|
46
|
+
│ │ │ Fase 1: ESCUCHAR │ │
|
|
47
|
+
│ │ │ ¿JWT o sesiones? │ │
|
|
48
|
+
│ │ └───────────────────┘ │
|
|
49
|
+
│ │ │ │
|
|
50
|
+
│ │ ┌───────────────────┐ │
|
|
51
|
+
│ │ │ Fase 2: INVESTIGAR│ │
|
|
52
|
+
│ │ │ 1º memoria, 2º web │ │
|
|
53
|
+
│ │ └───────────────────┘ │
|
|
54
|
+
│ │ │ │
|
|
55
|
+
│ │ ... 9 fases ... │
|
|
56
|
+
│ │ │ │
|
|
57
|
+
│ │ ┌───────────────────┐ │
|
|
58
|
+
│ │ │ Fase 8: DOCUMENTAR│ │
|
|
59
|
+
│ │ │ turbo_vec_store() │──► guarda decisiones,
|
|
60
|
+
│ │ └───────────────────┘ │ errores, aprendizajes
|
|
61
|
+
│ │ │
|
|
62
|
+
│ "listo, probado" ◄────│ │
|
|
63
|
+
│ │ │
|
|
64
|
+
│ (día siguiente) │ │
|
|
65
|
+
│ "añade refresh token" │ │
|
|
66
|
+
│ ──────────────────────►│ │
|
|
67
|
+
│ │ turbo_vec_search() ────► ya sabe del contexto
|
|
68
|
+
│ │ "auth previo, bcrypt" │
|
|
69
|
+
│ │ │
|
|
70
|
+
│ │ No pregunta de cero. │
|
|
71
|
+
│ │ Extiende lo que ya sabe.│
|
|
72
|
+
```
|
|
44
73
|
|
|
45
|
-
|
|
74
|
+
**TurboVec** es el motor de memoria: búsqueda semántica (multilingual-e5-small, 384-dim) + SQLite para metadatos. El agente consulta antes de actuar y documenta al terminar. El conocimiento no se pierde entre sesiones.
|
|
46
75
|
|
|
47
|
-
|
|
48
|
-
|------|--------|-------------|
|
|
49
|
-
| 0 | 🔎 Consulta de Memoria | Buscar conocimiento previo en TurboVec |
|
|
50
|
-
| 1 | 🧭 Comprensión | Analizar y descomponer la tarea |
|
|
51
|
-
| 2 | 📖 Investigación | Recopilar información relevante |
|
|
52
|
-
| 3 | 🏗️ Planificación | Diseñar la solución paso a paso |
|
|
53
|
-
| 4 | 🛠️ Ejecución | Implementar siguiendo el plan |
|
|
54
|
-
| 5 | ✅ Verificación | Validar resultados contra criterios |
|
|
55
|
-
| 6 | 📝 Documentación | Registrar decisiones y aprendizajes |
|
|
56
|
-
| 7 | 💾 Persistencia | Guardar en memoria semántica |
|
|
57
|
-
| 8 | 🎯 Entrega | Reportar resultados al usuario |
|
|
76
|
+
Cada proyecto tiene su propio espacio en `~/.primor/`. Si trabajas en 3 proyectos, cada uno acumula su propia memoria sin mezclarse.
|
|
58
77
|
|
|
59
78
|
---
|
|
60
79
|
|
|
61
|
-
##
|
|
62
|
-
|
|
63
|
-
Cada skill contiene conocimiento experto que el LLM **no tiene** por defecto:
|
|
80
|
+
## 📋 Metodología — 9 Fases
|
|
64
81
|
|
|
65
|
-
|
|
|
66
|
-
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
82
|
+
| # | Fase | TurboVec |
|
|
83
|
+
|---|------|----------|
|
|
84
|
+
| 0 | **Memoria** | `search()` — recupera contexto previo |
|
|
85
|
+
| 1 | **Escuchar** | Lee perfil del usuario desde memoria |
|
|
86
|
+
| 2 | **Investigar** | Busca en memoria ANTES que en internet |
|
|
87
|
+
| 3 | **Planificar** | Asumption log + dependency mapping |
|
|
88
|
+
| 4 | **Ejecutar** | Una cosa a la vez, tool hygiene |
|
|
89
|
+
| 5 | **Verificar** | Tests, edge cases, quality gates |
|
|
90
|
+
| 6 | **Reflexionar** | ¿Se puede mejorar? ¿Quedó algo sin cubrir? |
|
|
91
|
+
| 7 | **Simplificar** | Eliminar complejidad accidental |
|
|
92
|
+
| 8 | **Documentar** | `store()` — decisiones, errores, aprendizajes |
|
|
93
|
+
| 9 | **Entregar** | Resumen + autoevaluación X/6 |
|
|
74
94
|
|
|
75
95
|
---
|
|
76
96
|
|
|
77
|
-
##
|
|
97
|
+
## 🛠️ 7 Skills
|
|
78
98
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
99
|
+
Cada skill contiene conocimiento que el LLM **no demuestra consistentemente**. Se cargan bajo demanda con `skill()`:
|
|
100
|
+
|
|
101
|
+
| Skill | Se activa en | Conocimiento experto |
|
|
102
|
+
|-------|-------------|---------------------|
|
|
103
|
+
| `comprension-y-plan` | F1+F3 | Pre-flight 5 dimensiones, granularidad 2-5min, assumption logging |
|
|
104
|
+
| `investigacion-actualizada` | F2 | APIs canónicas por stack, validación de vigencia, TurboVec-first |
|
|
105
|
+
| `verificacion-rigurosa` | F5+F9 | Edge cases por dominio, property-based testing, 7-point checklist |
|
|
106
|
+
| `seguridad-primor` | Pre-commit | OWASP Top 10 2025, secret scanning contextual, sanitización por capa |
|
|
107
|
+
| `debug-forense` | Bugs | Git bisect, 5 Whys, reproducción mínima progresiva |
|
|
108
|
+
| `diseno-excelente` | Frontend | AI Slop detector, WCAG 2.2 AA, Core Web Vitals |
|
|
109
|
+
| `reporting-profesional` | Continuo | Keep a Changelog, conventional commits, semver |
|
|
83
110
|
|
|
84
111
|
---
|
|
85
112
|
|
|
86
|
-
##
|
|
113
|
+
## 📦 Stack técnico
|
|
87
114
|
|
|
88
|
-
|
|
115
|
+
| Componente | Tecnología |
|
|
116
|
+
|------------|-----------|
|
|
117
|
+
| Plataforma | OpenCode v1.18.2 |
|
|
118
|
+
| Modelo | DeepSeek V4 Pro |
|
|
119
|
+
| Memoria | TurboVec (Google Research, ICLR 2026) + SQLite |
|
|
120
|
+
| Embeddings | multilingual-e5-small (384-dim, 94 idiomas, ARM64 nativo) |
|
|
121
|
+
| MCP | Server local Python (~/.primor/turbo-vec-mcp.py) |
|
|
122
|
+
| Instalación | npm package (`el-primor`) |
|
|
89
123
|
|
|
90
124
|
---
|
|
91
125
|
|
|
92
|
-
## 📁 Estructura
|
|
126
|
+
## 📁 Estructura
|
|
93
127
|
|
|
94
128
|
```
|
|
95
|
-
el-primor
|
|
96
|
-
├── AGENTS.md
|
|
97
|
-
├──
|
|
98
|
-
├──
|
|
99
|
-
├──
|
|
100
|
-
├──
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
│ ├── verificacion-calidad/
|
|
106
|
-
│ ├── documentacion-clara/
|
|
107
|
-
│ └── contexto-global/
|
|
108
|
-
├── .opencode/ # Configuración de OpenCode
|
|
109
|
-
├── .github/workflows/ # CI/CD
|
|
110
|
-
├── CHANGELOG.md
|
|
111
|
-
├── CONTRIBUTING.md
|
|
112
|
-
└── LICENSE
|
|
129
|
+
el-primor/
|
|
130
|
+
├── AGENTS.md ← SOUL + metodología 9 fases (244 líneas)
|
|
131
|
+
├── bin/cli.js ← CLI: init, global, update, uninstall, doctor
|
|
132
|
+
├── install.sh ← Instalador bash (fallback)
|
|
133
|
+
├── setup.sh ← Inicializa ~/.primor/ + TurboVec
|
|
134
|
+
├── turbo-vec-mcp.py ← MCP server (search, store, stats)
|
|
135
|
+
├── .opencode/skills/ ← 7 skills on-demand
|
|
136
|
+
├── opencode.json ← Config: DeepSeek V4 Pro, Plan/Build, MCP
|
|
137
|
+
├── package.json ← npm: el-primor@3.0.0
|
|
138
|
+
└── .github/workflows/ ← CI de validación
|
|
113
139
|
```
|
|
114
140
|
|
|
115
141
|
---
|
|
@@ -117,32 +143,3 @@ el-primor-v3/
|
|
|
117
143
|
## 📄 Licencia
|
|
118
144
|
|
|
119
145
|
MIT © 2026 [fxMT-nx](https://github.com/fxMT-nx)
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## 🇬🇧 English
|
|
124
|
-
|
|
125
|
-
**El Primor** is an agent system for [OpenCode](https://github.com/anthropics/opencode) combining 7 specialized skills with persistent semantic memory (TurboVec + SQLite). Built for **DeepSeek V4 Pro**, it provides research, reasoning, and execution capabilities beyond the LLM's native knowledge.
|
|
126
|
-
|
|
127
|
-
### Quickstart
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
curl -fsSL https://raw.githubusercontent.com/fxMT-nx/el-primor/main/install.sh | bash
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Key Features
|
|
134
|
-
|
|
135
|
-
- **Semantic Memory**: TurboVec with multilingual-e5-small embeddings across sessions
|
|
136
|
-
- **7 Expert Skills**: Knowledge the LLM doesn't natively have
|
|
137
|
-
- **9-Phase Pipeline**: From memory recall to final delivery
|
|
138
|
-
- **MCP Server**: Native OpenCode integration via Model Context Protocol
|
|
139
|
-
- **One-liner Install**: Single command to get everything running
|
|
140
|
-
|
|
141
|
-
### Requirements
|
|
142
|
-
|
|
143
|
-
- OpenCode + DeepSeek V4 Pro
|
|
144
|
-
- Python 3.10+ and SQLite 3
|
|
145
|
-
|
|
146
|
-
### License
|
|
147
|
-
|
|
148
|
-
MIT © 2026 fxMT-nx
|
package/package.json
CHANGED