Skip to content
Back to skills

Release

ASecurity

Run pre-release validation and execute the release process via release.sh

  • 19 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 9, 2026
toolsbashgit

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add Chemaclass/bashdep --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: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chemaclass-release/badge)](https://www.skillsdirectory.com/skills/chemaclass-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: Run pre-release validation and execute the release process via release.sh
user-invocable: true
argument-hint: "[version|--major|--minor|--patch]"
allowed-tools: Bash, Read, Grep, Glob
---

# Release

Run pre-release checks then cut a new bashdep release via `release.sh`.

## Arguments

- `$ARGUMENTS` - Optional. Either an explicit version (`0.5.0`) or a
  bump flag (`--major`, `--minor`, `--patch`). Default:
  `release.sh` auto-bumps the **minor** version.

## Current State

- Current version: !`grep -o 'BASHDEP_VERSION="[^"]*"' bashdep | cut -d'"' -f2`
- Branch: !`git branch --show-current`
- Working tree: !`git status --short`
- Unreleased changes: !`awk '/^## \[Unreleased\]$/,/^## \[/' CHANGELOG.md | head -40`

## Instructions

### 1. Pre-flight validation

Run `/pre-release` first, or replay the critical checks here:

```bash
make test
make sa
make lint
grep -nE 'declare -A|mapfile|\$\{[A-Za-z_][A-Za-z0-9_]*,,\}' bashdep || echo "Bash 3.2+: OK"
gh run list --limit 3 --branch main
git status --short
git branch --show-current
```

If ANY check fails, **stop and report**. Do NOT proceed to release.

### 2. Confirm with user

Show a summary:
- Current version → target version (resolved from `$ARGUMENTS`)
- Key entries from `CHANGELOG.md` `## [Unreleased]` (abbreviated)
- All checks passed

Ask the user to confirm before running `release.sh`.

### 3. Dry-run the release

Always preview first - `release.sh` is idempotent in dry-run mode:

```bash
./release.sh $ARGUMENTS --dry-run
```

Show the user the proposed:
- Version bump
- CHANGELOG diff (renamed `[Unreleased]` section + new compare links)
- Tag name

Ask for explicit confirmation before the real run.

### 4. Execute release

```bash
./release.sh $ARGUMENTS
```

`release.sh` will:
1. Validate the version is semver and greater than current
2. Confirm clean `main`, tag does not exist
3. Bump `BASHDEP_VERSION` in `bashdep`
4. Roll `CHANGELOG.md`: rename `[Unreleased]` → `[X.Y.Z] - YYYY-MM-DD`
    and refresh compare links
5. Run `make test sa lint` as a release gate
6. Commit `chore(release): X.Y.Z` and tag `X.Y.Z`
7. Push commit + tag to the remote
8. Create the GitHub release via `gh release create` and attach the
    `bashdep` script as the downloadable asset

The release URL is printed at the end.

### 5. Post-release verification

```bash
git log --oneline -1
git tag --list --sort=-v:refname | head -1
gh release view "$(git tag --list --sort=-v:refname | head -1)"
```

Verify:
- Latest commit is `chore(release): X.Y.Z`
- Latest tag matches the target version
- GitHub release page lists the `bashdep` asset

Report the release URL to the user.

## Useful flags

```
./release.sh --dry-run          # preview, no changes
./release.sh --patch            # auto-bump patch
./release.sh --major            # auto-bump major
./release.sh 0.5.0              # explicit version
./release.sh --no-gh            # skip GitHub release (still push tag)
./release.sh --force            # skip "Release X.Y.Z?" prompt (CI)
```

## Example Usage

```
/release
/release --patch
/release 0.5.0
```

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…