Skip to content

feat: add plugin validation CI - #138

Merged
Jacob (JacobPEvans-personal) merged 3 commits into
mainfrom
feature/plugin-validation
Mar 18, 2026
Merged

Jacob (JacobPEvans-personal) merged 3 commits into
mainfrom
feature/plugin-validation

Conversation

@JacobPEvans-personal

Copy link
Copy Markdown
Member

Summary

  • Adds validate-plugins.yml workflow triggered on PRs that touch plugin paths (.claude-plugin/ directories)
  • Adds scripts/validate-plugin-structure.sh to verify every plugin has valid JSON in .claude-plugin/plugin.json with required fields (name, version, description) and a README.md
  • Adds scripts/validate-marketplace.sh to verify .claude-plugin/marketplace.json consistency: valid JSON, referenced directories exist, and versions/names match individual plugin.json files

Note: The marketplace validation will flag 3 existing version mismatches (content-guards, github-workflows, process-cleanup) where plugin.json has been bumped but marketplace.json was not updated. These should be fixed in a separate PR.

Test plan

  • Verify validate-plugins.yml triggers on PRs touching */.claude-plugin/** or .claude-plugin/**
  • Run bash scripts/validate-plugin-structure.sh locally — all 15 plugins pass
  • Run bash scripts/validate-marketplace.sh locally — correctly flags 3 version mismatches
  • Verify scripts are executable and use set -euo pipefail

Generated with Claude Code

Copilot AI review requested due to automatic review settings March 18, 2026 10:30
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the repository's continuous integration by introducing automated validation for plugin definitions and their marketplace metadata. It establishes new CI checks to enforce consistent plugin structure and data integrity, ensuring that all plugins adhere to defined standards and that the marketplace manifest accurately reflects the state of individual plugins. This proactively identifies potential issues, improving overall plugin reliability and maintainability.

Highlights

  • Workflow Added: Introduced a new validate-plugins.yml CI workflow to automatically check plugin integrity on pull requests affecting plugin paths.
  • Plugin Structure Validation: Implemented scripts/validate-plugin-structure.sh to ensure each plugin directory contains a valid plugin.json with required fields (name, version, description) and a README.md.
  • Marketplace Consistency Validation: Developed scripts/validate-marketplace.sh to verify the marketplace.json file's validity, ensure referenced plugin directories exist, and confirm version/name consistency with individual plugin.json files.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/validate-plugins.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment Gemini (@gemini-code-assist) Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on Gemini (@gemini-code-assist) comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces validation scripts for plugins and the marketplace, which is a great addition for maintaining repository integrity. My review focuses on improving the efficiency of the shell scripts and ensuring the validation is comprehensive. I've suggested a change in validate-marketplace.sh to use a more efficient jq and while read pattern, and an update to validate-plugin-structure.sh to align its checks with the provided plugin.schema.json by including validation for the author field. I've also updated both scripts to use printf instead of echo.

Comment thread scripts/validate-marketplace.sh Outdated
Comment thread scripts/validate-plugin-structure.sh Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds lightweight CI and helper scripts to validate Claude Code plugin manifests and marketplace metadata consistency.

Changes:

  • Add scripts/validate-plugin-structure.sh to validate each plugin’s .claude-plugin/plugin.json (JSON + required fields) and presence of README.md.
  • Add scripts/validate-marketplace.sh to validate .claude-plugin/marketplace.json syntax and consistency with referenced plugin directories/manifests.
  • Add .github/workflows/validate-plugins.yml to run the above validations on PRs that touch plugin paths.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
scripts/validate-plugin-structure.sh New repo-wide plugin manifest + README structural validator.
scripts/validate-marketplace.sh New marketplace consistency validator against per-plugin manifests.
.github/workflows/validate-plugins.yml New PR workflow to run the two validation scripts when plugin paths change.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread .github/workflows/validate-plugins.yml Outdated
Comment thread .github/workflows/validate-plugins.yml Outdated
Comment thread .github/workflows/validate-plugins.yml Outdated
Comment thread scripts/validate-marketplace.sh Outdated
Per owner feedback: custom scripts shouldn't exist. The existing
validate-plugin.yml already covers validation with official tools
(cclint, check-jsonschema, bats). The validate-plugins.yml workflow
and its two shell scripts are redundant and unmaintained one-offs.

Marketplace.json version bumps (content-guards, github-workflows,
process-cleanup) are retained as correct independent changes.

(claude)
@JacobPEvans-personal

Copy link
Copy Markdown
Member Author

Addressing all review threads in commit 61a1e2f:

Owner feedback (scripts/validate-marketplace.sh, scripts/validate-plugin-structure.sh): Removed both custom scripts and the duplicate .github/workflows/validate-plugins.yml. The existing validate-plugin.yml already covers validation with official tools (cclint, check-jsonschema, bats).

Copilot thread (PRRT_kwDOQx7E5c51Hl7c — duplicate CI): Resolved by deletion.

Copilot thread (PRRT_kwDOQx7E5c51Hl7C — paths filter): Resolved by deletion.

Copilot thread (PRRT_kwDOQx7E5c51Hl7w — jq under set -e): Resolved by deletion.

Gemini threads (jq loop performance, author.name field): Resolved by deletion — improvements to scripts that no longer exist.

Remaining changes: marketplace.json version bumps for content-guards, github-workflows, and process-cleanup (correct and retained).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants