Dónde cambia el valor al quitar las comillas
YAML decide por su cuenta el tipo de un valor sin comillas, y ahí es donde ocurren los accidentes.
version: 1.10 se lee como número y queda en 1.1: el cero final desaparece y la versión pasa a significar otra cosa. zip: 01234 también se convierte en el número 1234 y pierde el cero inicial. Códigos postales, números de empleado y teléfonos hay que escribirlos entre comillas como "01234".
Valores como 12:30, no, yes y on se mantienen como texto en esta herramienta. Los analizadores que siguen las reglas antiguas, entre ellos PyYAML y Ruby, leen no como falso: por eso el código de país NO acaba convertido en false, un caso célebre. Si la configuración pasa por varias herramientas, entrecomilla también esas palabras.
Reglas de sangrado
Sangra solo con espacios. Un tabulador es un error de sintaxis. Si tu editor mete tabuladores, cámbialo a espacios para los archivos YAML.
Los elementos de un mismo nivel deben quedar exactamente alineados. Una columna de más y el análisis falla justo ahí. Esta herramienta indica la línea y la columna donde se detuvo.
Anclas y claves de fusión
&nombre etiqueta un bloque y *nombre lo pega donde haga falta. Añadiendo <<: ese bloque se vuelca dentro de otro mapa.
defaults: &d
retry: 2
image: node
job:
<<: *d
script: test
Esta herramienta resuelve las claves de fusión, así que el JSON sale con retry e image dentro de job. Sin resolverlas quedaría una clave literal "<<", inservible más adelante. Es una sintaxis constante en los archivos de GitLab CI y Docker Compose.
Qué se pierde al pasar a JSON
Los comentarios desaparecen. JSON no tiene sintaxis de comentarios, de modo que convertir una configuración y guardarla encima del original tira a la basura todas las notas que alguien dejó ahí. Conserva el original.
Los documentos múltiples tampoco caben. Cuando un archivo contiene varios documentos separados por ---, esta herramienta da error en lugar de emitir en silencio el primero y dejar que los demás se pierdan sin que nadie lo note. Divide un manifiesto de Kubernetes con varios documentos y conviértelo por partes.
Las fechas se vuelven texto. YAML reconoce la fecha como un tipo; JSON no tiene equivalente.
En sentido contrario
Al pasar de JSON a YAML se van casi todas las comillas y el resultado se lee mucho mejor. Se quedan en las cadenas con ceros a la izquierda y en las que parecen true, porque quitarlas ahí cambiaría el significado. Que permanezcan es lo correcto, no un fallo de formato.