release

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

toss/es-toolkit153 installsMITSynced Aug 26

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
name: release
description: Create a new es-toolkit release (version bump, changelog, tag)
license: MIT
---

# 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

```bash
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

```bash
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:

```markdown
## 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

```bash
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:

```bash
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}
```

More Writing & Documentation skills

paper-context-resolver

lllllllama/rigorpilot-skills

Rigor Paper Context helper for README-first deep learning repo reproduction. Use only when the README and repository files leave a narrow reproduction-critical gap and the task is to resolve a specific paper detail such as dataset split, preprocessing, evaluation protocol, checkpoint mapping, or runtime assumption from primary paper sources while recording conflicts. Do not use for general paper summary, repo scanning, environment setup, command execution, title-only paper lookup, or replacing README guidance by default.

450.8k

repo-intake-and-plan

lllllllama/rigorpilot-skills

Rigor Intake helper for README-first deep learning repo reproduction. Use when the task is specifically to scan a repository, read the README and common project files, extract documented commands, classify inference, evaluation, and training candidates, and return the smallest trustworthy reproduction plan to the main orchestrator. Do not use for environment setup, asset download, command execution, final reporting, paper lookup, or end-to-end orchestration.

450.0k

minimal-run-and-audit

lllllllama/rigorpilot-skills

Rigor Run skill for README-first deep learning repo reproduction. Use when the task is specifically to capture or normalize evidence from the selected smoke test or documented inference or evaluation command and write standardized `repro_outputs/` files, including patch notes when repository files changed. Do not use for training execution, initial repo intake, generic environment setup, paper lookup, target selection, hidden scientific-meaning changes, or end-to-end orchestration by itself.

449.9k

← All Writing & Documentation skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY