Official agent skill

Beachball Change File

by microsoft in microsoft/beachball

Create and validate Beachball change files. An agent skill from microsoft/beachball.

OfficialMITAuto-check passedDevelopment

Install Beachball Change File

skills CLI
$ npx skills add microsoft/beachball --skill beachball-change-file -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install microsoft/beachball beachball-change-file --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/microsoft/beachball.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/beachball-change-file .claude/skills/beachball-change-file && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
beachball-change-file
GitHub stars
816
Token cost
~2k tokens
SKILL.md length
978 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Create and validate Beachball change files. An agent skill from microsoft/beachball.

  • Works in 6 steps: Resolve repository context → Inspect the git state → Get the authoritative changes → …
  • The user asks to generate change files
  • SKILL.md covers 1. Resolve repository context, 2. Inspect the git state, 3. Get the authoritative changes and 4. Determine each entry, plus 2 more sections
  • Calls git, yarn and pnpm

What it does

Beachball Change File is an agent skill from microsoft/beachball, published by the product's own GitHub organization. Create and validate Beachball change files. Use when the user asks to generate change files, prepare to push a branch, or prepare or create a pull request. Do not use for ordinary code changes or planning.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Pull requests. It works with TypeScript, Git and npm. The repository describes itself as: The Sunniest Semantic Version Bumper. The licence is MIT.

When your agent uses it

  • The user asks to generate change files
  • Prepare to push a branch
  • Create a pull request
  • Ordinary code changes

Example prompts

  • “/beachball-change-file”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Resolve repository context
  2. Inspect the git state
  3. Get the authoritative changes
  4. Determine each entry
  5. Create the change files
  6. Validate the result

What it can do on your machine

Read from SKILL.md and the folder at commit f8c9573. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • yarn
    • pnpm
    • npm
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • microsoft.github.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Beachball Change File loads about 2k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 978 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~57
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from microsoft/beachball at commit f8c9573, republished under its MIT licence (© microsoft). 978 words, ~2,050 tokens.

