Communitygithub.com

Redactor de Boletines

Úsalo cuando el usuario quiera escribir un correo de actualización de producto, un boletín de anuncio de funcionalidades o un resumen por correo para usuarios o suscriptores.

¿Qué es Redactor de Boletines?

Esta habilidad, 'Redactor de Boletines', ayuda a generar correos electrónicos de actualización de producto y boletines de anuncio de funcionalidades de manera totalmente automatizada. Es útil para equipos de producto, marketing o desarrollo que necesitan comunicar cambios a sus usuarios de forma rápida y consistente, sin redactar desde cero cada vez. La habilidad acepta múltiples entradas: un brief de marketing, un blog post, un changelog, un PR de GitHub, un rango de commits, un archivo/directorio del código base o simplemente texto libre. A partir de esto, guía al usuario a través de cinco fases: Descubrimiento (analiza la entrada y contexto del producto), Configuración (define audiencia, formato, tono y CTA), Redacción (genera opciones de asunto, texto previo y cuerpo del correo), Revisión y Salida (presenta el borrador, permite correcciones y guarda el archivo final). Soporta boletines de una sola funcionalidad o resúmenes con múltiples actualizaciones, y puede generar variantes para diferentes segmentos de audiencia (por ejemplo, versión técnica para desarrolladores y versión simplificada para usuarios no técnicos). Está diseñada para plataformas como Claude Code, Cursor, Codex y otras herramientas de IA de línea de comandos que permiten ejecutar skills.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AlemTuzlak/skills/tree/HEAD/skills/newsletter

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Redactor de Boletines?

Redacta correos electrónicos de actualización de producto y boletines de anuncio de funcionalidades. Maneja líneas de asunto, texto de vista previa, estructura del correo y contenido apropiado para la audiencia.

Resolución de Entrada

Resuelve el argumento (si se proporciona) en este orden:

  1. Ruta a un brief de marketing existente (.md que contenga "Resumen Ejecutivo" o "Mensajes Clave") -> brief de marketing
  2. Ruta a un blog post existente (.md con estructura de blog post) -> blog post
  3. Ruta a un changelog existente (.md con secciones Añadido/Corregido/Cambiado o CHANGELOG.md) -> changelog
  4. Coincide con URL de GitHub o patrón #\d+ -> PR
  5. Contiene ... o .. -> rango de refs git
  6. Resuelve a archivo/directorio existente -> funcionalidad del código base
  7. De lo contrario -> texto libre

Si no se proporciona ningún argumento, pregunta: "¿Qué debería cubrir el boletín? Puedes proporcionar un brief de marketing, un blog post, un changelog, una URL/número de PR, un rango de refs git, una ruta de archivo/directorio, o simplemente describir la actualización."

Si múltiples interpretaciones coinciden, confirma con el usuario.

Flujo del Proceso

digraph newsletter {
    rankdir=TB;
    "Resolver entrada" [shape=box];
    "Fase 1: Descubrimiento" [shape=box];
    "Fase 2: Configuración" [shape=box];
    "Fase 3: Redacción" [shape=box];
    "Fase 4: Revisión" [shape=box];
    "¿Aprobado?" [shape=diamond];
    "Fase 5: Salida" [shape=box];

    "Resolver entrada" -> "Fase 1: Descubrimiento";
    "Fase 1: Descubrimiento" -> "Fase 2: Configuración";
    "Fase 2: Configuración" -> "Fase 3: Redacción";
    "Fase 3: Redacción" -> "Fase 4: Revisión";
    "Fase 4: Revisión" -> "¿Aprobado?";
    "¿Aprobado?" -> "Fase 3: Redacción" [label="revisiones"];
    "¿Aprobado?" -> "Fase 5: Salida" [label="sí"];
}

NO omitas fases. Haz preguntas a un ritmo natural. Si el usuario responde varias preguntas a la vez, acepta las respuestas agrupadas y salta adelante.

Si el usuario dice "elige los valores por defecto", "tú decides" o similar, elige valores predeterminados razonables según el contexto, indica lo que elegiste y pide una sola confirmación antes de continuar.

Nunca asumas sin confirmar.

Fase 1: Descubrimiento

Paso 1 - Analizar la entrada

