From coding-agent
Automated release workflow — version bump from conventional commits, changelog generation, tagging, and optional push. Use when a project is ready to cut a release.
npx claudepluginhub devjarus/coding-agentThis skill uses the workspace's default tool permissions.
Handles the full release pipeline: detect project type, determine version bump from commit history, generate changelog, update version files, commit, tag, and optionally push.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Handles the full release pipeline: detect project type, determine version bump from commit history, generate changelog, update version files, commit, tag, and optionally push.
Check which version file exists (first match wins):
| File | Ecosystem | Version Location |
|---|---|---|
package.json | Node.js | .version field |
pyproject.toml | Python | [project].version or [tool.poetry].version |
Cargo.toml | Rust | [package].version |
go.mod | Go | git tags only (no version file) |
.claude-plugin/plugin.json | Claude Plugin | .version field |
VERSION or version.txt | Generic | file contents |
If no version file is found, ask the user which ecosystem this is.
Read the current version from the detected file. If no version exists yet, start at 0.0.0.
Find the last git tag matching v* pattern:
git describe --tags --abbrev=0 --match "v*" 2>/dev/null
If no tag exists, use all commits.
Read commits since the last tag:
git log <last-tag>..HEAD --pretty=format:"%s" --no-merges
Parse each commit using conventional commit format (type: description or type(scope): description):
| Commit Type | Semver Bump | Changelog Section |
|---|---|---|
feat: | minor | Added |
fix: | patch | Fixed |
refactor: | patch | Changed |
perf: | patch | Performance |
docs: | none | Documentation |
test: | none | Testing |
chore: | none | Maintenance |
BREAKING CHANGE in body or ! after type | major | Breaking Changes |
The highest bump wins: if any commit is major → major. If any is minor → minor. Otherwise patch.
Calculate the new version from current + bump type. Present to the user:
Current version: 1.2.3
Commits since v1.2.3: 8 (3 feat, 4 fix, 1 refactor)
Proposed bump: minor → 1.3.0
Proceed? (yes/no/major/minor/patch to override)
Wait for user confirmation. Do not proceed without it.
Generate a changelog entry for the new version. Prepend to CHANGELOG.md (create if it doesn't exist).
Format:
## [1.3.0] - 2026-03-28
### Breaking Changes
- Description of breaking change
### Added
- feat: description ([abc1234])
- feat(scope): description ([def5678])
### Fixed
- fix: description ([aaa1111])
### Changed
- refactor: description ([bbb2222])
### Performance
- perf: description ([ccc3333])
Rules:
Update the version in the detected file(s):
package.json: update .version field. Also update package-lock.json if it exists (run npm install --package-lock-only or equivalent).pyproject.toml: update the version fieldCargo.toml: update [package].version, then run cargo check to update Cargo.lock.claude-plugin/plugin.json: update .version fieldVERSION/version.txt: overwrite file contentsgit add -A
git commit -m "release: v1.3.0"
git tag -a "v1.3.0" -m "Release v1.3.0"
Then ask the user:
Release v1.3.0 committed and tagged locally.
Push to remote? (yes/no)
If yes:
git push origin main --follow-tags
Report what was done:
Release v1.3.0 complete.
- Version bumped: 1.2.3 → 1.3.0 (minor)
- Changelog updated: CHANGELOG.md
- Commits included: 8
- Tag: v1.3.0
- Pushed: yes/no
| Flag | Effect |
|---|---|
--dry-run | Show what would happen without making changes |
--major | Force major bump regardless of commits |
--minor | Force minor bump |
--patch | Force patch bump |
--no-push | Skip the push prompt, don't push |
CHANGELOG.md already has an entry for this version, warn and ask before overwriting