| name | patronum-dev-validate |
| description | Validate the agento-patronum plugin structure. Run before opening a PR. |
| disable-model-invocation | true |
| allowed-tools | Bash(bash -n *), Bash(jq *), Bash(head *), Bash(test *), Glob, Read |
Skill: patronum-dev-validate
Run all plugin validation checks locally.
Steps
1. JSON validity
jq empty .claude-plugin/plugin.json && echo "plugin.json OK"
jq empty .claude-plugin/marketplace.json && echo "marketplace.json OK"
jq empty hooks/hooks.json && echo "hooks.json OK"
jq empty defaults/patronum.json && echo "patronum.json OK"
1b. marketplace.json schema
Verify the source field starts with ./ and metadata.description is present (both required by Claude Code validation):
jq -e '.plugins[] | (.source | type) == "string" and startswith("./")' \
.claude-plugin/marketplace.json && echo "marketplace source OK"
jq -e '.metadata.description | type == "string" and length > 0' \
.claude-plugin/marketplace.json && echo "marketplace description OK"
2. Default patterns check
Verify defaults/patronum.json has at least one entry:
COUNT=$(jq '.entries | length' defaults/patronum.json)
[ "$COUNT" -gt 0 ] && echo "Default patterns: $COUNT entries OK"
3. Bash syntax
for f in scripts/patronum-*.sh; do
bash -n "$f" && echo "$f OK"
done
4. Script permissions
for f in scripts/patronum-*.sh; do
test -x "$f" && echo "$f executable OK"
done
5. SKILL.md frontmatter
Check each SKILL.md has a name: and description: in its frontmatter:
for f in skills/*/SKILL.md; do
head -10 "$f" | grep -q "^name:" && echo "$f: name OK"
head -10 "$f" | grep -q "^description:" && echo "$f: description OK"
done
6. Report
Summarize all results. Use before opening a PR.