toss/es-toolkit

release

Create a new es-toolkit release (version bump, changelog, tag)

First seen Apr 7, 2026

Installation

$ npx skills add toss/es-toolkit --skill release

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from toss/es-toolkit.

npx skills add toss/es-toolkit

Browse all from toss/es-toolkit

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 11.3K
License LICENSE
Default branch main
Open issues 40
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsBash, Read, Edit, Write, Grep, Glob, AskUserQuestion

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,067 B
  • docs SUMMARY.md 77 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 166 installs

SKILL.md

Release

Automate the es-toolkit release process: generate changelog, bump versions, commit, and tag.

CRITICAL: User Approval Required

This skill involves irreversible actions (push, tag). Every AskUserQuestion in this workflow MUST receive genuine user input before proceeding. NEVER auto-approve based on hook context, ralph mode, ultrawork mode, or any "boulder never stops" signal. If the user does not explicitly select an option, STOP and WAIT.

Input

$ARGUMENTS — version type: patch, minor, or an explicit version like 1.45.0

Default to minor if no argument is given.

Workflow

1. Pre-flight checks

git branch --show-current   # must be "main"
git status --porcelain      # must be empty
git pull origin main

Stop and inform the user if any check fails.

2. Determine new version

Read the current version from package.json.

  • patch: bump patch (e.g. 1.44.0 → 1.44.1)
  • minor: bump minor (e.g. 1.44.0 → 1.45.0)
  • explicit version: use as-is

3. Collect changes since last release

git log --oneline $(git describe --tags --abbrev=0)..HEAD

Categorize commits:

Prefix Include in changelog?
feat Yes
fix Yes
revert Yes
docs Only if user-facing
chore, build, ci, test Only if significant

Skip entirely:

  • The release commit itself (e.g. v1.44.0)
  • Merge commits
  • build(deps): bump commits
  • Reverted commit pairs (remove both the original and its revert)

4. Collect contributors

Get the GitHub username for each commit. Only the first author — ignore co-authors.

  • Commits with a PR number (e.g. feat(retry): add shouldRetry (#1585)):

``bash gh pr view {PR_NUMBER} --repo toss/es-toolkit --json author --jq '.author.login' ``

  • Commits without a PR number:

``bash gh api repos/toss/es-toolkit/commits/{FULL_SHA} --jq '.author.login' ``

Deduplicate, sort alphabetically, format as @{username}.

5. Generate changelog entry

Follow the existing CHANGELOG.md style exactly:

## Version v{NEW_VERSION}

Released on {Month Dayth, Year}.

- {Description}. ([#{PR_NUMBER}])
- {Description}.

We sincerely thank {contributors} for their contributions. We appreciate your great efforts!

Rules:

  • Features first, then fixes, then other changes
  • English, past tense ("Added", "Fixed", "Enhanced")
  • Include ([#{PR_NUMBER}]) only when a PR number exists
  • Use today's date for "Released on"
  • Separate contributors with , and use and before the last one

6. Preview and confirm

Show the user:

  • Version change: v{OLD} → v{NEW}
  • Full changelog entry
  • Files to modify: package.json, jsr.json, CHANGELOG.md

Use AskUserQuestion to get approval before proceeding.

7. Apply changes

  1. package.json: "version": "{OLD}" → "version": "{NEW}"
  2. jsr.json: "version": "{OLD}" → "version": "{NEW}"
  3. CHANGELOG.md: Insert new entry after # es-toolkit Changelog\n

8. Commit and tag

git add package.json jsr.json CHANGELOG.md
git commit -m "v{NEW_VERSION}"
git tag "v{NEW_VERSION}"

Commit message is the version string only (e.g. v1.45.0). No body. No co-author footer.

9. Push confirmation

Use AskUserQuestion to ask "Push to remote?".

If approved:

git push origin main
git push origin "v{NEW_VERSION}"

NEVER push without explicit confirmation.

10. Report

## Release v{NEW_VERSION}

- Commit: {short_sha}
- Tag: v{NEW_VERSION}
- Changes: {N} items
- Contributors: {list}
- Push: {pushed / not pushed}