el-primor 3.0.0 → 3.0.2
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/.opencode/skills/diseno-excelente/SKILL.md +21 -17
- package/README.md +98 -101
- package/package.json +1 -1
|
@@ -1,43 +1,47 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: diseno-excelente
|
|
3
|
-
description: "
|
|
3
|
+
description: "Anti-slop frontend para landing pages, portfolios y rediseños. Actívala al generar o revisar cualquier UI — el agente inferirá la dirección de diseño correcta y evitará que la salida se vea genérica."
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: opencode
|
|
6
6
|
metadata:
|
|
7
7
|
phase: "Frontend"
|
|
8
|
-
activation: "UI
|
|
8
|
+
activation: "UI/UX tasks, landing pages, portfolios, redesigns"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Diseño Excelente
|
|
12
12
|
|
|
13
13
|
## Conocimiento que el LLM base NO demuestra consistentemente
|
|
14
14
|
|
|
15
|
-
1. **
|
|
15
|
+
1. **Sistema de 3 diales para calibrar output**: DESIGN_VARIANCE (1=simetría, 10=caos), MOTION_INTENSITY (1=estático, 10=cinemático), VISUAL_DENSITY (1=galería, 10=cockpit). Usar presets: landing SaaS → 7/6/4, editorial → 6/4/3, sector público → 3/2/5, portfolio diseñador → 8/7/3, agency/experimental → 9/8/3. Los diales guían cada decisión de layout, animación y espaciado.
|
|
16
16
|
|
|
17
|
-
2. **
|
|
17
|
+
2. **Design Read obligatorio antes de generar código**: declarar en UNA línea: "Lectura: [tipo de página] para [audiencia], lenguaje visual [vibe], inclinándose hacia [sistema/aesthetic]." Esto fuerza al LLM a leer el brief antes de saltar a defaults de training data. Ejemplo: "Lectura: landing B2B SaaS para compradores técnicos, lenguaje Linear-minimalista, hacia Tailwind + Geist."
|
|
18
18
|
|
|
19
|
-
3. **
|
|
19
|
+
3. **Mapa de sistemas de diseño — cuándo usar qué paquete oficial**: Fluent UI → enterprise/Microsoft; Material 3 → Google-flavored; Carbon → IBM/B2B analytics; shadcn/ui → SaaS moderna; GOV.UK/USWDS → sector público. UN sistema por proyecto. Si el brief pide aesthetic (glassmorphism, brutalismo, editorial), no existe paquete oficial — construir con CSS nativo + Tailwind y etiquetar honestamente como aproximación.
|
|
20
20
|
|
|
21
|
-
4. **
|
|
21
|
+
4. **Anti-Default Discipline — lo que JAMÁS se usa sin justificación explícita**: gradientes púrpura-azul (#3B82F6→#8B5CF6), Inter + slate-900 como base, hero centrado sobre mesh oscuro, 3 feature cards iguales, glassmorphism genérico, micro-animaciones infinitas en todo. Cada decisión se toma desde el Design Read y los diales, no desde los defaults del modelo.
|
|
22
22
|
|
|
23
|
-
5. **
|
|
23
|
+
5. **WCAG 2.2 AA no es opcional**: focus visible (nunca outline:none sin reemplazo), labels reales en inputs (nunca placeholder como label), contraste 4.5:1 texto normal / 3:1 texto grande, landmarks ARIA (main, nav, banner), operable por teclado, focus trapping en modales. El 98% del código UI generado por LLMs falla accesibilidad.
|
|
24
|
+
|
|
25
|
+
6. **Core Web Vitals desde el código**: CLS → width/height explícitos en imágenes + font-display:swap; LCP → fetchpriority=high en hero + loading=lazy en below-fold; INP → nunca window.addEventListener('scroll'), siempre Motion useScroll / ScrollTrigger / IntersectionObserver.
|
|
24
26
|
|
|
25
27
|
## Cuándo activarme
|
|
26
28
|
|
|
27
|
-
- Se genera o modifica
|
|
29
|
+
- Se genera o modifica UI (landing pages, portfolios, componentes visuales).
|
|
30
|
+
- El output se ve genérico o "estilo IA".
|
|
28
31
|
- El usuario pide revisión de diseño, accesibilidad, o responsive.
|
|
29
|
-
- El output visual se ve "genérico" o "como todas las apps IA".
|
|
30
32
|
|
|
31
33
|
## Procedimiento
|
|
32
34
|
|
|
33
|
-
1.
|
|
34
|
-
2.
|
|
35
|
-
3.
|
|
36
|
-
4.
|
|
37
|
-
5.
|
|
35
|
+
1. **Design Read**: leer el brief completo, inferir tipo de página + audiencia + vibe, declarar la lectura en una línea. Si el brief es genuinamente ambiguo, preguntar UNA sola cosa — nunca un interrogatorio.
|
|
36
|
+
2. **Calibrar diales**: asignar VARIANCE/MOTION/DENSITY según presets. Los diales son variables de sesión que guían todo lo demás.
|
|
37
|
+
3. **Elegir sistema de diseño**: si el brief coincide con un sistema oficial → instalar paquete oficial. Si es aesthetic → CSS nativo + Tailwind, etiquetado como aproximación.
|
|
38
|
+
4. **Ejecutar checklist WCAG 2.2 AA**: verificar focus, labels, contraste, landmarks, keyboard nav, screen readers, focus trapping.
|
|
39
|
+
5. **Auditar performance**: cada img con dimensiones explícitas, CLS < 0.1, LCP optimizado, motion respeta prefers-reduced-motion.
|
|
40
|
+
6. **Pre-Flight check**: confirmar que no hay defaults IA (gradientes púrpura, Inter, 3 cards iguales), que existen estados loading/empty/error, y que el layout colapsa correctamente en 375px.
|
|
38
41
|
|
|
39
42
|
## Errores comunes que prevengo
|
|
40
43
|
|
|
41
|
-
- **
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
44
|
+
- **UI genérica "estilo IA"**: gradientes azul-violeta, Inter default, shadow-xl en todo, layouts centrados de 800px. Detecto y propongo alternativas con personalidad real basadas en el Design Read.
|
|
45
|
+
- **Accesibilidad ignorada**: aplico checklist WCAG 2.2 AA completo y reporto cada violación como bloqueante.
|
|
46
|
+
- **Diseñar para 1440px y asumir que "se adapta solo"**: fuerzo verificación en 375/768/1024/1280px. Touch targets mínimo 44×44px. Rechazo overflow horizontal o texto cortado en mobile.
|
|
47
|
+
- **Saltar al código sin leer el brief**: fuerzo el Design Read de una línea y la calibración de diales antes de cualquier output. Sin esto, el LLM produce el mismo diseño para cualquier prompt.
|
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