Scaffold and manage Claude Code plugin marketplaces.
Project description
guild
Scaffold and manage Claude Code plugin marketplaces.
guild is an opinionated CLI that creates, validates, and builds plugin marketplace repositories for Claude Code. It pairs with psclaude which consumes the marketplaces guild produces.
Install
pip install jaymd96-guild
Quick Start
# Create a new marketplace
guild init my-marketplace --owner "Your Name"
cd my-marketplace
# Add plugins
guild add code-review --description "Automated code review"
guild add test-generator --description "Generate test cases"
# Edit the generated files
$EDITOR plugins/code-review/CLAUDE.md
$EDITOR plugins/code-review/skills/
# Build marketplace.json (regenerated from source)
guild build
# Validate everything
guild validate
Commands
| Command | Description |
|---|---|
guild init [path] |
Scaffold a new marketplace repo |
guild add <name> |
Create a new local plugin |
guild remove <name> |
Remove a local plugin |
guild build |
Regenerate marketplace.json and README |
guild validate |
Check structure and conventions |
guild list |
Show all plugins (local + external) |
guild version <plugin> <ver> |
Set a plugin's version |
Marketplace Structure
my-marketplace/
├── guild.toml # Source of truth for config
├── marketplace.json # Generated — never hand-edit
├── README.md # Generated — plugin catalogue
├── .github/workflows/
│ ├── validate.yml # PR gate
│ └── release.yml # Tag → GitHub release
└── plugins/
└── code-review/
├── plugin.toml # Name, version, description
├── CLAUDE.md # Instructions for Claude
└── skills/
└── review.md # Skill prompt
Opinions
marketplace.jsonis generated — editguild.tomlandplugin.toml, not the output- Local-first — plugins live in the repo by default; external sources are the escape hatch
- One plugin, one directory — no nesting, no sharing skills between plugins
- Kebab-case names — derived from directory name, enforced by validation
- Every plugin has a CLAUDE.md — instructions are mandatory, not optional
- Skills are markdown —
.mdfiles only, no subdirectories - Versions are explicit — every plugin declares a version in
plugin.toml - External sources in
guild.toml— one place to audit dependencies - Validation is structural — checks conventions, not content quality
- CI included — GitHub Actions workflows ship with every new marketplace
External Plugins
Register plugins from GitHub, npm, pip, or any git URL in guild.toml:
[marketplace]
name = "my-tools"
owner = "James"
[external.deploy-helper]
source = "github"
repo = "acme/deploy-helper"
ref = "v2.1.0"
[external.linter]
source = "npm"
package = "@acme/claude-linter"
version = "^1.0"
Consuming with psclaude
from psclaude import PsClaude
client = PsClaude(
marketplaces=["jaymd96/my-marketplace"],
install=["code-review@my-marketplace"],
)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jaymd96_guild-0.1.1.tar.gz.
File metadata
- Download URL: jaymd96_guild-0.1.1.tar.gz
- Upload date:
- Size: 39.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.5 cpython/3.13.12 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c728f878df5e285ff1c4c33f234761c40ca5ef9c97163dcf94348cc68ae39c30
|
|
| MD5 |
9971a563a145d42383a4e167de9ade80
|
|
| BLAKE2b-256 |
38c57eb2bbff12adbe4601847514a8d80c14716909bc82652d4b1f17b66402cc
|
File details
Details for the file jaymd96_guild-0.1.1-py3-none-any.whl.
File metadata
- Download URL: jaymd96_guild-0.1.1-py3-none-any.whl
- Upload date:
- Size: 29.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.5 cpython/3.13.12 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
541bebfa9acb3321ea2c8d125bc1fd1af387f9a4609a93ad86d458029e021a35
|
|
| MD5 |
692680f29fcfb0793a1e6931ea5f0359
|
|
| BLAKE2b-256 |
fa885a66324566265492c0694563a5570928af572b10813c519d9ee67e147516
|