Communitygithub.com

withastro/astro

Astroモノレポ用のChangesetを作成します。PRにchangesetファイルを追加したり、changelogエントリを記述したり、パッケージのバージョンアップを文書化する際にこのスキルを使用します。

astro とは?

このスキルは、Astroモノレポ向けのChangesetファイルを作成するためのAIエージェントスキルです。主にClaude CodeやCursorなどのAIエージェントが、PRに変更セットを追加する際に使用します。開発者が「changesetを追加して」と依頼した場合や、バージョンアップが必要なときに自動的にトリガーされます。スキルは、`pnpm changeset --empty` コマンドで雛形ファイルを生成し、その後パッケージ名とセマンティックバージョニング(patch/minor/major)の情報、そしてエンドユーザー向けの変更メッセージを編集する手順を提供します。メッセージは「This PR ...」という文脈で現在形の動詞で始め、実装の詳細ではなくユーザー体験に焦点を当てる必要があります。また、major変更には移行ガイダンスを含めるなどのルールも定義されています。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Changeset

Astroモノレポ用のChangesetファイルを作成します。Changesetは、どのパッケージが変更されたか、セマンティックバージョニングのバンプタイプ、そしてCHANGELOGエントリとなるユーザー向けメッセージを宣言します。

パッケージを変更するすべてのPRにはchangesetが必要です。ただし、examples/* の変更は例外です。

ファイルの作成

リポジトリルートで pnpm changeset --empty を実行します。これにより、.changeset/ 内にランダムな名前の .md ファイルが空のフロントマター付きで作成されます。ファイル名を発明したりディレクトリを調べる必要はありません。その後、生成されたファイルを編集して、パッケージのバンプとメッセージを追加します。

フォーマット

---
'<package-name>': patch
---

<changeset message>
  • パッケージ名は、そのパッケージの package.json の name フィールドと完全に一致する必要があります(例:'astro'、'@astrojs/node')
  • バンプタイプ:patch、minor、major
  • 1つのchangesetファイルで複数のパッケージをカバーできます
  • コアの astro パッケージに対する major および minor バンプはCIでブロックされ、メンテナーによるレビューが必要です

メッセージの書き方

Changesetメッセージは公開されるCHANGELOGエントリです。コードレビュアーではなく、Astroユーザーに向けて書きましょう。

「このPRは...」という文を完成させる現在形の動詞で始めます:

  • Adds、Removes、Fixes、Updates、Refactors、Improves、Deprecates

変更はAstroサイトを構築するユーザーがどのように体験するかの観点から説明し、内部実装の詳細ではありません:

// 実装に焦点を当てすぎ
Logs helpful errors if content is invalid

// より良い例 — ユーザーへの影響
Adds logging for content collections configuration errors.

パッチ更新

通常は1行で十分です。複数の文を書く場合を除き、末尾の句読点は不要です。

---
'astro': patch
---

Fixes a bug where the toolbar audit would incorrectly flag images as above the fold
---
'astro': patch
---

Refactors internal handling of styles and scripts for content collections to improve build performance

読者がその変更が自分に関係あるかどうかを判断できるようにしましょう。変更が特定のオプションや関数に関連している場合は、具体的なAPI名(バッククォートで囲んで)を含めます。APIがユーザーに直接関係しない場合は、代わりにユースケースや最終結果を説明します:

// 曖昧
Improves automatic fallbacks generation

// 明確 — 読者は影響を受けるかどうかを判断できる
Improves automatic `fallbacks` generation for the experimental Fonts API

新機能(minor)

「Adds」で始め、新しいAPIの名前を挙げ、ユーザーが何をできるようになったかを説明します。必要に応じてコード例を含めます:

---
'astro': minor
---

Adds a new, optional property `timeout` for the `client:idle` directive

This value allows you to specify a maximum time to wait, in milliseconds, before hydrating a UI framework component.

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

新機能は、ブログ記事にも活用できるより豊かな説明を書く機会です。長いエントリのガイダンスについては、Astro changeset docs を参照してください。

破壊的変更(major)

「Removes」「Changes」「Deprecates」などの動詞を使用します。移行ガイダンスを必ず含める必要があります。必要に応じて差分コードサンプルを使用します:

---
'astro': major
---

Removes support for Shiki custom language's `path` property. The language JSON file must now be imported and passed to the option instead.

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

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

デフォルト値の変更では、古いデフォルト、新しいデフォルト、および以前の動作を復元する方法を記載する必要があります。

長いChangeset

長い説明には、セクションを区切るために #### およびそれより深い見出し(## や ### は不可)を使用します。これにより、エントリが組み込まれたときにCHANGELOGの可読性が維持されます:

---
'astro': minor
---

Adds a new Sessions API to store user state between requests for on-demand rendered pages.

#### Configuring session storage

<!-- ... -->

#### Using sessions

<!-- ... -->

関連スキル