skills/semver-advisor/SKILL.md
Advises on semantic version bumps and classifies version changes according to semver rules. Use when determining version numbers, analyzing dependency updates, or classifying version changes as MAJOR, MINOR, or PATCH.
npx skillsauth add alienfast/claude Semantic Version AdvisorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill helps classify version changes, determine appropriate version bumps, and validate semantic versioning decisions.
Version Format: MAJOR.MINOR.PATCH
Input: Old version and new version Output: Classification (MAJOR/MINOR/PATCH) with explanation
┌─────────────────────────────────┐
│ Compare versions X.Y.Z │
└────────────┬────────────────────┘
│
v
┌────────────────┐
│ X changed? │─ YES ──> MAJOR (breaking changes)
└────┬───────────┘
│ NO
v
┌────────────────┐
│ Y changed? │─ YES ──> MINOR (new features)
└────┬───────────┘
│ NO
v
┌────────────────┐
│ Z changed? │─ YES ──> PATCH (bug fixes)
└────┬───────────┘
│ NO
v
Same version
MAJOR.MINOR.PATCH from both versions^, ~, >= prefixes if present^4.0.0 → ^5.0.0 = MAJOR (4 → 5, breaking changes)
^13.1.5 → ^13.2.0 = MINOR (1 → 2, new features)
^7.1.5 → ^7.1.6 = PATCH (5 → 6, bug fixes)
9.35.0 → 9.36.0 = MINOR (35 → 36, new features)
1.0.0 → 1.0.1 = PATCH (0 → 1, bug fixes)
Input: List of changes to be included in release Output: Recommended version bump (MAJOR/MINOR/PATCH)
MAJOR bump required if ANY of:
MINOR bump required if ANY of:
PATCH bump if ALL of:
Start with PATCH (default)
↓
For each change:
- Breaking change? → Upgrade to MAJOR, stop
- New feature? → Upgrade to MINOR, continue
- Bug fix? → Keep current level, continue
↓
Return highest level encountered
Changes:
getData()fetchAsync() methodAnalysis:
Result: MINOR bump (new functionality added)
Input: Current version, proposed version, change list Output: Validation result (valid/invalid) with reasoning
1.5.3 → 2.0.0 ✅ (MINOR and PATCH reset)1.5.3 → 1.6.0 ✅ (PATCH reset)1.5.3 → 1.5.4 ✅ (no reset needed)Valid:
1.2.3 → 2.0.0 with breaking changes ✅1.2.3 → 1.3.0 with new features ✅1.2.3 → 1.2.4 with bug fixes ✅Invalid:
1.2.3 → 1.4.0 (skipped MINOR version) ❌1.2.3 → 2.1.0 (MINOR not reset to 0) ❌1.2.3 → 1.2.3 (no change) ❌1.2.3 → 1.3.0 with breaking changes (under-versioned) ❌1.2.3 → 2.0.0 with only bug fixes (over-versioned) ❌Wrong: ^7.1.5 → ^7.1.6 = "Major" because of the caret
Right: ^7.1.5 → ^7.1.6 = PATCH (ignore the ^, compare numbers)
Wrong: Core package changed → must be MAJOR Right: Classify by version numbers, not package importance
Wrong: 1.5.3 → 2.1.0 for MAJOR bump
Right: 1.5.3 → 2.0.0 for MAJOR bump (reset MINOR and PATCH)
Wrong: Security fix → must be PATCH Right: Security fixes can be any level (breaking fix = MAJOR)
1.0.0-alpha.1 - Alpha pre-release1.0.0-beta.2 - Beta pre-release1.0.0-rc.1 - Release candidate1.0.0-alpha.1
< 1.0.0-alpha.beta
< 1.0.0-beta
< 1.0.0-beta.2
< 1.0.0-rc.1
< 1.0.0
1.0.0 → 1.0.0-alpha.1 = Pre-release (no semver bump)1.0.0-beta.1 → 1.0.0 = Release (no semver change)1.0.0-rc.1 → 1.1.0 = MINOR release from RCRequired Research:
Time Investment: High (30-60 minutes)
Required Research:
Time Investment: Medium (10-20 minutes)
Required Research:
Time Investment: Low (2-5 minutes)
# View outdated packages with version info
npm outdated
# Machine-readable upgrade information
npx ncu --jsonUpgraded
# pnpm version check
pnpm outdated
# Classify version difference
semver diff 1.2.3 1.3.0 # Output: "minor"
# Compare versions
semver gt 1.3.0 1.2.3 # Output: true
# Check range satisfaction
semver satisfies 1.2.4 "^1.2.3" # Output: true
**Recommended Version Bump**: [MAJOR/MINOR/PATCH]
**Current Version**: X.Y.Z
**Proposed Version**: A.B.C
**Change Summary**:
- [Breaking/Feature/Fix]: Description
**Reasoning**:
[Explain why this classification based on change types]
**Migration Notes** (if MAJOR):
[Required steps for consumers]
**Package**: package-name
**Version Change**: X.Y.Z → A.B.C
**Classification**: [MAJOR/MINOR/PATCH]
**Impact Assessment**:
- Breaking Changes: [Yes/No]
- New Features: [Yes/No]
- Security Fixes: [Yes/No]
**Recommended Action**: [Update now/Test first/Review carefully]
| Old Version | New Version | Change Type | Classification | |-------------|-------------|-------------|----------------| | 1.2.3 | 2.0.0 | X changed | MAJOR | | 1.2.3 | 1.3.0 | Y changed | MINOR | | 1.2.3 | 1.2.4 | Z changed | PATCH | | ^4.0.0 | ^5.0.0 | X changed | MAJOR | | ~1.2.3 | ~1.3.0 | Y changed | MINOR | | 9.35.0 | 9.36.0 | Y changed | MINOR | | 0.2.3 | 0.3.0 | Y changed | MINOR (0.x) |
For complete semver rules and standards, see:
~/.claude/standards/semver.md
testing
End-to-end Linear issue macro — runs /start then /finish in sequence, gated on the /quality-review verdict. Worktree mode is opt-in via the `wt` token, mirroring /start. Pauses only for plan approval and the deferred-items filing decision; otherwise autonomous. Use when the user says 'full PL-XX', 'ship PL-XX end-to-end', or invokes /full.
development
Adversarial implementation review with triage and fix loop. Hard-gates on `pnpm check`, delegates to the quality-reviewer agent for categorized findings (Critical/High/Medium/Nice-to-Have/Approved), then triages and fixes findings via the developer agent. Loops until a re-review surfaces no new Critical/High/Medium findings (convergence), with a soft ceiling of 5 cycles before asking the user how to proceed; option 3 of that prompt terminates with verdict `escalated-to-architect`. Use when the user says 'review my work', 'check this implementation', 'adversarial review', 'quality review', or invokes /quality-review.
testing
Triage and prioritize Linear backlog. Analyzes issues for staleness, blockers, and suggests priorities based on dependencies and capacity.
testing
Start working on a Linear issue — check blockers, assign, move to In Progress, create branch, plan implementation, execute with checkpoint updates, review and triage findings. Use when the user says 'start issue', 'work on PL-XX', 'begin PL-XX', or invokes /start.