# PM Skills Plugin Version Compatibility with AI Assistants: A Complete Guide

> Ensure seamless PM Skills plugin version compatibility with AI assistants. Our markdown-based skills ensure universal parsing and no runtime dependencies for a unified experience.

- Repository: [Pawel Huryn/pm-skills](https://github.com/phuryn/pm-skills)
- Tags: how-to-guide
- Published: 2026-07-05

---

**PM Skills achieves universal AI assistant compatibility through markdown-based skills that require no runtime dependencies, while maintaining a single synchronized version across all nine plugins that any assistant can parse programmatically.**

The **phuryn/pm-skills** repository functions as a marketplace of nine independent plugins exposing **68 skills** and **42 commands**. Understanding how version compatibility works requires examining the architectural separation between static skill definitions and runtime command implementations, along with the strict versioning policies enforced by the repository's validation tooling.

## Understanding the PM Skills Architecture

The repository organizes functionality into two distinct layers that determine compatibility boundaries.

### Skills vs Commands

**Skills** are static knowledge modules stored as [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files under each plugin's `skills/` directory. These files contain declarative front-matter and explanatory text that any AI assistant capable of reading markdown can ingest. According to the repository documentation, "Skills compatible with other AI assistants" while "Commands (`/slash-commands`) are Claude-specific" [[`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md#L15-L16)](https://github.com/phuryn/pm-skills/blob/main/README.md#L15-L16).

**Commands** (`*.md` files under `commands/` folders) implement runtime workflows using Claude's slash-command syntax. While these provide convenient access for Claude users, they represent only a thin wrapper over the underlying skills.

### The Single Version Strategy

All nine plugins share a **single marketplace version** enforced across multiple files. The [`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md) specification mandates: "The newest `## vX.Y.Z` heading is the released version… [`marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/marketplace.json), all 9 [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) files, and the newest CHANGELOG heading always carry the same version" [[`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md#L73-L77)](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md#L73-L77). This eliminates version drift and ensures any AI assistant loading the skill set encounters a consistent API surface.

## How Skills Achieve Universal AI Assistant Compatibility

The skill format relies on **universal markdown** rather than binary executables or assistant-specific runtimes. Because a skill contains only declarative front-matter and explanatory text, no versioned binary or runtime dependency is required.

This design means:
- **ChatGPT**, **Claude**, **Gemini**, or custom local models can parse [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files identically
- No plugin references another plugin, preventing hidden dependency chains [[`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md#L49-L55)](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md#L49-L55)
- Skills remain backward-compatible regardless of the assistant's own version

## Claude-Specific Commands and Cross-Platform Adaptation

While commands target Claude's slash-command syntax, they remain optional for other assistants. The command files simply reference skills within the same plugin, meaning:

1. **Generic assistants** can ignore command files and load skills directly
2. **Developers** can translate Claude commands to their assistant's native framework (e.g., ChatGPT GPTs, custom CLI tools) without modifying the underlying skill content
3. **Version compatibility** remains intact because the skill payload—the actual knowledge—never changes

## Version Synchronization and SemVer Policy

The repository follows **Semantic Versioning** (SemVer) with strict enforcement:
- **Major** bump for breaking changes
- **Minor** for new skills/commands  
- **Patch** for fixes [[`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md#L78-L79)](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md#L78-L79)

The [`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py) script enforces these rules in CI, ensuring the [`marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/marketplace.json) manifest and all nine [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) files remain synchronized. This guarantees that programmatic version checks return consistent results regardless of which plugin file an assistant parses.

## Runtime-Agnostic Design Principles

The **"No cross-plugin references"** rule [[`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md#L49-L55)](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md#L49-L55) ensures complete isolation between plugins. Installing a subset of plugins for a particular assistant never creates hidden dependencies or version conflicts. Each plugin functions as a standalone knowledge module, with the global version serving only as a compatibility marker rather than a linking mechanism.

## Practical Implementation Examples

### Inspect the Marketplace Version Programmatically

Any AI assistant can verify compatibility by reading the centralized manifest:

```python
import json, urllib.request

# Fetch the marketplace manifest

url = "https://raw.githubusercontent.com/phuryn/pm-skills/main/.claude-plugin/marketplace.json"
manifest = json.loads(urllib.request.urlopen(url).read())
print("PM Skills version:", manifest["version"])

```

*Result:* `PM Skills version: 1.4.2` (example) – the same version appears in all plugin assets.

### Load a Skill File Directly

This Node.js example works in any environment that can fetch markdown:

```javascript
const fetch = require('node-fetch');

async function loadSkill(name) {
  const url = `https://raw.githubusercontent.com/phuryn/pm-skills/main/pm-toolkit/skills/${name}/SKILL.md`;
  const res = await fetch(url);
  const text = await res.text();
  console.log(text.slice(0, 200)); // preview the skill description
}

loadSkill('review-resume');

```

No Claude runtime is required; the skill content is pure markdown.

### Translate Commands for Other Assistants

While Claude uses slash-commands, other assistants can wrap the same functionality:

```bash

# Original Claude command (Claude-only)

claude plugin install pm-toolkit@pm-skills

# Generic wrapper for another assistant

myassistant plugin add pm-toolkit --source https://github.com/phuryn/pm-skills

```

The wrapper points to the same repository; the underlying [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files remain unchanged and fully compatible.

## Summary

- **Skills use universal markdown** compatible with any AI assistant, while **commands are Claude-specific** but optional.
- **One global version** (stored in [`marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/marketplace.json) and enforced by [`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py)) ensures consistency across all nine plugins.
- **No cross-plugin dependencies** allow selective installation without version conflicts.
- **Semantic Versioning** provides clear compatibility signals for programmatic version checking.
- Any assistant can **parse the manifest** and **load skills directly** without requiring Claude's runtime.

## Frequently Asked Questions

### Are PM Skills compatible with ChatGPT or other AI assistants?

**Yes.** The `skills/*/SKILL.md` files follow a universal markdown format that any AI assistant can read. The README explicitly states that skills are "compatible with other AI assistants" while only the slash-commands remain Claude-specific. Because skills contain only declarative text and front-matter, assistants like ChatGPT, Gemini, or local LLMs can ingest them without modification.

### How do I check the current PM Skills version programmatically?

Parse the [`.claude-plugin/marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/marketplace.json) file, which contains the single source of truth for version compatibility. The [`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py) CI script ensures this version matches all nine [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) files and the [`CHANGELOG.md`](https://github.com/phuryn/pm-skills/blob/main/CHANGELOG.md) heading. Fetching this JSON file provides the authoritative version string (e.g., `"1.4.2"`) that applies to the entire marketplace.

### Can I use PM Skills commands with assistants other than Claude?

Commands require manual translation, but the underlying skills remain fully functional. The command files (`commands/*.md`) implement Claude's slash-command syntax, but they merely reference skills within the same plugin. You can ignore these command files and load the [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) content directly, or create a wrapper in your assistant's native framework that points to the same skill repository.

### What happens when a new version of PM Skills is released?

The repository maintains a **single marketplace version** synchronized across the manifest, all plugin configurations, and the changelog. When developers publish a new version, the [`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py) script verifies that [`marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/marketplace.json), all nine [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) files, and the newest [`CHANGELOG.md`](https://github.com/phuryn/pm-skills/blob/main/CHANGELOG.md) heading carry identical version numbers. This ensures that any AI assistant checking the version programmatically receives consistent compatibility information regardless of which file it reads.