Communitygithub.com

withastro/astro

Crea un archivo changeset para el monorepo de Astro. Usa esta habilidad cada vez que necesites agregar un archivo changeset a un PR, escribir una entrada de changelog o documentar un cambio de versión de paquete. También se activa cuando el usuario dice "agregar un changeset", "escribir un changeset", "crear un changeset", o cuando otra habilidad te indica que crees un changeset.

¿Qué es astro?

Esta habilidad automatiza la creación de archivos changeset para el monorepo de Astro, un requisito esencial para cualquier PR que modifique paquetes (excepto cambios en `examples/*`). Los changesets declaran qué paquetes cambiaron, el tipo de bump semver (patch, minor, major) y un mensaje orientado al usuario que se convierte en la entrada del CHANGELOG. La habilidad guía al usuario a ejecutar `pnpm changeset --empty` desde la raíz del repositorio, lo que genera un archivo `.md` en `.changeset/` con front matter vacío, que luego se edita para agregar el bump y el mensaje. Está diseñada para integrarse con asistentes de IA como Claude Code, Cursor o Codex, y utiliza reglas de formato específicas: los nombres de paquete deben coincidir exactamente con el campo `name` en `package.json`, los tipos de bump son patch, minor o major, y un solo archivo puede cubrir múltiples paquetes. Además, ofrece pautas detalladas para redactar mensajes públicos de changelog, priorizando el impacto en el usuario final sobre los detalles de implementación, con ejemplos para parches, nuevas funciones y cambios de ruptura.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/withastro/astro/tree/HEAD/.agents/skills/changeset

Preguntar en tu IA favorita

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

Documentación

Changeset

Crea archivos changeset para el monorepo de Astro. Los changesets declaran qué paquetes cambiaron, el tipo de bump semver y un mensaje orientado al usuario que se convierte en la entrada del CHANGELOG.

Cada PR que modifica un paquete requiere un changeset. Solo los cambios en examples/* están exentos.

Creación del archivo

Ejecuta pnpm changeset --empty desde la raíz del repositorio. Esto crea un archivo .md con nombre aleatorio en .changeset/ con front matter vacío — no es necesario inventar un nombre de archivo ni inspeccionar el directorio. Luego edita el archivo generado para agregar el bump del paquete y el mensaje.

Formato

---
'<nombre-del-paquete>': patch
---

<mensaje del changeset>
  • Los nombres de paquete deben coincidir exactamente con el campo name en el package.json del paquete (por ejemplo, 'astro', '@astrojs/node')
  • Tipos de bump: patch, minor o major
  • Un solo archivo changeset puede cubrir múltiples paquetes
  • Los bumps major y minor al paquete astro principal están bloqueados por CI y requieren revisión de los mantenedores

Redacción del mensaje

El mensaje del changeset es una entrada pública del CHANGELOG. Escríbelo para usuarios de Astro, no para revisores de código.

Comienza con un verbo en presente que complete la oración "Este PR...":

  • Agrega, Elimina, Corrige, Actualiza, Refactoriza, Mejora, Depreca

Describe el cambio tal como lo experimentará alguien que construye un sitio con Astro, no cómo se implementó internamente:

// Demasiado centrado en la implementación
Registra errores útiles si el contenido no es válido

// Mejor – impacto en el usuario
Agrega registro de errores de configuración de colecciones de contenido.

Actualizaciones de parche

Generalmente una línea es suficiente. No se requiere puntuación final a menos que se escriban varias oraciones.

---
'astro': patch
---

Corrige un error donde la auditoría de la barra de herramientas marcaba incorrectamente las imágenes como "above the fold"
---
'astro': patch
---

Refactoriza el manejo interno de estilos y scripts para colecciones de contenido con el fin de mejorar el rendimiento de compilación

Ayuda al lector a determinar si el cambio le afecta. Incluye el nombre específico de la API (con formato de backtick) cuando el cambio esté vinculado a una opción o función reconocible. Cuando la API no sea visible para el usuario, describe el caso de uso o el resultado final:

// Vago
Mejora la generación automática de fallbacks

// Claro – el lector puede saber si le afecta
Mejora la generación automática de `fallbacks` para la API experimental de Fonts

Nuevas funciones (minor)

Comienza con "Agrega", nombra la nueva API y describe lo que los usuarios pueden hacer ahora. Incluye un ejemplo de código cuando sea útil:

---
'astro': minor
---

Agrega una nueva propiedad opcional `timeout` para la directiva `client:idle`

Este valor permite especificar un tiempo máximo de espera, en milisegundos, antes de hidratar un componente de framework de UI.

```astro
<Button client:idle={{ timeout: 500 }} />
```

Las nuevas funciones son una oportunidad para escribir una descripción más completa que pueda alimentar publicaciones de blog. Consulta la documentación de cambiosets de Astro para obtener orientación sobre entradas más largas.

Cambios de ruptura (major)

Usa verbos como "Elimina", "Cambia" o "Depreca". Debe incluir orientación de migración. Usa ejemplos de código diff cuando sea apropiado:

---
'astro': major
---

Elimina el soporte para la propiedad `path` de lenguajes personalizados de Shiki. El archivo JSON del lenguaje ahora debe importarse y pasarse a la opción en su lugar.

```diff
// astro.config.js
+ import customLang from './custom.tmLanguage.json'

export default defineConfig({
  markdown: {
    shikiConfig: {
      langs: [
-       { path: './custom.tmLanguage.json' },
+       customLang,
      ],
    },
  },
})
```

Los cambios en los valores predeterminados deben mencionar el valor anterior, el nuevo valor y cómo restaurar el comportamiento anterior.

Changesets más largos

Para descripciones más extensas, usa encabezados #### y más profundos (nunca ## o ###) para dividir secciones. Esto mantiene el CHANGELOG legible cuando se incorpora tu entrada:

---
'astro': minor
---

Agrega una nueva API de Sesiones para almacenar el estado del usuario entre solicitudes en páginas renderizadas bajo demanda.

#### Configuración del almacenamiento de sesiones

<!-- ... -->

#### Uso de sesiones

<!-- ... -->

Skills relacionados