A self-hosted Claude Code marketplace for custom skill plugins. Each skill ships as an independent plugin, discoverable and invocable via / slash commands across both the CLI and VS Code extension.
This marketplace is actively maintained. Skills are added and versioned as workflows mature.
| Plugin | Description | Invocation |
|---|---|---|
audit-py-codebase |
Single-pass critical audit of a Python codebase - type annotations, NumPy-style docstrings, SOLID/DRY, error handling, logging, pytest, ruff, pyright. Idempotent - re-invoke until converged. | /audit-py-codebase:audit-py-codebase <folder> |
audit-react-vite-tsx-codebase |
Single-pass critical audit of a React + Vite + TSX codebase - strict TypeScript, JSDoc/TSDoc, component architecture, error boundaries, a11y, bundle performance, Vitest. Idempotent - re-invoke until converged. | /audit-react-vite-tsx-codebase:audit-react-vite-tsx-codebase <folder> |
compress-context |
Compresses a natural language file (CLAUDE.md, skill instructions, prompt files) into token-efficient symbolic notation. Rewrites in-place and generates a symbols.md legend alongside. Achieves 30-50% token reduction without semantic loss. |
/compress-context:compress-context <file> |
- Claude Code (CLI or VS Code extension), authenticated
- Git with GitHub credentials configured
One-time operation. Once registered, every plugin in this repo becomes discoverable.
Option A - CLI:
claude plugins:add-marketplace rs2pydev/claude-skillsOption B - Manual (settings.json):
Add to ~/.claude/settings.json under extraKnownMarketplaces:
{
"extraKnownMarketplaces": {
"rs2pydev-claude-skills": {
"source": {
"source": "github",
"repo": "rs2pydev/claude-skills"
}
}
}
}Add desired plugins to enabledPlugins in the same ~/.claude/settings.json:
{
"enabledPlugins": {
"audit-py-codebase@rs2pydev-claude-skills": true,
"audit-react-vite-tsx-codebase@rs2pydev-claude-skills": true,
"compress-context@rs2pydev-claude-skills": true
}
}- CLI: No restart needed - picks up changes on next invocation.
- VS Code: Full restart required (close all windows, reopen). The extension reads
settings.jsonat session init and caches it.
# Python codebase audit
/audit-py-codebase:audit-py-codebase ./backend
# React/Vite/TSX codebase audit
/audit-react-vite-tsx-codebase:audit-react-vite-tsx-codebase ./frontend
# Compress a context file for token efficiency
/compress-context:compress-context ./CLAUDE.mdThe audit skills are designed for iterative re-invocation:
Pass 1: Fixes 40+ issues, scorecard reports "12 remaining"
Pass 2: Fixes 8 issues (including regressions from pass 1 refactors), reports "2 remaining"
Pass 3: Zero new issues found, reports "CONVERGED"
Each pass runs in a fresh context - no accumulated bias. Re-invoke until the scorecard says CONVERGED.
The compress-context skill reads a file, applies symbolic notation rules (operators, abbreviations, structural patterns), rewrites it in-place, and generates a symbols.md legend in the same directory for human reference.
PowerShell script that automates the full publish lifecycle: clone, structure, commit, push, register, enable. Designed for Windows environments where pwsh is the primary shell.
scripts/Manage-LocalPlugin.ps1
| Parameter | Description |
|---|---|
-Register or -Update |
Mode: create a new plugin or update an existing one (mutually exclusive) |
-Path |
Path to a .md skill file or a directory of .md files |
-RepoUrl |
GitHub marketplace repo URL (e.g., https://github.com/rs2pydev/claude-skills.git) |
| Parameter | Default | Description |
|---|---|---|
-PluginName |
Derived from filename | Override plugin name (single-file input only) |
-Version |
1.0.0 (Register) / auto-increment (Update) |
Explicit semver string |
-RepoPath |
~/.<repo-name> (derived from URL) |
Local clone path |
-MarketplaceName |
org-reponame (derived from URL) |
Identifier in settings.json |
# Register a new skill
.\Manage-LocalPlugin.ps1 -Register -Path ".\audit-go-codebase.md" -RepoUrl "https://github.com/rs2pydev/claude-skills.git"
# Register all .md files in a directory (each becomes its own plugin)
.\Manage-LocalPlugin.ps1 -Register -Path ".\skills\" -RepoUrl "https://github.com/rs2pydev/claude-skills.git"
# Update existing (auto-increments patch version)
.\Manage-LocalPlugin.ps1 -Update -Path ".\audit-py-codebase.md" -RepoUrl "https://github.com/rs2pydev/claude-skills.git"
# Explicit version bump
.\Manage-LocalPlugin.ps1 -Update -Path ".\audit-py-codebase.md" -RepoUrl "https://github.com/rs2pydev/claude-skills.git" -Version "2.0.0"- Parses
.mdfrontmatter forname,description,version - Clones the marketplace repo (or pulls latest if already cloned)
- Scaffolds plugin structure:
<name>/.claude-plugin/plugin.json+skills/<name>/SKILL.md - Adds/updates the entry in
.claude-plugin/marketplace.json - Commits and pushes to GitHub
- Registers the marketplace in
~/.claude/settings.json(idempotent - first run only) - Enables the plugin in
enabledPlugins
Input .md files must have YAML frontmatter:
---
name: skill-name
description: "One-line trigger description."
version: 1.0.0
---
# Skill instructions...If frontmatter is absent, name is derived from filename and a generic description is used.
- Confirm both
extraKnownMarketplacesandenabledPluginsentries exist in~/.claude/settings.json. - Full VS Code restart (not Reload Window).
- If autocomplete still misses, type the full invocation manually - execution still works.
Corporate proxy/firewall throttling GitHub API calls. The plugins still load and function - only the "Manage Plugins" UI catalog times out. Invoke skills directly via /.
Same settings.json, different read timing. CLI reads fresh per invocation; VS Code caches at session start. A full restart forces re-read.
.claude-plugin/
marketplace.json # Discovery manifest
audit-py-codebase/
.claude-plugin/plugin.json
skills/audit-py-codebase/SKILL.md
audit-react-vite-tsx-codebase/
.claude-plugin/plugin.json
skills/audit-react-vite-tsx-codebase/SKILL.md
compress-context/
.claude-plugin/plugin.json
skills/compress-context/SKILL.md
scripts/
Manage-LocalPlugin.ps1 # PowerShell publish automation
.\scripts\Manage-LocalPlugin.ps1 -Register -Path ".\my-skill.md" -RepoUrl "https://github.com/rs2pydev/claude-skills.git"- Create
<skill-name>/at repo root - Add
.claude-plugin/plugin.json:{ "name": "<skill-name>", "version": "1.0.0", "description": "One-line description.", "author": { "name": "rs2pydev" } } - Add
skills/<skill-name>/SKILL.mdwith frontmatter:--- name: <skill-name> description: "Trigger description for Claude Code skill discovery." version: 1.0.0 ---
- Register in
.claude-plugin/marketplace.jsonunderplugins[] - Commit, push, restart Claude Code.
MIT

