5.6 KiB
5.6 KiB
Operation: Validate Versioning
Validate version strings against Semantic Versioning 2.0.0 specification.
Parameters from $ARGUMENTS
- version: Version string to validate (required)
- strict: Enforce strict semver (no pre-release/build metadata) (optional, default: false)
Semantic Versioning Standard
Base Pattern: MAJOR.MINOR.PATCH (e.g., 1.2.3)
Strict Format: ^[0-9]+\.[0-9]+\.[0-9]+$
Extended Format (with pre-release and build metadata):
- Pre-release:
1.2.3-alpha.1,2.0.0-beta.2,1.0.0-rc.1 - Build metadata:
1.2.3+20241013,1.0.0+build.1 - Combined:
1.2.3-alpha.1+build.20241013
Valid Examples
Strict Semver (OpenPlugins recommended):
1.0.0- Initial release1.2.3- Standard version2.5.13- Double-digit components0.1.0- Pre-1.0 development
Extended Semver (allowed):
1.0.0-alpha- Alpha release1.0.0-beta.2- Beta release1.0.0-rc.1- Release candidate1.2.3+20241013- With build metadata
Invalid Examples
1.0- Missing PATCHv1.0.0- Leading 'v' prefix1.0.0.0- Too many components1.2.x- Placeholder valueslatest- Non-numeric1.0.0-SNAPSHOT- Non-standard identifier
Workflow
-
Extract Version from Arguments
Parse $ARGUMENTS to extract version parameter If version not provided, return error -
Execute Semantic Version Checker
Execute .scripts/semver-checker.py "$version" "$strict" Exit codes: - 0: Valid semantic version - 1: Invalid format - 2: Missing required parameters - 3: Strict mode violation (valid semver, but has pre-release/build) -
Parse Version Components
Extract components: - MAJOR: Breaking changes - MINOR: Backward-compatible features - PATCH: Backward-compatible fixes - Pre-release: Optional identifier (alpha, beta, rc) - Build metadata: Optional metadata -
Return Validation Report
Format results: - Status: PASS/FAIL/WARNING - Version: <provided-version> - Valid: yes/no - Components: MAJOR.MINOR.PATCH breakdown - Pre-release: <identifier> (if present) - Build: <metadata> (if present) - Score impact: +5 points (if valid)
Examples
# Valid strict semver
/best-practices versioning version:1.2.3
# Result: PASS - Valid semantic version (1.2.3)
# Valid with pre-release
/best-practices versioning version:1.0.0-alpha.1
# Result: PASS - Valid semantic version with pre-release
# Invalid format
/best-practices versioning version:1.0
# Result: FAIL - Missing PATCH component
# Strict mode with pre-release
/best-practices versioning version:1.0.0-beta strict:true
# Result: WARNING - Valid semver but not strict format
# Invalid prefix
/best-practices versioning version:v1.2.3
# Result: FAIL - Contains 'v' prefix (use 1.2.3)
Error Handling
Missing version parameter:
ERROR: Missing required parameter 'version'
Usage: /best-practices versioning version:<semver>
Example: /best-practices versioning version:1.2.3
Invalid format:
ERROR: Invalid semantic version format
The version must follow MAJOR.MINOR.PATCH format.
Examples:
- 1.0.0 (initial release)
- 1.2.3 (standard version)
- 2.0.0-beta.1 (pre-release)
Output Format
Success (Valid Semver):
✅ Semantic Versioning: PASS
Version: 1.2.3
Format: MAJOR.MINOR.PATCH
Valid: Yes
Components:
- MAJOR: 1 (breaking changes)
- MINOR: 2 (new features)
- PATCH: 3 (bug fixes)
Quality Score Impact: +5 points
The version follows Semantic Versioning 2.0.0 specification.
Success with Pre-release:
✅ Semantic Versioning: PASS
Version: 1.0.0-beta.2
Format: MAJOR.MINOR.PATCH-PRERELEASE
Valid: Yes
Components:
- MAJOR: 1
- MINOR: 0
- PATCH: 0
- Pre-release: beta.2
Quality Score Impact: +5 points
Note: Pre-release versions indicate unstable releases.
Failure (Invalid Format):
❌ Semantic Versioning: FAIL
Version: 1.0
Format: Invalid
Valid: No
Issues Found:
1. Missing PATCH component
2. Expected format: MAJOR.MINOR.PATCH
Suggested Correction: 1.0.0
Quality Score Impact: 0 points (fix to gain +5)
Fix to comply with Semantic Versioning 2.0.0 specification.
Reference: https://semver.org/
Warning (Strict Mode):
⚠️ Semantic Versioning: WARNING
Version: 1.0.0-alpha.1
Format: Valid semver, but not strict
Valid: Yes (with pre-release)
Note: OpenPlugins recommends strict MAJOR.MINOR.PATCH format
without pre-release or build metadata for marketplace submissions.
Recommended: 1.0.0 (for stable release)
Quality Score Impact: +5 points (valid, but consider strict format)
Versioning Guidelines
When to increment:
MAJOR (X.0.0):
- Breaking API changes
- Incompatible changes
- Major rewrites
MINOR (x.Y.0):
- New features (backward-compatible)
- Deprecations
- Significant improvements
PATCH (x.y.Z):
- Bug fixes
- Security patches
- Minor improvements
Initial Development:
- Start with
0.1.0 - Increment MINOR for features
- First stable release:
1.0.0
Pre-release Identifiers:
alpha- Early testingbeta- Feature complete, testingrc- Release candidate
Compliance Criteria
PASS Requirements:
- Three numeric components (MAJOR.MINOR.PATCH)
- Each component is non-negative integer
- Components separated by dots
- Optional pre-release identifier (hyphen-separated)
- Optional build metadata (plus-separated)
- No leading zeros (except single 0)
FAIL Indicators:
- Missing components (1.0)
- Too many components (1.0.0.0)
- Non-numeric components (1.x.0)
- Leading 'v' prefix
- Invalid separators
- Leading zeros (01.02.03)
Request: $ARGUMENTS