Loading...
Loading...
Automates the full code release pipeline — branch, commit, push, PR, wait for CI, merge, version bump, release, cleanup.
npx skill4agent add bitwize-music-studio/claude-ai-music-skills ship$ARGUMENTSfeat: streaming URL management toolsmain[uncommitted changes on main]
→ create feature branch
→ commit with conventional commit message
→ push + create PR
→ poll CI checks until all pass (or fail)
→ merge PR
→ pull main
→ determine version bump from commit prefix
→ update plugin.json + marketplace.json + CHANGELOG + README badges
→ commit "chore: release 0.x.0"
→ push to main (triggers auto-release.yml → GitHub Release)
→ delete local feature branch$ARGUMENTSfeat: streaming URL management toolsfeat:fix:feat!:docs:chore:streaming URL management toolsfeat: streaming URL management toolsfeat/streaming-url-management-toolsfix: correct audio pathfix/correct-audio-pathfeat!: breaking changefeat/breaking-changedocs: update READMEdocs/update-readmechore: cleanupchore/cleanupfeat:fix:feat!:docs:chore:$ARGUMENTSgit branch --show-currentmaingit checkout main && git pullgit status --porcelaingh auth statusgh auth login.claude-plugin/plugin.jsonjq -r '.version' .claude-plugin/plugin.jsonCURRENT_VERSIONgit checkout -b {branch-name}git status.envcredentialsgit add -Agit commit -m "$(cat <<'EOF'
{full commit message}
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EOF
)"git push -u origin {branch-name}gh pr create --title "{full commit message}" --body "$(cat <<'EOF'
## Summary
{1-3 bullet points summarizing what changed}
## Test plan
- [ ] CI checks pass (automated)
- [ ] Version sync validates (automated)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"gh pr checks--watchgh pr checks {pr-number} --watch --fail-level all/bitwize-music:shipgh pr merge {pr-number} --merge --delete-branchgit checkout main && git pull origin maindocs:chore:CURRENT_VERSIONNEW_VERSION.claude-plugin/plugin.json"version": "{CURRENT_VERSION}""version": "{NEW_VERSION}".claude-plugin/marketplace.json"version": "{CURRENT_VERSION}""version": "{NEW_VERSION}"CHANGELOG.md## [Unreleased][Unreleased]## [Unreleased]## [{NEW_VERSION}] - {YYYY-MM-DD}skills/*/pytest --co -q 2>/dev/null | tail -1feat:feat!:feat:feat!:| **{MINOR_VERSION}** | {brief highlight} || **0.58** | Ship skill for automated code release pipeline |docs:chore:git add .claude-plugin/plugin.json .claude-plugin/marketplace.json CHANGELOG.md README.mdgit commit -m "$(cat <<'EOF'
chore: release {NEW_VERSION}
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EOF
)"auto-release.ymlgit push origin main--delete-branchgit branch -d {branch-name}Ship complete!
Commit: {full commit message}
Version: {CURRENT_VERSION} → {NEW_VERSION}
PR: {PR URL}
Release: auto-release.yml will create GitHub Release for v{NEW_VERSION}
Branch {branch-name} cleaned up (local + remote).docs:chore:Ship complete!
Commit: {full commit message}
Version: unchanged ({CURRENT_VERSION})
PR: {PR URL}
No version bump for {prefix} commits.
Branch {branch-name} cleaned up (local + remote).| Scenario | Action |
|---|---|
Not on | Stop. Tell user to |
| No uncommitted changes | Stop. "Nothing to ship." |
| Stop. Suggest |
| CI check fails | Stop. Report failure details. Leave PR open. |
| Merge conflict | Stop. Report conflict. Let user resolve. |
| Push rejected | Stop. Report error. Suggest |
| Invalid commit message | Stop. Show expected format with examples. |
git add -Agit add .feat:fix:feat!:chore: release