Skip to content

Commit 706097a

Browse files
committed
fix: add ci validation gaps and improve docs after full review
add semver format validation for versions in both marketplace and plugin entries, cross-validate marketplace name against plugin.json name, expand skill-creator readme with usage examples, add "what are plugins" section to main readme, enhance pr template with testing checklist, fix switch-provider category to ai-tools, clean up add-command template
1 parent ddd6d35 commit 706097a

9 files changed

Lines changed: 73 additions & 20 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
"name": "kossakovsky"
1717
},
1818
"source": "./plugins/switch-provider",
19-
"category": "utilities",
19+
"category": "ai-tools",
2020
"tags": ["provider", "api", "configuration"],
2121
"keywords": ["provider", "switch", "api", "zai", "kimi", "minimax"]
2222
},
2323
{
2424
"name": "plugin-development",
25-
"description": "Assist with Claude Code plugin development: scaffold, validate, review, and team-ready distribution",
25+
"description": "A comprehensive toolkit for creating, validating, and distributing Claude Code plugins",
2626
"version": "1.3.0",
2727
"author": {
2828
"name": "kossakovsky"

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
**Plugin name:** `your-plugin-name`
66
**Description:** Brief description of what your plugin does
7+
**What problem does it solve?** Explain the use case
78

89
### Checklist
910

@@ -13,3 +14,9 @@
1314
- [ ] Entry added to `.claude-plugin/marketplace.json`
1415
- [ ] Plugin name is kebab-case and matches directory name
1516
- [ ] No security issues (no data exfiltration, no dangerous operations)
17+
18+
### Testing
19+
20+
- [ ] Validated with `/plugin-development:validate`
21+
- [ ] Tested locally with `/plugin-development:test-local`
22+
- [ ] All commands work as documented

.github/workflows/validate-plugins.yml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ jobs:
105105
exit 1
106106
fi
107107
108+
# Validate SemVer format in marketplace entry
109+
mp_version=$(jq -r ".plugins[$i].version" .claude-plugin/marketplace.json)
110+
if ! echo "$mp_version" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
111+
echo "✗ Plugin entry $((i+1)): version '$mp_version' is not valid SemVer (expected X.Y.Z)"
112+
exit 1
113+
fi
114+
echo "✓ Plugin entry $((i+1)): version '$mp_version' is valid SemVer"
115+
108116
# Validate source path format
109117
source=$(jq -r ".plugins[$i].source" .claude-plugin/marketplace.json)
110118
if ! echo "$source" | grep -qE '^\./plugins/[a-z0-9-]+$'; then
@@ -202,15 +210,30 @@ jobs:
202210
fi
203211
echo "✓ Plugin name matches directory name"
204212
213+
# Cross-validate: marketplace.json name must match plugin.json name
214+
marketplace_name=$(jq -r --arg src "$plugin_path" '.plugins[] | select(.source == $src) | .name' .claude-plugin/marketplace.json)
215+
if [ -n "$marketplace_name" ] && [ "$marketplace_name" != "$plugin_name_val" ]; then
216+
echo "✗ Marketplace name '$marketplace_name' does not match plugin.json name '$plugin_name_val'"
217+
exit 1
218+
fi
219+
echo "✓ Marketplace name matches plugin.json name"
220+
205221
# Check version field
206222
if ! jq -e ".version" "$plugin_json" > /dev/null; then
207223
echo "✗ Missing required field: version"
208224
exit 1
209225
fi
210226
echo "✓ Required field 'version' present"
211227
212-
# Cross-validate: marketplace.json version must match plugin.json version
228+
# Validate SemVer format
213229
plugin_version=$(jq -r ".version" "$plugin_json")
230+
if ! echo "$plugin_version" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
231+
echo "✗ Version '$plugin_version' is not valid SemVer (expected X.Y.Z)"
232+
exit 1
233+
fi
234+
echo "✓ Version '$plugin_version' is valid SemVer"
235+
236+
# Cross-validate: marketplace.json version must match plugin.json version
214237
marketplace_version=$(jq -r --arg src "$plugin_path" '.plugins[] | select(.source == $src) | .version' .claude-plugin/marketplace.json)
215238
if [ -n "$marketplace_version" ] && [ "$marketplace_version" != "$plugin_version" ]; then
216239
echo "✗ Marketplace version '$marketplace_version' does not match plugin.json version '$plugin_version'"

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# Dev marketplace (created by /plugin-development:test-local)
2+
dev-marketplace/
3+
14
# Claude Code
25
.claude/settings.local.json
36
.claude/cache/

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,17 @@
55

66
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

8+
## What Are Plugins?
9+
10+
Claude Code plugins let you add new capabilities without modifying Claude Code itself:
11+
12+
- **Slash commands** — custom actions triggered by `/<plugin>:<command>` (e.g., `/commit:commit`)
13+
- **Skills** — ambient knowledge that activates automatically based on context
14+
- **Agents** — specialized sub-agents for deep, multi-file analysis
15+
- **Hooks** — automated scripts that run at lifecycle events (before/after tool use, session start, etc.)
16+
17+
Each plugin is a folder with a manifest and one or more of these components. No programming required — skills and commands are written in Markdown.
18+
819
## Installation
920

1021
Add the marketplace:
@@ -23,7 +34,7 @@ Install any plugin:
2334

2435
| Plugin | Version | Category | Description |
2536
|--------|---------|----------|-------------|
26-
| [switch-provider](plugins/switch-provider/) | 1.0.0 | utilities | Switch Claude Code between AI providers (Anthropic, Z.AI, Kimi, MiniMax) |
37+
| [switch-provider](plugins/switch-provider/) | 1.0.0 | ai-tools | Switch Claude Code between AI providers (Anthropic, Z.AI, Kimi, MiniMax) |
2738
| [plugin-development](plugins/plugin-development/) | 1.3.0 | developer-tools | Scaffold, validate, and submit Claude Code plugins |
2839
| [commit](plugins/commit/) | 1.0.0 | developer-tools | Smart git commits with conventional commit messages |
2940
| [skill-creator](plugins/skill-creator/) | 1.0.0 | developer-tools | Create and improve skills with evals and benchmarks |

plugins/plugin-development/README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,10 @@ Once installed, you can scaffold a new plugin:
6060
This scaffolds:
6161
- `.claude-plugin/plugin.json` - Plugin manifest
6262
- `commands/` - Slash commands directory
63-
- `agents/` - Sub-agents directory
64-
- `skills/` - Skills directory
65-
- `hooks/hooks.json` - Hook configuration
66-
- `scripts/` - Validation scripts
6763
- `README.md` - Documentation template
6864

65+
Additional directories (`skills/`, `agents/`, `hooks/`, `scripts/`) are created on demand when you add components via `/plugin-development:add-skill`, `/plugin-development:add-agent`, or `/plugin-development:add-hook`.
66+
6967
### Add Components
7068

7169
```bash

plugins/plugin-development/commands/add-command.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,6 @@ If validation fails, provide clear feedback.
111111
---
112112
description: $2
113113
argument-hint: [arg1] [arg2]
114-
allowed-tools: Write, Edit
115-
model: claude-3-5-haiku-20241022
116-
disable-model-invocation: false
117114
---
118115

119116
# $1 Command
@@ -380,5 +377,5 @@ After creating a command:
380377
□ Command name is kebab-case
381378
□ Instructions are clear and specific
382379
□ Examples provided
383-
□ plugin.json has commands field
380+
□ plugin.json has commands field (only if using custom paths)
384381
```

plugins/skill-creator/README.md

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,27 @@ Create, modify, and improve Claude Code skills. Originally from [anthropics/skil
99
/plugin install skill-creator@claude-code-plugins
1010
```
1111

12-
## What It Does
12+
## Usage
1313

14-
The skill-creator activates automatically when you want to create or improve a Claude Code skill. It guides you through:
14+
The skill-creator is a **skill resource** (not a slash command). It activates automatically when you ask Claude Code to create or improve a skill:
1515

16-
1. **Capturing intent** -- understanding what the skill should do and when it should trigger
17-
2. **Writing the SKILL.md** -- structured guidance on frontmatter, progressive disclosure, and writing patterns
18-
3. **Testing** -- running eval test cases with and without the skill
19-
4. **Iterating** -- improving based on feedback until the skill works well
20-
5. **Description optimization** -- tuning triggering accuracy
16+
```
17+
"Create a skill that generates unit tests for Python code"
18+
"Improve my debugging skill to handle async errors better"
19+
"I want to make a skill for code review"
20+
```
21+
22+
Once activated, the skill guides you through an interactive workflow -- you describe your idea in plain text, and Claude Code handles the structure.
23+
24+
## Workflow
25+
26+
1. **Capture intent** -- Claude interviews you to understand what the skill should do and when it should trigger
27+
2. **Write SKILL.md** -- generates the skill file with proper frontmatter, progressive disclosure, and writing patterns
28+
3. **Test** -- runs eval test cases with and without the skill to measure effectiveness
29+
4. **Iterate** -- improves the skill based on test results until it performs well
30+
5. **Optimize description** -- tunes the trigger description for accurate activation
31+
32+
Advanced features include blind A/B comparison between skill versions and benchmark tracking across iterations.
2133

2234
## Included
2335

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
{
22
"name": "switch-provider",
33
"version": "1.0.0",
4-
"description": "Switch Claude Code between AI providers with a single command",
4+
"description": "Switch Claude Code between AI providers (Anthropic, Z.AI, Kimi, MiniMax) with a single command",
55
"author": { "name": "kossakovsky" },
6+
"homepage": "https://github.com/kossakovsky/claude-code-plugins",
7+
"repository": "https://github.com/kossakovsky/claude-code-plugins",
68
"license": "MIT",
79
"keywords": ["provider", "switch", "api", "zai", "kimi", "minimax"]
810
}

0 commit comments

Comments
 (0)