Skip to content

Add canvas-specific intake validation for external plugins#2319

Merged
aaronpowell merged 2 commits into
mainfrom
aaronpowell-external-canvas-plugin-intake
Jul 16, 2026
Merged

Add canvas-specific intake validation for external plugins#2319
aaronpowell merged 2 commits into
mainfrom
aaronpowell-external-canvas-plugin-intake

Conversation

@aaronpowell

Copy link
Copy Markdown
Contributor

Pull Request Checklist

  • I have read and followed the CONTRIBUTING.md guidelines.
  • I have read and followed the Guidance for submissions involving paid services.
  • My contribution adds a new instruction, prompt, agent, skill, workflow, or canvas extension file in the correct directory.
  • The file follows the required naming convention.
  • The content is clearly structured and follows the example format.
  • I have tested my instructions, prompt, agent, skill, workflow, or canvas extension with GitHub Copilot.
  • I have run npm start and verified that README.md is up to date.
  • I am targeting the main branch for this pull request.

Description

This updates the external plugin intake flow so canvas-specific validation runs only when a submission declares the canvas keyword, while keeping normal external plugin submissions unchanged.

For canvas submissions, intake now verifies logo: "assets/preview.png" and checks that both the plugin manifest and preview image can be resolved from the submitted immutable release locator (source.sha or source.ref). Intake evaluation now also emits an isCanvasPlugin flag and automatically applies a dedicated external-plugin-canvas label. The setup-labels workflow and command-router override path were updated so this label is created and preserved during manual state transitions.

The issue template now instructs submitters to include the canvas keyword when appropriate and clarifies that canvas asset validation is tied to the submitted immutable sha/ref.


Type of Contribution

  • New instruction file.
  • New prompt file.
  • New agent file.
  • New plugin.
  • New skill file.
  • New agentic workflow.
  • New canvas extension.
  • Update to existing instruction, prompt, agent, plugin, skill, workflow, or canvas extension.
  • Other (please specify):

Additional Notes

Validation run: npm run plugin:validate.


By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 0f03fd92-3bfa-4c67-a709-177fbd46c40e
Copilot AI review requested due to automatic review settings July 16, 2026 06:51
@github-actions github-actions Bot added the workflow PR touches workflow automation label Jul 16, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds canvas-specific validation and labeling to external plugin intake.

Changes:

  • Validates canvas manifests and preview assets at immutable locators.
  • Adds and preserves the external-plugin-canvas label.
  • Updates submission guidance for canvas plugins.
Show a summary per file
File Description
eng/external-plugin-intake.mjs Detects and validates canvas submissions.
eng/external-plugin-intake-state.mjs Applies the canvas label during intake transitions.
.github/workflows/setup-labels.yml Creates the canvas label.
.github/workflows/external-plugin-command-router.yml Preserves the label during manual override.
.github/ISSUE_TEMPLATE/external-plugin.yml Documents canvas submission requirements.

Review details

  • Files reviewed: 5/5 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread eng/external-plugin-intake.mjs
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 16, 2026 06:54
@aaronpowell
aaronpowell merged commit fb80ec4 into main Jul 16, 2026
18 of 19 checks passed
@aaronpowell
aaronpowell deleted the aaronpowell-external-canvas-plugin-intake branch July 16, 2026 06:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Review details

  • Files reviewed: 5/5 changed files
  • Comments generated: 2
  • Review effort level: Medium

Comment on lines +414 to +417
if (response.kind === "apiError") {
sawManifestApiError = true;
continue;
}
Comment on lines +59 to +63
const EXTERNAL_PLUGIN_ROOT_MANIFEST_PATHS = Object.freeze([
".github/plugin/plugin.json",
".plugin/plugin.json",
"plugin.json",
]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

workflow PR touches workflow automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants