Agent skill

npm Release Via GitHub Actions

by jmfederico in jmfederico/pi-web

A skill your agent uses whenever the user asks for a new npm version, npm release, package release, new release, version bump, publishing to npm, cutting a GitHub release, tagging a release, or…

MITAuto-check passedDevOps & Cloud

Install npm Release Via GitHub Actions

skills CLI
$ npx skills add jmfederico/pi-web --skill npm-release-via-github-actions -a claude-code

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

GitHub CLI
$ gh skill install jmfederico/pi-web npm-release-via-github-actions --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/jmfederico/pi-web.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/npm-release-via-github-actions .claude/skills/npm-release-via-github-actions && 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
npm-release-via-github-actions
GitHub stars
869
Token cost
~2.9k tokens
SKILL.md length
1,497 words
Files
2
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses whenever the user asks for a new npm version, npm release, package release, new release, version bump, publishing to npm, cutting a GitHub release, tagging a release, or…

  • Works in 4 steps: package.json for package name, current… → package-lock.json, pnpm-lock.yaml, or… → .changeset/config.json and pending… → …
  • The user asks for a new npm version
  • SKILL.md covers Core rules, First inspect the repository…, Standard release workflow and Reruns and special cases, plus 1 more section
  • Calls npm, gh and git

What it does

npm Release Via GitHub Actions is an agent skill from jmfederico/pi-web. Use this skill whenever the user asks for a new npm version, npm release, package release, new release, version bump, publishing to npm, cutting a GitHub release, tagging a release, or anything similar. It publishes through GitHub Actions and GitHub Releases, not from the local machine, and uses Changesets to generate CHANGELOG.md/release notes. Trigger even for casual phrasing like "ship a release", "bump npm", "publish the package", or "make a new version".

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `evals/evals.json`).

It sits in DevOps & Cloud, covering CI/CD and Changelog and release notes. It works with npm, GitHub Actions and GitHub. The repository describes itself as: Web UI for Pi Coding Agent that keeps sessions alive in real workspaces. The licence is MIT.

When your agent uses it

  • The user asks for a new npm version
  • Package release
  • Publishing to npm
  • Cutting a GitHub release

Example prompts

  • “ship a release”
  • “bump npm”
  • “publish the package”
  • “/npm-release-via-github-actions”

