Back to skills
SKILL.md
Extract Version
ASecurityParse and validate semantic version strings from various formats. Use for extracting versions from text, validating semver compliance, or comparing version numbers.
- 4 stars
- 0 votes
- 0 copies
- 3 views
- Added September 12, 2026
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add aibot88/sec_skill_store --skill extract-version --agent claude-codeAre you the author of Extract Version?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-extract-version)---
name: extract-version
description: Parse and validate semantic version strings from various formats. Use for extracting versions from text, validating semver compliance, or comparing version numbers.
---
# 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**:
- `versionString`: String (e.g., "v0.7.0", "0.7.0", "version: 0.7.0", "Ver. 1.2.3-beta.1")
### Step 2: Extract Version Pattern
Use regex to extract semver pattern.
**Patterns to Match**:
- `X.Y.Z`: Basic semver
- `vX.Y.Z`: With 'v' prefix
- `X.Y.Z-prerelease`: With prerelease tag
- `X.Y.Z+build`: With build metadata
- 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**:
- `major`: First number
- `minor`: Second number
- `patch`: Third number
- `prerelease`: Optional prerelease tag (after -)
- `build`: Optional build metadata (after +)
### 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**:
```json
{
"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**:
```json
{
"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**:
```json
{
"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**:
```json
{
"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**:
```json
{
"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**:
```json
{
"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**:
```json
{
"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.
Files in this skill
- SKILL.md
- source.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.