Agent skill

Changeset

by whitphx in whitphx/stlite

Create or update a changeset fragment (.changeset/.md) reflecting the changes made in the current session or branch.

Apache-2.0Auto-check passedDevelopment

Install Changeset

skills CLI
$ npx skills add whitphx/stlite --skill changeset -a claude-code

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

GitHub CLI
$ gh skill install whitphx/stlite changeset --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/whitphx/stlite.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/changeset .claude/skills/changeset && 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
changeset
GitHub stars
1.7k
Token cost
~1.9k tokens
SKILL.md length
585 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

Create or update a changeset fragment (.changeset/.md) reflecting the changes made in the current session or branch.

  • Works in 7 steps: Gather context about the changes → Check for existing changesets on this… → Determine affected packages → …
  • The user asks to add a changeset
  • SKILL.md covers Changeset file format and Step-by-step process
  • Calls git, node and yarn

What it does

Changeset is an agent skill from whitphx/stlite. Create or update a changeset fragment (.changeset/.md) reflecting the changes made in the current session or branch. Use this skill whenever the user asks to add a changeset, create a changeset, update a changeset, or says something like "add changeset", "changeset", or "version bump". Also use it proactively when you notice user-facing changes have been made but no changeset exists yet.

Its SKILL.md is about 1.9k 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. It works with Streamlit, WebAssembly, Python and Git. The repository describes itself as: Streamlit-Lite; In-browser Streamlit 🎈🚀. The licence is Apache-2.0.

When your agent uses it

  • The user asks to add a changeset
  • Create a changeset
  • Update a changeset
  • Says something like add changeset

Example prompts

  • “add changeset”
  • “changeset”
  • “version bump”
  • “/changeset”

Requirements

  • Python 3

Workflow steps

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

  1. Gather context about the changes
  2. Check for existing changesets on this branch
  3. Determine affected packages
  4. Determine the bump type
  5. Write the changeset file
  6. Validate the changeset
  7. Confirm with the user

What it can do on your machine

Read from SKILL.md and the folder at commit 9a44ae8. 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
    • node
    • yarn

    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):

    • github.com

    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

Changeset loads about 1.9k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 585 words of instructions outside code blocks.

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

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 whitphx/stlite at commit 9a44ae8, republished under its Apache-2.0 licence (© whitphx). 585 words, ~1,902 tokens.

