Skip to content

Commit ddd6d35

Browse files
committed
fix: comprehensive review of docs, ci, and plugin accuracy
- fix dead docs.claude.com urls in plugin-development readme - remove phantom posttooluse hook reference removed in v1.3.0 - add missing submit command to commands table and count - fix contributing.md validation (hook script -> /plugin-development:validate) - add categories documentation to contributing guide - expand readme with version/category table and submit workflow - add structured scoring system to pr review workflow - add source path and version cross-validation to ci pipeline - simplify init scaffolding to only create essential directories - fix hooks.json description to match actual behavior - add skill-creator attribution note for anthropics/skills origin - sync claude.md plugin descriptions and validation instructions
1 parent cfa8d02 commit ddd6d35

11 files changed

Lines changed: 135 additions & 73 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
},
4747
{
4848
"name": "skill-creator",
49-
"description": "Create new skills, modify and improve existing skills, and measure skill performance with evals and benchmarks",
49+
"description": "Create new skills, modify and improve existing skills, and measure skill performance with evals and benchmarks. Originally from anthropics/skills, community-maintained",
5050
"version": "1.0.0",
5151
"author": {
5252
"name": "anthropics"

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
> Tip: You can automate this entire process with `/plugin-development:submit`
2+
13
## Plugin Submission
24

35
**Plugin name:** `your-plugin-name`

.github/workflows/review-pr.yml

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,36 @@ jobs:
2626
with:
2727
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
2828
prompt: |
29-
Review this PR as a plugin marketplace submission. Check:
30-
1. Plugin structure: plugins/<name>/ with .claude-plugin/plugin.json and README.md
31-
2. plugin.json: valid JSON with name (kebab-case, matches directory), version, description
32-
3. marketplace.json: entry added with correct source path, no duplicates
33-
4. Security: no data exfiltration, no dangerous operations, no obfuscated code
34-
5. Usefulness: solves a real problem, not spam or empty shell
35-
36-
Respond with: APPROVE, NEEDS_CHANGES (list specifics), or BLOCK (critical security issues).
29+
Review this PR as a plugin marketplace submission.
30+
31+
## Evaluation Criteria (score each 1-5):
32+
33+
### 1. Structure (blocking if < 3)
34+
- plugins/<name>/ directory exists
35+
- .claude-plugin/plugin.json with name (kebab-case, matches directory), version, description
36+
- README.md present with installation and usage sections
37+
38+
### 2. Marketplace Integration (blocking if < 3)
39+
- Entry added to marketplace.json with correct source path
40+
- No duplicate plugin names
41+
- Category and tags present
42+
43+
### 3. Security (blocking if < 4)
44+
- No data exfiltration patterns (sending files, env vars, secrets to external services)
45+
- No dangerous/destructive operations without user confirmation
46+
- No obfuscated or minified code that hides functionality
47+
- No hardcoded secrets or API keys
48+
49+
### 4. Quality & Usefulness (blocking if < 2)
50+
- Solves a real problem, not spam or empty shell
51+
- Commands/skills have meaningful content
52+
- Documentation is clear and accurate
53+
54+
## Response Format:
55+
56+
**Score:** Structure X/5 | Integration X/5 | Security X/5 | Quality X/5
57+
**Total:** XX/20
58+
59+
**Verdict:** APPROVE (16+) | NEEDS_CHANGES (10-15, list specifics) | BLOCK (<10 or any blocking criteria failed)
60+
61+
**Details:** [specific findings per category]

.github/workflows/validate-plugins.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ jobs:
105105
exit 1
106106
fi
107107
108+
# Validate source path format
109+
source=$(jq -r ".plugins[$i].source" .claude-plugin/marketplace.json)
110+
if ! echo "$source" | grep -qE '^\./plugins/[a-z0-9-]+$'; then
111+
echo "✗ Plugin entry $((i+1)): source '$source' must match pattern ./plugins/<kebab-case-name>"
112+
exit 1
113+
fi
114+
echo "✓ Plugin entry $((i+1)): source path format is valid"
115+
108116
# Check author format if present
109117
if jq -e ".plugins[$i].author" .claude-plugin/marketplace.json > /dev/null; then
110118
if ! jq -e ".plugins[$i].author | type == \"object\"" .claude-plugin/marketplace.json > /dev/null; then
@@ -201,6 +209,15 @@ jobs:
201209
fi
202210
echo "✓ Required field 'version' present"
203211
212+
# Cross-validate: marketplace.json version must match plugin.json version
213+
plugin_version=$(jq -r ".version" "$plugin_json")
214+
marketplace_version=$(jq -r --arg src "$plugin_path" '.plugins[] | select(.source == $src) | .version' .claude-plugin/marketplace.json)
215+
if [ -n "$marketplace_version" ] && [ "$marketplace_version" != "$plugin_version" ]; then
216+
echo "✗ Marketplace version '$marketplace_version' does not match plugin.json version '$plugin_version'"
217+
exit 1
218+
fi
219+
echo "✓ Marketplace version matches plugin.json version"
220+
204221
# Check description field
205222
if ! jq -e ".description" "$plugin_json" > /dev/null; then
206223
echo "✗ Missing required field: description"

CLAUDE.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ CI runs on push to main/develop and on PRs to main (`.github/workflows/validate-
2020

2121
Local validation for plugin development:
2222
```bash
23-
# Validate plugin structure (used by plugin-development hook on Write/Edit)
24-
plugins/plugin-development/scripts/validate-plugin.sh
23+
/plugin-development:validate
2524
```
2625

26+
Note: `plugins/plugin-development/scripts/validate-plugin.sh` is a hook script invoked automatically on Write/Edit — it cannot be run standalone.
27+
2728
PR review is automated via Claude Code Action (`.github/workflows/review-pr.yml`).
2829

2930
## Architecture
@@ -48,10 +49,10 @@ Optional component directories:
4849

4950
| Plugin | Purpose |
5051
|--------|---------|
51-
| `switch-provider` | Switch between AI providers (Anthropic, Z.AI, Kimi, MiniMax) |
52-
| `plugin-development` | Scaffold, validate, and review plugins |
53-
| `commit` | Smart git commits with conventional commit messages |
54-
| `skill-creator` | Create skills with evals and benchmarks |
52+
| `switch-provider` | Switch Claude Code between AI providers (Anthropic, Z.AI, Kimi, MiniMax) with a single command |
53+
| `plugin-development` | Scaffold, validate, review, and submit Claude Code plugins |
54+
| `commit` | Smart git commits with conventional commit message generation |
55+
| `skill-creator` | Create, improve, and measure skills with evals and benchmarks |
5556

5657
## PR Review Instructions
5758

CONTRIBUTING.md

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,26 @@ Required fields: `name`, `source`, `description`, `version`. The `name` must mat
6767
4. Ensure your plugin has a `README.md`
6868
5. Open a Pull Request
6969

70+
**Or automate everything:** Install the `plugin-development` plugin and run `/plugin-development:submit` — it handles forking, branching, copying files, updating marketplace.json, and creating the PR for you.
71+
7072
### Local Validation
7173

72-
Before submitting, verify your plugin passes validation:
74+
Before submitting, validate your plugin using the `plugin-development` plugin:
7375

7476
```bash
75-
# Validate plugin structure
76-
plugins/plugin-development/scripts/validate-plugin.sh
77+
# Install the plugin-development plugin
78+
/plugin install plugin-development@claude-code-plugins
79+
80+
# Validate your plugin structure
81+
/plugin-development:validate
7782
```
7883

79-
You can also use the `plugin-development` plugin to scaffold and validate your plugin interactively.
84+
Or check marketplace JSON validity manually:
85+
86+
```bash
87+
# Requires jq
88+
jq empty .claude-plugin/marketplace.json && echo "Valid JSON"
89+
```
8090

8191
### PR Requirements
8292

@@ -86,6 +96,18 @@ You can also use the `plugin-development` plugin to scaffold and validate your p
8696
- `README.md` exists and describes installation and usage
8797
- CI validation passes (`validate-plugins.yml`)
8898

99+
### Categories
100+
101+
Choose a category for your plugin when adding it to `marketplace.json`:
102+
103+
| Category | Description |
104+
|----------|-------------|
105+
| `utilities` | General-purpose tools and helpers |
106+
| `developer-tools` | Plugin development, code generation, git workflows |
107+
| `productivity` | Workflow automation, task management |
108+
| `ai-tools` | AI-related features, model switching, prompt tools |
109+
| `integrations` | External service integrations |
110+
89111
### Security Restrictions
90112

91113
Plugins must NOT:

README.md

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[![Validate Plugins](https://github.com/kossakovsky/claude-code-plugins/actions/workflows/validate-plugins.yml/badge.svg)](https://github.com/kossakovsky/claude-code-plugins/actions/workflows/validate-plugins.yml)
44
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
55

6-
Community marketplace of plugins for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Skills, commands, hooks, and agents — all installable with a single command.
6+
Community marketplace of plugins for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Claude Code plugins extend your CLI with new skills, slash commands, hooks, and agents. This marketplace is a single place where the community shares and discovers plugins — all installable with one command.
77

88
## Installation
99

@@ -21,18 +21,37 @@ Install any plugin:
2121

2222
## Plugins
2323

24-
| Plugin | Description |
25-
|--------|-------------|
26-
| [switch-provider](plugins/switch-provider/) | Switch Claude Code between AI providers (Anthropic, Z.AI, Kimi, MiniMax) with a single command |
27-
| [plugin-development](plugins/plugin-development/) | Toolkit for creating, validating, and distributing Claude Code plugins |
28-
| [commit](plugins/commit/) | Smart git commits with conventional commit message generation |
29-
| [skill-creator](plugins/skill-creator/) | Create, test, and improve Claude Code skills with evals and benchmarks |
24+
| Plugin | Version | Category | Description |
25+
|--------|---------|----------|-------------|
26+
| [switch-provider](plugins/switch-provider/) | 1.0.0 | utilities | Switch Claude Code between AI providers (Anthropic, Z.AI, Kimi, MiniMax) |
27+
| [plugin-development](plugins/plugin-development/) | 1.3.0 | developer-tools | Scaffold, validate, and submit Claude Code plugins |
28+
| [commit](plugins/commit/) | 1.0.0 | developer-tools | Smart git commits with conventional commit messages |
29+
| [skill-creator](plugins/skill-creator/) | 1.0.0 | developer-tools | Create and improve skills with evals and benchmarks |
3030

31-
## Create Your Own Plugin
31+
## Create & Submit Your Plugin
3232

3333
Anyone can contribute a plugin to the marketplace via Pull Request. Every PR goes through automated CI validation and a Claude Code review before being merged.
3434

35-
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide, or use the `plugin-development` plugin to scaffold your plugin interactively.
35+
The fastest way to create and submit a plugin:
36+
37+
```bash
38+
# Install the plugin-development toolkit
39+
/plugin install plugin-development@claude-code-plugins
40+
41+
# Scaffold a new plugin
42+
/plugin-development:init my-plugin
43+
44+
# Add commands, skills, agents, hooks
45+
/plugin-development:add-command my-command "What it does"
46+
47+
# Validate before submitting
48+
/plugin-development:validate
49+
50+
# Submit to the marketplace via PR
51+
/plugin-development:submit
52+
```
53+
54+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.
3655

3756
## License
3857

plugins/plugin-development/README.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ A comprehensive Claude Code plugin that assists developers in creating, validati
77
The `plugin-development` plugin provides a complete toolkit for plugin authorship using a hybrid architecture:
88

99
- **Skill (plugin-authoring)**: Ambient, auto-discovered guidance with progressive disclosure
10-
- **7 Slash Commands**: Explicit actions for scaffolding, validation, and testing
10+
- **8 Slash Commands**: Explicit actions for scaffolding, validation, testing, and submission
1111
- **Reviewer Agent**: Deep, multi-file audits and readiness checks
1212
- **Hooks**: Automated validation and formatting guardrails
1313

@@ -117,6 +117,7 @@ This creates a dev marketplace and provides installation instructions for iterat
117117
| `/plugin-development:add-hook [event] [matcher]` | Add a hook configuration |
118118
| `/plugin-development:validate` | Validate plugin structure and configuration |
119119
| `/plugin-development:test-local` | Create dev marketplace for local testing |
120+
| `/plugin-development:submit [plugin-path]` | Submit a plugin to the community marketplace via PR |
120121

121122
## Skill: plugin-authoring
122123

@@ -161,9 +162,6 @@ Automated validation and formatting hooks are included:
161162
- Exit code 2 blocks unsafe operations
162163
- Provides actionable error messages
163164

164-
### PostToolUse
165-
- Runs formatting/linting after Write/Edit (stub, extend as needed)
166-
167165
### SessionStart
168166
- Displays plugin load confirmation
169167

@@ -246,9 +244,15 @@ After making changes:
246244

247245
Fix any critical or high-priority issues identified.
248246

249-
### 7. Distribute
247+
### 7. Submit
248+
249+
Submit your plugin to the community marketplace:
250+
251+
```bash
252+
/plugin-development:submit
253+
```
250254

251-
Add to your team marketplace repository and push to GitHub.
255+
See [CONTRIBUTING.md](../../CONTRIBUTING.md) for manual submission instructions.
252256

253257
## Documentation
254258

@@ -354,7 +358,7 @@ For enhanced security, configure in `.claude/settings.json`:
354358
### Hooks not running?
355359
- Make scripts executable: `chmod +x scripts/*.sh`
356360
- Use `${CLAUDE_PLUGIN_ROOT}` in hook commands
357-
- Test script directly: `./scripts/validate-plugin.sh`
361+
- Verify hook config in `hooks/hooks.json` matches expected events
358362
- Use `claude --debug` to see hook execution
359363

360364
## Contributing
@@ -374,10 +378,10 @@ To extend:
374378
## Resources
375379

376380
### Official Documentation
377-
- [Claude Code Plugins](https://docs.claude.com/en/docs/claude-code/plugins)
378-
- [Plugin Marketplaces](https://docs.claude.com/en/docs/claude-code/plugin-marketplaces)
379-
- [Plugins Reference](https://docs.claude.com/en/docs/claude-code/plugins-reference)
380-
- [Slash Commands](https://docs.claude.com/en/docs/claude-code/slash-commands)
381+
- [Claude Code Plugins](https://docs.anthropic.com/en/docs/claude-code/plugins)
382+
- [Plugin Marketplaces](https://docs.anthropic.com/en/docs/claude-code/plugin-marketplaces)
383+
- [Plugins Reference](https://docs.anthropic.com/en/docs/claude-code/plugins-reference)
384+
- [Slash Commands](https://docs.anthropic.com/en/docs/claude-code/slash-commands)
381385

382386
### Local Documentation
383387
See `skills/plugin-authoring/` for:

plugins/plugin-development/commands/init.md

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,15 @@ If validation fails, explain the requirements and ask for a valid name.
3737

3838
### Create Directory Structure
3939

40-
Create these directories:
40+
Create these directories by default:
4141
```
4242
$1/
4343
├── .claude-plugin/
44-
├── commands/
45-
├── agents/
46-
├── skills/
47-
├── hooks/
48-
└── scripts/
44+
└── commands/
4945
```
5046

47+
Only create additional directories (`skills/`, `agents/`, `hooks/`, `scripts/`) when the user adds corresponding components via `/plugin-development:add-skill`, `/plugin-development:add-agent`, or `/plugin-development:add-hook`. Do not create empty directories.
48+
5149
### Create plugin.json
5250

5351
Create `.claude-plugin/plugin.json` with this template:
@@ -66,17 +64,6 @@ Create `.claude-plugin/plugin.json` with this template:
6664
}
6765
```
6866

69-
### Create hooks.json
70-
71-
Create `hooks/hooks.json` with a basic structure:
72-
73-
```json
74-
{
75-
"description": "Plugin hooks",
76-
"hooks": {}
77-
}
78-
```
79-
8067
### Create README.md
8168

8269
Create `README.md` with this template:
@@ -101,21 +88,6 @@ Create `README.md` with this template:
10188
[Provide examples]
10289
```
10390

104-
### Create Validation Script
105-
106-
Create `scripts/validate-plugin.sh` with executable permissions:
107-
108-
```bash
109-
#!/usr/bin/env bash
110-
set -euo pipefail
111-
112-
# Basic plugin structure validation
113-
[ -f ".claude-plugin/plugin.json" ] || { echo "Missing plugin.json" >&2; exit 2; }
114-
exit 0
115-
```
116-
117-
Make it executable: `chmod +x scripts/validate-plugin.sh`
118-
11991
## Next Steps
12092

12193
After scaffolding, provide these instructions to the user:

plugins/plugin-development/hooks/hooks.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"description": "Auto-validate basic plugin structure and format code after edits",
2+
"description": "Auto-validate basic plugin structure before edits",
33
"hooks": {
44
"PreToolUse": [
55
{

0 commit comments

Comments
 (0)