Skip to content

Add Version Check script to canvas configure skill - #331

Open
McCall Saltzman (lesaltzm) wants to merge 3 commits into
mainfrom
lesltzm/version-check
Open

Add Version Check script to canvas configure skill#331
McCall Saltzman (lesaltzm) wants to merge 3 commits into
mainfrom
lesltzm/version-check

Conversation

@lesaltzm

Copy link
Copy Markdown
Contributor

We've seen folks not using the latest versions of the plugin. This adds a reminder script to the configure skill for canvas apps. We use dotnet file run as users should already have dotnet installed to use this plugin.

Copilot AI lite review requested due to automatic review settings July 28, 2026 23:36
@lesaltzm
McCall Saltzman (lesaltzm) requested a review from a team as a code owner July 28, 2026 23:36

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 an advisory “plugin out-of-date” reminder to the canvas-apps plugin by running a small version-check script at the start of the configure-canvas-mcp skill, and bumps related versions/docs to reflect the change.

Changes:

  • Added a .NET file-based script to compare the local canvas-apps plugin version vs the canonical manifest on main and print update instructions when newer exists.
  • Updated configure-canvas-mcp to run the version check before starting the skill workflow.
  • Bumped the plugin manifest versions (and updated plugin guidance) to include the new script.

Reviewed changes

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

Show a summary per file
File Description
plugins/canvas-apps/skills/configure-canvas-mcp/SKILL.md Adds an upfront “Plugin check” step and bumps the skill version.
plugins/canvas-apps/scripts/check-version.cs New .NET script that fetches the latest manifest and prints update instructions when local is behind.
plugins/canvas-apps/AGENTS.md Documents the new script and its intended best-effort behavior.
plugins/canvas-apps/.plugin/plugin.json Bumps the canvas-apps plugin version.
plugins/canvas-apps/.claude-plugin/plugin.json Keeps the legacy mirror manifest version in sync.

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

Comment thread plugins/canvas-apps/skills/configure-canvas-mcp/SKILL.md
Comment thread plugins/canvas-apps/scripts/check-version.cs
@lesaltzm

Copy link
Copy Markdown
Contributor Author

Copilot resolve the merge conflicts in this pull request

Co-authored-by: lesaltzm <69215460+lesaltzm@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 28, 2026 23:21

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

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

Comment thread plugins/canvas-apps/scripts/check-version.cs
Comment thread plugins/canvas-apps/scripts/check-version.cs

Copilot AI commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Copilot resolve the merge conflicts in this pull request

Resolved the merge conflicts and merged origin/main into this branch in commit bd6a974.

private const string DefaultManifestUrl =
"https://raw.githubusercontent.com/microsoft/power-platform-skills/main/plugins/canvas-apps/.plugin/plugin.json";

private static async Task<int> Main(string[] args)

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.

consider not returning int since it doesn't look like we returning anything other than success. Task should be fine I believe.


private static int CompareVersions(string left, string right)
{
string[] leftSegments = left.Split('.');

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.

use System.Version instead? let's not rewrite the parsing logic. and we can use Version.TryParse too


private static PluginManifest ParseManifest(string json)
{
using JsonDocument document = JsonDocument.Parse(json);

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.

why are we not using JsonSerializer.Deserialize<PluginManifest> and passing in options to ignore extra peroperties. heck, it can also handle the parsing to Version

allowed-tools: Bash, AskUserQuestion, mcp__canvas-authoring__connect
---

> **Plugin check**: Run `dotnet run --file "${PLUGIN_ROOT}/scripts/check-version.cs" --verbosity quiet -- --plugin-root "${PLUGIN_ROOT}"` — if it outputs a message, show it to the user before proceeding.

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.

should we add a TargetFramework?

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.

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.

4 participants