Knowledge Base Article para Easymailing
Crea artículos de base de conocimiento para Easymailing, consultando código, navegando la app cuando sea necesario, y publicando como borrador en Zendesk.
Configuración requerida
Archivo de configuración
Verifica que existe .kb-config.json en la carpeta de esta skill. Si no existe, pregunta:
- •"¿Cuál es la ruta del proyecto Easymailing?"
- •"¿Cuál es la ruta del vault de Obsidian?"
- •"¿Cuál es tu email de Zendesk?"
Crea el archivo con esta estructura:
{
"project_path": "{ruta al proyecto}",
"obsidian_vault_path": "{ruta al vault}",
"zendesk_subdomain": "easymailing",
"zendesk_email": "{email del usuario}",
"test_app": {
"url": "http://dfutura.easymailing.test",
"user": "jhon@acme.com"
}
}
Y recuerda al usuario:
Configuración guardada en .kb-config.json Recuerda configurar las variables de entorno: - ZENDESK_API_TOKEN: tu token de API de Zendesk - EASYMAILING_TEST_PASSWORD: password del usuario de test
Variables de entorno
El archivo .env en la carpeta de la skill debe contener:
ZENDESK_API_TOKEN=tu_token_de_zendesk EASYMAILING_TEST_PASSWORD=password_del_usuario_test
Script de Zendesk
La skill incluye un script CLI para interactuar con la API de Zendesk:
# Listar categorías npx bun kb-article/scripts/zendesk.ts categories # Listar secciones de una categoría npx bun kb-article/scripts/zendesk.ts sections <category_id> # Buscar artículos npx bun kb-article/scripts/zendesk.ts search "término de búsqueda" # Obtener un artículo (para análisis de estilo) npx bun kb-article/scripts/zendesk.ts article <article_id> # Crear artículo como borrador npx bun kb-article/scripts/zendesk.ts create <section_id> --title "Título" --body "<html>" --locale es --draft # Añadir traducción npx bun kb-article/scripts/zendesk.ts translate <article_id> --title "Title" --body "<html>" --locale en
El script lee automáticamente .kb-config.json y .env de la carpeta de la skill.
Flujo principal
FASE 1: Contexto inicial ↓ FASE 2: Investigación ↓ FASE 3: Preguntas interactivas ↓ FASE 4: Propuesta de estructura ↓ FASE 5: Generación (ES → EN) ↓ FASE 6: Publicación
Fase 1: Contexto inicial
Paso 1.1: Preguntar origen
Pregunta usando AskUserQuestion:
¿De dónde surge este artículo? A) Ticket/pregunta de soporte - Usuarios preguntan frecuentemente sobre esto B) Feature nueva - Hay que documentar una funcionalidad recién lanzada C) Documentación faltante - Detecté que falta explicar esto
Paso 1.2: Preguntar tema
Pregunta abierta:
"¿Sobre qué funcionalidad o tema quieres crear el artículo?"
Paso 1.3: Consultar Zendesk
Usa el script de Zendesk para obtener contexto:
- •
Listar categorías y secciones:
bashnpx bun kb-article/scripts/zendesk.ts categories npx bun kb-article/scripts/zendesk.ts sections <category_id>
Presenta las opciones al usuario para elegir dónde ubicar el artículo.
- •
Buscar artículos relacionados:
bashnpx bun kb-article/scripts/zendesk.ts search "{tema}"Si encuentra artículos similares:
- •Informa al usuario para evitar duplicados
- •Sugiere posibles enlaces cruzados
- •
Leer 2-3 artículos existentes (para análisis de estilo):
bashnpx bun kb-article/scripts/zendesk.ts article <article_id>
Analiza el estilo y formato para mantener consistencia.
Fase 2: Investigación
Paso 2.1: Revisar código
Según el tema, busca en el proyecto Easymailing:
- •Controllers y vistas relacionadas
- •Modelos y lógica de negocio
- •Documentación existente en docs/
Determina la profundidad necesaria:
- •Solo UI → revisar vistas y JS
- •Flujo completo → añadir controllers
- •Lógica compleja → incluir modelos y servicios
Paso 2.2: Navegar la app (si necesario)
Si crees que necesitas ver la UI para entender mejor, pregunta:
"Para entender mejor [X], ¿quieres que navegue la app y explore [pantalla/flujo específico]?"
Si el usuario confirma:
- •Usa Chrome para abrir
{test_app.url}de la config - •Haz login:
- •Usuario:
{test_app.user}de la config - •Password: valor de
EASYMAILING_TEST_PASSWORD
- •Usuario:
- •Navega a la sección relevante
- •Explora la funcionalidad (solo lectura, no modificar datos)
- •Reporta lo observado
Paso 2.3: Presentar hallazgos
Resume lo encontrado:
- •Qué hace la funcionalidad
- •Cómo se accede
- •Flujo principal
- •Casos especiales detectados
Fase 3: Preguntas interactivas
Haz preguntas UNA A UNA para clarificar el artículo:
- •"¿Qué nivel de usuario es el target? (principiante, intermedio, avanzado)"
- •"¿Cuál es el problema principal que el usuario intenta resolver?"
- •"¿Hay pasos previos que el usuario debe conocer antes?"
- •"¿Qué errores comunes cometen los usuarios con esto?"
- •"¿Hay limitaciones o casos especiales que debamos mencionar?"
Adapta las preguntas según el contexto. No todas son necesarias en todos los casos.
Fase 4: Propuesta de estructura
Presenta un outline con títulos y bullets:
## Estructura propuesta ### 1. Introducción - Qué es [funcionalidad] - Para qué sirve ### 2. Cómo acceder - Ruta de navegación - Permisos necesarios ### 3. [Sección principal según el tema] - Punto clave 1 - Punto clave 2 - Punto clave 3 ### 4. Casos de uso - Ejemplo práctico ### 5. Preguntas frecuentes (si aplica) - Pregunta común 1 - Pregunta común 2
Pregunta: "¿Esta estructura te parece bien o ajustamos algo?"
Itera hasta que el usuario apruebe.
Fase 5: Redacción y revisión
Paso 5.1: Redactar artículo en español (Markdown)
Genera el artículo completo en Markdown para que el usuario pueda revisarlo fácilmente.
Usa el formato estándar de Markdown:
- •
#,##,###para títulos - •
**texto**para negritas - •
-o*para listas - •
1.,2.,3.para pasos numerados - •
> textopara notas o tips importantes - •
[IMAGEN: descripción]para placeholders de imágenes
Muestra el Markdown y pregunta: "¿El artículo en español está bien o ajustamos algo?"
Itera con el usuario hasta que apruebe el contenido.
Paso 5.2: Redactar artículo en inglés (Markdown)
Una vez aprobado el español, genera la versión en inglés en Markdown.
Muestra el Markdown y pregunta: "¿La versión en inglés está bien?"
Itera hasta que el usuario apruebe.
Paso 5.3: Generar HTML final
Una vez aprobados ambos idiomas, convierte el Markdown a HTML usando los componentes de Zendesk:
Alertas (información importante):
<div class="alert alert-info"> Texto informativo o tip </div> <div class="alert alert-warning"> Advertencia o precaución </div>
Pasos numerados:
<p> <span class="number">1</span> Descripción del paso </p> <p> <span class="number">2</span> Siguiente paso </p>
Índice de contenidos (artículos largos):
<div class="content-index"> <p>Índice de contenidos</p> <p><a href="#seccion1">1. Primera sección</a></p> <p><a href="#seccion2">2. Segunda sección</a></p> </div> <h2 id="seccion1">Primera sección</h2>
Tablas:
<table>
<tbody>
<tr>
<td class="gray"><strong>Destacado</strong></td>
<td>Contenido normal</td>
</tr>
</tbody>
</table>
Placeholders de imágenes:
<p>(IMAGEN PENDIENTE: Descripción detallada de qué mostrar)</p>
El HTML se genera automáticamente sin mostrar al usuario (ya aprobó el contenido en Markdown).
Fase 6: Publicación
Paso 6.1: Guardar en Obsidian
Crea la carpeta y archivos:
{obsidian_vault_path}/Areas/Easymailing/Knowledge-Base/{YYYY-MM-DD}-{slug}/
├── article-brief.md
├── article-es.md
├── article-en.md
└── images.md
article-brief.md:
# {Título del artículo}
## Metadata
- Fecha: {YYYY-MM-DD}
- Categoría Zendesk: {categoría elegida}
- Sección Zendesk: {sección elegida}
- Origen: {soporte/feature nueva/faltaba documentación}
## Resumen
{Breve descripción de qué explica el artículo}
## Artículos relacionados
- {links a artículos existentes si los hay}
## Zendesk
- Borrador ES: {URL después de publicar}
- Borrador EN: {URL después de publicar}
article-es.md (HTML en bloque de código):
# {Título en español}
## HTML
\`\`\`html
{HTML del artículo en español}
\`\`\`
article-en.md (HTML en bloque de código):
# {Título en inglés}
## HTML
\`\`\`html
{HTML del artículo en inglés}
\`\`\`
images.md:
# Imágenes requeridas
## 1. {nombre-descriptivo}.png
- **Ubicación en HTML:** Sección "{nombre}"
- **Qué mostrar:** {descripción detallada}
- **Notas:** {indicaciones especiales si las hay}
## 2. {nombre-descriptivo}.png
...
Paso 6.2: Publicar borrador en Zendesk
- •
Crear artículo en español:
bashnpx bun kb-article/scripts/zendesk.ts create {section_id} --title "{título}" --body "{HTML español}" --locale es --draftEl comando devuelve el
article_idy la URL del borrador. - •
Añadir traducción en inglés:
bashnpx bun kb-article/scripts/zendesk.ts translate {article_id} --title "{título en inglés}" --body "{HTML inglés}" --locale en - •
Actualizar article-brief.md con las URLs de los borradores
- •
Confirmar al usuario:
codeArtículo publicado como borrador en Zendesk: - Español: {URL} - Inglés: {URL} Archivos guardados en: {ruta en Obsidian} Recuerda añadir las imágenes listadas en images.md antes de publicar.
Rutas del proyecto
Leer de .kb-config.json:
- •Proyecto Easymailing:
project_path - •Vault Obsidian:
obsidian_vault_path - •App de test:
test_app.url
Invocación
/kb-article