Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add JasonLo/skill-sommelier --skill "ss-repo-release"
Install specific skill from multi-skill repository
# Description
>-
# SKILL.md
name: ss-repo-release
description: >-
Create a new versioned release: bump version, tag, and push to trigger the
release workflow. Use when the user says "release", "new version",
"bump version", "ship it", "cut a release", or "publish".
allowed-tools:
- Bash
- Read
- Edit
Self-Release
Bump the version, create an annotated git tag, and push to trigger the GitHub Actions release workflow.
When to Use
- User wants to publish a new version
- User says "release", "ship it", "bump version", "cut a release"
- After a set of features/fixes are merged and ready to ship
When NOT to Use
- User just wants to commit β use normal git workflow instead
- User wants to update the installed plugin β use
ss-repo-updateinstead - User wants to preview changes without releasing β just review the git log
Phase 1 β Preflight
Entry: User triggered a release.
-
Check for a clean working tree:
git status --porcelain
If uncommitted changes exist, report them and stop β ask to commit or stash first. -
Confirm on the
mainbranch:
git branch --show-current
If not onmain, warn and stop. -
Ensure local main is synced with remote:
git fetch origin main --quiet git rev-list --count HEAD..origin/main
If behind, report how many commits behind and stop β ask to pull first.
If ahead, warn and ask whether to push before releasing.
Exit: Clean tree, on main, synced with remote.
Phase 2 β Gather History
Entry: Preflight passed.
-
Read the current version from
.claude-plugin/plugin.json(theversionfield). -
Find the latest version tag:
git tag --list 'v*' --sort=-version:refname | head -1
If no tags exist, note this is the first release and use the full commit log onmain. -
List commits since the last tag (or all commits if first release):
git log <last-tag>..HEAD --oneline
If no commits since the last tag, report "No changes since last release" and stop. -
Display the commit log.
Exit: Current version known, commit list collected, at least one new commit exists.
Phase 3 β Suggest Bump
Entry: Commit list available from Phase 2.
Apply these rules to the commits:
- Any commit message contains BREAKING (case-insensitive) β suggest major
- Any commit message starts with feat: or feat( β suggest minor
- Otherwise (fix:, improve:, cleanup:, docs:, chore:, etc.) β suggest patch
Present all three options with the resulting version number:
- patch: X.Y.Z β X.Y.(Z+1)
- minor: X.Y.Z β X.(Y+1).0
- major: X.Y.Z β (X+1).0.0
Highlight the suggested option. Ask the user to choose.
Exit: User confirmed the new version number.
Phase 4 β Bump Version
Entry: New version number confirmed.
- Edit
.claude-plugin/plugin.jsonβ update the"version"field - Edit
.claude-plugin/marketplace.jsonβ update the"version"field insidemetadata - Read both files back to confirm the version is correct
Exit: Both files show the new version.
Phase 5 β Commit, Tag, Push
Entry: Version bumped in both files.
β SAFETY GATE: Before proceeding, display this summary and wait for explicit confirmation:
Ready to release:
Version: v<NEW_VERSION>
Files: plugin.json, marketplace.json
Action: commit β tag β push (triggers GitHub release workflow)
Proceed? (yes/no)
Only continue after user confirms.
-
Stage the two changed files:
git add .claude-plugin/plugin.json .claude-plugin/marketplace.json -
Commit with a release message:
git commit -m "release: v<NEW_VERSION>" -
Create an annotated tag:
git tag -a "v<NEW_VERSION>" -m "Release v<NEW_VERSION>" -
Push the commit and tag together:
git push origin main --follow-tags -
Report success:
- New version number
- Tag name
- GitHub Actions release workflow triggered
- Link:
https://github.com/JasonLo/skill-sommelier/actions
Exit: Tag pushed, release workflow triggered.
Edge Cases
- Dirty working tree: Stop at Phase 1, ask to commit or stash
- Not on main: Stop at Phase 1, warn
- Behind remote: Stop at Phase 1, ask to pull
- No commits since last tag: Stop at Phase 2, nothing to release
- First release (no tags): Use full commit history for changelog
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.