publish

skilluse's avatarfrom skilluse

Publish a new version via GitHub Actions. Use when user says "publish", "release", or "bump version".

⭐32stars🔀1forks📁View on GitHub🕐Updated Jan 8, 2026

When & Why to Use This Skill

This Claude skill automates the end-to-end software release process by managing semantic versioning, git tagging, and GitHub Actions triggers. It streamlines developer workflows by analyzing commit history to suggest version bumps and ensuring all pre-flight checks are met before pushing updates to production environments.

Use Cases

  • Automated Version Bumping: Automatically calculate and update version numbers in package files based on conventional commit types like 'fix', 'feat', or 'BREAKING CHANGE'.
  • CI/CD Pipeline Integration: Trigger GitHub Actions workflows automatically by creating and pushing git tags, ensuring a seamless transition from code completion to deployment.
  • Release Consistency: Standardize the publishing process with built-in pre-flight checks that verify branch status and working tree cleanliness to prevent broken releases.
  • Developer Productivity: Reduce manual CLI overhead by using simple natural language commands like 'publish' or 'release' to handle complex multi-step git operations.
namepublish
descriptionPublish a new version via GitHub Actions. Use when user says "publish", "release", or "bump version".

Publish Release

Automate version bumping and release via GitHub Actions workflow.

Arguments

/publish [version-type]
  • /publish - Auto-detect version type from commits (default: patch)
  • /publish patch - Bug fixes (0.0.X)
  • /publish minor - New features (0.X.0)
  • /publish major - Breaking changes (X.0.0)
  • /publish 1.2.3 - Specific version number

Workflow

1. PRE-FLIGHT CHECK    →  Verify clean working tree, on main branch
       ↓
2. ANALYZE CHANGES     →  Review commits since last tag to suggest version
       ↓
3. BUMP VERSION        →  Update package.json version
       ↓
4. COMMIT & TAG        →  Create release commit and git tag
       ↓
5. PUSH                →  Push commit and tag to trigger CI/CD

Instructions

1. Pre-flight Check

# Verify clean state
git status --porcelain
git branch --show-current

# Get current version and last tag
cat packages/cli/package.json | grep '"version"'
git describe --tags --abbrev=0 2>/dev/null || echo "No tags yet"

STOP if:

  • Working tree has uncommitted changes
  • Not on main branch (unless user confirms)

2. Analyze Changes Since Last Release

# Show commits since last tag
git log $(git describe --tags --abbrev=0 2>/dev/null || echo "HEAD~10")..HEAD --oneline

# Look for version indicators
# - "feat:" or "feat!:" → minor or major
# - "fix:" → patch
# - "BREAKING CHANGE" → major

Suggest version type based on conventional commits:

Commit Type Version Bump
fix: PATCH
feat: MINOR
feat!: or BREAKING CHANGE MAJOR

3. Bump Version

# Read current version
CURRENT=$(grep '"version"' packages/cli/package.json | sed 's/.*"version": "\(.*\)".*/\1/')
echo "Current version: $CURRENT"

# Calculate new version (or use user-specified)
# For patch: 0.1.5 → 0.1.6
# For minor: 0.1.5 → 0.2.0
# For major: 0.1.5 → 1.0.0

Edit packages/cli/package.json to update the version.

4. Commit and Tag

Use conventional commit format:

git add packages/cli/package.json
git commit -m "chore(cli): bump version to X.Y.Z"
git tag vX.Y.Z

DO NOT add Claude Code references or co-author tags.

5. Push to Trigger Release

git push origin main vX.Y.Z

Provide the GitHub Actions URL for monitoring:

https://github.com/skilluse/skilluse/actions

Version Calculation Helper

// Parse semver: "0.1.5" → [0, 1, 5]
const [major, minor, patch] = version.split('.').map(Number);

// Bump logic
patch: `${major}.${minor}.${patch + 1}`
minor: `${major}.${minor + 1}.0`
major: `${major + 1}.0.0`

Error Handling

Issue Action
Uncommitted changes Ask user to commit or stash first
Not on main Warn and ask for confirmation
Tag already exists Suggest next version
Push fails Check remote access, show error

Post-Publish

After workflow completes, users can verify:

npm install -g skilluse
skilluse --version