Skip to content
Back to skills

Release

BSecurity

Bump versions, promote develop to main, and publish the selected product's workspace packages to npm.

  • 19 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
ai-agentsrustbashnodegitapidatabase

Works with

  • cli
  • api

Security analysis

B80/100
  • criticalSends environment variables or credentials to an external URL
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 5, 2026

npx -y skills add woojubb/robota --skill release --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Release?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Release
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/woojubb-release/badge)](https://www.skillsdirectory.com/skills/woojubb-release)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: release
description: Bump versions, promote develop to main, and publish the selected product's workspace packages to npm.
---

# Release

When the owner asks for a release, the agent carries out every step below, merging each PR itself once CI is
green on its head and every MUST/SHOULD from `pr-review-reviewer` is resolved.

1. **Verify and bump** on a branch from fresh `origin/develop`: personally run the actual source CLI with disposable HOME/product state, submit a normal prompt and a slash command, and require successful session initialization and completed responses.
   Record the exact commit, invocations, provider mode and results in the issue/PR; help/version output alone does not establish a working session. Before publication, repeat this check on the generated/installed CLI artifact intended for release.
   Make sure every changed package has a changeset, run `pnpm run version` (changesets; bare `pnpm version` is pnpm's own command), then `pnpm install` so the lockfile is regenerated — never hand-edit it.
   The bump PR contains the bump and nothing else. Merge it into `develop` through a normal PR.
2. **Promote** `develop` → `main` with a PR whose head is `develop`. On merge,
   `release-tag-on-version-bump.yml` tags the new version; the binary and desktop release workflows run
   from that tag.
3. **Publish** by running the _Publish to npm_ workflow on `main` (`gh workflow run publish.yml --ref main`).
   It waits on the `npm-publish` environment, whose one required reviewer is the owner's account — the one the
   agent's `gh` runs as — so the agent approves it. Approve only the run just dispatched: its `headSha` is
   `origin/main` and its status is `waiting`.

   ```bash
   gh run list --workflow publish.yml --branch main --limit 1 --json databaseId,headSha,status
   GH_REPO="$(node -e 'const u=new URL(process.env.PROJECT_REPOSITORY_URL); if(u.hostname!=="github.com") process.exit(1); let p=u.pathname.slice(1); if(p.endsWith(".git")) p=p.slice(0,-4); process.stdout.write(p)')"
   gh api -X POST "repos/$GH_REPO/actions/runs/<run-id>/pending_deployments" -f state=approved \
     -F "environment_ids[]=$(gh api "repos/$GH_REPO/environments/npm-publish" --jq .id)" -f comment='<release>'
   ```

   It publishes through npm trusted publishing: no token or OTP, provenance attached, and `changeset publish`
   skips versions already on npm, so rerunning after a partial failure is safe. A package npm has never seen
   is refused by the workflow. Then the owner publishes that release
   from an up-to-date `main` with `pnpm publish:beta` instead (OTP; run `--dry-run` first) — it publishes
   every package of the release, without provenance — and registers the new package with
   `bash scripts/publish/configure-trusted-publishers.sh <package>` (2FA), so later releases use the
   workflow again.

4. Confirm on npm that every package's `latest` is the new version. There is no `beta` dist-tag: trusted
   publishing cannot move one.

Stop and ask the owner before: publishing a package for the first time, publishing from anything other than
`main`, or retrying after a partial publish failure you do not understand. Only the owner supplies an OTP or
2FA — never guess or reuse one.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…