Release a new version of pi-extensions: bump individual package versions (independent mode), update CHANGELOGs and READMEs, create per-package git tags, publish a GitHub release, and publish…

MITAuto-check passedDevelopment

Install Release

skills CLI
$ npx skills add emanuelcasco/pi-mono-extensions --skill release -a claude-code

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

GitHub CLI
$ gh skill install emanuelcasco/pi-mono-extensions release --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/emanuelcasco/pi-mono-extensions.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release .claude/skills/release && 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
release
GitHub stars
106
Token cost
~2.3k tokens
SKILL.md length
837 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Release a new version of pi-extensions: bump individual package versions (independent mode), update CHANGELOGs and READMEs, create per-package git tags, publish a GitHub release, and publish…

  • Works in 8 steps: Gather context → Bump versions → Update CHANGELOGs → …
  • The user asks to cut a release
  • SKILL.md covers Repo facts (load-bearing), Workflow, Safety guards and Quick reference — past releases
  • Calls git, pnpm and npm; reaches npmjs.com

What it does

Release is an agent skill from emanuelcasco/pi-mono-extensions. Release a new version of pi-extensions: bump individual package versions (independent mode), update CHANGELOGs and READMEs, create per-package git tags, publish a GitHub release, and publish packages to npm via pnpm release. Use when the user asks to "cut a release", "release vX.Y.Z", "publish a new version", "create a release", or runs /release.

Its SKILL.md is about 2.3k 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 Changelog and release notes and Technical documentation. It works with npm, GitHub, Git and pnpm. The repository describes itself as: Collection of pi-mono extensions. The licence is MIT.

When your agent uses it

  • The user asks to cut a release
  • Publish a new version
  • Create a release

Example prompts

  • “cut a release”
  • “release vX.Y.Z”
  • “publish a new version”
  • “/release”

Workflow steps

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

  1. Gather context
  2. Bump versions
  3. Update CHANGELOGs
  4. Update READMEs (only when needed)
  5. Commit, tag, push
  6. Create the GitHub release
  7. Publish to npm
  8. Final summary

What it can do on your machine

Read from SKILL.md and the folder at commit e4e047a. 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
    • pnpm
    • npm
    • changeset
    • gh
    • jq

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • npmjs.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

Release loads about 2.3k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 837 words of instructions outside code blocks.

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

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 emanuelcasco/pi-mono-extensions at commit e4e047a, republished under its MIT licence (© emanuelcasco). 837 words, ~2,327 tokens.

