Communitygithub.com

AlemTuzlak/skills

Úsalo cuando el usuario quiera generar un registro de cambios, notas de versión o documentar qué cambió entre versiones, etiquetas o PRs.

¿Qué es skills?

Esta habilidad genera automáticamente registros de cambios (changelogs) legibles para humanos a partir del historial de git, siguiendo el formato Keep a Changelog. Es útil para desarrolladores y equipos que quieren documentar de manera clara y consistente los cambios entre versiones, etiquetas o pull requests. Soporta plataformas como Git y GitHub, y puede crear automáticamente Releases en GitHub. El proceso consta de varias fases: resolución de la entrada (rango de git, etiqueta, PR o interacción), recolección de commits y contexto del producto, categorización de cambios en secciones como Añadido, Corregido, etc., redacción en lenguaje amigable, revisión con el usuario y finalmente salida a CHANGELOG.md y opcionalmente a GitHub Release. Maneja errores como comandos no disponibles, referencias inválidas o falta de contexto, y permite agrupar cambios grandes para mayor claridad.

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

Preguntar en tu IA favorita

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

Documentación

Generador de Registros de Cambios

Genera automáticamente registros de cambios (changelogs) legibles para humanos a partir del historial de git. Sigue el formato Keep a Changelog, pule los mensajes de commit en lenguaje amigable y, opcionalmente, crea Releases en GitHub.

Resolución de Entrada

La entrada principal es un rango de referencias git. Resuelve el argumento (si se proporciona):

  1. Contiene ... o .. -> rango de referencia git (ej. v1.0.0...v1.1.0)
  2. Coincide con una etiqueta/referencia única -> desde esa referencia hasta HEAD
  3. Coincide con una URL de GitHub o patrón #\d+ -> PR (extraer cambios solo de ese PR). Para entrada de un solo PR: leer el diff y la descripción del PR, categorizar cambios, usar el título del PR como entrada. Omitir el encabezado de versión. Preguntar al usuario si quiere añadir estas entradas a una versión existente del registro o crear una nueva.
  4. Sin argumento -> preguntar: "¿Qué rango debería cubrir el registro de cambios? Puedes proporcionar un rango de referencias git (ej. v1.0.0...v1.1.0), una etiqueta (cambios desde esa etiqueta) o un número de PR."

Flujo de Proceso

digraph changelog {
    rankdir=TB;
    "Resolve input" [shape=box];
    "Phase 1: Gather" [shape=box];
    "Phase 2: Categorize" [shape=box];
    "Phase 3: Polish" [shape=box];
    "Phase 4: Review" [shape=box];
    "Approved?" [shape=diamond];
    "Phase 5: Output" [shape=box];

    "Resolve input" -> "Phase 1: Gather";
    "Phase 1: Gather" -> "Phase 2: Categorize";
    "Phase 2: Categorize" -> "Phase 3: Polish";
    "Phase 3: Polish" -> "Phase 4: Review";
    "Phase 4: Review" -> "Approved?";
    "Approved?" -> "Phase 3: Polish" [label="revisions"];
    "Approved?" -> "Phase 5: Output" [label="yes"];
}

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

Si el usuario dice "solo usa valores predeterminados" o similar, elige valores predeterminados razonables, indica lo que elegiste y pide una única confirmación.

Fase 1: Recopilar

Paso 1 - Recopilar commits y PRs

Ejecuta git log entre las dos referencias para recopilar todos los commits. Si el repositorio usa PRs, también verifica PRs fusionados en el rango usando gh pr list --state merged.

Para cada commit/PR, extrae:

  • Mensaje del commit (asunto + cuerpo)
  • Archivos cambiados (para determinar el alcance)
  • Título y descripción del PR (si está disponible)
  • Cualquier prefijo de tipo de commit convencional (feat, fix, chore, etc.)

Paso 2 - Leer contexto más amplio del producto

Lee si existen: README, package.json (o equivalente). Objetivo: entender qué es el producto para escribir descripciones amigables para el usuario.

Si no se encuentra nada, pregunta: "¿Puedes describir brevemente el producto? Necesito contexto para escribir entradas de registro de cambios amigables."

Paso 3 - Detectar formato existente

Verifica si el repositorio tiene un CHANGELOG.md existente. Si lo tiene:

  • Detecta el formato (Keep a Changelog, personalizado, etc.)
  • Detecta si usa etiquetas emoji (ej. emojis para Nuevo, Corrección de error, Ruptura) o categorías de texto plano
  • Coincide con el estilo existente

Si no hay registro de cambios existente:

  • Usa por defecto el formato Keep a Changelog
  • Pregunta: "No se encontró un registro de cambios existente. ¿Prefieres etiquetas emoji (ej. para Nuevo, Corrección de error) o categorías de texto plano (Añadido, Corregido, etc.)?"

Fase 2: Categorizar

Ordena todos los cambios en las categorías de Keep a Changelog. Cambios Rupturistas obtienen una sección dedicada en la parte superior:

  • Cambios Rupturistas - cualquier cambio que rompa el comportamiento existente, APIs o requiera acción del usuario para actualizar. Incluye notas de migración para cada uno. Detecta a partir de feat!:, fix!:, pies de BREAKING CHANGE:, o APIs eliminadas/renombradas en el diff.
  • Añadido - nuevas funcionalidades
  • Cambiado - cambios en funcionalidades existentes
  • Obsoleto - funcionalidades que serán eliminadas
  • Eliminado - funcionalidades que fueron eliminadas
  • Corregido - correcciones de errores
  • Seguridad - correcciones de vulnerabilidades

