Skip to content

fix: adjust ASCII art box borders alignment in README #7

fix: adjust ASCII art box borders alignment in README

fix: adjust ASCII art box borders alignment in README #7

name: Validate Marketplace
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate marketplace.json syntax
run: jq . .claude-plugin/marketplace.json > /dev/null
- name: Validate plugin entries
run: |
ERRORS=0
NAMES=""
jq -c '.plugins[]' .claude-plugin/marketplace.json | while IFS= read -r entry; do
name=$(echo "$entry" | jq -r '.name')
source=$(echo "$entry" | jq -r '.source')
description=$(echo "$entry" | jq -r '.description')
# Check required fields
if [ "$name" = "null" ] || [ -z "$name" ]; then
echo "ERROR: Plugin entry missing 'name'"
echo "FAIL" >> /tmp/marketplace-errors
fi
if [ "$source" = "null" ] || [ -z "$source" ]; then
echo "ERROR: Plugin '$name' missing 'source'"
echo "FAIL" >> /tmp/marketplace-errors
fi
if [ "$description" = "null" ] || [ -z "$description" ]; then
echo "ERROR: Plugin '$name' missing 'description'"
echo "FAIL" >> /tmp/marketplace-errors
fi
# Check source path exists
if [ ! -d "$source" ]; then
echo "ERROR: Plugin '$name' source path '$source' does not exist"
echo "FAIL" >> /tmp/marketplace-errors
fi
# Check plugin.json exists
if [ ! -f "$source/.claude-plugin/plugin.json" ]; then
echo "ERROR: Plugin '$name' missing .claude-plugin/plugin.json"
echo "FAIL" >> /tmp/marketplace-errors
fi
# Check for duplicate names
if echo "$NAMES" | grep -q "^${name}$"; then
echo "ERROR: Duplicate plugin name '$name'"
echo "FAIL" >> /tmp/marketplace-errors
fi
NAMES=$(printf '%s\n%s' "$NAMES" "$name")
done
if [ -f /tmp/marketplace-errors ]; then
ERRORS=$(wc -l < /tmp/marketplace-errors)
echo ""
echo "Found $ERRORS error(s)"
exit 1
fi
echo "All plugin entries valid"
- name: Run structural validation
run: bash tests/ci/run-structural-tests.sh