Skip to content
Back to skills

2611 Versioning 2c410444

ASecurity

This document defines the versioning strategy for the claude-mpm-skills library, based on analysis of Claude Code documentation and existing skill patterns.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
developmentjavascriptgojavabashreactvuenextjstestinggitapi

Works with

  • claude code
  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2611-versioning_2c410444 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2611 Versioning 2c410444?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2611 Versioning 2c410444
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2611-versioning-2c410444/badge)](https://www.skillsdirectory.com/skills/tools-only-2611-versioning-2c410444)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Skills Library Versioning Policy

## Overview

This document defines the versioning strategy for the claude-mpm-skills library, based on analysis of Claude Code documentation and existing skill patterns.

## Version Format

All skills follow **Semantic Versioning 2.0.0** (MAJOR.MINOR.PATCH):

```
{MAJOR}.{MINOR}.{PATCH}
```

### Initial Version

All new skills start at version **1.0.0** to indicate:
- Production-ready content
- Complete core coverage
- Stable API/structure
- Ready for consumption

### Version Components

- **MAJOR**: Breaking changes to skill interface or structure
- **MINOR**: New features, backward-compatible additions
- **PATCH**: Bug fixes, documentation updates, clarifications

## When to Increment Versions

### MAJOR Version (X.0.0)

Increment when making **breaking changes** that affect how skills are consumed:

**Examples**:
- ✅ Restructuring progressive_disclosure format
- ✅ Changing metadata.json schema in incompatible ways
- ✅ Removing sections that consumers depend on
- ✅ Changing skill category or location in repository
- ✅ Removing or renaming key concepts

**NOT Major Changes**:
- ❌ Framework version updates (use skill name instead)
- ❌ Adding new sections (that's minor)
- ❌ Expanding existing content (that's minor)

### MINOR Version (x.Y.0)

Increment when adding **new features** in a backward-compatible manner:

**Examples**:
- ✅ Adding new sections (e.g., "Testing Patterns")
- ✅ Expanding coverage (e.g., adding new component examples)
- ✅ Adding new code examples
- ✅ Adding sub-skills or references
- ✅ Documenting newly released framework features
- ✅ Adding integration patterns with other skills

**Typical Triggers**:
- Framework releases new features (React 19 hooks, Next.js 15 caching)
- Community best practices evolve
- New integration patterns discovered
- Expanding "Advanced Patterns" section

### PATCH Version (x.y.Z)

Increment for **bug fixes and documentation improvements**:

**Examples**:
- ✅ Fixing code example errors
- ✅ Correcting typos or grammar
- ✅ Clarifying confusing explanations
- ✅ Updating outdated links
- ✅ Improving code formatting
- ✅ Fixing metadata.json errors (token counts, tags)

**Typical Triggers**:
- User reports incorrect code example
- Dead links discovered
- Token estimates need adjustment
- Tags missing or incorrect

## Framework Version Strategy

### Problem: How to Handle Framework Version Updates?

**Example**: React 18 vs React 19, Vue 3 vs Vue 4, Next.js 14 vs Next.js 15

### Solution: Framework Version in Skill Name

When framework versions have **significantly different APIs**, create **separate skills**:

```
toolchains/javascript/frameworks/react/      # React 18 (current stable)
toolchains/javascript/frameworks/react-19/   # React 19 (if breaking changes)
toolchains/nextjs/v14/                       # Next.js 14
toolchains/nextjs/v15/                       # Next.js 15
```

**Skill metadata.json**:
```json
{
  "name": "nextjs-v15",
  "version": "1.0.0",  // Skill version (not framework version)
  "framework": "nextjs",
  "tags": ["nextjs", "nextjs-15", "app-router"]
}
```

### When to Create Separate Version Skills

Create separate skill when framework version has:
- ✅ Breaking API changes (React class components → hooks)
- ✅ Major architectural shifts (Next.js Pages → App Router)
- ✅ Different mental models (Vue 2 Options → Vue 3 Composition)
- ✅ Incompatible upgrade paths

### When to Update Existing Skill

Update existing skill (bump MINOR) when:
- ✅ Framework adds backward-compatible features
- ✅ New APIs supplement existing ones (React 19 `use()` hook)
- ✅ Performance improvements don't change API
- ✅ Patch releases with bug fixes

**Example**: React 18.2 → React 18.3 = PATCH or MINOR update to existing skill

## Metadata Fields for Versioning

All skills must include these versioning-related fields in `metadata.json`:

```json
{
  "name": "skill-name",
  "version": "1.0.0",           // Semantic version of the skill content
  "created": "2025-11-30",      // ISO date when skill first created
  "updated": "2025-11-30",      // ISO date of last content update
  "modified": "2025-11-30",     // ISO date of any modification (same as updated)
  "maintainer": "Claude MPM Team",
  "author": "claude-mpm-skills",
  "repository": "https://github.com/bobmatnyc/claude-mpm-skills"
}
```

### Field Definitions

- **version**: Skill content version (semantic versioning)
- **created**: Never changes after initial creation
- **updated**: Changes with any version increment
- **modified**: Alias for updated (kept for compatibility)
- **maintainer**: Team or individual responsible for updates
- **author**: Original creator or organization

## Version Increment Workflow

### Step 1: Determine Change Type

Ask these questions:
1. Does this break existing skill consumption? → **MAJOR**
2. Does this add new content/features? → **MINOR**
3. Is this just a fix or clarification? → **PATCH**

### Step 2: Update metadata.json

```bash
# MAJOR increment: 1.0.0 → 2.0.0
# MINOR increment: 1.0.0 → 1.1.0
# PATCH increment: 1.0.0 → 1.0.1
```

Update fields:
```json
{
  "version": "1.1.0",          // ← Increment this
  "updated": "2025-11-30",     // ← Update to today
  "modified": "2025-11-30"     // ← Update to today
}
```

### Step 3: Document Changes

Add entry to skill's CHANGELOG (if exists) or commit message:

```
feat(react): add React 19 hooks section - v1.1.0

- Add `use()` hook documentation
- Add `useOptimistic()` examples
- Update best practices for concurrent rendering

Bumped version: 1.0.0 → 1.1.0 (MINOR - new features)
```

### Step 4: Commit with Clear Message

```bash
git add toolchains/javascript/frameworks/react/
git commit -m "feat(react): add React 19 hooks - bump to v1.1.0

- Document use() and useOptimistic() hooks
- Add concurrent rendering patterns
- Update examples for React 19

Version: 1.0.0 → 1.1.0 (MINOR)

🤖👥 Generated with [Claude MPM](https://github.com/bobmatnyc/claude-mpm)

Co-Authored-By: Claude <noreply@anthropic.com>"
```

## Token Count Updates

When skill content changes **significantly**, update token estimates:

### Recalculate Token Counts

1. **Entry Point**: Count tokens in YAML frontmatter `progressive_disclosure.entry_point`
2. **Full Content**: Count tokens in entire SKILL.md file

### Update metadata.json

```json
{
  "entry_point_tokens": 85,  // ← Update if entry point changed
  "full_tokens": 5200        // ← Update if full content grew/shrank
}
```

### When to Recalculate

- ✅ After adding major sections (MINOR version)
- ✅ After restructuring content (MAJOR version)
- ✅ If token count changes by >10% (any version)
- ❌ Not needed for PATCH fixes (minor impact)

## Related Skills Updates

When creating new skills or versions:

### Update Cross-References

If **Skill A** references **Skill B**, and Skill B gets major version:

```json
// OLD: tailwind/metadata.json
{
  "related_skills": ["../../../javascript/frameworks/react"]
}

// NEW: If react-19 is created
{
  "related_skills": [
    "../../../javascript/frameworks/react",      // React 18
    "../../../javascript/frameworks/react-19"    // React 19
  ]
}
```

Bump related skill's **PATCH version** for cross-reference updates.

## Deprecation Strategy

### Marking Skills as Deprecated

When framework version becomes obsolete:

```json
{
  "name": "vue-2",
  "version": "1.5.0",
  "deprecated": true,
  "deprecation_notice": "Vue 2 reached end-of-life. Use vue-3 skill instead.",
  "successor": "../vue-3",
  "tags": ["vue", "vue-2", "legacy", "deprecated"]
}
```

Add deprecation notice to SKILL.md:

```markdown
> ⚠️ **DEPRECATED**: Vue 2 reached end-of-life on December 31, 2023.
> Consider migrating to [Vue 3](../vue-3/SKILL.md) for continued support.
```

### Retention Policy

- Keep deprecated skills for **2 years** after successor release
- Clearly mark as deprecated in metadata and content
- Provide migration path to successor skill

## Version History Tracking

### Optional: CHANGELOG.md

For skills with frequent updates, maintain `CHANGELOG.md`:

```markdown
# Changelog

## [1.2.0] - 2025-11-30

### Added
- React 19 `use()` hook documentation
- Server Components best practices

### Changed
- Updated async/await patterns for modern syntax

## [1.1.0] - 2025-11-15

### Added
- Suspense boundary examples
- Error boundary patterns

## [1.0.0] - 2025-11-01

Initial release
```

## Examples by Skill Type

### Toolchain Skill (React)

```json
{
  "name": "react",
  "version": "1.2.0",
  "category": "toolchain",
  "framework": "react",
  "created": "2025-11-21",
  "updated": "2025-11-30"
}
```

**Version History**:
- `1.0.0` - Initial React 18 skill
- `1.1.0` - Added hooks best practices
- `1.2.0` - Added React 19 features (use, useOptimistic)

### Framework Version Skill (Next.js)

```json
{
  "name": "nextjs-v15",
  "version": "1.0.0",
  "category": "toolchain",
  "framework": "nextjs",
  "tags": ["nextjs", "nextjs-15", "app-router"],
  "created": "2025-11-29",
  "updated": "2025-11-29"
}
```

**Separate from**: `nextjs-v14` (different App Router APIs)

### Universal Skill (Tailwind)

```json
{
  "name": "tailwind",
  "version": "1.0.0",
  "category": "universal",
  "subcategory": "styling",
  "created": "2025-11-30",
  "updated": "2025-11-30"
}
```

**Future Updates**:
- `1.1.0` - Add Tailwind v4 features when released
- `2.0.0` - If Tailwind v4 breaks existing patterns

## Summary: Quick Decision Tree

```
Is the change...

Breaking skill structure/format?
├─ YES → MAJOR version (2.0.0)
└─ NO ↓

Adding new features/sections?
├─ YES → MINOR version (1.1.0)
└─ NO ↓

Fixing errors/typos?
└─ YES → PATCH version (1.0.1)

Framework version changed?
├─ Breaking changes → Create new skill (react-19)
└─ Compatible additions → MINOR version (1.1.0)
```

## Best Practices

1. **Always increment version** when changing content
2. **Update `updated` field** with current date
3. **Use clear commit messages** mentioning version bump
4. **Recalculate token counts** for major content changes
5. **Update cross-references** when creating version-specific skills
6. **Document deprecations** clearly in both metadata and content
7. **Keep versions synchronized** with actual content changes
8. **Start at 1.0.0** for production-ready skills (not 0.1.0)

## References

- Semantic Versioning 2.0.0: https://semver.org/
- Claude Code Skills Documentation: https://code.claude.com/docs/en/skills
- Repository: https://github.com/bobmatnyc/claude-mpm-skills

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.