Markbind Typescript Migration
MarkBind/markbind
Complete guide for migrating JavaScript files to TypeScript in the MarkBind project, including the two-commit strategy, import/export syntax conversion, and best practices.
Create and validate Beachball change files. An agent skill from microsoft/beachball.
$ npx skills add microsoft/beachball --skill beachball-change-file -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/beachball beachball-change-file --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "beachball-change-file" agent skill from https://github.com/microsoft/beachball/tree/main/skills/beachball-change-file into .claude/skills/beachball-change-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beachball-change-file", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/microsoft/beachball/tree/main/skills/beachball-change-fileType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add microsoft/beachball --skill beachball-change-file -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/beachball beachball-change-file --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/beachball.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/beachball-change-file .agents/skills/beachball-change-file && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "beachball-change-file" agent skill from https://github.com/microsoft/beachball/tree/main/skills/beachball-change-file into .agents/skills/beachball-change-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beachball-change-file", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/beachball --skill beachball-change-file -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/beachball beachball-change-file --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/beachball.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/beachball-change-file .cursor/skills/beachball-change-file && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "beachball-change-file" agent skill from https://github.com/microsoft/beachball/tree/main/skills/beachball-change-file into .cursor/skills/beachball-change-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beachball-change-file", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/microsoft/beachball.git --path skills/beachball-change-file--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add microsoft/beachball --skill beachball-change-file -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/beachball beachball-change-file --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/beachball.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/beachball-change-file .gemini/skills/beachball-change-file && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "beachball-change-file" agent skill from https://github.com/microsoft/beachball/tree/main/skills/beachball-change-file into .gemini/skills/beachball-change-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beachball-change-file", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install microsoft/beachball beachball-change-fileInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add microsoft/beachball --skill beachball-change-file -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microsoft/beachball.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/beachball-change-file .github/skills/beachball-change-file && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "beachball-change-file" agent skill from https://github.com/microsoft/beachball/tree/main/skills/beachball-change-file into .github/skills/beachball-change-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beachball-change-file", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/beachball --skill beachball-change-file -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microsoft/beachball beachball-change-file --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/beachball.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/beachball-change-file .opencode/skills/beachball-change-file && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "beachball-change-file" agent skill from https://github.com/microsoft/beachball/tree/main/skills/beachball-change-file into .opencode/skills/beachball-change-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beachball-change-file", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
beachball-change-fileCreate 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. 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.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f8c9573. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gityarnpnpmnpmnodeFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
microsoft.github.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from microsoft/beachball at commit f8c9573, republished under its MIT licence (© microsoft). 978 words, ~2,050 tokens.
.claude/skills/beachball-change-file/SKILL.md (or your agent's skills folder).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.
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.
Beachball considers committed and staged files, but not unstaged or untracked files. Before proceeding, check for unstaged or untracked paths:
git ls-files -mgit ls-files -o --exclude-standardIf any changes are unstaged or untracked, ask whether to stage those exact paths or continue without them.
Run <CHECK_COMMAND> --verbose, using the required argument separator if <CHECK_COMMAND> is a package script.
~~ strikethrough formatting.<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.
For each package reported by Beachball, gather:
version from package.json.<BEACHBALL_COMMAND> config get disallowedChangeTypes --package <packageName>.git diff --cached <MERGE_BASE> -- <reported-paths>. This form includes committed and staged changes while excluding unstaged edits.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 version | Consumer impact | type |
|---|---|---|
| Any | No consumer-visible effect, such as test-only or internal documentation changes | none |
| Prerelease | Any consumer-visible effect | prerelease |
Stable 0.x | Breaking API or behavior change | minor |
Stable 0.x | Any other consumer-visible change | patch |
Stable >=1.0.0 | Breaking API or behavior change | major, after user confirmation |
Stable >=1.0.0 | New backward-compatible public functionality | minor |
Stable >=1.0.0 | Backward-compatible fix or behavior correction | patch |
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>:none for change type none, and patch for all other change types.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>:email not defined.Ask the user only about unresolved classifications and any proposed major bump. When multiple packages need input, ask about them together.
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:
{
"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:
{
"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.
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
Just SKILL.md in skills/beachball-change-file of microsoft/beachball.
Open the folder on GitHubat commit f8c9573
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Beachball Change File this skillmicrosoft/beachball | 816 | — | ~2k | Automated safety check: Pass | MIT | |
| Markbind Typescript MigrationMarkBind/markbind | 158 | — | ~2k | Automated safety check: Pass | MIT | |
| Open Code Review CLIalibaba/open-code-review | 45k | — | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Skyvern Version BumpSkyvern-AI/skyvern | 23k | — | ~1k | Automated safety check: Notes | AGPL-3.0 | |
| Code Reviewyaklang/yakit | 7.8k | — | ~1.5k | Automated safety check: Notes | AGPL-3.0 |
MarkBind/markbind
Complete guide for migrating JavaScript files to TypeScript in the MarkBind project, including the two-commit strategy, import/export syntax conversion, and best practices.
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.
verdaccio/verdaccio
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.
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.
yaklang/yakit
对 Yakit 仓库的代码改动做规范化 code review:按代码逻辑、TS 定义、UI 引用与 Props、CSS 样式、依赖版本、配置项六个维度审查,检查测试用例缺失,强制执行 tsc 类型检查与 vitest 测试验证,输出「结果汇总 / 明细解释 / 合并结论」三块报告,经用户确认后写入文件。当用户要求 review、审查、评审代码改动,或在提交、合并、提 PR…
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.
Works with
Categories
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.
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.
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.
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.
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.
Going by SKILL.md and its folder, Beachball Change File needs the command-line tools its instructions call (git, yarn, pnpm, npm and node).
SKILL.md names 1 domain. As links in the text: microsoft.github.io. This is read from the text; nothing was executed.
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.
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.
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.
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.
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.