Tipo de entradaQué leer
Brief de marketingExtraer declaración del problema, propuesta de valor, audiencia, mensajes clave. Saltar al Paso 3. Aún así, hacer Paso 2 si el brief carece de contexto del producto.
Blog postExtraer titular, puntos clave, audiencia, CTA. Saltar al Paso 3. Aún así, hacer Paso 2 si carece de contexto del producto.
ChangelogExtraer todas las entradas. Usar como base para un correo resumen. Saltar al Paso 3.
PRDiff, descripción del PR, comentarios de revisión, mensajes de commit (gh pr view, gh pr diff). Para PRs grandes (20+ archivos), enfocarse en cambios visibles para el usuario.
Refs gitgit diff y git log entre refs. Para rangos grandes, priorizar mensajes de commit y cambios visibles para el usuario.
Funcionalidad del código baseLeer los archivos/directorios especificados.
Texto libreAnalizar la descripción del usuario. Si le faltan detalles, preguntar al usuario que proporcione más información o que señale un archivo/PR específico. Recurrir a preguntas abiertas solo si no puede.

Cambios visibles para el usuario incluyen: nuevas funcionalidades, cambios de UI, cambios de API, mejoras de rendimiento, correcciones de errores y actualizaciones de documentación. Cambios internos incluyen: refactorizaciones, adiciones de pruebas, cambios de CI y actualizaciones de dependencias. Cuando tengas dudas, enumera lo que encontraste y pregunta al usuario cuáles son relevantes.

Manejo de errores:

  • gh no disponible -> informar al usuario, sugerir gh auth login, ofrecer entrada alternativa
  • PR/ref inválido -> pedir al usuario que verifique
  • Archivo no encontrado -> pedir la ruta correcta

Paso 2 - Leer contexto más amplio del producto

Leer si existen: README, docs/, package.json (o equivalente).

Si no se encuentra nada, preguntar: "No pude encontrar contexto del producto en el repositorio. ¿Puedes describir brevemente el producto y para quién es?"

Paso 3 - Presentar entendimiento y determinar formato

Presentar un resumen estructurado:

"Aquí está lo que usaré como base para el boletín:"

  • Actualización A - descripción breve
  • Actualización B - descripción breve

"¿Algo que añadir, eliminar o corregir?"

Luego determinar el formato del correo según el número de actualizaciones:

  • Actualización única importante -> correo de una sola funcionalidad (enfocado, profundo)
  • Múltiples actualizaciones -> correo resumen (lista priorizada, la más importante expandida)

Confirmar el formato con el usuario.

Si no se encuentran cambios visibles para el usuario en la entrada, informar al usuario y detenerse: "No se encontraron cambios visibles para el usuario en esta entrada. No hay nada sobre lo que escribir un boletín."

NO continuar hasta que el usuario confirme el alcance y el formato.

Fase 2: Configuración

Hacer estas preguntas:

P1 - Audiencia: "¿A quién va dirigido este correo?" (todos los usuarios, usuarios avanzados, nuevos usuarios, nivel de plan específico, desarrolladores, usuarios no técnicos, otro)

P2 - Formato de salida: "¿En qué formato quieres el correo?"

  • Solo texto - línea de asunto, texto de vista previa, cuerpo del texto, texto del CTA (para pegar en tu herramienta de correo)
  • Markdown - markdown formateado que la mayoría de herramientas de correo pueden importar

P3 - Tono: Leer contenido existente del repositorio (README, docs, blog posts) para detectar la voz del producto. Luego confirmar:

"Según tu contenido existente, el tono parece [p. ej., conversacional y amigable para desarrolladores]. ¿Debo mantenerlo o ir en otra dirección?"

Si no hay contenido existente para analizar, preguntar directamente qué tono quiere el usuario.

P4 - CTA: Inferir la llamada a la acción más apropiada del contexto:

  • Nueva funcionalidad -> "Pruébalo ahora", "Descubre lo nuevo"
  • Mejora -> "Compruébalo", "Ve la diferencia"
  • Código abierto -> "Actualiza ahora", "Mira el lanzamiento"

"Sugiero que el CTA sea: [CTA inferido]. ¿Quieres ese o uno diferente?"

Fase 3: Redacción

Líneas de asunto

Generar 3-5 opciones de línea de asunto con diferentes enfoques:

  • Basado en beneficio ("Tus informes ahora se exportan a PDF")
  • Curiosidad ("Reconstruimos cómo funciona la búsqueda")
  • Nombre de funcionalidad específica ("Presentamos el modo oscuro")
  • Pregunta ("¿Aún esperando que terminen las exportaciones?")
  • Urgencia/oportunidad ("Nuevo esta semana: 3 funcionalidades que pediste")