Download SKILL.mdSave it as .claude/skills/changeset/SKILL.md (or your agent's skills folder).
name
changeset
description
Create or update a changeset fragment (.changeset/*.md) reflecting the changes made in the current session or branch. Use this skill whenever the user asks to add a changeset, create a changeset, update a changeset, or says something like "add changeset", "changeset", or "version bump". Also use it proactively when you notice user-facing changes have been made but no changeset exists yet.

Create or update a .changeset/<name>.md file that describes the changes made in the current session or branch, following the changesets convention.

Changeset file format

markdown
---
"@stlite/kernel": minor
"@stlite/browser": minor
---

Short description of the change
  • YAML frontmatter lists each affected package with its semver bump type (patch, minor, or major).
  • Body is a concise description (1-2 sentences) of what changed and why.
  • Filename should be descriptive and kebab-cased (e.g., update-streamlit-1-53-1.md, fix-idbfs-worker.md).

Step-by-step process

1. Gather context about the changes

Use these sources in priority order:

  1. Conversation history — Review what was done in this session. This is the richest source because it captures intent, not just diffs.
  2. Git diff against the base branch — Run git diff --stat main...HEAD and git log main..HEAD --oneline to see all changes introduced on the current branch.
  3. Ask the user — If the above sources don't give enough information to determine affected packages or bump type, ask.
2. Check for existing changesets on this branch
bash
# Check committed, staged, modified, and untracked changeset files
git diff --name-only main...HEAD -- '.changeset/*.md'
git diff --name-only --cached -- '.changeset/*.md'
git diff --name-only -- '.changeset/*.md'
git ls-files --others --exclude-standard -- '.changeset/*.md'

If a changeset already exists for this branch (committed, staged, modified, or untracked), read it and decide whether to update it (if the scope of changes has grown) or leave it alone. Don't create duplicates.

3. Determine affected packages

Each subdirectory under packages/ is a package. To list all packages and their names:

bash
for dir in packages/*/; do
  node -e "console.log(require('./$dir/package.json').name + ' -> ' + '$dir')"
done

Use the git diff output to identify which packages/*/ directories have changes, then look up the package name from the corresponding package.json.

Changes to the streamlit/ submodule affect different @stlite/* packages depending on what changed:

  • streamlit/lib/ (Python code) → @stlite/kernel (builds the Streamlit wheel)
  • streamlit/frontend/ (TypeScript/React code) → @stlite/kernel and @stlite/react (which consume @streamlit/connection and @streamlit/app respectively)

Note: @streamlit/* packages (under streamlit/frontend/) are not released — they are source packages consumed by @stlite/* packages. Only @stlite/* packages should appear in changesets.

DevDependency consumers must be listed explicitly

Changesets does not automatically bump packages that consume a changed package via devDependencies (see https://github.com/changesets/changesets/pull/1159). Because of this, when a package is changed, its devDependency consumers must also be listed in the changeset explicitly.

To find the devDependency consumer graph, run this command from the repo root. It scans both packages/ and streamlit/frontend/ workspaces, and traces indirect paths where @stlite/* packages are connected through @streamlit/* intermediaries:

bash
node <<'EOF'
const fs = require('fs');
const path = require('path');

// Collect all workspace packages
const workspaces = [];
for (const base of ['packages', 'streamlit/frontend']) {
  if (!fs.existsSync(base)) continue;
  for (const dir of fs.readdirSync(base)) {
    const pkgPath = path.join(base, dir, 'package.json');
    if (fs.existsSync(pkgPath)) {
      workspaces.push(JSON.parse(fs.readFileSync(pkgPath, 'utf8')));
    }
  }
}

// Build devDependency edges: dep -> [consumers]
const devDepGraph = {};
for (const pkg of workspaces) {
  for (const dep of Object.keys(pkg.devDependencies || {})) {
    if (dep.startsWith('@stlite/') || dep.startsWith('@streamlit/')) {
      (devDepGraph[dep] ??= []).push(pkg.name);
    }
  }
}

// Build regular dependency edges too (for traversal through @streamlit/*)
const depGraph = {};
for (const pkg of workspaces) {
  for (const dep of Object.keys(pkg.dependencies || {})) {
    if (dep.startsWith('@stlite/') || dep.startsWith('@streamlit/')) {
      (depGraph[dep] ??= []).push(pkg.name);
    }
  }
}

// For each @stlite/* package, find all @stlite/* packages that transitively
// devDepend on it (possibly through @streamlit/* intermediaries)
const stlitePackages = workspaces.filter(p => p.name.startsWith('@stlite/')).map(p => p.name);
for (const pkg of stlitePackages) {
  const consumers = new Set();
  const queue = [pkg];
  const visited = new Set();
  while (queue.length > 0) {
    const current = queue.shift();
    if (visited.has(current)) continue;
    visited.add(current);
    // Find packages that devDepend on current
    for (const consumer of (devDepGraph[current] || [])) {
      if (consumer.startsWith('@stlite/')) consumers.add(consumer);
      queue.push(consumer);
    }
    // Also follow regular dep edges from @streamlit/* packages
    // (e.g., @streamlit/app depends on @stlite/kernel, so if kernel changes,
    // anything that devDepends on @streamlit/app is also affected)
    for (const consumer of (depGraph[current] || [])) {
      if (consumer.startsWith('@streamlit/')) queue.push(consumer);
    }
  }
  if (consumers.size > 0) {
    console.log(pkg + ' -> devDep consumers: ' + [...consumers].sort().join(', '));
  }
}
EOF

Use this output to determine which additional @stlite/* packages must be listed in the changeset. All devDependency consumers (including those connected indirectly through @streamlit/* packages) should get the same bump type as the source package.

You do NOT need to list packages connected only via regular dependencies — changesets handles those automatically.

Show full SKILL.md (181 more words)Show less
4. Determine the bump type

Infer the semver bump from the nature of the changes:

  • patch — Bug fixes, internal refactors with no API changes, dependency updates that don't change behavior
  • minor — New features, new APIs, updating upstream Streamlit version, non-breaking enhancements
  • major — Breaking changes to public APIs, removing features, changes that require users to modify their code

When in doubt, prefer minor for new capabilities and patch for fixes.

5. Write the changeset file
  • Place it in .changeset/ at the repo root.
  • Use a descriptive kebab-case filename (e.g., update-streamlit-1-53-1.md, fix-kernel-connection-error.md).
  • Keep the description concise — focus on what changed from the user's perspective, not implementation details.
  • All devDependency consumers of affected packages should get the same bump type as the source package.
6. Validate the changeset

After writing the file, run:

shell
yarn changeset status --since main

This confirms that the changeset is well-formed and lists the expected version bumps. If the output looks wrong, fix the file before proceeding.

7. Confirm with the user

Show the user the changeset content and the validation output. If any judgment calls were ambiguous (e.g., patch vs minor), explain your reasoning.

© whitphx, Apache-2.0. 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 .claude/skills/changeset of whitphx/stlite.

Open the folder on GitHubat commit 9a44ae8

Compare with similar skills

Changeset 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.

Changeset compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Changeset this skillwhitphx/stlite1.7k—~1.9kAutomated safety check: PassApache-2.0
Run Testsayutaz/piper-plus218—~641Automated safety check: PassMIT
Sync Docsayutaz/piper-plus218—~1.4kAutomated safety check: PassMIT
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT
Skyvern Version BumpSkyvern-AI/skyvern23k—~1kAutomated safety check: NotesAGPL-3.0
Saleor Commit Workflowsaleor/saleor23k—~575Automated safety check: PassBSD-3-Clause

Similar skills

  • Run Tests

    ayutaz/piper-plus

    piper-plus の各言語ランタイムのテストを実行します。引数 python/rust/cs/go/js/cpp/all で対象を選択。未指定なら git diff から自動判定。

    218 GitHub stars~641 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Sync Docs

    ayutaz/piper-plus

    コミット前にエージェントチームで全ドキュメント (CLAUDE.md / README / CHANGELOG / docs/) を監査し、コード変更に応じて自動更新します。大規模変更時の documentation drift を予防。

    218 GitHub stars~1.4k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    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
  • Commits changes in the Saleor codebase and works through pre-commit hook failures from ruff, mypy, the GraphQL schema check and the migrations check.

    23k GitHub stars~575 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Commitizen

    commitizen-tools/commitizen

    A skill your agent uses for tasks involving Conventional Commits, commit message validation, Commitizen configuration, semantic version bumps, changelog generation, or CI/release automation with the…

    3.5k GitHub stars~839 tokensUpdated today
    DevelopmentAuto-check passed

More from whitphx/stlite

  • Scan Dependencies

    whitphx/stlite

    CRITICAL: The scan-dependencies skill flags any dependencies that are unsafe to use.

    1.7k GitHub stars~1.7k tokensUpdated 12 days ago
    Auto-check passed
  • Streamlit Rebase

    whitphx/stlite

    Rebase our custom fork of the Streamlit repository onto new upstream Streamlit release

    1.7k GitHub stars~2.3k tokensUpdated 12 days ago
    Auto-check passed
  • Copy Samples

    whitphx/stlite

    Update sharing-editor sample apps from the streamlit/docs repository

    1.7k GitHub stars~393 tokensUpdated 12 days ago
    Auto-check passed

Categories

Questions about Changeset

What does Changeset do?

Create or update a changeset fragment (.changeset/.md) reflecting the changes made in the current session or branch. Changeset is an agent skill from whitphx/stlite.md) reflecting the changes made in the current session or branch.

When should I use Changeset?

Changeset fits situations like: the user asks to add a changeset; create a changeset; update a changeset; says something like add changeset.

How do I install Changeset in Claude Code?

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

How do I install Changeset in Codex?

Run `npx skills add whitphx/stlite --skill changeset -a codex`. Or copy the skill folder (.claude/skills/changeset in whitphx/stlite) into .agents/skills/changeset in your project. Codex loads it when a task matches its description.

Can I use Changeset 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 whitphx/stlite --skill changeset -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/changeset, .gemini/skills/changeset, .github/skills/changeset and .opencode/skills/changeset in your project.

What does Changeset need to run?

Going by SKILL.md and its folder, Changeset needs the command-line tools its instructions call (git, node and yarn). Our summary lists: Python 3.

Does Changeset access the network?

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

Is Changeset 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 Changeset use?

Changeset is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Changeset use?

About 1.9k tokens (SKILL.md is roughly 7.6k 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 Changeset?

Skills that share tags, products or a category with Changeset: Run Tests (ayutaz/piper-plus, 218 stars), Sync Docs (ayutaz/piper-plus, 218 stars), Code Review Checklist (shareAI-lab/learn-claude-code, 78k 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 Changeset?

whitphx (a GitHub user) maintains it in whitphx/stlite, which has 1,669 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on September 25, 2026.

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