- Frontend React (SKEEN Brand) con Vite, TypeScript, Tailwind - Frontend Homenest (versión alternativa) - Módulos Odoo 17 custom (citas, pacientes, monedero, pagos, ventas, inventario, whatsapp) - WACRM fork (Next.js 16 + Supabase) - Hermes + Bridge + Skills (Qwen3.6 via Nan Builders) - Scripts de migración y operación - Documentación extensiva en docs/
388 lines
11 KiB
Markdown
388 lines
11 KiB
Markdown
# Skills de Hermes — SKEEN Derma Experts
|
|
|
|
**Versión:** 2.0
|
|
**Fecha:** 16 de julio de 2026
|
|
|
|
---
|
|
|
|
## 1. Introducción
|
|
|
|
Hermes utiliza **skills** (habilidades) modulares para dotar a la IA de capacidades específicas. Cada skill es un directorio con un archivo `SKILL.md` que define:
|
|
|
|
- **Metadata:** Nombre, descripción, versión, requisitos.
|
|
- **Instrucciones:** Qué hacer y cómo responder.
|
|
- **Tools:** Herramientas disponibles.
|
|
- **Triggers:** Palabras clave que activan el skill.
|
|
|
|
---
|
|
|
|
## 2. Skills Disponibles
|
|
|
|
| Skill | Trigger Principal | Tools | Frecuencia |
|
|
|-------|-------------------|-------|------------|
|
|
| `skeen-rag` | "servicios", "tratamientos", "precios" | file_read, memory_read | On-demand |
|
|
| `skeen-agendar` | "agendar", "cita", "hora", "disponibilidad" | odoo_api_call, wacrm_send, memory_write | On-demand |
|
|
| `skeen-pagos` | "pagar", "saldo", "deuda", "puntos" | odoo_api_call, wacrm_send, web_fetch | On-demand |
|
|
| `skeen-monedero` | "puntos", "monedero", "saldo", "redimir" | odoo_api_call, wacrm_send | On-demand |
|
|
| `skeen-recordatorios` | Heartbeat (30 min) | odoo_api_call, wacrm_send, memory_read | Cada 30 min |
|
|
|
|
---
|
|
|
|
## 3. Skill: skeen-rag — Catálogo de Servicios
|
|
|
|
### Descripción
|
|
|
|
Proporciona información sobre tratamientos, precios, duración, paquetes y contraindicaciones.
|
|
|
|
### Activación
|
|
|
|
Palabras clave: `servicios`, `tratamientos`, `precios`, `catalogo`, `acne`, `peel`, `laser`, `dermatologia`, `paquete`, `sesiones`
|
|
|
|
### Archivo de Datos
|
|
|
|
`/root/.hermes/skills/skeen-services.json`
|
|
|
|
**Formato:**
|
|
```json
|
|
{
|
|
"clinica": {
|
|
"nombre": "SKEEN Derma Experts",
|
|
"direccion": "Blvd. Popotla 123, Playas de Rosarito, BC, Mexico",
|
|
"telefono": "+52 (664) 123-4567",
|
|
"horario": {
|
|
"lunes_viernes": "9:00 - 18:00",
|
|
"sabado": "9:00 - 14:00",
|
|
"domingo": "Cerrado"
|
|
}
|
|
},
|
|
"servicios": [
|
|
{
|
|
"id": "laser-ful",
|
|
"nombre": "Depilacion Laser Full Body",
|
|
"categoria": "tratamiento",
|
|
"precio": 2500.0,
|
|
"duracion_min": 90,
|
|
"precio_paquete": 7000.0,
|
|
"sesiones_paquete": 3,
|
|
"notas_paquete": "Ahorro de $500",
|
|
"descripcion": "Depilacion laser full body...",
|
|
"contraindicaciones": []
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Instrucciones del Skill
|
|
|
|
1. Leer el archivo de catálogo.
|
|
2. Filtrar servicios relevantes según la pregunta.
|
|
3. Presentar información de forma clara y amigable.
|
|
4. SIEMPRE incluir: nombre, precio por sesión, duración, descripción.
|
|
5. Si el servicio tiene paquete, mencionar ahorro.
|
|
6. NUNCA diagnosticar condiciones médicas.
|
|
7. Si no encuentra el servicio, ofrecer consulta de valoración.
|
|
|
|
### Ejemplo de Respuesta
|
|
|
|
```
|
|
Hola! En SKEEN contamos con estos tratamientos para depilación:
|
|
|
|
1. **Depilación Laser Full Body** — $2,500 MXN por sesión
|
|
Duración: 90 minutos
|
|
Depilación laser completa.
|
|
Paquete de 3 sesiones: $7,000 MXN (ahorro de $500)
|
|
|
|
2. **Depilación Laser Axila** — $500 MXN por sesión
|
|
Duración: 15 minutos
|
|
Depilación laser por zona pequeña.
|
|
|
|
¿Te gustaría agendar una consulta de valoración?
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Skill: skeen-agendar — Agendamiento de Citas
|
|
|
|
### Descripción
|
|
|
|
Gestiona el agendamiento de citas médicas en Odoo.
|
|
|
|
### Activación
|
|
|
|
Palabras clave: `agendar`, `cita`, `hora`, `disponibilidad`, `reservar`, `turno`
|
|
|
|
### Flujo de Agendamiento
|
|
|
|
1. **Detectar intención:** Paciente quiere agendar.
|
|
2. **Consultar servicios:** Usar `skeen-rag` para mostrar opciones.
|
|
3. **Seleccionar servicio:** Paciente elige tratamiento.
|
|
4. **Consultar disponibilidad:** Llamar Odoo API `/skeen/api/v1/available_slots`.
|
|
5. **Presentar opciones:** Mostrar fechas/horas disponibles.
|
|
6. **Confirmar:** Paciente confirma fecha/hora.
|
|
7. **Crear cita:** Llamar Odoo API `/skeen/api/v1/create_appointment`.
|
|
8. **Confirmar al paciente:** Enviar mensaje con detalles.
|
|
|
|
### Paquetes de Sesiones
|
|
|
|
Si el servicio tiene `package_sessions > 0`:
|
|
|
|
1. Informar que existe paquete y su precio.
|
|
2. Preguntar si quiere sesión individual o paquete.
|
|
3. Si elige paquete:
|
|
- Crear N citas separadas (cada 7 días).
|
|
- La primera a la hora elegida.
|
|
- Las siguientes a las 9:00 AM (reprogramables).
|
|
|
|
### Ejemplo de Respuesta
|
|
|
|
```
|
|
Perfecto! Has elegido Depilación Laser Full Body.
|
|
|
|
Tienes estas opciones:
|
|
- 1 sesión: $2,500 MXN
|
|
- Paquete 3 sesiones: $7,000 MXN (ahorro de $500)
|
|
|
|
¿Cuál prefieres?
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Skill: skeen-pagos — Pagos y Saldos
|
|
|
|
### Descripción
|
|
|
|
Consulta saldo pendiente, genera links de pago, confirma pagos.
|
|
|
|
### Activación
|
|
|
|
Palabras clave: `pagar`, `saldo`, `deuda`, `puntos`, `link`, `pago`
|
|
|
|
### Flujo de Pago
|
|
|
|
1. **Consultar saldo:** Llamar Odoo API `/skeen/api/v1/patient_balance`.
|
|
2. **Mostrar saldo:** Informar monto pendiente y puntos disponibles.
|
|
3. **Generar link:** Crear link de pago (Stripe/MercadoPago).
|
|
4. **Enviar link:** Via WhatsApp.
|
|
5. **Confirmar pago:** Webhook de pasarela → Odoo.
|
|
|
|
### Ejemplo de Respuesta
|
|
|
|
```
|
|
Tu saldo pendiente es de $1,500 MXN.
|
|
|
|
Tienes 450 puntos en tu monedero (equivalente a $450 MXN).
|
|
|
|
¿Quieres que te envíe un link de pago? Puedes pagar con tarjeta o MercadoPago.
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Skill: skeen-monedero — Monedero Digital
|
|
|
|
### Descripción
|
|
|
|
Gestiona el monedero de puntos/fidelidad de SKEEN.
|
|
|
|
### Reglas
|
|
|
|
- **Acumulación:** 1 punto por cada $10 MXN gastados.
|
|
- **Valor:** 1 punto = $1 MXN.
|
|
- **Redención:** Máximo 50% del total de la compra.
|
|
- **Vencimiento:** Puntos vencen a los 12 meses de inactividad.
|
|
- **No transferibles:** Entre pacientes.
|
|
- **Acumulación:** Solo en pagos confirmados.
|
|
|
|
### Activación
|
|
|
|
Palabras clave: `puntos`, `monedero`, `saldo`, `redimir`, `fidelidad`
|
|
|
|
### Ejemplo de Respuesta
|
|
|
|
```
|
|
Tu monedero SKEEN:
|
|
Saldo actual: 450 puntos (= $450 MXN)
|
|
|
|
Historial reciente:
|
|
- 03/07/2026: +120 pts (Pago Tratamiento Acne — $1,200)
|
|
- 28/06/2026: +80 pts (Pago Consulta + peel — $800)
|
|
|
|
Puedes redimir tus puntos en tu próxima visita! Cada 10 puntos = $10 MXN de descuento.
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Skill: skeen-recordatorios — Recordatorios
|
|
|
|
### Descripción
|
|
|
|
Recordatorios automáticos de citas, follow-ups post-tratamiento, re-engagement.
|
|
|
|
### Activación
|
|
|
|
**Heartbeat:** Cada 30 minutos.
|
|
|
|
### Tipos de Recordatorios
|
|
|
|
| Tipo | Cuándo | Acción |
|
|
|------|--------|--------|
|
|
| Recordatorio de cita | 24h antes | Enviar WhatsApp con template |
|
|
| Follow-up post-tratamiento | 7 días después | Mensaje de bienestar |
|
|
| Re-engagement | 90 días inactivo | Incentivo con 50 puntos |
|
|
|
|
### Ejecución
|
|
|
|
1. Leer recordatorios programados desde `/workspace/memory/recordatorios.md`.
|
|
2. Buscar entradas vencidas (timestamp <= ahora).
|
|
3. Enviar via WACRM usando template aprobado.
|
|
4. Marcar como enviado en memoria.
|
|
|
|
### Templates de WhatsApp
|
|
|
|
```
|
|
recordatorio_cita_skeen:
|
|
"Hola {{1}}! Te recordamos tu cita mañana {{2}} a las {{3}} en SKEEN Derma Experts."
|
|
|
|
followup_tratamiento_skeen:
|
|
"Hola {{1}}! Han pasado {{2}} días desde tu {{3}}. ¿Cómo te sientes?"
|
|
|
|
reengage_skeen:
|
|
"Hola {{1}}! Te extrañamos en SKEEN. Agenda tu próxima visita y recibe 50 puntos."
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Personalidad de Sofía
|
|
|
|
### Archivo: SOUL.md
|
|
|
|
```markdown
|
|
# Sofia — Asistente Virtual de SKEEN Derma Experts
|
|
|
|
## Identidad
|
|
- Nombre: Sofia
|
|
- Rol: Asistente virtual de SKEEN Derma Experts
|
|
- Personalidad: Cálida, profesional, empática, eficiente
|
|
- Idioma: Español (México)
|
|
- Emoji favorito: 💙✨🌸
|
|
|
|
## Tonos de voz
|
|
- Saludo: "Hola! Soy Sofia de SKEEN 💙"
|
|
- Confirmación: "Perfecto! Tu cita está confirmada ✨"
|
|
- Empatía: "Entiendo, estamos aquí para cuidar tu piel 🌸"
|
|
- Urgencia: "Voy a conectarte con un especialista de inmediato"
|
|
|
|
## Límites
|
|
- NO diagnosticar condiciones médicas
|
|
- NO recomendar medicamentos específicos
|
|
- SIEMPRE sugerir consulta presencial para evaluaciones
|
|
- Máx 3 párrafos por mensaje de WhatsApp
|
|
- Máx 2 emojis por mensaje
|
|
|
|
## Handoff a Humano
|
|
Trigger: "AGENTE", "HUMANO", "ESPECIALISTA", "DOCTOR"
|
|
Respuesta: "Te conecto con un especialista enseguida. Espera un momento 💙"
|
|
```
|
|
|
|
---
|
|
|
|
## 9. System Prompt del Bridge
|
|
|
|
El bridge (`webhook-bridge.js`) usa un system prompt que define a Sofía:
|
|
|
|
```javascript
|
|
const SKEEN_SYSTEM_PROMPT = `Eres Sofia, la asistente virtual de SKEEN Derma Experts, una clínica dermatológica en Playas de Rosarito, BC, México.
|
|
|
|
PERSONALIDAD:
|
|
- Cálida, profesional, empática y eficiente.
|
|
- Hablas español mexicano natural.
|
|
- Usas emojis moderadamente (máx 2 por mensaje).
|
|
|
|
REGLAS ESTRICTAS:
|
|
1. NUNCA diagnostiques condiciones médicas.
|
|
2. NUNCA recomiendes medicamentos específicos.
|
|
3. SIEMPRE sugiere consulta presencial para evaluaciones.
|
|
4. Máximo 3 párrafos por respuesta.
|
|
5. Si el usuario escribe "AGENTE", "HUMANO", "ESPECIALISTA" o "DOCTOR", ofrece conectarlo con un especialista humano.
|
|
|
|
DATOS DE LA CLÍNICA:
|
|
- Nombre: SKEEN Derma Experts
|
|
- Dirección: Blvd. Popotla 123, Playas de Rosarito, BC
|
|
- Horario: Lun-Vie 9:00-18:00, Sáb 9:00-14:00
|
|
- Teléfono: +52 (664) 123-4567
|
|
|
|
SERVICIOS PRINCIPALES:
|
|
- Consulta Dermatológica: $800 MXN (30 min)
|
|
- Tratamiento Facial para Acné: $1,500 MXN (60 min)
|
|
- Peel Químico: $1,500 MXN (30 min)
|
|
- Depilación Láser: desde $500 MXN (15 min)
|
|
- Tratamiento Anti-Edad: $2,500 MXN (75 min)
|
|
|
|
INSTRUCCIONES:
|
|
- Si el paciente quiere agendar, pregunta por servicio, fecha y hora.
|
|
- Si pregunta por servicios, usa la lista de arriba.
|
|
- Si pregunta por precios, menciona que son aproximados.
|
|
- Siempre termina con una pregunta o invitación a agendar.`;
|
|
```
|
|
|
|
---
|
|
|
|
## 10. Configuración de Skills en Hermes
|
|
|
|
### Instalación
|
|
|
|
```bash
|
|
# Los skills ya están en /root/.hermes/skills/
|
|
# Verificar instalación
|
|
hermes skills list
|
|
```
|
|
|
|
### Habilitar/Deshabilitar
|
|
|
|
```bash
|
|
hermes skills enable skeen-rag
|
|
hermes skills disable skeen-recordatorios
|
|
```
|
|
|
|
### Actualizar Catálogo de Servicios
|
|
|
|
```bash
|
|
cd /root/migracion
|
|
python3 importar_servicios_inventario.py --solo-hermes
|
|
```
|
|
|
|
Esto regenera `/root/.hermes/skills/skeen-services.json` desde Odoo.
|
|
|
|
---
|
|
|
|
## 11. Troubleshooting
|
|
|
|
### Skill no se activa
|
|
|
|
1. Verificar que el skill esté enabled: `hermes skills list`
|
|
2. Verificar palabras clave en `SKILL.md` metadata.
|
|
3. Verificar que el archivo JSON de datos exista.
|
|
|
|
### Respuestas incorrectas
|
|
|
|
1. Revisar system prompt en `webhook-bridge.js`.
|
|
2. Revisar `SOUL.md` y `AGENTS.md`.
|
|
3. Verificar que el modelo sea correcto (Qwen3.6).
|
|
|
|
### No se crean citas
|
|
|
|
1. Verificar API key de Odoo.
|
|
2. Verificar que el paciente exista o se pueda crear.
|
|
3. Revisar logs de Odoo: `tail -f /tmp/odoo.log`.
|
|
|
|
---
|
|
|
|
## 12. Mejoras Futuras
|
|
|
|
| Mejora | Descripción | Prioridad |
|
|
|--------|-------------|-----------|
|
|
| Integración Hermes Gateway nativa | Usar gateway de Hermes en lugar de bridge custom | Media |
|
|
| Skills de reportes | Generar reportes via WhatsApp | Baja |
|
|
| Multi-idioma | Soporte inglés | Baja |
|
|
| Voz | Integración con voz de WhatsApp | Baja |
|
|
| Analytics | Tracking de conversaciones | Media |
|