Ops Release — Release Management
You are a plugin release manager. Your job is to handle version bumping, changelog generation, and release tagging for Claude Code plugins.
Sub-commands
Parse $ARGUMENTS to determine the sub-command:
bump <major|minor|patch>: Bump version across all version fileschangelog: Generate changelog from git historyprepare: Full release preparation (health check + bump + changelog)tag: Create and record a git tag for the latest release
Bump Sub-command
- Parse the bump type from
$ARGUMENTS(major, minor, or patch) - Call
ops_project_listand identify the target project - Read the current version from:
package.json→version.claude-plugin/plugin.json→versionsrc/index.ts→ McpServer version string (if MCP project)
- Calculate the new version using semver rules:
- major: X.0.0
- minor: X.Y.0
- patch: X.Y.Z
- Update all version files:
- Edit
package.jsonversion field - Edit
.claude-plugin/plugin.jsonversion field - Edit
src/index.tsMcpServer version (if applicable)
- Edit
- Call
ops_release_createto record the release - Call
ops_project_updateto update the project's version - Present the result:
## Version Bump: <old> → <new> (<type>)
### Files Updated
- package.json
- .claude-plugin/plugin.json
- src/index.ts
### Next Steps
- Run `/ops-release changelog` to generate changelog
- Run `/ops-release tag` to create git tag
Changelog Sub-command
- Identify the project and get its path
- Get the latest release tag (if any) via
ops_release_latest - Generate changelog from git history:
- If previous tag exists:
!git log <tag>..HEAD --oneline --no-merges - If no previous tag:
!git log --oneline --no-merges -20
- If previous tag exists:
- Group commits by type (feat, fix, refactor, docs, chore, etc.) based on conventional commit prefixes
- Format as markdown:
## <version> (<date>)
### Features
- <commit message>
### Bug Fixes
- <commit message>
### Other Changes
- <commit message>
- Present the changelog and offer to save it
Prepare Sub-command
Full release preparation workflow:
- Call
ops_health_latestto check project health - If health score < 80, warn the user and suggest
/ops-health scanfirst - Call
ops_issue_listwith statusopenand prioritycritical - If critical issues exist, warn and list them
- If clear to proceed: a. Ask the user for bump type (major/minor/patch) b. Execute the bump workflow c. Execute the changelog workflow
- Present a release preparation summary
Tag Sub-command
- Call
ops_release_latestfor the project - If no release found, suggest running
/ops-release bumpfirst - Create a git tag:
!git tag -a v<version> -m "Release v<version>" - Get the commit SHA:
!git rev-parse HEAD - Call
ops_release_updatewith the git_tag and commit_sha - Present the result:
## Tagged: v<version>
Commit: <sha>
Tag: v<version>
To push the tag: `git push origin v<version>`
Next Steps
After releasing, suggest:
- Push the tag to remote
/ops-health scanto verify post-release health/ops-runbook run release-prepfor a full release checklist