Recomendar una y explicar por qué funciona mejor. También explicar las ventajas y desventajas de las otras.

Reglas:

  • 30-50 caracteres óptimo (evitar truncamiento en móvil)
  • Ser específico, no genérico ("Nuevo: Exportaciones a PDF" gana a "Actualización de Producto - Marzo 2026")
  • Sin palabras de spam (Gratis, Compra Ahora, Actúa Ahora)

Texto de vista previa

Generar texto de vista previa para cada opción de línea de asunto. El texto de vista previa es la línea secundaria visible en las vistas previas de la bandeja de entrada.

Reglas:

  • 40-130 caracteres
  • Ampliar la línea de asunto, no repetirla
  • Incluir el beneficio o resultado clave

Cuerpo del correo

Estructura para correo de una sola funcionalidad:

  1. Declaración del problema - una frase describiendo el punto débil que resuelve
  2. Qué cambió - 2-3 frases describiendo la actualización en lenguaje de beneficio para el usuario ("Los informes cargan más rápido" no "Ejecución de consulta SQL optimizada")
  3. Marcador visual - <!-- TODO: Añadir captura de pantalla o GIF mostrando la funcionalidad en acción --> con una descripción de qué capturar
  4. Botón CTA - una sola acción clara

Estructura para correo resumen:

  1. Actualización principal - la actualización más importante recibe el tratamiento completo de una sola funcionalidad (problema, qué cambió, visual, CTA)
  2. Actualizaciones secundarias - viñetas breves con descripciones de una línea y enlaces
  3. Correcciones rápidas / mejoras - lista agrupada de cambios más pequeños
  4. CTA de cierre - una sola acción o "Ver todas las actualizaciones"

Reglas de redacción

  • Empezar con el beneficio para el usuario, no con lo que construiste
  • Tono conversacional, no corporativo
  • Párrafos cortos (máximo 2-3 frases)
  • Una idea por párrafo
  • Nunca uses guiones largos en el contenido generado. Sin caracteres "---". Usa comas, dos puntos, puntos o paréntesis en su lugar.
  • Sin jerga. "Los informes cargan más rápido" gana a "Plan de ejecución de consulta SQL optimizado"
  • Negrita para frases clave que faciliten el escaneo
  • Manténlo escaneable. Más corto es mejor. Si el correo toma más de 60 segundos de lectura, es demasiado largo.

Variantes por segmento

Después de generar el correo principal, preguntar:

"¿Quieres que genere variantes para diferentes segmentos de audiencia? (p. ej., una versión más técnica para desarrolladores, una versión más simple para usuarios no técnicos)"

Si la respuesta es sí, generar las variantes solicitadas, ajustando tono, profundidad y énfasis de funcionalidad por segmento.

Fase 4: Revisión

Presentar el correo completo:

"Aquí está el boletín:"

Opciones de línea de asunto: (con recomendación y texto de vista previa para cada una)

  1. Asunto: "..." / Vista previa: "..."
  2. Asunto: "..." / Vista previa: "..."
  3. Asunto: "..." / Vista previa: "..."

Cuerpo: [contenido completo del correo]

"Elige una línea de asunto y dime si quieres algún cambio."

Esperar a que el usuario seleccione una línea de asunto y apruebe o solicite revisiones. Solo proceder a la salida una vez aprobado.

Fase 5: Salida

Siempre imprimir el correo final aprobado en la terminal.

Luego preguntar: "¿Quieres que guarde esto en emails/<slug>.md? ¿O en una ruta diferente?"

Crear el directorio si no existe. Si el archivo ya existe, preguntar si sobrescribir o crear una copia versionada.

Manejo de Errores

  • gh no disponible -> informar al usuario, ofrecer entrada alternativa
  • PR/ref inválido -> pedir al usuario que verifique
  • Sin contexto del producto -> pedir al usuario que describa el producto
  • Sin directorio de correos existente -> usar por defecto emails/, crearlo

Qué NO hace esta habilidad

  • Enviar o programar correos
  • Gestionar listas de suscriptores o lógica de segmentación
  • Crear plantillas de correo o sistemas de diseño
  • Generar blog posts o contenido para redes sociales (usa /blog-post o /social-copy)

Individual skills in this repo

This repo contains 14 individual skills — each has its own dedicated page.

