Complete v16.0.0: Hermes Agent support + multi-platform rebrand (#26)

Learnings applied from alirezarezvani/claude-skills: native SKILL.md agents
(Hermes, Vibe) install the files directly — no conversion — so support is a
sync script, not regenerated copies.

- scripts/sync-hermes-skills.py: stdlib installer that places skills/ into
  ~/.hermes/skills/ (copy or --link symlink, --flat, --dry-run). Hermes reads
  the same open SKILL.md standard and auto-discovers by description.
- README rebrand: title, tagline, intro, and a "works with" platforms badge now
  cover Claude, ChatGPT, Gemini, and Hermes. Works-With table splits native
  SKILL.md agents (Claude Code, Hermes) from paste-in chat LLMs. Repo name,
  marketplace ID, and install commands intentionally unchanged.
- Version bump to v16.0.0 (Multi-Platform). Note: v15.0.0 was already published
  (Skill Playground), so this release is v16.0.0; the changelog now also records
  v15.0.0 in its history. Updated README badge/What's-New, CHANGELOG, SECURITY,
  and playground tagline/meta.


Claude-Session: https://claude.ai/code/session_016JWn5jRD5tcEFKrubjQ6Px

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
mohitagw15856
2026-06-17 09:39:02 +01:00
committed by GitHub
parent 5ef91fcabe
commit 6886dc3b48
5 changed files with 201 additions and 26 deletions
+34 -6
View File
@@ -9,7 +9,17 @@ each new wave of skills bumps the **major** version, extensions and fixes bump
## [Unreleased] ## [Unreleased]
_Nothing yet._
## [16.0.0] — Multi-Platform — 2026-06-17
The library stops being Claude-only and becomes a portable, single-source-of-truth project.
### Added ### Added
- **Hermes Agent support (native).** `scripts/sync-hermes-skills.py` installs the
canonical `skills/` into `~/.hermes/skills/` (copy or `--link` symlink). Hermes reads
the same open `SKILL.md` standard, so there is no format conversion — it auto-discovers
skills by their `description`, exactly like Claude Code.
- **Multi-platform export generator.** `scripts/build-exports.mjs` renders every skill - **Multi-platform export generator.** `scripts/build-exports.mjs` renders every skill
into platform-ready files under `exports/` from a single source of truth (the into platform-ready files under `exports/` from a single source of truth (the
`SKILL.md` body), so content is never maintained twice. Ships **ChatGPT** `SKILL.md` body), so content is never maintained twice. Ships **ChatGPT**
@@ -32,21 +42,37 @@ each new wave of skills bumps the **major** version, extensions and fixes bump
**Production-Ready**, **Stable**, or **Experimental** so new users start with the **Production-Ready**, **Stable**, or **Experimental** so new users start with the
strongest work. strongest work.
- **Cross-tool compatibility** — README now documents which platforms the skills work - **Cross-tool compatibility** — README now documents which platforms the skills work
on (Claude Code natively; the SKILL.md bodies port to other agents and chat LLMs). on (Claude Code and Hermes natively; the SKILL.md bodies port to other agents and chat LLMs).
- **Skill Playground upgrades** — the hosted web app gains a **tier filter** and per-tile - **Skill Playground upgrades** — the hosted web app gains a **tier filter** and per-tile
tier badges, plus a *"Use this skill in another tool"* panel that copies the tier badges, plus a *"Use this skill in another tool"* panel that copies the
instructions formatted for ChatGPT, Gemini, or raw. Tier data comes from a single instructions formatted for ChatGPT, Gemini, or raw. Tier data comes from a single
machine-readable source, `skill-tiers.json`. machine-readable source, `skill-tiers.json`.
- **Related Projects** — README section linking to other community Claude Skills
libraries and the `awesome-claude-skills` / `awesome-claude-code` lists.
### Changed
- **Multi-platform rebrand.** README title, tagline, intro, and badges now position the
library for Claude, ChatGPT, Gemini, and Hermes — not Claude alone. (The repository
name, marketplace ID, and install commands are unchanged.)
- `SECURITY.md` supported-versions table updated to the v16 release line.
### Fixed ### Fixed
- **`web/skills.json` is now deterministic.** Removed the wall-clock `generatedAt` field - **`web/skills.json` is now deterministic.** Removed the wall-clock `generatedAt` field
(it was unused by the UI and made every rebuild differ), so the new `check-generated` (it was unused by the UI and made every rebuild differ), so the new `check-generated`
CI step can reliably verify the index is in sync with the source skills. CI step can reliably verify the index is in sync with the source skills.
- **Related Projects** — README section linking to other community Claude Skills
libraries and the `awesome-claude-skills` / `awesome-claude-code` lists.
### Changed ## [15.0.0] — Skill Playground — 2026-06-09
- `SECURITY.md` supported-versions table updated to the current release line.
### Added
- **Skill Playground** — a zero-backend browser app (`web/`) to run any skill with your own
Claude API key. Tile gallery with search + bundle filter, click-to-run forms generated from
each skill's `Required Inputs`, live streaming output with copy / download-as-`.md`, and a
model picker. `web/build-skills.mjs` generates `skills.json`; a GitHub Actions workflow
auto-deploys to GitHub Pages on every push to `main`.
### Fixed
- Mid-stream API errors now surface to the user instead of being silently swallowed.
- `max_tokens` raised to 8192 to avoid truncating long outputs.
## [14.0.0] — Writers & Content Creators + 7 Community Skills ## [14.0.0] — Writers & Content Creators + 7 Community Skills
@@ -105,5 +131,7 @@ Earlier releases (v1.0.0 v5.0.0) predate this changelog. See the
[article series](README.md#-the-article-series) for the full history of how the [article series](README.md#-the-article-series) for the full history of how the
library grew from the first PM toolkit to 100+ skills. library grew from the first PM toolkit to 100+ skills.
[Unreleased]: https://github.com/mohitagw15856/pm-claude-skills/compare/v14.0.0...HEAD [Unreleased]: https://github.com/mohitagw15856/pm-claude-skills/compare/v16.0.0...HEAD
[16.0.0]: https://github.com/mohitagw15856/pm-claude-skills/compare/v15.0.0...v16.0.0
[15.0.0]: https://github.com/mohitagw15856/pm-claude-skills/compare/v14.0.0...v15.0.0
[14.0.0]: https://github.com/mohitagw15856/pm-claude-skills/releases [14.0.0]: https://github.com/mohitagw15856/pm-claude-skills/releases
+42 -15
View File
@@ -1,18 +1,19 @@
# 🧠 PM Claude Skills — 167 Skills for Every Profession # 🧠 PM Skills — 167 Professional Skills for Claude, ChatGPT, Gemini & Hermes
[![Stars](https://img.shields.io/github/stars/mohitagw15856/pm-claude-skills?style=social)](https://github.com/mohitagw15856/pm-claude-skills/stargazers) [![Stars](https://img.shields.io/github/stars/mohitagw15856/pm-claude-skills?style=social)](https://github.com/mohitagw15856/pm-claude-skills/stargazers)
[![Skills](https://img.shields.io/badge/skills-167-blue)](https://github.com/mohitagw15856/pm-claude-skills) [![Skills](https://img.shields.io/badge/skills-167-blue)](https://github.com/mohitagw15856/pm-claude-skills)
[![Version](https://img.shields.io/badge/version-14.0.0-brightgreen)](https://github.com/mohitagw15856/pm-claude-skills/releases) [![Platforms](https://img.shields.io/badge/works%20with-Claude%20%7C%20ChatGPT%20%7C%20Gemini%20%7C%20Hermes-8A2BE2)](#-works-with--cross-tool-compatibility)
[![Version](https://img.shields.io/badge/version-16.0.0-brightgreen)](https://github.com/mohitagw15856/pm-claude-skills/releases)
[![Install](https://img.shields.io/badge/Install%20in%20Claude%20Code-2%20minutes-orange)](https://github.com/mohitagw15856/pm-claude-skills#-quick-install-2-minutes) [![Install](https://img.shields.io/badge/Install%20in%20Claude%20Code-2%20minutes-orange)](https://github.com/mohitagw15856/pm-claude-skills#-quick-install-2-minutes)
[![License](https://img.shields.io/badge/license-MIT-lightgrey)](LICENSE) [![License](https://img.shields.io/badge/license-MIT-lightgrey)](LICENSE)
[![Sponsor](https://img.shields.io/badge/sponsor-❤️-ff69b4)](https://github.com/sponsors/mohitagw15856) [![Sponsor](https://img.shields.io/badge/sponsor-❤️-ff69b4)](https://github.com/sponsors/mohitagw15856)
> **PM stands for Professional, not just Product Management.** > **PM stands for Professional, not just Product Management.**
> 167 Claude Skills + 4 agent templates across 26 bundles covering 18 professions. Built by a PM, used by everyone. > 167 professional skills + 4 agent templates across 26 bundles covering 18 professions. Built for Claude Code — and now portable to ChatGPT, Gemini, and Hermes Agent. Built by a PM, used by everyone.
A community-built library of Claude Skills for professionals across every field — product management, engineering, customer success, marketing, social media, writers, design, legal, finance, HR, sales, operations, research, and more. Each skill is a structured SKILL.md file that teaches Claude how to produce professional-grade outputs for your specific workflows. A community-built library of professional skills for every field — product management, engineering, customer success, marketing, social media, writers, design, legal, finance, HR, sales, operations, research, and more. Each skill is a structured `SKILL.md` file that teaches an AI assistant how to produce professional-grade outputs for your workflows. Skills run natively in **Claude Code** and **Hermes Agent** (same open `SKILL.md` standard), and ship as ready-to-paste exports for **ChatGPT** and **Gemini** — see [Works With](#-works-with--cross-tool-compatibility).
**🆕 Latest release (v14.0.0):** 12 new community-inspired skills across 4 bundles — a brand new Writers & Content Creators profession (Instagram downloader, AEO optimizer, thumbnail creator, Substack scraper, notes humanizer), plus decision-making, productivity, and Claude Code power tools. **🆕 Latest release (v16.0.0 — Multi-Platform):** the library goes cross-tool. A single-source export generator produces ready-to-use ChatGPT and Gemini prompts from every skill, native Hermes Agent install support, three stdlib Python helper scripts, explicit skill tiers, and an upgraded Skill Playground. See the [changelog](#-changelog).
--- ---
## Contents ## Contents
@@ -84,19 +85,23 @@ two portable parts: a small **frontmatter** block (`name` + `description`) and a
**markdown body** that is just a well-structured set of instructions and output templates. **markdown body** that is just a well-structured set of instructions and output templates.
The body is plain English — so it works anywhere a capable model reads instructions. The body is plain English — so it works anywhere a capable model reads instructions.
There are two kinds of support. **Native `SKILL.md` agents** read the file as-is and
auto-discover skills from the `description` frontmatter. **Other tools** take the markdown
body as a system prompt — for those we ship ready-made [exports](#ready-to-use-exports).
| Platform | How it works | Auto-trigger? | | Platform | How it works | Auto-trigger? |
|---|---|---| |---|---|---|
| **Claude Code** (CLI / desktop / web / IDE) | Native. Install via the plugin marketplace; Claude loads a skill automatically when your request matches its description. | ✅ Yes | | **Claude Code** (CLI / desktop / web / IDE) | Native. Install via the plugin marketplace; Claude loads a skill automatically when your request matches its description. | ✅ Yes |
| **Hermes Agent** (Nous Research) | Native — same open `SKILL.md` standard. Run `python3 scripts/sync-hermes-skills.py` to install into `~/.hermes/skills/`; Hermes auto-discovers them. | ✅ Yes |
| **Claude.ai & Claude API** | Upload a skill, or paste the body in as a system prompt / project instruction. | ⚙️ Manual | | **Claude.ai & Claude API** | Upload a skill, or paste the body in as a system prompt / project instruction. | ⚙️ Manual |
| **Other coding agents that read the `SKILL.md` format** (e.g. Codex, Gemini CLI, Cursor) | Point the agent at the skill folder, or paste the body. The frameworks are tool-agnostic; only the auto-discovery mechanism differs per tool. | ⚙️ Varies by tool | | **Other coding agents that read the `SKILL.md` format** (e.g. Codex, Gemini CLI, Cursor) | Point the agent at the `skills/` folder, or paste the body. The frameworks are tool-agnostic; only the auto-discovery mechanism differs per tool. | ⚙️ Varies by tool |
| **General chat LLMs** (ChatGPT, Gemini, Copilot, etc.) | Copy the body of any `SKILL.md` into a custom instruction / system prompt / custom GPT. You keep the full framework and output format. | ❌ Paste per use | | **ChatGPT & Gemini** | Copy a ready-made export (below) into a Custom GPT or Gem's instructions. You keep the full framework and output format. | ❌ Paste per use |
**What's verified vs. what varies:** the skill **bodies** — the frameworks, rubrics, and **What's verified vs. what varies:** the skill **bodies** — the frameworks, rubrics, and
output templates that do the actual work — are model-agnostic and have been used across output templates that do the actual work — are model-agnostic and have been used across
Claude and other chat LLMs. What's **Claude Code-specific** is the convenience layer: Claude and other chat LLMs. Native `SKILL.md` agents (Claude Code, Hermes) also get the
plugin install, automatic skill discovery from the `description`, and the helper-script convenience layer: automatic skill discovery from the `description`. On chat LLMs you paste
invocation flow. On other tools you copy the body in manually and lose only the the body in manually and lose only the auto-triggering, not the substance.
auto-triggering, not the substance.
### Ready-to-use exports ### Ready-to-use exports
@@ -107,8 +112,15 @@ maintained twice:
- **ChatGPT** — copy any [`exports/chatgpt/<bundle>/<skill>/SYSTEM_PROMPT.md`](exports/chatgpt/) straight into a Custom GPT's instructions. - **ChatGPT** — copy any [`exports/chatgpt/<bundle>/<skill>/SYSTEM_PROMPT.md`](exports/chatgpt/) straight into a Custom GPT's instructions.
- **Google Gemini** — copy any [`exports/gemini/<bundle>/<skill>/GEM_INSTRUCTIONS.md`](exports/gemini/) into a Gem's instructions. - **Google Gemini** — copy any [`exports/gemini/<bundle>/<skill>/GEM_INSTRUCTIONS.md`](exports/gemini/) into a Gem's instructions.
The skill body in `skills/<name>/SKILL.md` is the single source of truth. Regenerate (or Native `SKILL.md` agents don't need exports — install the skills directly:
add a new platform — it's a few lines in the `PLATFORMS` registry) with:
```bash
# Hermes Agent (Nous Research) — installs skills/ into ~/.hermes/skills/
python3 scripts/sync-hermes-skills.py # copy (use --link to symlink, --dry-run to preview)
```
The skill body in `skills/<name>/SKILL.md` is the single source of truth. Regenerate the
chat-LLM exports (or add a new platform — it's a few lines in the `PLATFORMS` registry) with:
```bash ```bash
node scripts/build-exports.mjs # regenerate all platform exports node scripts/build-exports.mjs # regenerate all platform exports
@@ -270,10 +282,25 @@ More templates will follow. If you want to contribute one, see the [template con
## 📋 Changelog ## 📋 Changelog
The highlights are below. For the structured, [Keep a Changelog](https://keepachangelog.com/)-format history (including unreleased changes), see **[CHANGELOG.md](CHANGELOG.md)**. The highlights are below. For the structured, [Keep a Changelog](https://keepachangelog.com/)-format history, see **[CHANGELOG.md](CHANGELOG.md)**.
### 🆕 What's New in v16.0.0 — Multi-Platform
The library stops being Claude-only and becomes a portable, single-source-of-truth project:
- **Runs on more platforms.** Native install for **Hermes Agent** (same open `SKILL.md` standard) via `scripts/sync-hermes-skills.py`, plus ready-to-paste **ChatGPT** and **Gemini** exports generated from every skill.
- **One source, many targets.** `scripts/build-exports.mjs` renders per-platform files from each `SKILL.md` body — nothing is maintained twice — with a `PLATFORMS` registry that makes adding a tool a few lines, and a CI guard that fails on drift.
- **Three stdlib Python helpers** for flagship skills (sprint capacity, RICE scoring, customer-health scoring).
- **Explicit skill tiers** (`TIERS.md` + `skill-tiers.json`): 46 Production-Ready, a curated Experimental set, Stable as default — surfaced in the README and the playground.
- **Upgraded Skill Playground**: tier filter + badges and a "use this skill in another tool" copy panel.
- **Repo hygiene**: `CHANGELOG.md`, `SKILL-AUTHORING-STANDARD.md`, refreshed `SECURITY.md`, `.gitignore`, and a Related Projects section.
<details> <details>
<summary><strong>Release history — v6.0.0 → v14.0.0</strong> (click to expand)</summary> <summary><strong>Release history — v6.0.0 → v15.0.0</strong> (click to expand)</summary>
### 🆕 What's New in v15.0.0 — Skill Playground (browser UI) 🌐
Run any skill **without installing anything** — a zero-backend web app that executes skills in your browser with your own Claude API key. Tile gallery with search and bundle filter, click-to-run forms auto-generated from each skill's inputs, live streaming output with copy / download, and an auto-deploy to GitHub Pages on every push to `main`. **▶ Live: [mohitagw15856.github.io/pm-claude-skills](https://mohitagw15856.github.io/pm-claude-skills/)**
### 🆕 What's New in v14.0.0 — Writers & Content Creators + 7 Community Skills ### 🆕 What's New in v14.0.0 — Writers & Content Creators + 7 Community Skills
+3 -3
View File
@@ -10,9 +10,9 @@ That said, security matters here in two specific ways: **skill file safety** and
| Version | Supported | | Version | Supported |
|---|---| |---|---|
| v14.x (latest) | ✅ Active | | v16.x (latest) | ✅ Active |
| v12.x v13.x | ✅ Security fixes only | | v14.x v15.x | ✅ Security fixes only |
| < v12.0.0 | ❌ No longer supported | | < v14.0.0 | ❌ No longer supported |
Because skills are plain markdown, "support" means we review and correct any reported Because skills are plain markdown, "support" means we review and correct any reported
safety issue (prompt injection, unsafe instructions) in the listed versions. safety issue (prompt injection, unsafe instructions) in the listed versions.
+120
View File
@@ -0,0 +1,120 @@
#!/usr/bin/env python3
"""Install this library's skills into Hermes Agent (Nous Research).
Hermes reads the same `SKILL.md` standard as Claude Code — it auto-discovers
skills from its skills directory (default `~/.hermes/skills/`) using the
`description` frontmatter. So there is **no format conversion**: this script just
places the canonical `skills/<name>/` folders (SKILL.md + any scripts/) where
Hermes can find them.
Pure Python standard library — no dependencies, no network access.
Examples
--------
# Copy all skills into ~/.hermes/skills/pm-claude-skills/
python3 scripts/sync-hermes-skills.py
# Symlink instead (so `git pull` updates them in place)
python3 scripts/sync-hermes-skills.py --link
# Install into a custom location, un-namespaced (flat)
python3 scripts/sync-hermes-skills.py --target ./my-project/skills --flat
# See what would happen without writing anything
python3 scripts/sync-hermes-skills.py --dry-run
Uninstall: delete the `pm-claude-skills/` folder inside the target directory.
"""
from __future__ import annotations
import argparse
import shutil
import sys
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parent.parent
SKILLS_DIR = REPO_ROOT / "skills"
DEFAULT_TARGET = Path.home() / ".hermes" / "skills"
NAMESPACE = "pm-claude-skills"
def discover_skills() -> list[Path]:
"""Return every skills/<name>/ folder that contains a SKILL.md."""
if not SKILLS_DIR.is_dir():
raise FileNotFoundError(f"Cannot find skills directory at {SKILLS_DIR}")
return sorted(p for p in SKILLS_DIR.iterdir() if (p / "SKILL.md").is_file())
def install(skills: list[Path], dest: Path, *, link: bool, dry_run: bool) -> int:
count = 0
for skill in skills:
target = dest / skill.name
action = "symlink" if link else "copy"
if dry_run:
print(f" would {action}: {skill.name} -> {target}")
count += 1
continue
# Replace any existing install so re-running is idempotent.
if target.is_symlink() or target.is_file():
target.unlink()
elif target.is_dir():
shutil.rmtree(target)
if link:
target.symlink_to(skill, target_is_directory=True)
else:
shutil.copytree(skill, target)
count += 1
return count
def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument("--target", type=Path, default=DEFAULT_TARGET,
help=f"Hermes skills directory (default: {DEFAULT_TARGET}).")
parser.add_argument("--flat", action="store_true",
help=f"Install directly into --target instead of a '{NAMESPACE}/' subfolder.")
parser.add_argument("--link", action="store_true",
help="Symlink each skill instead of copying (updates follow git pull).")
parser.add_argument("--dry-run", action="store_true",
help="Show what would happen without writing anything.")
args = parser.parse_args(argv)
try:
skills = discover_skills()
except FileNotFoundError as exc:
print(f"Error: {exc}", file=sys.stderr)
return 1
if not skills:
print("No skills found to install.", file=sys.stderr)
return 1
dest = args.target if args.flat else args.target / NAMESPACE
print(f"{'[dry-run] ' if args.dry_run else ''}Installing {len(skills)} skills into {dest}")
if not args.dry_run:
dest.mkdir(parents=True, exist_ok=True)
count = install(skills, dest, link=args.link, dry_run=args.dry_run)
print(f"\n{'Would install' if args.dry_run else 'Installed'} {count} skills "
f"({'symlinked' if args.link else 'copied'}).")
if not args.dry_run:
print(f"Restart Hermes Agent — it auto-discovers SKILL.md skills from {args.target} "
f"and activates them by their description.")
return 0
if __name__ == "__main__":
try:
rc = main()
except BrokenPipeError:
# Output was truncated by a closed pipe (e.g. `| head`); exit quietly.
try:
sys.stdout.close()
except Exception:
pass
rc = 0
raise SystemExit(rc)
+2 -2
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Skill Playground — Product Notes</title> <title>Skill Playground — Product Notes</title>
<meta name="description" content="Run any of 170+ Claude skills from your browser with your own API key. Pick a skill tile, fill the inputs, get the output." /> <meta name="description" content="Run any of 170+ professional skills in your browser with your own Claude API key — or copy each one as a ready-made ChatGPT or Gemini prompt." />
<link rel="stylesheet" href="styles.css" /> <link rel="stylesheet" href="styles.css" />
<script src="https://cdn.jsdelivr.net/npm/marked@12.0.0/marked.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/marked@12.0.0/marked.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.9/dist/purify.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.9/dist/purify.min.js"></script>
@@ -15,7 +15,7 @@
<img src="assets/product-notes.jpg" alt="Product Notes" class="brand-logo" /> <img src="assets/product-notes.jpg" alt="Product Notes" class="brand-logo" />
<div class="brand-text"> <div class="brand-text">
<h1>Skill Playground</h1> <h1>Skill Playground</h1>
<p class="tagline">170+ Claude skills — pick one and run it with your own key.</p> <p class="tagline">170+ professional skills — run with your Claude key, or copy for ChatGPT &amp; Gemini.</p>
</div> </div>
</div> </div>
<div class="key-area"> <div class="key-area">