Download SKILL.mdSave it as .claude/skills/release/SKILL.md (or your agent's skills folder).
name
release
description
Release a new version of pi-extensions: bump individual package versions (independent mode), update CHANGELOGs and READMEs, create per-package git tags, publish a GitHub release, and publish packages to npm via `pnpm release`. Use when the user asks to "cut a release", "release vX.Y.Z", "publish a new version", "create a release", or runs `/release`.

Release Skill — pi-extensions

Cut a new release for the pi-extensions monorepo. The repo uses changesets with independent versioning — each package under extensions/* versions independently based on its own unreleased changes. Releases are pushed directly to main — no PRs.

Repo facts (load-bearing)

  • Versioning tool: @changesets/cli (config in .changeset/config.json)
  • Versioning mode: independent — fixed array is empty; each package tracks its own version
  • Tag format: per-package tags like pi-mono-team-mode@X.Y.Z (created by changesets publish)
  • GitHub repo: emanuelcasco/pi-mono-extensions
  • Publish script: pnpm release (runs changeset publish)
  • npm publish requires being logged in (npm whoami should return a username); if it fails with auth errors, stop and tell the user to run npm login

Workflow

1. Gather context

Run in parallel:

bash
git status -sb
git tag --sort=-v:refname | head -20
gh release list --limit 5
git log --oneline $(git tag --sort=-v:refname | head -1)..HEAD
ls extensions/
cat .changeset/config.json

For each extension, also collect its current version:

bash
for d in extensions/*/; do echo "$(basename $d): $(cat $d/package.json | jq -r .version)"; done

From this, determine:

  • Per-package current versions — read from each extensions/*/package.json
  • Latest tag — first matching pi-mono-*@X.Y.Z
  • Unreleased commits — what's landed since the last tag
  • Which packages have changes — use git log <last-tag>..HEAD --name-only to identify which extensions/*/ directories have unreleased commits
  • Per-package bump type — for each package with changes, infer from commit messages touching that package:
    • feat: → minor
    • fix: / chore: / refactor: → patch
    • Breaking change (! or BREAKING CHANGE) → major
  • Working tree clean? — if not, ask the user before proceeding

Display a summary table:

| Package              | Current | Bump     | New      | Unreleased |
|----------------------|---------|----------|----------|------------|
| pi-mono-team-mode    | 1.6.0   | minor    | 1.7.0    | 2 commits  |
| pi-mono-clear        | 0.3.1   | patch    | 0.3.2    | 1 commit   |
| pi-mono-loop         | 0.2.0   | —        | 0.2.0    | 0 commits  |
| pi-mono-status-line  | 0.1.4   | minor    | 0.1.5    | 3 commits  |

Only packages with unreleased changes need a version bump. Untouched packages stay at their current version.

Use AskUserQuestion to confirm the target versions per package before doing anything destructive.

2. Bump versions

In independent mode, only packages with changes get bumped. For each package that needs a bump:

  1. Update "version" in its extensions/<name>/package.json
  2. Create a changeset file if it doesn't already exist — OR bump directly (follow the convention of past releases; check git show $(git tag --sort=-v:refname | head -1) --stat)

Direct bump approach (matching past workflow):

bash
# For each package that needs bumping, edit its package.json version field

Sanity check after editing:

bash
grep -r '"version"' extensions/*/package.json

Each package should show its intended version.

3. Update CHANGELOGs

Each extensions/*/CHANGELOG.md follows this format (see extensions/team-mode/CHANGELOG.md for the canonical example):

markdown
# pi-mono-<name>

## X.Y.Z

### Minor Changes (or "Patch Changes" / "Major Changes")

### Enhanced: <extension>

- bullet describing what changed in this extension

### New Extension: <name>

description if a brand-new extension was added

### Documentation

- doc-only changes

Strategy:

  1. Read git log <last-tag>..HEAD and group commits by which extensions/<name>/ paths they touched (use git log --name-only or git diff --stat).
  2. Only update CHANGELOGs for packages that have unreleased changes. Packages with no changes retain their existing CHANGELOG (no new section added).
  3. For each changed package, prepend a new ## X.Y.Z section with grouped bullets matching the bump type.
  4. Group bullets by sub-heading: ### New Extension, ### Enhanced: <name>, ### Bug Fixes, ### Documentation. Match the tone of recent entries — terse, technical, focused on user-visible impact, not commit-message regurgitation.
4. Update READMEs (only when needed)

READMEs only need updating when:

  • A new extension was added → add it to the root README.md extension list
  • An extension was removed → remove it from the root README.md
  • A user-facing behavior changed (keyboard shortcut, command name, public API) → update that extension's README.md

Don't touch READMEs for normal feat/fix releases. When in doubt, grep for the changed symbol/shortcut in README.md files and only edit if there's a stale reference.

5. Commit, tag, push

The release commit goes directly to main (per project convention).

Stage only the changed files:

bash
git status   # sanity check before commit
git add extensions/*/package.json extensions/*/CHANGELOG.md README.md extensions/*/README.md
git commit -m "release: <summary of package bumps>"

Do not create a combined vX.Y.Z tag — publish (step 7) will create per-package tags automatically.

Push to main:

bash
git push origin main
Show full SKILL.md (321 more words)Show less
6. Create the GitHub release

Create a single release summarizing all package bumps:

bash
gh release create "$(date +%Y%m%d%H%M)" --title "Release $(date +%Y-%m-%d)" --notes "$(cat <<'EOF'
## Packages

### pi-mono-team-mode — 1.6.0 → 1.7.0
- feat: description
- fix: description

### pi-mono-clear — 0.3.1 → 0.3.2
- fix: description

**Full Changelog**: https://github.com/emanuelcasco/pi-mono-extensions/compare/<prev-tag>...<new-tag>
EOF
)"

Build the notes from git log <prev-tag>..HEAD --oneline grouped by package. Use a timestamp-based tag since there's no combined vX.Y.Z — or use a monorepo release tag like release-YYYYMMDD-N. Check prior releases with gh release list to match the established convention.

7. Publish to npm

Before running, verify auth and show one final confirmation:

bash
npm whoami    # should print a username; if not, stop and tell the user to `npm login`

Then use AskUserQuestion with the message:

About to publish the following packages to npm. This is irreversible — `npm unpublish` is heavily restricted within 72h and impossible after.

Packages to publish:
- pi-mono-team-mode@1.7.0
- pi-mono-clear@0.3.2
- pi-mono-status-line@0.1.5

Proceed?

Options: Yes, publish / Cancel.

On confirmation, run:

bash
pnpm release

pnpm release invokes changeset publish, which:

  • Reads each extensions/*/package.json
  • Publishes any package whose version isn't already on the npm registry
  • Creates per-package git tags like pi-mono-team-mode@X.Y.Z

After publish succeeds, push the per-package tags:

bash
git push origin --tags

If publish fails partway (some packages published, others didn't), do not retry blindly — re-running changeset publish will skip already-published versions, but inspect the error first. Common failures:

  • 401/403 from registry → not logged in or no publish rights; run npm login
  • E409 / version exists → a package was already published at this version; usually safe to ignore if it matches the intended version
  • Network/timeout → safe to retry pnpm release
8. Final summary

Tell the user:

Release complete — packages published:

- pi-mono-team-mode → 1.7.0
  https://www.npmjs.com/package/pi-mono-team-mode

- pi-mono-clear → 0.3.2
  https://www.npmjs.com/package/pi-mono-clear

GitHub release: https://github.com/emanuelcasco/pi-mono-extensions/releases/tag/<tag>
Per-package tags pushed.

Safety guards

  • Never push --force to main.
  • Always confirm before pnpm release — npm publish is effectively irreversible. The version-bump confirmation in step 1 does NOT cover the publish step; ask again right before running it.
  • Never amend a release commit after pushing. If you need to fix something, cut a follow-up patch release.
  • Confirm the version bumps with AskUserQuestion before editing any file — getting versions wrong is expensive to undo.
  • Don't open a PR for the release commit. This repo pushes release commits straight to main.
  • Stage files explicitly — never git add -A (could pick up unrelated WIP).
  • Untouched packages stay at their current version — only bump packages with unreleased changes.
  • No combined vX.Y.Z tag — per-package tags are created by changeset publish. Use a date-based or summary tag for the GitHub release.

Quick reference — past releases

bash
# Inspect how the previous release was structured
git show $(git tag --sort=-v:refname | head -1) --stat
cat extensions/team-mode/CHANGELOG.md   # canonical changelog format

© emanuelcasco, 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 .claude/skills/release of emanuelcasco/pi-mono-extensions.

Open the folder on GitHubat commit e4e047a

Compare with similar skills

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

Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release this skillemanuelcasco/pi-mono-extensions106—~2.3kAutomated safety check: PassMIT
Verdaccio Pull Request Workflowverdaccio/verdaccio18k—~1.9kAutomated safety check: PassMIT
ZCF Release AutomationUfoMiao/zcf6.1k—~3.4kAutomated safety check: PassMIT
Release Clawpatchopenclaw/clawpatch813—~1.1kAutomated safety check: PassMIT
Releasecyanfish-x/tellux207—~1.3kAutomated safety check: PassMIT
Hunk Release Workflowmodem-dev/hunk9.5k—~3.8kAutomated safety check: PassMIT

Similar skills

  • 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 today
    DevelopmentAuto-check passed
  • Automates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request.

    6.1k GitHub stars~3.4k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Release Clawpatch

    openclaw/clawpatch

    clawpatch release: version/changelog, CI, npm publish, GitHub release, verify.

    813 GitHub stars~1.1k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Release

    cyanfish-x/tellux

    Cut and publish a new tellux release — bump version, curate a changelog summary from recent commits, pause for the user to manually pnpm publish (browser 2FA), then push the tag and create the…

    207 GitHub stars~1.3k tokensUpdated 16 days ago
    DevelopmentAuto-check passed
  • Hunk Release Workflow

    modem-dev/hunk

    Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.

    9.5k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Ccb GitHub

    SeemSeam/claude_codex_bridge

    Maintain this CCB project's GitHub-facing release and npm publication surface.

    3.5k GitHub stars~4.9k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from emanuelcasco/pi-mono-extensions

  • Figma

    emanuelcasco/pi-mono-extensions

    Access Figma design files using native pi tools — read LLM-ready summaries, explanations, implementation context, screenshots, components, styles, variables, and design tokens.

    106 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Linear

    emanuelcasco/pi-mono-extensions

    Access Linear project management data using native pi tools — issues, projects, teams, users, comments, file uploads, cycles, labels, workflow states, and documents.

    106 GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Web Search

    emanuelcasco/pi-mono-extensions

    Search the web and read page content using native pi tools — DuckDuckGo search results, web page fetching, and Mozilla Readability extraction.

    106 GitHub stars~513 tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about Release

What does Release do?

Release a new version of pi-extensions: bump individual package versions (independent mode), update CHANGELOGs and READMEs, create per-package git tags, publish a GitHub release, and publish…. Release is an agent skill from emanuelcasco/pi-mono-extensions. Release a new version of pi-extensions: bump individual package versions (independent mode), update CHANGELOGs and READMEs, create per-package git tags, publish a GitHub release, and publish packages to npm via pnpm release.

When should I use Release?

Release fits situations like: the user asks to cut a release; publish a new version; create a release.

How do I install Release in Claude Code?

Run `npx skills add emanuelcasco/pi-mono-extensions --skill release -a claude-code`. Or copy the skill folder (.claude/skills/release in emanuelcasco/pi-mono-extensions) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.

How do I install Release in Codex?

Run `npx skills add emanuelcasco/pi-mono-extensions --skill release -a codex`. Or copy the skill folder (.claude/skills/release in emanuelcasco/pi-mono-extensions) into .agents/skills/release in your project. Codex loads it when a task matches its description.

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

What does Release need to run?

Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git, pnpm, npm, changeset, gh and jq).

Does Release access the network?

SKILL.md names 1 domain. In commands or code: npmjs.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

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

Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release use?

About 2.3k tokens (SKILL.md is roughly 9.3k 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 Release?

Skills that share tags, products or a category with Release: Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), ZCF Release Automation (UfoMiao/zcf, 6.1k stars), Release Clawpatch (openclaw/clawpatch, 813 stars) and Release (cyanfish-x/tellux, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release?

emanuelcasco (a GitHub user) maintains it in emanuelcasco/pi-mono-extensions, which has 106 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on August 26, 2026.

Source: emanuelcasco/pi-mono-extensions on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.