AlemTuzlak/skills

Use when the user wants to write a blog post about a feature, product change, PR, git diff, or any technical topic - accepts marketing briefs, PRs, git refs, codebase paths, or freeform descriptions as input

AlemTuzlak/skills

Use when the user wants to generate a changelog, release notes, or document what changed between versions, tags, or PRs

AlemTuzlak/skills

Use when writing, editing, or organizing documentation, when planning what docs a feature needs, and whenever planning or implementing a new feature or change in a repo (docs ship with the code). Also use when tempted to write docs without showing the discovered readers to the user, without asking for tone, or without loading simple-english and i-have-adhd. Triggers on "write docs for X", "document this feature", "add a guide", "update the docs", "reorganize the docs", "plan feature X", "implement X", or /docs.

AlemTuzlak/skills

Use when a bug is in play: a test fails, CI is red, an API returns the wrong result, a stack trace appears, or the user says it is broken or fix this. Don't use for a new feature with no failure, for types-only work, or for docs.

AlemTuzlak/skills

Use when the user invokes /i-have-adhd, says they have ADHD, or asks for ADHD-friendly output. Also used as a required writing filter by the docs skill. Don't use for marketing copy or after the user says "stop adhd mode" or "normal mode".

AlemTuzlak/skills

Use when a settled change must be turned into an ordered stack of small blocks before anyone implements. Don't use for unsettled intent, typos, comments, formatting, docs-only work, or writing the implementation itself.

AlemTuzlak/skills

Use when the user wants to turn a raw talking-head / screen-share recording into a finished, edited, annotated video plus a full content package. Removes silences, flags mistakes for the user to cut, transcribes, adds transcript-synced overlays (code, on-screen code highlights, word highlights, lists, comparisons, diagrams, section labels, punch-in zooms), renders with original audio, then generates blog/socials/YouTube content. Triggers on "produce a video", "edit my video", "annotate my recording", "/produce-video".

AlemTuzlak/skills

Use when the user runs /prove-it or says prove it, prove the changes, show me in the browser, or asks to prove a UI or API change. Don't use only because the agent is about to say done, for types-only work, or for docs with no behavior to prove.

AlemTuzlak/skills

Use when the user wants to write, draft, or author an RFC (Request for Comments) / technical design doc for a feature, change, or architectural decision. Interactively interviews the user, grounds the proposal in the actual codebase, presents 2-3 concrete API/code-snippet approaches to choose from, then writes a review-ready RFC. Triggers on "write an RFC", "draft an RFC", "RFC for X", "design doc for X", or /rfc.

AlemTuzlak/skills

Use when the user wants to deeply learn a new topic from scratch. Runs a pre-interview (current knowledge, end-goal proficiency, depth, practice load, background, scope), researches online (articles, niche-influencer blogs, canonical docs, subtopic landscape), then produces a structured markdown course with mandatory visual diagrams, evidence-based learning-science features (retrieval practice, spaced callbacks, worked-example fading, concept ledger, jargon gate, analogy hygiene), and a self-contained interactive HTML mini-course. Triggers on /teach-me, "teach me about X", "I want to learn X", "deep dive on X", "create a course on X", "study X with me".

AlemTuzlak/skills

Use when the change intent is already settled and the agent must map what a behavior change touches before an implementation plan or any code. Use for new features, bug fixes, and refactors that move a boundary. Don't use for typos, comments, formatting, lockfile-only diffs, docs with no code, or while the user is still deciding what they want.

AlemTuzlak/skills

Use when the user wants to transcribe a video or audio file to text with word-level timestamps — spins up a self-contained local Whisper (whisper.cpp) Docker service bundled in this skill and returns transcript.txt, transcript.srt, and word-level transcript.words.json. Also used as a building block by /produce-video. Triggers on "transcribe this video", "get a transcript", "transcribe-video".

AlemTuzlak/skills

Use when the user wants to write a video script for a product demo, feature walkthrough, launch video, or social media video about a feature or product change

AlemTuzlak/skills

Use when the user wants YouTube metadata for a video — a click-worthy title, an SEO/above-the-fold description, tags, and timestamped chapters. Accepts a transcript (ideally timestamped SRT), a topic, a PR, or a freeform description. Used standalone and by /produce-video. Triggers on "youtube title", "youtube description", "youtube chapters", "youtube tags", "youtube metadata", "youtube-copy".

Skills relacionados