Communitygithub.com

withastro/astro

Astro 모노레포를 위한 변경셋 파일을 생성합니다. PR에 변경셋 파일을 추가하거나, 체인지로그 항목을 작성하거나, 패키지 버전 업을 문서화해야 할 때 이 스킬을 사용하세요. 또한 사용자가 "변경셋 추가", "변경셋 작성", "변경셋 생성"이라고 말하거나 다른 스킬이 변경셋 생성을 지시할 때 트리거됩니다.

astro란 무엇인가요?

이 스킬은 Astro 모노레포에서 변경셋(Changeset) 파일을 생성하는 프로세스를 안내합니다. 변경셋은 어떤 패키지가 변경되었는지, semver 범프 유형(패치, 마이너, 메이저)이 무엇인지, 그리고 사용자에게 전달되는 체인지로그 메시지를 선언하는 데 사용됩니다. 이 스킬은 주로 Claude Code 환경에서 사용되며, `pnpm changeset --empty` 명령어를 실행하여 빈 변경셋 파일을 생성한 후, 패키지명과 범프 유형, 그리고 사용자 중심의 메시지를 작성하는 방법을 설명합니다. 특히 변경셋 메시지는 코드 검토자가 아닌 Astro 사용자에게 초점을 맞춰 현재 시제 동사(예: Adds, Fixes, Removes)로 시작하고, 구현 세부사항보다는 기능적 영향을 서술해야 합니다. 또한 패치, 새로운 기능, 주요 변경 사항 등 각 범프 유형에 맞는 작성 예시를 제공하며, 체인지로그의 가독성을 위해 `####` 이하의 제목을 사용하도록 권장합니다. Astro 모노레포에서 모든 PR은 패키지를 수정할 때 변경셋을 필요로 하며, `examples/*` 변경은 예외입니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/withastro/astro/tree/HEAD/.agents/skills/changeset

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

변경셋

Astro 모노레포를 위한 변경셋 파일을 생성합니다. 변경셋은 변경된 패키지, semver 범프 유형, 그리고 CHANGELOG 항목이 되는 사용자 대상 메시지를 선언합니다.

패키지를 수정하는 모든 PR에는 변경셋이 필요합니다. examples/* 변경만 예외입니다.

파일 생성

리포지토리 루트에서 pnpm changeset --empty를 실행하세요. 그러면 .changeset/ 디렉터리에 무작위 이름의 .md 파일이 생성됩니다. 파일 이름을 직접 정하거나 디렉터리를 확인할 필요가 없습니다. 그런 다음 생성된 파일을 편집하여 패키지 범프와 메시지를 추가하세요.

형식

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

<changeset message>
  • 패키지명은 해당 패키지의 package.json에 있는 name 필드와 정확히 일치해야 합니다 (예: 'astro', '@astrojs/node')
  • 범프 유형: patch, minor, 또는 major
  • 하나의 변경셋 파일이 여러 패키지를 다룰 수 있습니다
  • 코어 astro 패키지에 대한 major 및 minor 범프는 CI에서 차단되며 유지보수자의 검토가 필요합니다

메시지 작성

변경셋 메시지는 공개 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.

패치 업데이트

보통 한 줄이면 충분합니다. 여러 문장을 쓰는 경우가 아니라면 끝에 마침표를 붙일 필요가 없습니다.

---
'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 변경셋 문서를 참조하세요.

주요 변경 사항 (major)

"Removes", "Changes", 또는 "Deprecates"와 같은 동사를 사용하세요. 마이그레이션 안내를 반드시 포함해야 합니다. 적절한 경우 diff 코드 샘플을 사용하세요:

---
'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,
      ],
    },
  },
})
```

기본값 변경 시에는 이전 기본값, 새 기본값, 그리고 이전 동작을 복원하는 방법을 반드시 언급해야 합니다.

긴 변경셋

긴 설명의 경우, #### 및 더 낮은 수준의 제목을 사용하여 섹션을 나누세요 (##나 ###는 사용하지 마세요). 이렇게 하면 항목이 CHANGELOG에 포함될 때 가독성이 유지됩니다:

---
'astro': minor
---

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

#### Configuring session storage

<!-- ... -->

#### Using sessions

<!-- ... -->

관련 스킬