Parse and validate semantic version strings from various formats. Use for extracting versions from text, validating semver compliance, or comparing version numbers.
61
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.claude/skills/extract-version/SKILL.mdParse semantic version strings and validate semver compliance.
Accept version string in various formats.
Expected Input:
versionString: String (e.g., "v0.7.0", "0.7.0", "version: 0.7.0", "Ver. 1.2.3-beta.1")Use regex to extract semver pattern.
Patterns to Match:
X.Y.Z: Basic semvervX.Y.Z: With 'v' prefixX.Y.Z-prerelease: With prerelease tagX.Y.Z+build: With build metadataX.Y.Z-prerelease+buildRegex:
(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9.-]+))?(?:\+([a-zA-Z0-9.-]+))?Extract major, minor, patch, and optional components.
Components:
major: First numberminor: Second numberpatch: Third numberprerelease: Optional prerelease tag (after -)build: Optional build metadata (after +)Check if version follows semantic versioning 2.0.0 spec.
Validation Rules:
Return structured version object.
Expected Output:
{
"major": 0,
"minor": 7,
"patch": 0,
"prerelease": null,
"build": null,
"original": "v0.7.0",
"normalized": "0.7.0",
"valid": true,
"semver": "0.7.0"
}Input:
versionString: "0.7.0"Output:
{
"major": 0,
"minor": 7,
"patch": 0,
"prerelease": null,
"build": null,
"original": "0.7.0",
"normalized": "0.7.0",
"valid": true,
"semver": "0.7.0"
}Input:
versionString: "v1.2.3"Output:
{
"major": 1,
"minor": 2,
"patch": 3,
"prerelease": null,
"build": null,
"original": "v1.2.3",
"normalized": "1.2.3",
"valid": true,
"semver": "1.2.3"
}Input:
versionString: "2.0.0-beta.1"Output:
{
"major": 2,
"minor": 0,
"patch": 0,
"prerelease": "beta.1",
"build": null,
"original": "2.0.0-beta.1",
"normalized": "2.0.0-beta.1",
"valid": true,
"semver": "2.0.0-beta.1"
}Input:
versionString: "1.0.0-alpha.1+001"Output:
{
"major": 1,
"minor": 0,
"patch": 0,
"prerelease": "alpha.1",
"build": "001",
"original": "1.0.0-alpha.1+001",
"normalized": "1.0.0-alpha.1+001",
"valid": true,
"semver": "1.0.0-alpha.1+001"
}Input:
versionString: "Version: 0.8.0 released on 2025-10-17"Output:
{
"major": 0,
"minor": 8,
"patch": 0,
"prerelease": null,
"build": null,
"original": "Version: 0.8.0 released on 2025-10-17",
"normalized": "0.8.0",
"valid": true,
"semver": "0.8.0"
}Input:
versionString: "1.2.a"Output:
{
"valid": false,
"error": "Invalid version format: patch must be numeric",
"original": "1.2.a"
}None required - pure parsing logic with regex.
8c3b576
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.