-
Notifications
You must be signed in to change notification settings - Fork 372
70 lines (59 loc) · 2.33 KB
/
Copy pathvalidate-plugin.yml
File metadata and controls
70 lines (59 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
name: Validate Plugin Configuration
on:
pull_request:
paths:
- '.claude-plugin/**'
- 'package.json'
- 'plugin.json'
- 'mcp.json'
push:
branches: [main]
paths:
- '.claude-plugin/**'
- 'package.json'
- 'plugin.json'
- 'mcp.json'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- name: Setup Node.js
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
with:
node-version: '20'
- name: Install Claude CLI
run: npm install -g @anthropic-ai/claude-code
- name: Validate Plugin Configuration
run: claude plugin validate .
- name: Check Plugin Files Exist
run: |
if [ ! -f ".claude-plugin/marketplace.json" ]; then
echo "Error: .claude-plugin/marketplace.json not found"
exit 1
fi
echo "✓ Marketplace file exists"
- name: Validate JSON Syntax
run: |
echo "Validating marketplace.json syntax..."
cat .claude-plugin/marketplace.json | jq empty
echo "✓ JSON syntax is valid"
- name: Validate Agent Plugins Manifests
run: |
curl -fsSL --retry 3 -o /tmp/plugin.schema.json https://agent-plugins.org/schemas/1.0.0/plugin.schema.json
curl -fsSL --retry 3 -o /tmp/mcp.schema.json https://agent-plugins.org/schemas/1.0.0/mcp.schema.json
npx --yes ajv-cli@5 validate --spec=draft2020 -s /tmp/plugin.schema.json -d plugin.json
npx --yes ajv-cli@5 validate --spec=draft2020 -s /tmp/mcp.schema.json -d mcp.json
echo "✓ plugin.json and mcp.json conform to Agent Plugins 1.0.0 schemas"
- name: Check Version Sync
run: |
PKG=$(jq -r '.version' package.json)
PLUGIN=$(jq -r '.version' plugin.json)
MARKETPLACE=$(jq -r '.plugins[0].version' .claude-plugin/marketplace.json)
echo "package.json=$PKG plugin.json=$PLUGIN marketplace.json=$MARKETPLACE"
if [ "$PKG" != "$PLUGIN" ] || [ "$PKG" != "$MARKETPLACE" ]; then
echo "Error: version mismatch across package.json, plugin.json, and .claude-plugin/marketplace.json"
exit 1
fi
echo "✓ Versions are in sync"