Claude-skill-registry extract-version
Parse and validate semantic version strings from various formats. Use for extracting versions from text, validating semver compliance, or comparing version numbers.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/extract-version" ~/.claude/skills/majiayu000-claude-skill-registry-extract-version && rm -rf "$T"
manifest:
skills/data/extract-version/SKILL.mdsource content
Extract Version
Parse semantic version strings and validate semver compliance.
When to Use
- Extract version from mixed text
- Validate version format
- Parse version components
- Compare version numbers
- Normalize version strings
Instructions
Step 1: Receive Version Input
Accept version string in various formats.
Expected Input:
: String (e.g., "v0.7.0", "0.7.0", "version: 0.7.0", "Ver. 1.2.3-beta.1")versionString
Step 2: Extract Version Pattern
Use regex to extract semver pattern.
Patterns to Match:
: Basic semverX.Y.Z
: With 'v' prefixvX.Y.Z
: With prerelease tagX.Y.Z-prerelease
: With build metadataX.Y.Z+build- Full semver:
X.Y.Z-prerelease+build
Regex:
(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9.-]+))?(?:\+([a-zA-Z0-9.-]+))?
Step 3: Parse Components
Extract major, minor, patch, and optional components.
Components:
: First numbermajor
: Second numberminor
: Third numberpatch
: Optional prerelease tag (after -)prerelease
: Optional build metadata (after +)build
Step 4: Validate Semver
Check if version follows semantic versioning 2.0.0 spec.
Validation Rules:
- Major, minor, patch must be non-negative integers
- Prerelease and build must match allowed characters
- No leading zeros in numeric identifiers (except 0 itself)
Step 5: Return Parsed Data
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" }
Error Handling
- No Version Found: Return error indicating no version pattern matched
- Invalid Format: Return error with invalid version string
- Invalid Component: Describe which component is invalid
Examples
Example 1: Basic Version
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" }
Example 2: Version with Prefix
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" }
Example 3: Prerelease Version
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" }
Example 4: Full Semver with Build
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" }
Example 5: Extract from Text
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" }
Example 6: Invalid Version
Input:
versionString: "1.2.a"
Output:
{ "valid": false, "error": "Invalid version format: patch must be numeric", "original": "1.2.a" }
Validation
- Parses basic semver (X.Y.Z)
- Handles 'v' prefix correctly
- Extracts prerelease tags
- Extracts build metadata
- Validates semver compliance
- Extracts version from mixed text
- Returns normalized version
Supporting Files
None required - pure parsing logic with regex.