Reglas de categorización:

  • Si los commits siguen commits convencionales (feat:, fix:, etc.), usa el tipo para categorizar
  • Si no, analiza el diff y el mensaje del commit para determinar la categoría
  • Omite cambios solo internos (refactorizaciones, adiciones de pruebas, cambios de CI, actualizaciones de dependencias) a menos que afecten el comportamiento para el usuario
  • Cuando no estés seguro de si un cambio es visible para el usuario, inclúyelo y deja que el usuario lo elimine en la revisión
  • Para rangos con 50+ commits, agrupa cambios relacionados en entradas de alto nivel (ej. en lugar de listar 12 correcciones individuales de API, escribe "Mejora en el manejo de errores de API en múltiples endpoints"). Presenta la versión agrupada y permite al usuario expandir cualquier grupo si quiere detalle.

Presenta la lista categorizada:

"Esto es lo que encontré en este rango:"

Añadido (3)

  • Funcionalidad A
  • Funcionalidad B
  • Funcionalidad C

Corregido (2)

  • Corrección de error A
  • Corrección de error B

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

NO continúes hasta que el usuario confirme.

Fase 3: Pulir

Reescribe cada entrada en lenguaje amigable para humanos:

  • Comienza con el beneficio para el usuario, no con el detalle de implementación
  • "Los informes ahora cargan 3 veces más rápido" no "Plan de ejecución de SQL optimizado para el módulo de informes"
  • "Ahora puedes exportar informes a PDF" no "Se añadió funcionalidad de exportación a PDF al servicio de informes"
  • Mantén cada entrada en una línea (máximo dos para cambios complejos)
  • Incluye referencias a PRs/issues cuando estén disponibles (ej. (#123))

Encabezado de versión

Formato: ## [versión] - AAAA-MM-DD

Si el límite superior del rango es una etiqueta de versión (ej. v1.2.0), usa esa como versión. Si el límite superior es HEAD o un nombre de rama, pregunta: "¿Qué número de versión debería usar este registro de cambios?"

Usa la fecha del commit más reciente en el rango, en formato ISO (AAAA-MM-DD).

Apéndice técnico

Después de generar el registro de cambios amigable, pregunta:

"¿Quieres que también genere un apéndice técnico con detalles de implementación? (útil para documentación orientada a desarrolladores)"

Si la respuesta es sí, genera una sección más detallada con especificaciones técnicas, guías de migración por cambios rupturistas y cambios en APIs.

Reglas de escritura

  • Nunca uses guiones largos en el contenido generado. Sin caracteres "---". Usa comas, dos puntos, puntos o paréntesis en su lugar.
  • Lenguaje amigable por defecto (sin jerga, sin nombres internos de funcionalidades)
  • Una línea por entrada, máximo dos para cambios complejos
  • Tiempo verbal consistente (pasado: "Añadido", "Corregido", "Eliminado")
  • Incluye referencias a PRs/issues cuando estén disponibles

Fase 4: Revisar

Presenta la entrada completa del registro de cambios:

"Aquí está el registro de cambios:"

## [1.2.0] - 2026-04-11

### Añadido
- Ahora puedes exportar informes a PDF (#123)

### Corregido
- El panel ya no parpadea al cargar la página (#456)

"¿Quieres algún cambio?"

Espera la aprobación. Solo continúa a la salida una vez que el usuario confirme.

Fase 5: Salida

CHANGELOG.md

Detecta CHANGELOG.md existente en la raíz del repositorio. Si se encuentra, lee el archivo completo, identifica el punto de inserción (antes de la primera línea ## [), presenta el punto de inserción propuesto al usuario y confirma antes de escribir. Si no se encuentra, crea uno con un encabezado estándar:

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/).

Siempre confirma antes de escribir:

"Voy a anteponer esto a CHANGELOG.md. ¿Todo bien?"

GitHub Release

Después de guardar el registro de cambios, pregunta:

"¿Quieres que también cree una Release en GitHub con este registro de cambios?"

Si la respuesta es sí, usa gh release create <etiqueta> --notes "<contenido del registro>" para crear la release. Si gh no está disponible, informa al usuario y omite.

Manejo de Errores

  • gh no disponible -> informa al usuario, omite el enriquecimiento de PR y la Release en GitHub, confía solo en git log
  • Referencia/etiqueta inválida -> pide al usuario que verifique
  • Sin commits en el rango -> informa al usuario, pide que verifique el rango
  • Sin contexto del producto -> pide al usuario que describa el producto
  • Commits no convencionales -> recurre al análisis del diff para la categorización

Lo que esta habilidad NO hace

  • Gestionar la estrategia de versionado (las decisiones de versionado semántico son del usuario)
  • Publicar en registros de paquetes
  • Generar publicaciones de blog o boletines (usa /blog-post o /newsletter)
  • Manejar estrategias de ramificación o flujos de trabajo de lanzamiento

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 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 write a product update email, feature announcement newsletter, or digest email for users or subscribers

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