changeset について
Astro monorepo で Changeset ファイルを作成するスキルです。コントリビューター向けに、パッケージのバージョン更新種別とユーザー向け CHANGELOG の記述方法を案内します。
主な機能
- 01ランダム名の Changeset ファイル生成
- 02パッケージと semver 更新種別の指定
- 03ユーザー向け CHANGELOG の作成
- 04破壊的変更と移行手順の記述
活用シーン
- 01パッケージ変更のリリース記録
- 02複数パッケージの更新種別の宣言
- 03機能や破壊的変更の記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ withastro/ astro --skill changesetインストール後、Claude Code で/changesetを入力して読み込まれたか確認します。
同梱ファイルevals/evals.json
詳細
Changeset
Astro モノレポ用の changeset ファイルを作成します。Changeset には、変更されたパッケージ、semver の更新種別、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 ユーザーに向けて書いてください。
「This PR ...」の文を完成させる現在形の動詞で始めます。
- Adds、Removes、Fixes、Updates、Refactors、Improves、Deprecates
内部でどのように実装したかではなく、Astro サイトを構築する人が変更をどのように体験するかを説明します。
// Too implementation-focused
Logs helpful errors if content is invalid
// Better -- user-facing impact
Adds logging for content collections configuration errors.
Patch 更新
通常は 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 がユーザー向けでない場合は、ユースケースや最終的な結果を説明してください。
// Vague
Improves automatic fallbacks generation
// Clear -- reader can tell if it affects them
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