Markdown, creado en 2004 por John Gruber con aportes significativos de Aaron Swartz, se concibió originalmente como una sintaxis de marcado ultra-ligera y legible. Sin embargo, su éxito masivo trajo una consecuencia inevitable: la fragmentación. Diversos parsers interpretaban el mismo documento de formas sutilmente distintas. Para solucionar esto, un comité técnico lanzó en 2014 **CommonMark**, una especificación rigurosa con un estándar inequívoco.

GitHub, que basaba todo su ecosistema de comunicación e incidencias en Markdown, adoptó este estándar e introdujo **GitHub Flavored Markdown (GFM)** en 2017. GFM no es un reemplazo de CommonMark, sino un *superconjunto* (superset) estricto. Esto significa que cualquier archivo que cumpla con CommonMark compila exactamente igual bajo GFM, pero GFM añade extensiones indispensables para la ingeniería y la gestión de proyectos.

El Núcleo del Estándar: GFM extiende la especificación CommonMark añadiendo soporte formal para tablas, listas de tareas, enlaces web automáticos (autolinks), tachados y filtrado estricto de etiquetas HTML maliciosas.

Arquitectura de Parsing de GFM: Las Dos Fases Críticas

Los motores modernos de Markdown que procesan GFM, como **Marked.js** en su especificación de cumplimiento, operan siguiendo un proceso estricto de dos fases:

  1. Fase de Análisis de Bloque (Block Parsing): El motor analiza el documento línea por línea para segmentar la estructura jerárquica primaria. Identifica bloques de código (code fences), encabezados (`#`), blockquotes y tablas. En esta etapa se construye el Árbol de Sintaxis Abstracta (AST).
  2. Fase de Análisis en Línea (Inline Parsing): Con el AST ya estructurado, el motor vuelve a escanear los nodos de texto para aplicar estilos de nivel de carácter. Resuelve negritas, cursivas, enlaces implícitos y etiquetas ``.

Las Extensiones Clave de GFM Frente a CommonMark

Para comprender por qué GFM es el lenguaje de facto en la documentación técnica, examinemos sus cuatro extensiones fundamentales y su sintaxis formal:

1. Tablas Bidimensionales con Alineación de Datos

CommonMark original no contemplaba tablas. GFM lo resuelve de forma elegante usando barras verticales y filas delimitadoras con dos puntos:

| Parámetro | Tipo | Requerido |
| :--- | :---: | ---: |
| `src` | String | Sí |
| `scale` | Float | Opcional |

2. Listas de Tareas (Task Lists / Checklists)

GFM convierte los corchetes vacíos u ocupados con una equis (`x`) en elementos de casilla interactivos, ampliamente utilizados en minutas ágiles:

- [x] Corrección de vulnerabilidades XSS
- [ ] Ejecutar compilación de producción con pnpm

3. Autovínculos Automáticos (Autolinks)

A diferencia del marcado básico, GFM reconoce direcciones URL válidas (como `https://markdify.tech`) y correos electrónicos de forma nativa en el flujo de texto sin necesidad de envolverlos en la sintaxis habitual `[texto](url)`.

Seguridad Contra Inyecciones HTML en GFM

Debido a que Markdown permite inyectar código HTML crudo para ofrecer mayor flexibilidad, los parsers de GFM implementan medidas de seguridad estrictas. El estándar oficial de GitHub define políticas de sanitización agresivas para neutralizar vulnerabilidades de Cross-Site Scripting (XSS). Sin embargo, para entornos de producción offline y locales, se recomienda complementar el parsing de GFM con herramientas dedicadas basadas en árbol DOM como **DOMPurify**, asegurando que scripts maliciosos o exploits inyectados mediante esquemas `javascript:` en atributos de enlaces sean completamente inertes antes de ser añadidos al DOM activo.

Referencias Oficiales