Download SKILL.mdSave it as .claude/skills/beachball-change-file/SKILL.md (or your agent's skills folder).
name
beachball-change-file
description
Create and validate Beachball change files. Use when the user asks to generate change files, prepare to push a branch, or prepare or create a pull request. Do not use for ordinary code changes or planning.
license
MIT
metadata.version
1.1.1
metadata.source
https://github.com/microsoft/beachball/blob/main/skills/beachball-change-file/SKILL.md

Beachball manages package versions and changelogs in JavaScript and TypeScript repositories. A change file records each changed package's changelog comment and semantic version bump. After a change is merged and released, Beachball uses these files to update package versions and changelogs.

Create change files manually using the workflow and JSON formats below. Do not use Beachball's interactive change command unless the user requests it.

1. Resolve repository context

Determine these values once and use them throughout the workflow:

  • <ROOT>: almost always the git root. It should contain beachball.config.* or .beachballrc.* or have a "beachball" key in package.json. If not found, ask the user.
  • <BEACHBALL_COMMAND>: the package-manager-specific way to invoke Beachball, such as yarn beachball, pnpm exec beachball, or npm exec beachball --.
  • <BEACHBALL_VERSION>: the version from <BEACHBALL_COMMAND> --version
  • <CHECK_COMMAND>: prefer a root package.json script that runs beachball check, because it may supply repository-specific arguments. Otherwise use <BEACHBALL_COMMAND> check. Include the package-manager-specific argument separator when passing --verbose through a script.
  • <CHANGE_DIR>: the result of <BEACHBALL_COMMAND> config get changeDir, or change/ if unset.
  • <GROUP_CHANGES>: the result of <BEACHBALL_COMMAND> config get groupChanges; treat false and unset as non-grouped.
  • <TARGET_BRANCH>: use the branch specified by the user or pull request. Otherwise use the result of <BEACHBALL_COMMAND> config get branch, or the repository's default branch if unset. Ask the user if it cannot be determined reliably.
  • <MERGE_BASE>: the local merge-base of HEAD and <TARGET_BRANCH>. Do not merge the target branch to calculate it.
  • <INCLUDE_EMAIL>: For Beachball 2.x, set this to true. For Beachball 3.x, use the result of <BEACHBALL_COMMAND> config get changeFile.includeEmail; set this to false only if the result is explicitly false; otherwise set it to true.
  • <EMAIL>: the result of git config user.email. Never invent an email.

Run all commands from <ROOT> unless the repository's script requires otherwise.

2. Inspect the git state

Beachball considers committed and staged files, but not unstaged or untracked files. Before proceeding, check for unstaged or untracked paths:

  • Unstaged tracked paths: git ls-files -m
  • Untracked paths: git ls-files -o --exclude-standard

If any changes are unstaged or untracked, ask whether to stage those exact paths or continue without them.

3. Get the authoritative changes

Run <CHECK_COMMAND> --verbose, using the required argument separator if <CHECK_COMMAND> is a package script.

  • Use only the packages under "Found changes in the following packages" as change-file entries. Beachball configuration may exclude packages or files that otherwise appear changed.
  • Use the paths under "changed files in current branch" when reviewing the changes. Ignore paths shown with ~~ strikethrough formatting.
  • Do not determine which packages need entries by scanning <CHANGE_DIR>. Beachball's package list already accounts for existing change files and repository configuration.

A nonzero exit caused by missing change files is expected at this stage; continue using the reported packages and paths. If the command failed because it could not run or load configuration, resolve or report that error before continuing. If no packages require entries, report that no change file is needed and stop.

Show full SKILL.md (492 more words)Show less

4. Determine each entry

For each package reported by Beachball, gather:

  • Its current version from package.json.
  • Its disallowed types from <BEACHBALL_COMMAND> config get disallowedChangeTypes --package <packageName>.
  • Its considered changes from git diff --cached <MERGE_BASE> -- <reported-paths>. This form includes committed and staged changes while excluding unstaged edits.
  • Any relevant API report diff under the package's etc/*.api.md. A changed API report is strong evidence of a public signature change; an unchanged or absent report does not prove that the API is unchanged.

Gather independent values for all reported packages in parallel when the available tools allow it.

Choose type using this table, then ensure the type is not disallowed:

<!-- prettier-ignore -->
Package versionConsumer impacttype
AnyNo consumer-visible effect, such as test-only or internal documentation changesnone
PrereleaseAny consumer-visible effectprerelease
Stable 0.xBreaking API or behavior changeminor
Stable 0.xAny other consumer-visible changepatch
Stable >=1.0.0Breaking API or behavior changemajor, after user confirmation
Stable >=1.0.0New backward-compatible public functionalityminor
Stable >=1.0.0Backward-compatible fix or behavior correctionpatch

For a stable package, use prerelease, premajor, preminor, or prepatch only when explicitly requested. For a prerelease package, use another prerelease type only when explicitly requested or when all normal choices are disallowed. If the inferred type is disallowed and there is no unambiguous allowed replacement, ask the user. If impact remains uncertain, prefer the consumer-impacting type (patch for stable packages or prerelease for prerelease packages).

Set the remaining values as follows:

  • packageName: the exact package name reported by Beachball.
  • dependentChangeType: Depends on <BEACHBALL_VERSION>:
    • 2.x: unless explicitly requested by the user, use none for change type none, and patch for all other change types.
    • 3.x: Only include this if the user explicitly requests non-default dependent bump behavior.
  • comment: a concise, user-facing description suitable for a changelog. Emphasize API or behavior changes rather than implementation details, and wrap code identifiers in backticks.
  • email: omit this if <INCLUDE_EMAIL> is false. Otherwise use <EMAIL>. If <EMAIL> is not available, behavior depends on <BEACHBALL_VERSION>:
    • 2.x: use email not defined.
    • 3.x: omit the email.

Ask the user only about unresolved classifications and any proposed major bump. When multiple packages need input, ask about them together.

5. Create the change files

Generate one random UUID per output file. When multiple files are needed, generate all UUIDs in one command, for example: node -e "console.log(Array.from({ length: Number(process.argv[1]) }, () => crypto.randomUUID()).join('\n'))" <count>.

If <GROUP_CHANGES> is false or unset, create <CHANGE_DIR>/<packageName>-<uuid>.json for each package:

json
{
  "packageName": "example-package",
  "type": "patch",
  "comment": "Fix an issue affecting consumers",
  "email": "user@example.com"
}

If <GROUP_CHANGES> is true, create one <CHANGE_DIR>/change-<uuid>.json containing every package reported by Beachball:

json
{
  "changes": [
    {
      "packageName": "example-package",
      "type": "patch",
      "comment": "Fix an issue affecting consumers",
      "email": "user@example.com"
    }
  ]
}

Use the actual values determined above; the examples are illustrative only.

6. Validate the result

Beachball cannot validate new untracked change files. If staging permission was not already granted, ask before staging only the exact files just created.

After staging the generated files, rerun <CHECK_COMMAND> without --verbose. Validation succeeds when the command exits successfully. If the user declines staging, validate the files as JSON and explain that full Beachball validation requires them to be staged.

© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/beachball-change-file of microsoft/beachball.

Open the folder on GitHubat commit f8c9573

Compare with similar skills

Beachball Change File next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Beachball Change File compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Beachball Change File this skillmicrosoft/beachball816—~2kAutomated safety check: PassMIT
Markbind Typescript MigrationMarkBind/markbind158—~2kAutomated safety check: PassMIT
Open Code Review CLIalibaba/open-code-review45k—~3.1kAutomated safety check: PassApache-2.0
Verdaccio Pull Request Workflowverdaccio/verdaccio18k—~1.9kAutomated safety check: PassMIT
Skyvern Version BumpSkyvern-AI/skyvern23k—~1kAutomated safety check: NotesAGPL-3.0
Code Reviewyaklang/yakit7.8k—~1.5kAutomated safety check: NotesAGPL-3.0

Similar skills

  • Complete guide for migrating JavaScript files to TypeScript in the MarkBind project, including the two-commit strategy, import/export syntax conversion, and best practices.

    158 GitHub stars~2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Open Code Review CLI

    alibaba/open-code-review

    Runs the ocr command-line tool to review Git changes, a commit or a branch comparison with an AI model, returning line-level comments and optionally applying fixes.

    45k GitHub stars~3.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.

    18k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Skyvern Version Bump

    Skyvern-AI/skyvern

    Walks through a Skyvern open-source release bump: update the version, rebuild the Python and TypeScript SDKs with Fern, commit, and open a pull request.

    23k GitHub stars~1k tokensUpdated today
    DevelopmentAuto-check: notes
  • Code Review

    yaklang/yakit

    对 Yakit 仓库的代码改动做规范化 code review:按代码逻辑、TS 定义、UI 引用与 Props、CSS 样式、依赖版本、配置项六个维度审查,检查测试用例缺失,强制执行 tsc 类型检查与 vitest 测试验证,输出「结果汇总 / 明细解释 / 合并结论」三块报告,经用户确认后写入文件。当用户要求 review、审查、评审代码改动,或在提交、合并、提 PR…

    7.8k GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check: notes
  • AionUi Version Bump

    iOfficeAI/AionUi

    Automates an AionUi release: checks the latest AionCore release and its artifacts, updates package.json, writes the changelog, opens a PR and tags the release.

    33k GitHub stars~2.1k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

Categories

Questions about Beachball Change File

What does Beachball Change File do?

Create and validate Beachball change files. An agent skill from microsoft/beachball. Beachball Change File is an agent skill from microsoft/beachball, published by the product's own GitHub organization. Create and validate Beachball change files.

When should I use Beachball Change File?

Beachball Change File fits situations like: the user asks to generate change files; prepare to push a branch; create a pull request; ordinary code changes.

How do I install Beachball Change File in Claude Code?

Run `npx skills add microsoft/beachball --skill beachball-change-file -a claude-code`. Or copy the skill folder (skills/beachball-change-file in microsoft/beachball) into .claude/skills/beachball-change-file in your project. Claude Code loads it when a task matches its description.

How do I install Beachball Change File in Codex?

Run `npx skills add microsoft/beachball --skill beachball-change-file -a codex`. Or copy the skill folder (skills/beachball-change-file in microsoft/beachball) into .agents/skills/beachball-change-file in your project. Codex loads it when a task matches its description.

Can I use Beachball Change File in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/beachball --skill beachball-change-file -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/beachball-change-file, .gemini/skills/beachball-change-file, .github/skills/beachball-change-file and .opencode/skills/beachball-change-file in your project.

What does Beachball Change File need to run?

Going by SKILL.md and its folder, Beachball Change File needs the command-line tools its instructions call (git, yarn, pnpm, npm and node).

Does Beachball Change File access the network?

SKILL.md names 1 domain. As links in the text: microsoft.github.io. This is read from the text; nothing was executed.

Is Beachball Change File safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Beachball Change File use?

Beachball Change File is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Beachball Change File use?

About 2k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Beachball Change File?

Skills that share tags, products or a category with Beachball Change File: Markbind Typescript Migration (MarkBind/markbind, 158 stars), Open Code Review CLI (alibaba/open-code-review, 45k stars), Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars) and Skyvern Version Bump (Skyvern-AI/skyvern, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Beachball Change File?

microsoft (a GitHub organization, an official publisher) maintains it in microsoft/beachball, which has 816 GitHub stars. The repository was last updated on October 9, 2026.

Source: microsoft/beachball on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.