Back to list
bfmcneill

versioning

by bfmcneill

0🍴 0📅 Jan 15, 2026

SKILL.md


name: versioning description: Use when releasing, tagging, or bumping versions. Defines semver rules and keeps package.json/pyproject.toml synced with git tags.

Versioning

Semantic versioning rules and workflow for consistent releases.

Semver Rules

Format: MAJOR.MINOR.PATCH (e.g., 1.4.2)

BumpWhenExamples
MAJORBreaking changesAPI removed, incompatible changes, major rewrites
MINORNew features (backward compatible)New endpoint, new option, new capability
PATCHBug fixes (backward compatible)Fix crash, fix typo, fix edge case

Decision Tree

Is it a breaking change?
├── Yes → MAJOR
└── No → Does it add new functionality?
    ├── Yes → MINOR
    └── No → PATCH

What Counts as Breaking?

MAJOR (breaking):

  • Removing a public function/endpoint
  • Changing function signature (required params)
  • Changing return type
  • Renaming exports
  • Dropping support for runtime/dependency

MINOR (feature):

  • Adding new function/endpoint
  • Adding optional parameter
  • New configuration option
  • Performance improvement with no API change

PATCH (fix):

  • Bug fix
  • Documentation fix
  • Internal refactor (no API change)
  • Dependency update (non-breaking)

Version Sync Workflow

Keep these in sync:

  1. package.json version (JS/TS projects)
  2. pyproject.toml version (Python projects)
  3. Git tag

Release Workflow

# 1. Update version in manifest
# package.json: "version": "1.2.0"
# OR pyproject.toml: version = "1.2.0"

# 2. Commit the version bump
git add package.json  # or pyproject.toml
git commit -m "chore: bump version to 1.2.0"

# 3. Tag the commit
git tag -a v1.2.0 -m "Release 1.2.0: [brief description]"

# 4. Push with tags
git push && git push --tags

Pre-release Versions

For work-in-progress releases:

  • 1.2.0-alpha.1 - Early testing
  • 1.2.0-beta.1 - Feature complete, testing
  • 1.2.0-rc.1 - Release candidate

Common Mistakes

MistakeCorrect
Bumping MAJOR for new featureMINOR (if backward compatible)
Bumping PATCH for new optionMINOR (it's new functionality)
Forgetting to tagAlways tag after version bump
Tag without version updateUpdate manifest first, then tag
Inconsistent tag formatAlways use v prefix: v1.2.0

Quick Reference

# Check current version
node -p "require('./package.json').version"
# or
grep version pyproject.toml

# List tags
git tag -l

# See what changed since last tag
git log $(git describe --tags --abbrev=0)..HEAD --oneline

Score

Total Score

45/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

0/5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon