| 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:
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:
./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
./release.sh $ARGUMENTS
release.sh will:
- Validate the version is semver and greater than current
- Confirm clean
main, tag does not exist
- Bump
BASHDEP_VERSION in bashdep
- Roll
CHANGELOG.md: rename [Unreleased] → [X.Y.Z] - YYYY-MM-DD
and refresh compare links
- Run
make test sa lint as a release gate
- Commit
chore(release): X.Y.Z and tag X.Y.Z
- Push commit + tag to the remote
- 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
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