Verdaccio Pull Request Workflow
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.
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…
$ npx skills add emanuelcasco/pi-mono-extensions --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install emanuelcasco/pi-mono-extensions release --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/emanuelcasco/pi-mono-extensions.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release .claude/skills/release && 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 "release" agent skill from https://github.com/emanuelcasco/pi-mono-extensions/tree/main/.claude/skills/release into .claude/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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/emanuelcasco/pi-mono-extensions/tree/main/.claude/skills/releaseType 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 emanuelcasco/pi-mono-extensions --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install emanuelcasco/pi-mono-extensions release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/emanuelcasco/pi-mono-extensions.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/release .agents/skills/release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release" agent skill from https://github.com/emanuelcasco/pi-mono-extensions/tree/main/.claude/skills/release into .agents/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 emanuelcasco/pi-mono-extensions --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install emanuelcasco/pi-mono-extensions release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/emanuelcasco/pi-mono-extensions.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/release .cursor/skills/release && 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 "release" agent skill from https://github.com/emanuelcasco/pi-mono-extensions/tree/main/.claude/skills/release into .cursor/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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/emanuelcasco/pi-mono-extensions.git --path .claude/skills/release--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 emanuelcasco/pi-mono-extensions --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install emanuelcasco/pi-mono-extensions release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/emanuelcasco/pi-mono-extensions.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/release .gemini/skills/release && 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 "release" agent skill from https://github.com/emanuelcasco/pi-mono-extensions/tree/main/.claude/skills/release into .gemini/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 emanuelcasco/pi-mono-extensions releaseInstalls 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 emanuelcasco/pi-mono-extensions --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/emanuelcasco/pi-mono-extensions.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/release .github/skills/release && 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 "release" agent skill from https://github.com/emanuelcasco/pi-mono-extensions/tree/main/.claude/skills/release into .github/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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 emanuelcasco/pi-mono-extensions --skill release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install emanuelcasco/pi-mono-extensions release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/emanuelcasco/pi-mono-extensions.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/release .opencode/skills/release && 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 "release" agent skill from https://github.com/emanuelcasco/pi-mono-extensions/tree/main/.claude/skills/release into .opencode/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", 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.
releaseRelease 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. 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e4e047a. 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:
gitpnpmnpmchangesetghjqFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
npmjs.comFrom 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.
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.
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 emanuelcasco/pi-mono-extensions at commit e4e047a, republished under its MIT licence (© emanuelcasco). 837 words, ~2,327 tokens.
.claude/skills/release/SKILL.md (or your agent's skills folder).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.
@changesets/cli (config in .changeset/config.json)fixed array is empty; each package tracks its own versionpi-mono-team-mode@X.Y.Z (created by changesets publish)emanuelcasco/pi-mono-extensionspnpm release (runs changeset publish)npm whoami should return a username); if it fails with auth errors, stop and tell the user to run npm loginRun in parallel:
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.jsonFor each extension, also collect its current version:
for d in extensions/*/; do echo "$(basename $d): $(cat $d/package.json | jq -r .version)"; doneFrom this, determine:
extensions/*/package.jsonpi-mono-*@X.Y.Zgit log <last-tag>..HEAD --name-only to identify which extensions/*/ directories have unreleased commitsfeat: → minorfix: / chore: / refactor: → patch! or BREAKING CHANGE) → majorDisplay 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.
In independent mode, only packages with changes get bumped. For each package that needs a bump:
"version" in its extensions/<name>/package.jsongit show $(git tag --sort=-v:refname | head -1) --stat)Direct bump approach (matching past workflow):
# For each package that needs bumping, edit its package.json version fieldSanity check after editing:
grep -r '"version"' extensions/*/package.jsonEach package should show its intended version.
Each extensions/*/CHANGELOG.md follows this format (see extensions/team-mode/CHANGELOG.md for the canonical example):
# 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 changesStrategy:
git log <last-tag>..HEAD and group commits by which extensions/<name>/ paths they touched (use git log --name-only or git diff --stat).## X.Y.Z section with grouped bullets matching the bump type.### New Extension, ### Enhanced: <name>, ### Bug Fixes, ### Documentation. Match the tone of recent entries — terse, technical, focused on user-visible impact, not commit-message regurgitation.READMEs only need updating when:
README.md extension listREADME.mdREADME.mdDon'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.
The release commit goes directly to main (per project convention).
Stage only the changed files:
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:
git push origin mainCreate a single release summarizing all package bumps:
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.
Before running, verify auth and show one final confirmation:
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:
pnpm releasepnpm release invokes changeset publish, which:
extensions/*/package.jsonpi-mono-team-mode@X.Y.ZAfter publish succeeds, push the per-package tags:
git push origin --tagsIf 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:
npm loginpnpm releaseTell 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.--force to main.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.AskUserQuestion before editing any file — getting versions wrong is expensive to undo.main.git add -A (could pick up unrelated WIP).vX.Y.Z tag — per-package tags are created by changeset publish. Use a date-based or summary tag for the GitHub release.# 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
Just SKILL.md in .claude/skills/release of emanuelcasco/pi-mono-extensions.
Open the folder on GitHubat commit e4e047a
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release this skillemanuelcasco/pi-mono-extensions | 106 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| ZCF Release AutomationUfoMiao/zcf | 6.1k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Release Clawpatchopenclaw/clawpatch | 813 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Releasecyanfish-x/tellux | 207 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Hunk Release Workflowmodem-dev/hunk | 9.5k | — | ~3.8k | Automated safety check: Pass | MIT |
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.
UfoMiao/zcf
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.
openclaw/clawpatch
clawpatch release: version/changelog, CI, npm publish, GitHub release, verify.
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…
modem-dev/hunk
Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.
SeemSeam/claude_codex_bridge
Maintain this CCB project's GitHub-facing release and npm publication surface.
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.
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.
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.
Categories
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.
Release fits situations like: the user asks to cut a release; publish a new version; create a release.
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.
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.
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.
Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git, pnpm, npm, changeset, gh and jq).
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.
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.
Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
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.
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.