feat(scripts): add marketplace manifest validation and standardize source format#711
Merged
agreaves-ms merged 1 commit intomainfrom Feb 20, 2026
Merged
Conversation
- implement validation for marketplace.json schema compliance - ensure plugin source directory existence and name-source consistency - validate version consistency with package.json 🔍 - Generated by Copilot
Contributor
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
WilliamBerryiii
approved these changes
Feb 20, 2026
agreaves-ms
pushed a commit
that referenced
this pull request
Feb 20, 2026
🤖 I have created a release *beep* *boop* --- ## [3.0.1](hve-core-v3.0.0...hve-core-v3.0.1) (2026-02-20) ### 🐛 Bug Fixes * **scripts:** add marketplace manifest validation and standardize source format ([#711](#711)) ([c5ac616](c5ac616)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: hve-core-release-please[bot] <254602402+hve-core-release-please[bot]@users.noreply.github.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #711 +/- ##
==========================================
- Coverage 85.79% 84.23% -1.57%
==========================================
Files 23 24 +1
Lines 4801 4890 +89
==========================================
Hits 4119 4119
- Misses 682 771 +89
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduced a marketplace manifest validation pipeline and standardized plugin
sourcevalues inmarketplace.jsonfrom relative paths (./plugins/<name>) to bare directory names (<name>). The change coordinated across schema definition, manifest generation, a new validation script, and CI integration to enforce the convention at every layer.Description
Source Format Standardization
All 11 plugin entries in marketplace.json had their
sourcefields updated from path-prefixed form to bare directory names (e.g.,./plugins/adobecameado). The manifest generation functionNew-MarketplaceManifestContentin PluginHelpers.psm1 was updated in parallel, so regenerated manifests automatically produce the bare-name format.Marketplace Validation Script
A new 277-line Validate-Marketplace.ps1 script performs layered validation of the marketplace manifest:
plugins/The script follows existing repo conventions: copyright header,
#Requires -Version 7.0,CIHelpers.psm1import for CI annotations, the standard@{ Success; ErrorCount }return contract, and a dot-source guard for testability.CI Integration
lint:marketplacenpm script and included it in thelint:allchainJSON Schema
A new marketplace-manifest.schema.json (JSON Schema draft-07) was added as a specification artifact. It constrains plugin names and sources to
^[a-z0-9-]+$, requires semver-formatted versions, and disallows additional properties. The schema is not programmatically consumed by the validation script at runtime.Related Issue(s)
None
Type of Change
Code & Documentation:
Infrastructure & Configuration:
AI Artifacts:
prompt-builderagent and addressed all feedback.github/instructions/*.instructions.md).github/prompts/*.prompt.md).github/agents/*.agent.md).github/skills/*/SKILL.md)Other:
.ps1,.sh,.py)Sample Prompts (for AI Artifact Contributions)
User Request:
Execution Flow:
Output Artifacts:
Success Indicators:
For detailed contribution requirements, see:
Testing
Automated Validation
npm run lint:mdnpm run spell-checknpm run lint:frontmatternpm run validate:skillsnpm run lint:md-linksnpm run lint:psnpm run plugin:generatenpm run lint:marketplaceLink validation failures are pre-existing: two external links to
bestpractices.devreturning HTTP 503 in GOVERNANCE.md and README.md. These are unrelated to this PR.Security Analysis
Diff-Based Assessments
New-MarketplaceManifestContentgeneration change aligns with the schema constraint.Checklist
Required Checks
AI Artifact Contributions
/prompt-analyzeto review contributionprompt-builderreviewRequired Automated Checks
The following validation commands must pass before merging:
npm run lint:mdnpm run spell-checknpm run lint:frontmatternpm run validate:skillsnpm run lint:md-links(pre-existing failures: bestpractices.dev returning 503)npm run lint:psnpm run plugin:generatePR Generation Validation
Security Considerations
Additional Notes
scripts/linting/schemas/marketplace-manifest.schema.jsonserves as a specification artifact and is not consumed at runtime by the validation script. It could be integrated with a JSON Schema validator in a future enhancement.Test-PluginSourceFormatcontains a cosmetically redundant^\./regex check since the preceding[/\\]pattern already catches./prefixes. This does not affect correctness.namemust equalsource) means the source field is currently redundant, potentially intentional for forward compatibility if the two diverge.