MCP HubMCP Hub
Volver a habilidades

apply-semantic-versioning

pjt222
Actualizado 2 days ago
4 vistas
17
2
17
Ver en GitHub
Metadesigndata

Acerca de

Esta habilidad analiza los cambios en el código para determinar automáticamente el incremento correcto de versión semántica (major, minor o patch) según SemVer 2.0.0. Maneja la detección de cambios incompatibles, identificadores de pre-lanzamiento y metadatos de compilación para la preparación de versiones. Úsala después de fusionar cambios para resolver discrepancias de versión y asegurar un etiquetado adecuado.

Instalación rápida

Claude Code

Recomendado
Principal
npx skills add pjt222/agent-almanac -a claude-code
Comando PluginAlternativo
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativo
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/apply-semantic-versioning

Copia y pega este comando en Claude Code para instalar esta habilidad

Documentación

Apply Semantic Versioning

Determine + apply correct ver bump via changes since last release. Read ver files, classify changes breaking (major)/feature (minor)/fix (patch), compute new ver, update files. SemVer 2.0.0.

Use When

  • Prepare new release → correct ver num
  • After merging, before tagging
  • Eval change = breaking?
  • Add pre-release (alpha, beta, rc)
  • Resolve disagreement about ver bump

In

  • Required: Project root w/ ver file (DESCRIPTION, package.json, Cargo.toml, pyproject.toml, VERSION)
  • Required: Git history since last release (tag or commit)
  • Optional: Commit convention (Conventional Commits, free-form)
  • Optional: Pre-release label (alpha, beta, rc)
  • Optional: Previous ver if not readable

Do

Step 1: Read Current Ver

Locate + read ver file in project root.

# R packages
grep "^Version:" DESCRIPTION

# Node.js
grep '"version"' package.json

# Rust
grep '^version' Cargo.toml

# Python
grep 'version' pyproject.toml

# Plain file
cat VERSION

Parse → major.minor.patch. Pre-release suffix (e.g., 1.2.0-beta.1) → note separately.

Current ver = MAJOR.MINOR.PATCH[-PRERELEASE].

If err: No ver file → check VERSION file or git tags (git describe --tags --abbrev=0). No ver → start 0.1.0 initial dev or 1.0.0 if stable public API.

Step 2: Analyze Changes

Changes since last tagged release.

# Find the last version tag
git describe --tags --abbrev=0

# List commits since that tag
git log --oneline v1.2.3..HEAD

# If using Conventional Commits, filter by type
git log --oneline v1.2.3..HEAD | grep -E "^[a-f0-9]+ (feat|fix|BREAKING)"

No tags → compare against initial commit or known baseline.

List of commits w/ msgs classifiable by change type.

If err: Git history unavail or tags missing → ask dev describe changes manually. Classify per desc.

Step 3: Classify Changes

Apply SemVer rules:

Change TypeBumpExamples
Breaking (incompatible API change)MAJORRenamed/removed public fn, changed return type, removed param, changed default behavior
Feature (new backwards-compat)MINORNew exported fn, new param w/ default, new file format support
Fix (backwards-compat bug fix)PATCHBug fix, doc correction, perf w/ same API

Rules:

  1. ANY breaking → MAJOR (resets minor + patch to 0)
  2. No breaking + ANY features → MINOR (resets patch to 0)
  3. Only fixes → PATCH

Special:

  • Pre-1.0.0: During initial dev (0.x.y), minor bumps may contain breaking changes. Doc clearly.
  • Deprecation: Deprecating a fn → MINOR (still works). Removing → MAJOR.
  • Internal changes: Refactoring no public API change → PATCH.

Each change classified breaking/feature/fix + overall bump level.

If err: Ambiguous → err on side of higher bump. Conservative major > minor breaking downstream.

Step 4: Compute New Ver

Apply bump to current:

CurrentBumpNew Version
1.2.3MAJOR2.0.0
1.2.3MINOR1.3.0
1.2.3PATCH1.2.4
0.9.5MINOR0.10.0
2.0.0-rc.1(release)2.0.0

Pre-release label requested:

  • 1.3.0-alpha.1 first alpha of upcoming 1.3.0
  • 1.3.0-beta.1 first beta
  • 1.3.0-rc.1 first release candidate

Pre-release precedence: alpha < beta < rc < (release).

New ver num per SemVer rules.

If err: Current ver malformed or non-SemVer → normalize first. 1.21.2.0.

Step 5: Update Ver Files

Write new ver to file(s).

# R: Update DESCRIPTION
# Change "Version: 1.2.3" to "Version: 1.3.0"
// Node.js: Update package.json
// Change "version": "1.2.3" to "version": "1.3.0"
// Also update package-lock.json if present
# Rust: Update Cargo.toml
# Change version = "1.2.3" to version = "1.3.0"

Multi files ref ver (_pkgdown.yml, CITATION, codemeta.json) → update all.

All ver files updated consistently → new ver.

If err: File update fails → revert all → maintain consistency. Never partially updated state.

Step 6: Create Ver Tag

After committing ver bump, create git tag.

# Annotated tag (preferred)
git tag -a v1.3.0 -m "Release v1.3.0"

# Lightweight tag (acceptable)
git tag v1.3.0

Project's tag format:

Git tag matching new ver.

If err: Tag exists → ver not properly bumped. Check duplicate tags git tag -l "v1.3*" + resolve.

Check

  • Current ver read from correct file
  • All commits since last release analyzed
  • Each change classified breaking/feature/fix
  • Bump matches highest-severity (breaking > feature > fix)
  • New ver SemVer 2.0.0: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]
  • All ver files updated consistently
  • No ver skipped (1.2.3 → 1.4.0 no 1.3.0 released)
  • Git tag matches new ver + project's format
  • Pre-release suffix follows correct precedence (alpha < beta < rc)

Traps

  • Skip minor versions: 1.2.3 directly → 1.4.0 because "2 features." Each release = 1 bump; num features no determine ver.
  • Treat deprecation as breaking: Deprecating (adding warn) = minor. Only removing = breaking.
  • Forget pre-1.0.0: Before 1.0.0 API unstable. Some projects bump minor for breaking during this phase, but doc.
  • Inconsistent ver files: Update package.json not package-lock.json, or DESCRIPTION not CITATION. All refs sync.
  • Build metadata confusion: Build metadata (+build.123) no affect ver precedence. 1.0.0+build.1 + 1.0.0+build.2 same precedence.
  • Not tagging releases: No git tags → future ver bumps can't determine baseline for change analysis.

  • manage-changelog — maintain changelog entries pair w/ ver bumps
  • plan-release-cycle — plan release milestones → ver bumps
  • release-package-version — R-specific release workflow includes ver bumping
  • commit-changes — commit ver bump w/ proper msg
  • create-github-release — create GitHub release from ver tag

Repositorio GitHub

pjt222/agent-almanac
Ruta: i18n/caveman-ultra/skills/apply-semantic-versioning
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Habilidades relacionadas

content-collections

Meta

Esta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.

Ver habilidad

polymarket

Meta

Esta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.

Ver habilidad

creating-opencode-plugins

Meta

Esta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.

Ver habilidad

sglang

Meta

SGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.

Ver habilidad