# What Programming Language Does phuryn/pm-skills Use? Python vs Markdown Analysis

> Discover the programming language behind phuryn/pm-skills. This analysis compares Python and Markdown usage for skills, revealing Python handles logic and Markdown stores definitions.

- Repository: [Pawel Huryn/pm-skills](https://github.com/phuryn/pm-skills)
- Tags: analysis
- Published: 2026-06-28

---

**The phuryn/pm-skills repository uses Python as its sole programming language for executable logic, while the core skill definitions are stored as Markdown files.** This architecture separates content from validation code.

The **phuryn/pm-skills** repository is a curated collection of Claude AI plugins designed for product management workflows. While the repository primarily consists of Markdown documentation, the **programming language** handling all automated validation and integrity checks is Python.

## Repository Architecture: Content vs Code

The repository follows a dual-format structure where **Markdown** serves as the content layer and **Python** handles the logic layer. The skill definitions themselves reside in files like [`pm-toolkit/skills/review-resume/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/skills/review-resume/SKILL.md), containing front-matter metadata and documentation. However, the only executable code present is a single Python script responsible for validation.

### Key File Locations

- **[`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py)** – The Python validation engine located at the repository root
- **`pm-toolkit/skills/*/SKILL.md`** – Markdown skill definitions (e.g., [`pm-toolkit/skills/review-resume/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/skills/review-resume/SKILL.md))
- **[`.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/plugin.json)** – JSON manifest files in each plugin folder

## The Python Validation Layer

At the root of the repository, [`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py) functions as the quality gate for the entire project. This **Python script** scans every plugin folder containing `.claude-plugin/` directories and validates the Markdown skill files for required front-matter fields.

The validator checks for:

- Required YAML front-matter fields (`name`, `description`)
- Name consistency between file paths and metadata
- Proper structure in command definitions

### Running the Python Validator

Execute the validation script from the repository root:

```bash
python3 validate_plugins.py

```

This command invokes the Python interpreter to scan all plugin directories and report any structural errors in the skill definitions.

## Markdown Skill Definitions

While Python handles validation, the actual skills are defined entirely in **Markdown**. Each skill resides in a [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) file within its respective plugin directory structure.

### Example Skill Structure

```markdown
---
name: review-resume
description: |
  Review a candidate's resume and highlight strengths/weaknesses.
---

# Review Resume

Detailed instructions for the AI skill...

```

The Python validator parses these Markdown files to ensure required fields exist and match the expected schema, but no Python code is required to define the skills themselves.

## How Python Processes the Markdown Files

The [`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py) script acts as a bridge between the static Markdown content and the Claude AI plugin requirements. When executed, the Python code:

1. Discovers all directories containing `.claude-plugin/` markers
2. Parses YAML front-matter from each [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) file
3. Validates that `name` and `description` fields are present and non-empty
4. Verifies naming consistency across the repository

This architecture allows non-developers to contribute skills using only Markdown, while Python ensures technical compliance.

## Summary

- **phuryn/pm-skills** uses **Python** as its only programming language for executable logic
- The **[`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py)** script provides automated validation of plugin structure
- Skill definitions are written in **Markdown** with YAML front-matter, not Python
- The repository separates content (Markdown) from validation code (Python)
- Contributors can create skills using Markdown without writing Python code

## Frequently Asked Questions

### Is phuryn/pm-skills a Python project?

While the repository contains a single Python file ([`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py)), it is not primarily a Python project. The repository is best described as a **Markdown-based skill collection** with Python used exclusively for validation tooling. The core functionality exists entirely within Markdown files.

### What does validate_plugins.py actually do?

The **[`validate_plugins.py`](https://github.com/phuryn/pm-skills/blob/main/validate_plugins.py)** script scans the repository for Claude plugin directories and validates that all [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files contain required front-matter fields including `name` and `description`. It ensures structural integrity before skills are published or distributed, acting as a quality assurance tool for the Markdown content.

### Can I contribute skills to phuryn/pm-skills without knowing Python?

**Yes.** You can create and edit skill definitions using only Markdown syntax and YAML front-matter. The Python validator runs automatically in CI/CD pipelines, so contributors only need to write Markdown files following the established schema. No Python coding knowledge is required to add new skills to the repository.

### Why use Markdown instead of Python for skill definitions?

Markdown provides a **human-readable format** that product managers and non-developers can easily edit. Since these skills are prompts and instructions for Claude AI, Markdown offers better documentation capabilities than Python code while maintaining machine-parseable structure through YAML front-matter.