From psd-coding-system
Automate the version bump ritual — three independent tracks (marketplace, psd-coding-system, psd-productivity)
How this skill is triggered — by the user, by Claude, or both
Slash command
/psd-coding-system:bump-versionclaude-opus-4-6This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You automate the version bump ritual for the PSD Plugin Marketplace. There are **three independent version tracks** — never conflate them.
You automate the version bump ritual for the PSD Plugin Marketplace. There are three independent version tracks — never conflate them.
Bump type: $ARGUMENTS
| Track | Files | When to bump |
|---|---|---|
| Marketplace | .claude-plugin/marketplace.json → metadata.version; CLAUDE.md → **Version**; root README.md | Every release |
| psd-coding-system | plugins/psd-coding-system/.claude-plugin/plugin.json; marketplace.json → plugins[name=psd-coding-system].version; plugins/psd-coding-system/README.md | Only when coding system skills/agents changed |
| psd-productivity | plugins/psd-productivity/.claude-plugin/plugin.json; marketplace.json → plugins[name=psd-productivity].version; plugins/psd-productivity/README.md | Only when productivity skills/agents changed |
BUMP_TYPE="$ARGUMENTS"
case "$BUMP_TYPE" in
patch|minor|major) echo "Bump type: $BUMP_TYPE" ;;
*)
echo "Invalid or missing bump type"
;;
esac
If the argument is empty or invalid, use AskUserQuestion to ask which bump type they want.
Use AskUserQuestion to ask:
The marketplace version always bumps. Plugin versions only bump for their own changes.
# Marketplace version (always bumps)
MARKETPLACE_VERSION=$(jq -r '.metadata.version' .claude-plugin/marketplace.json)
echo "Marketplace current: $MARKETPLACE_VERSION"
# Plugin versions (only if those plugins changed)
CODING_VERSION=$(jq -r '.version' plugins/psd-coding-system/.claude-plugin/plugin.json)
PRODUCTIVITY_VERSION=$(jq -r '.version' plugins/psd-productivity/.claude-plugin/plugin.json)
echo "psd-coding-system current: $CODING_VERSION"
echo "psd-productivity current: $PRODUCTIVITY_VERSION"
Calculate new versions using the bump type:
bump_version() {
local version="$1" type="$2"
local major minor patch
major=$(echo "$version" | cut -d. -f1)
minor=$(echo "$version" | cut -d. -f2)
patch=$(echo "$version" | cut -d. -f3)
case "$type" in
patch) echo "$major.$minor.$((patch + 1))" ;;
minor) echo "$major.$((minor + 1)).0" ;;
major) echo "$((major + 1)).0.0" ;;
esac
}
NEW_MARKETPLACE=$(bump_version "$MARKETPLACE_VERSION" "$BUMP_TYPE")
# Only calculate if those plugins changed:
# NEW_CODING=$(bump_version "$CODING_VERSION" "$BUMP_TYPE")
# NEW_PRODUCTIVITY=$(bump_version "$PRODUCTIVITY_VERSION" "$BUMP_TYPE")
Read each file before editing (required by Edit tool).
.claude-plugin/marketplace.json — metadata.version only (use specific context to avoid matching plugin version lines)CLAUDE.md — **Version**: X.Y.ZREADME.md — badge and **Version**: X.Y.Z occurrencesCHANGELOG.md — Add new section at top (see Phase 5)plugins/psd-coding-system/.claude-plugin/plugin.json — "version": "X.Y.Z".claude-plugin/marketplace.json — plugins[name=psd-coding-system].version (use surrounding context to target correctly)plugins/psd-coding-system/README.md — Version: X.Y.Zplugins/psd-productivity/.claude-plugin/plugin.json — "version": "X.Y.Z".claude-plugin/marketplace.json — plugins[name=psd-productivity].versionplugins/psd-productivity/README.md — Version: X.Y.ZCRITICAL for marketplace.json edits: The file has three version strings. Use sufficient surrounding context in Edit calls to uniquely target each one — never use replace_all: true on marketplace.json.
Use AskUserQuestion to ask for a brief description of what changed. Add entry at top of CHANGELOG.md:
## [X.Y.Z] - YYYY-MM-DD
### Added
- [New features if any]
### Changed
- [Changes to existing functionality if any]
### Fixed
- [Bug fixes if any]
Run date +%Y-%m-%d for today's date.
SKILL_COUNT=$(find plugins/psd-coding-system/skills -name 'SKILL.md' -type f | wc -l | tr -d ' ')
AGENT_COUNT=$(find plugins/psd-coding-system/agents -name '*.md' -type f | wc -l | tr -d ' ')
echo "Skills: $SKILL_COUNT"
echo "Agents: $AGENT_COUNT"
If counts differ from CLAUDE.md, update them. Otherwise skip.
# Stage changed files
git add \
.claude-plugin/marketplace.json \
CLAUDE.md \
README.md \
CHANGELOG.md
# + plugin-specific files if those plugins changed
git commit -m "chore: Bump version to $NEW_MARKETPLACE — [brief reason]"
git tag -a "v$NEW_MARKETPLACE" -m "Release v$NEW_MARKETPLACE - [brief summary]"
git push origin HEAD
git push origin "v$NEW_MARKETPLACE"
### Release v$NEW_MARKETPLACE
| Track | Old | New | Updated |
|-------|-----|-----|---------|
| Marketplace | $MARKETPLACE_VERSION | $NEW_MARKETPLACE | ✅ |
| psd-coding-system | $CODING_VERSION | $NEW_CODING or (unchanged) | ✅ / — |
| psd-productivity | $PRODUCTIVITY_VERSION | $NEW_PRODUCTIVITY or (unchanged) | ✅ / — |
**Tag:** v$NEW_MARKETPLACE
**Pushed:** ✅
**Cache:** Run `/reload-plugins` to activate
npx claudepluginhub psd401/psd-claude-plugins --plugin psd-coding-systemBumps semantic versions (major/minor/patch) for Claude Code plugins, updates plugin.json and marketplace.json, creates git commit and tag. Use after features, bug fixes, or breaking changes.
Automates semantic version bumps across plugin.json, marketplace.extended.json, and marketplace.json in Claude Code plugins. Triggers on mentions of version bump, update version, or release for consistency.
Automates version bumps, metadata updates, and skill/command counts for Claude agent-skills plugins when adding/removing/updating skills/commands or preparing releases.