Requirements

  • Node.js

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. package.json for package name, current version, scripts, and package manager.
  2. package-lock.json, pnpm-lock.yaml, or yarn.lock if present, so version bumps keep lockfiles consistent.
  3. .changeset/config.json and pending .changeset/*.md files, if present.
  4. .github/workflows/publish.yml or similarly named release workflow.

What it can do on your machine

Read from SKILL.md and the folder at commit 2961669. 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:

    • npm
    • gh
    • git
    • pnpm
    • yarn

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

  • Network

    No URLs in SKILL.md. Its commands use npm, gh, git, pnpm and yarn, which can reach the network depending on how they are called.

    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

npm Release Via GitHub Actions loads about 2.9k tokens when it runs. Until then it costs about 124 tokens; SKILL.md has 1,497 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~124
When it runs · the whole SKILL.md, loaded when a task matches
~2.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 jmfederico/pi-web at commit 2961669, republished under its MIT licence (© jmfederico). 1,497 words, ~2,940 tokens.

Download SKILL.mdSave it as .claude/skills/npm-release-via-github-actions/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
npm-release-via-github-actions
description
Use this skill whenever the user asks for a new npm version, npm release, package release, new release, version bump, publishing to npm, cutting a GitHub release, tagging a release, or anything similar. It publishes through GitHub Actions and GitHub Releases, not from the local machine, and uses Changesets to generate CHANGELOG.md/release notes. Trigger even for casual phrasing like "ship a release", "bump npm", "publish the package", or "make a new version".

Publish npm packages via GitHub Actions

The user explicitly does not want local npm publishing. For release requests, route publishing through the repository's GitHub Actions workflow, usually triggered by a published GitHub Release.

This project also uses Changesets for changelog generation. Release prep should consume .changeset/*.md fragments into CHANGELOG.md before the GitHub Release is created.

Core rules

Do not publish from the local machine.

Avoid these commands unless the user explicitly overrides this skill for an unusual emergency:

  • npm publish
  • npm run publish:npm
  • pnpm publish, yarn publish, or equivalent package-manager publish commands
  • any local publish workaround after a GitHub Actions problem

It is OK to run local safety checks and release-prep commands that do not publish, such as:

  • npm run verify
  • npm run build
  • npm run pack:dry
  • npm run changelog:status
  • npm run release:version
  • npm version <version> --no-git-tag-version when an exact custom version needs to be enforced

First inspect the repository release setup

Before acting, read:

  1. package.json for package name, current version, scripts, and package manager.
  2. package-lock.json, pnpm-lock.yaml, or yarn.lock if present, so version bumps keep lockfiles consistent.
  3. .changeset/config.json and pending .changeset/*.md files, if present.
  4. .github/workflows/publish.yml or similarly named release workflow.

Confirm the workflow publishes on GitHub, preferably from one of these triggers:

yaml
on:
  release:
    types: [published]
  workflow_dispatch:

For the pi-web repository, the expected workflow is .github/workflows/publish.yml; it publishes with npm publish --access public --provenance from GitHub Actions. Use the GitHub Release path by default.

If there is no GitHub Actions publish workflow, stop and explain that one must be added or fixed. Do not fall back to local npm publish.

Standard release workflow

  1. Check repo state

    • Run git status --short --branch.
    • Ensure you are on the intended branch, usually main.
    • If there are unrelated or user-owned uncommitted changes, pause and ask before including, stashing, or working around them.
    • Pull/rebase only when it is safe and the user has not left local work that could be disrupted.
  2. Review and normalize pending changesets

    • Run:
      bash
      npm run changelog:status
    • Inspect .changeset/*.md files.
    • If there are no changesets but there are user-visible changes to release, pause and ask whether to add a changeset. Do not create a low-quality release note just to proceed.
    • If changesets exist, make sure their text is user-facing.
    • For pi-web, non-breaking changesets must use patch even for new features. The package uses CalVer shaped as semver: MAJOR.YYYYMM.PATCH. The semver minor position is the release month, not feature size.
    • If a pending changeset uses minor for a non-breaking change, edit its frontmatter to patch before versioning. Do not ask the user whether to use a patch increase or date change.
    • Use major only when the user explicitly requests a breaking/major release.
    • If you believe the pending changes introduce a breaking change but the user has not explicitly requested a major release, pause before versioning and ask the user to confirm whether this should be released as a breaking major version or changed to remain non-breaking.
  3. Compute the pi-web CalVer version

    • For pi-web, always compute the version from the release date as MAJOR.YYYYMM.PATCH.
    • Use the current date at release time for YYYYMM (for example, date +%Y%m). Do not ask whether to use a same-month patch increase or a date change.
    • Keep the current MAJOR unless the user explicitly requests a breaking/major release. Do not infer or perform a major version bump on your own.
    • Set PATCH deterministically:
      • If the current package version already has the target MAJOR and release-month YYYYMM, use current patch + 1.
      • Otherwise use patch 0 for the first release of that major/month.
      • If npm already has the computed version, increment only PATCH until an unpublished version is found.
    • If the user says patch, minor, new version, new release, publish, or similar without an exact version, still use this CalVer algorithm. Treat minor as a non-breaking release request, not as permission to let Changesets increment semver minor arbitrarily.
    • If the user gives an exact version, use it only when they clearly intend that exact value. Otherwise preserve the CalVer rule above.
    • If the computed CalVer target would be lower than or equal to the current package version because of clock/version inconsistency, stop and explain the inconsistency instead of inventing a non-CalVer version.
  4. Generate changelog and version files

    • Run the Changesets version step after normalizing non-breaking changesets to patch:
      bash
      npm run release:version
    • This consumes pending .changeset/*.md fragments, updates CHANGELOG.md, updates package.json, and updates the npm lockfile when applicable.
    • Changesets may produce a semver bump that does not match the computed CalVer target, especially on the first release of a new month. That is expected; enforce the computed target with:
      bash
      npm version <computed-calver-version> --no-git-tag-version
    • Update the newly generated CHANGELOG.md heading to match the computed CalVer version if Changesets used a different heading. This manual changelog heading edit is acceptable during release prep; normal development should still use changeset fragments instead.
    • Review the generated CHANGELOG.md section. It should be suitable for GitHub Release notes.
    • Do not use plain npm version <new-version> because it creates a local git tag as a side effect; releases should be controlled via GitHub.
    • Sync the lockfile to the final version. npm run release:version (Changesets) updates package.json but does not reliably rewrite package-lock.json, and the CalVer-enforcing npm version --no-git-tag-version only touches the lock when it actually runs. Either path can leave the committed package-lock.json behind at the previous version, which then resurfaces as an unexpected diff after the next npm install. After the version is finalized, always resync the lockfile without touching node_modules:
      bash
      npm install --package-lock-only
    • Confirm the lockfile now matches package.json before continuing:
      bash
      node -e "const v=require('./package.json').version, l=require('./package-lock.json'); if (l.version!==v || l.packages[''].version!==v) { console.error('lockfile version mismatch:', l.version, l.packages[''].version, 'expected', v); process.exit(1); } console.log('lockfile in sync at', v);"
    • If the lockfile mismatch persists, stop and resolve it before committing; do not ship a release whose package-lock.json version disagrees with package.json.
  5. Run checks before creating the release

    • Run the repository's normal verification commands, for example:
      bash
      npm run verify
      npm run build
      npm run pack:dry
    • If checks fail, fix the issue or report it. Do not create the GitHub Release until the release commit is sound.
  6. Commit and push the release prep

    • Commit only intended release changes. Typical files include:
      • package.json
      • package-lock.json
      • CHANGELOG.md
      • consumed/deleted .changeset/*.md fragments
    • Before staging, confirm package-lock.json is actually in the diff and carries the new version. If git status --short does not show package-lock.json as modified while package.json changed version, the lockfile sync in step 4 was missed — go back and run npm install --package-lock-only. Never commit a release where package.json advanced but package-lock.json did not.
    • Use:
      bash
      git add package.json package-lock.json CHANGELOG.md .changeset
      git commit -m "chore(release): v<new-version>"
      git push origin main
    • If there are other intentional changes required for the release, include them deliberately and mention them.
  7. Create a GitHub Release to trigger publishing

    • Prefer release notes from the generated changelog instead of generic generated notes.
    • Extract the new version's section from CHANGELOG.md into a temporary notes file if useful.
    • Use the pushed commit on main as the target:
      bash
      gh release create v<new-version> \
        --target main \
        --title "v<new-version>" \
        --notes-file /tmp/pi-web-release-notes-v<new-version>.md
    • If a clean notes file is not practical, --generate-notes is acceptable, but prefer the Changesets-generated text because it is curated.
    • Creating a non-draft published release triggers on: release: types: [published].
    • If the user specifically wants to review notes first, create a draft release, then publish it through GitHub when approved. Remember: draft creation will not trigger publishing until it is published.
  8. Monitor GitHub Actions

    • Find the publish run:
      bash
      gh run list --workflow publish.yml --limit 5
    • Watch it:
      bash
      gh run watch <run-id>
    • If it fails, inspect logs:
      bash
      gh run view <run-id> --log-failed
    • Fix by committing and creating a new release/tag if needed, or rerun the failed GitHub Actions job when the failure is transient. Do not publish locally as a workaround.
  9. Verify npm registry publication

    • After the workflow succeeds, verify:
      bash
      npm view <package-name> version
      npm view <package-name>@<new-version> dist.tarball
    • If npm has not updated yet, wait briefly and check again.
Show full SKILL.md (177 more words)Show less

Reruns and special cases

  • If a GitHub Actions publish run failed due to a transient infrastructure issue, prefer gh run rerun <run-id> --failed or rerun the workflow in GitHub.
  • If using workflow_dispatch, pass the intended ref/tag explicitly where possible:
    bash
    gh workflow run publish.yml --ref v<version>
    Use this mainly for reruns or repositories designed around manual dispatch. For normal releases, prefer a published GitHub Release.
  • If the npm version already exists, npm will reject publishing. Bump to a new version and create a new release; do not try to overwrite an existing npm version.
  • If a GitHub Release/tag was created incorrectly, fix it on GitHub with care and tell the user exactly what changed.
  • Never use local npm publish as a workaround for a GitHub Actions or npm provenance issue.

Final response format

After completing or attempting a release, summarize concisely:

  • Version requested/released
  • Changelog source: generated CHANGELOG.md section or other notes used
  • Commit hash and pushed branch
  • GitHub Release URL
  • GitHub Actions run URL and status
  • npm verification result, if published
  • Any follow-up needed from the user

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

Files

SKILL.md and 1 other file in .agents/skills/npm-release-via-github-actions of jmfederico/pi-web.

  • SKILL.md
  • evals/evals.json

Open the folder on GitHubat commit 2961669

Compare with similar skills

npm Release Via GitHub Actions 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.

npm Release Via GitHub Actions compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
npm Release Via GitHub Actions this skilljmfederico/pi-web869—~2.9kAutomated safety check: PassMIT
Cline CLI Release Publishercline/cline70k—~3.4kAutomated safety check: WarnApache-2.0
Ccb GitHubSeemSeam/claude_codex_bridge3.6k—~4.9kAutomated safety check: PassCustom licence
Released-kimuson/claude-code-viewer1.3k—~1.2kAutomated safety check: PassMIT
Automate npm Releasejd-solanki/slidev-theme-dracula161—~626Automated safety check: PassNone
OpenWork Release Processdifferent-ai/openwork24k—~2.3kAutomated safety check: PassCustom licence

Similar skills

  • Walks through releasing the Cline CLI package to npm: release notes, version bump, matching git tag, and either the GitHub workflow or a local publish.

    70k GitHub stars~3.4k tokensUpdated today
    DevelopmentAuto-check: warnings
  • Ccb GitHub

    SeemSeam/claude_codex_bridge

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

    3.6k GitHub stars~4.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Release

    d-kimuson/claude-code-viewer

    Run the claude-code-viewer release flow end-to-end. An agent skill from d-kimuson/claude-code-viewer.

    1.3k GitHub stars~1.2k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Automate npm Release

    jd-solanki/slidev-theme-dracula

    Automate npm package publishing via GitHub Actions for single-package repos and independent monorepo packages, including bumpp version tags, GitHub release notes, trusted publishing, provenance, and…

    161 GitHub stars~626 tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • OpenWork Release Process

    different-ai/openwork

    Cuts an OpenWork desktop release through a tag-driven GitHub Actions workflow that makes no commits, with pre-tag checks on open fix PRs and verification afterward.

    24k GitHub stars~2.3k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Release And CI

    eser/stack

    Releases and CI for eserstack: the shared version of all packages, the release command, the tag-driven build.yml run, JSR and npm publishing, changelog and breaking changes, release recovery, GitHub…

    128 GitHub stars~665 tokensUpdated 5 days ago
    DevOps & CloudAuto-check passed

More from jmfederico/pi-web

  • Changeset Changelog

    jmfederico/pi-web

    A skill your agent uses whenever the user asks about changelogs, Changesets, release notes, conventional commits, commit messages for release notes, or making user-visible project changes that…

    869 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Testing Guide

    jmfederico/pi-web

    Repository-specific testing guide. An agent skill from jmfederico/pi-web.

    869 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Code Quality Architecture

    jmfederico/pi-web

    Project code quality and architecture expectations for implementation, refactoring, planning, and code review.

    869 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Documentation Guide

    jmfederico/pi-web

    Repository documentation placement and writing guidance. An agent skill from jmfederico/pi-web.

    869 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Relay

    jmfederico/pi-web

    Carry work across a chain of fresh agent contexts using a shared goal, compact baton, and durable record.

    869 GitHub stars~959 tokensUpdated today
    Auto-check passed
  • Relay Runner

    jmfederico/pi-web

    Prepare and run Relay legs in Pi: keep the goal, baton, and log durable, then hand off to one fresh session or stop visibly.

    869 GitHub stars~2.2k tokensUpdated today
    Auto-check passed

Questions about npm Release Via GitHub Actions

What does npm Release Via GitHub Actions do?

A skill your agent uses whenever the user asks for a new npm version, npm release, package release, new release, version bump, publishing to npm, cutting a GitHub release, tagging a release, or…. npm Release Via GitHub Actions is an agent skill from jmfederico/pi-web. Use this skill whenever the user asks for a new npm version, npm release, package release, new release, version bump, publishing to npm, cutting a GitHub release, tagging a release, or anything similar.

When should I use npm Release Via GitHub Actions?

npm Release Via GitHub Actions fits situations like: the user asks for a new npm version; package release; publishing to npm; cutting a GitHub release.

How do I install npm Release Via GitHub Actions in Claude Code?

Run `npx skills add jmfederico/pi-web --skill npm-release-via-github-actions -a claude-code`. Or copy the skill folder (.agents/skills/npm-release-via-github-actions in jmfederico/pi-web) into .claude/skills/npm-release-via-github-actions in your project. Claude Code loads it when a task matches its description.

How do I install npm Release Via GitHub Actions in Codex?

Run `npx skills add jmfederico/pi-web --skill npm-release-via-github-actions -a codex`. Or copy the skill folder (.agents/skills/npm-release-via-github-actions in jmfederico/pi-web) into .agents/skills/npm-release-via-github-actions in your project. Codex loads it when a task matches its description.

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

What does npm Release Via GitHub Actions need to run?

Going by SKILL.md and its folder, npm Release Via GitHub Actions needs the command-line tools its instructions call (npm, gh, git, pnpm and yarn). Our summary lists: Node.js.

Does npm Release Via GitHub Actions access the network?

SKILL.md contains no URLs. Its commands use npm, gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is npm Release Via GitHub Actions 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 npm Release Via GitHub Actions use?

npm Release Via GitHub Actions 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 npm Release Via GitHub Actions use?

About 2.9k tokens (SKILL.md is roughly 12k 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 npm Release Via GitHub Actions?

Skills that share tags, products or a category with npm Release Via GitHub Actions: Cline CLI Release Publisher (cline/cline, 70k stars), Ccb GitHub (SeemSeam/claude_codex_bridge, 3.6k stars), Release (d-kimuson/claude-code-viewer, 1.3k stars) and Automate npm Release (jd-solanki/slidev-theme-dracula, 161 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains npm Release Via GitHub Actions?

jmfederico (a GitHub user) maintains it in jmfederico/pi-web, which has 869 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 9, 2026.

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