Skip to content

Migrate plugins to Open Plugins format - #188

Merged
Priyanshu Agrawal (priyanshu92) merged 11 commits into
mainfrom
priyanshu92/migrate-open-plugins
Jun 19, 2026
Merged

Migrate plugins to Open Plugins format#188
Priyanshu Agrawal (priyanshu92) merged 11 commits into
mainfrom
priyanshu92/migrate-open-plugins

Conversation

@priyanshu92

@priyanshu92 Priyanshu Agrawal (priyanshu92) commented Jun 10, 2026

Copy link
Copy Markdown
Collaborator

This migrates the Power Platform plugin marketplace from Claude-specific manifest paths to the vendor-neutral Open Plugins layout so conformant plugin hosts can discover the marketplace and individual plugins consistently, while preserving compatibility for existing marketplace subscribers.

Summary

  • Moves the primary marketplace index to root marketplace.json and plugin manifests to .plugin/plugin.json.
  • Keeps legacy .claude-plugin paths as compatibility symlinks so existing subscriptions can auto-update without reinstalling the marketplace or plugins.
  • Makes the root marketplace manifest dual-compatible by using repository-root-relative plugin source paths and preserving legacy category/tags fields alongside Open Plugins metadata.
  • Updates documentation, eval fixtures, shared workflows, and validation scripts to use Open Plugins paths and ${PLUGIN_ROOT} where portable references are supported.
  • Converts plugin MCP configs to the Open Plugins mcpServers shape.
  • Keeps ${CLAUDE_PLUGIN_ROOT} for Claude Code MCP and hook command paths because Claude currently expands that variable for executable plugin configs under --plugin-dir.
  • Adds npx -y to the Playwright MCP launcher so startup does not pause on package install prompts.
  • Removes plugin MCP allow rules from repo-level .claude/settings.json because those settings are local to this repository, not distributed with plugins.

Validation

  • Parsed marketplace, plugin, MCP, and hook JSON files.
  • Ran node scripts/validate-legacy-compatibility.js.
  • Ran node scripts/validate-plugin-names.js.
  • Ran node scripts/validate-skill-descriptions.js.
  • Ran node scripts/ensure-skill-version-check.js --check.
  • Ran node --test plugins/power-pages/scripts/tests/.
  • Ran targeted marketplace/version checks after converting legacy manifests to symlinks.
  • Smoke tested npx -y @playwright/mcp@latest --help.

Move marketplace and plugin manifests to the vendor-neutral Open Plugins paths, update plugin path references, and align MCP configuration with Open Plugins discovery while preserving Claude Code runtime compatibility for local launcher paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 10, 2026 18:11
@priyanshu92
Priyanshu Agrawal (priyanshu92) requested a review from a team as a code owner June 10, 2026 18:11

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

This PR migrates the repository’s plugin marketplace and individual plugins from the legacy Claude-specific layout (e.g., .claude-plugin/marketplace.json, .claude-plugin/plugin.json) to the vendor-neutral Open Plugins layout (root marketplace.json, per-plugin .plugin/plugin.json), updating scripts, docs, eval fixtures, and MCP configuration accordingly.

Changes:

  • Relocates marketplace + plugin manifests to Open Plugins paths and updates docs/skills/agents/evals to reference ${PLUGIN_ROOT} (keeping ${CLAUDE_PLUGIN_ROOT} where required for Claude’s executable config expansion).
  • Updates validation and install scripts to support Open Plugins naming rules and new manifest locations (with legacy fallbacks).
  • Updates MCP server config shape to mcpServers and adjusts Playwright MCP launch args to use npx -y.
Show a summary per file
File Description
shared/skills/report-issue/SKILL.template.md Switches workflow link to ${PLUGIN_ROOT}.
shared/skills/report-issue/report-issue-workflow.md Updates manifest auto-detection path to .plugin/plugin.json.
scripts/validate-plugin-names.js Updates name validation to Open Plugins constraints and new manifest paths.
scripts/install.js Adds marketplace manifest path fallbacks (local + GitHub) for new/legacy layouts.
scripts/ensure-skill-version-check.js Updates required “Plugin check” line to reference ${PLUGIN_ROOT}.
README.md Documents new plugin (mcp-apps) and Open Plugins layout (manual install list updated).
plugins/power-pages/skills/test-site/SKILL.md Rewrites ${CLAUDE_PLUGIN_ROOT} references to ${PLUGIN_ROOT}.
plugins/power-pages/skills/setup-pipeline/SKILL.md Rewrites ${CLAUDE_PLUGIN_ROOT} references to ${PLUGIN_ROOT}.
plugins/power-pages/skills/setup-datamodel/SKILL.md Rewrites ${CLAUDE_PLUGIN_ROOT} references to ${PLUGIN_ROOT}.
plugins/power-pages/skills/setup-datamodel/references/odata-api-patterns.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/security-review/SKILL.md Updates script/template paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/scan-site/SKILL.md Updates script/template paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/scan-site/references/commands.md Updates command examples to ${PLUGIN_ROOT}.
plugins/power-pages/skills/report-issue/SKILL.md Updates plugin check + workflow link to ${PLUGIN_ROOT}.
plugins/power-pages/skills/plan-alm/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/manage-headers/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/manage-headers/references/commands.md Updates command examples to ${PLUGIN_ROOT}.
plugins/power-pages/skills/manage-firewall/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/manage-firewall/references/commands.md Updates command examples to ${PLUGIN_ROOT}.
plugins/power-pages/skills/integrate-webapi/SKILL.md Updates script/agent reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/integrate-backend/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/import-solution/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/force-link-environment/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/export-solution/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/ensure-pipelines-host/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/diagnose-deployment/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/deploy-site/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/deploy-pipeline/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/create-webroles/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/create-site/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/configure-env-variables/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/audit-permissions/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/add-server-logic/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/add-server-logic/references/server-logic-plan-data-format.md Updates render script path to ${PLUGIN_ROOT}.
plugins/power-pages/skills/add-seo/SKILL.md Updates reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/add-sample-data/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/add-sample-data/references/odata-record-patterns.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/add-cloud-flow/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/skills/activate-site/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/scripts/tests/launch-playwright-mcp.test.js Updates tests for npx -y @playwright/mcp@latest args.
plugins/power-pages/scripts/tests/check-version.test.js Adds test coverage for legacy marketplace path fallback.
plugins/power-pages/scripts/launch-playwright-mcp.js Adds -y to Playwright MCP launcher args.
plugins/power-pages/scripts/check-version.js Adds Open Plugins + legacy manifest path fallbacks and safer git access.
plugins/power-pages/references/skill-tracking-reference.md Updates tracking command path to ${PLUGIN_ROOT}.
plugins/power-pages/references/permissions-plan-data-format.md Updates render script path to ${PLUGIN_ROOT}.
plugins/power-pages/references/odata-common.md Updates shared script paths to ${PLUGIN_ROOT}.
plugins/power-pages/references/dataverse-prerequisites.md Updates shared script paths to ${PLUGIN_ROOT}.
plugins/power-pages/references/alm-docs-grounding.md Updates shared reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/PLUGIN_DEVELOPMENT_GUIDE.md Updates shared script path example to ${PLUGIN_ROOT}.
plugins/power-pages/agents/webapi-settings-architect.md Updates script paths to ${PLUGIN_ROOT}.
plugins/power-pages/agents/webapi-integration.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/agents/table-permissions-architect.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/power-pages/agents/data-model-architect.md Updates script/template paths to ${PLUGIN_ROOT}.
plugins/power-pages/AGENTS.md Updates documented layout + reference path conventions to ${PLUGIN_ROOT}.
plugins/power-pages/.plugin/plugin.json Adds Open Plugins manifest for power-pages plugin.
plugins/power-pages/.mcp.json Converts MCP config to mcpServers shape.
plugins/model-apps/skills/report-issue/SKILL.md Updates workflow link to ${PLUGIN_ROOT}.
plugins/model-apps/skills/genpage/SKILL.md Updates script/reference paths to ${PLUGIN_ROOT}.
plugins/model-apps/skills/genpage/edit-flow.md Updates reference paths to ${PLUGIN_ROOT}.
plugins/model-apps/scripts/generate-page-manifest.js Updates comment/documented command path to ${PLUGIN_ROOT}.
plugins/model-apps/references/supported-dependencies.md Updates manifest bump path to .plugin/plugin.json.
plugins/model-apps/references/rules.md Updates reference paths to ${PLUGIN_ROOT}.
plugins/model-apps/references/plan-schema.md Updates sample-path wording to ${PLUGIN_ROOT}.
plugins/model-apps/docs/architecture.md Updates documented manifest location to .plugin/plugin.json.
plugins/model-apps/agents/genpage-planner.md Updates reference/script paths to ${PLUGIN_ROOT}.
plugins/model-apps/agents/genpage-page-builder.md Updates reference/sample paths to ${PLUGIN_ROOT}.
plugins/model-apps/agents/genpage-entity-builder.md Updates reference/script paths to ${PLUGIN_ROOT}.
plugins/model-apps/agents/genpage-edit-planner.md Updates reference paths to ${PLUGIN_ROOT}.
plugins/model-apps/AGENTS.md Updates documented manifest location to .plugin/plugin.json.
plugins/model-apps/.plugin/plugin.json Minor description punctuation change (and Open Plugins path already in place).
plugins/model-apps/.mcp.json Converts MCP config to mcpServers shape.
plugins/mcp-apps/skills/report-issue/SKILL.md Updates workflow link to ${PLUGIN_ROOT}.
plugins/mcp-apps/.plugin/plugin.json Adds Open Plugins manifest for mcp-apps plugin.
plugins/code-apps/skills/report-issue/SKILL.md Updates workflow link to ${PLUGIN_ROOT}.
plugins/code-apps/skills/list-connections/SKILL.md Updates shared-instructions link to ${PLUGIN_ROOT}.
plugins/code-apps/skills/deploy/SKILL.md Updates shared-instructions link to ${PLUGIN_ROOT}.
plugins/code-apps/skills/create-code-app/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-teams/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-sharepoint/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-sharepoint/references/sharepoint-reference.md Updates connector-reference link to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-onedrive/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-office365/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-mcscopilot/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-excel/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-dataverse/SKILL.md Updates shared-instructions link to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-datasource/SKILL.md Updates shared-instructions link to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-connector/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/skills/add-azuredevops/SKILL.md Updates shared references to ${PLUGIN_ROOT}.
plugins/code-apps/shared/version-check.md Updates local+remote manifest paths to Open Plugins locations.
plugins/code-apps/agents/code-app-architect.md Updates shared reference links to ${PLUGIN_ROOT}.
plugins/code-apps/AGENTS.md Updates documented manifest location to .plugin/plugin.json.
plugins/code-apps/.plugin/plugin.json Adds Open Plugins manifest for code-apps plugin (name: code-apps-preview).
plugins/canvas-apps/skills/report-issue/SKILL.md Updates workflow link to ${PLUGIN_ROOT}.
plugins/canvas-apps/agents/canvas-screen-builder.md Updates reference path to ${PLUGIN_ROOT}.
plugins/canvas-apps/agents/canvas-app-planner.md Updates reference paths to ${PLUGIN_ROOT}.
plugins/canvas-apps/AGENTS.md Updates documented manifest location to .plugin/plugin.json.
plugins/canvas-apps/.plugin/plugin.json Adds Open Plugins manifest for canvas-apps plugin.
plugins/canvas-apps/.mcp.json Converts MCP config to mcpServers shape.
marketplace.json Moves to Open Plugins marketplace shape (pluginRoot + per-plugin metadata).
evals/power-pages/setup-auth/evals.json Updates expected command paths to ${PLUGIN_ROOT}.
evals/power-pages/create-site/evals.json Updates expected reference paths to ${PLUGIN_ROOT}.
evals/model-apps/genpage/lib/assertions-layer-1.js Updates assertions to ${PLUGIN_ROOT} reference paths.
evals/model-apps/genpage/fixtures/7-job-candidates-new-entities/workflow-log.md Updates fixture log to ${PLUGIN_ROOT} paths.
evals/model-apps/genpage/fixtures/4-case-wizard/workflow-log.md Updates fixture log to ${PLUGIN_ROOT} paths.
evals/model-apps/genpage/fixtures/13-contact-localization/workflow-log.md Updates fixture log to ${PLUGIN_ROOT} paths.
evals/model-apps/genpage/fixtures/1-account-card-gallery/workflow-log.md Updates fixture log to ${PLUGIN_ROOT} paths.
evals/model-apps/genpage/evals.json Updates expectations to ${PLUGIN_ROOT} reference paths.
AGENTS.md Updates repo-level guidance to Open Plugins paths and ${PLUGIN_ROOT}.
.claude/settings.json Removes MCP allow rules from repo-level Claude settings.

Copilot's findings

Tip

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

  • Files reviewed: 108/112 changed files
  • Comments generated: 2

Comment thread README.md Outdated
Comment thread plugins/code-apps/shared/version-check.md
Fix the manual install command for the code apps preview plugin and update the code apps version-check instructions to use the manifest plugin name consistently.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 11, 2026 11:00

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.

Copilot's findings

Comments suppressed due to low confidence (1)

marketplace.json:15

  • The power-pages version in marketplace.json (2.0.0) does not match the plugin manifest version in plugins/power-pages/.plugin/plugin.json (2.1.0). This will cause hosts/CLIs to surface incorrect version information for that plugin (and may break any tooling that expects the marketplace version to reflect the plugin manifest).
  • Files reviewed: 116/120 changed files
  • Comments generated: 1

Comment thread scripts/validate-plugin-names.js
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add .claude-plugin compatibility manifests alongside the Open Plugins metadata so existing marketplace subscriptions can continue to resolve legacy manifest paths during update. Add validation to keep the compatibility metadata in sync.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 15, 2026 05:35

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.

Copilot's findings

  • Files reviewed: 123/123 changed files
  • Comments generated: 0 new

Replace duplicated per-plugin .claude-plugin manifests with symlinks to the Open Plugins manifests. Keep the root legacy marketplace as a real compatibility shim because legacy clients expect repository-root-relative plugin sources.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make the root legacy marketplace manifest a symlink to marketplace.json by shaping the shared manifest to be compatible with both Open Plugins and legacy subscribers. Keep root-relative plugin sources and legacy category/tags fields while preserving Open Plugins metadata.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 15, 2026 09:05

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.

Copilot's findings

  • Files reviewed: 128/134 changed files
  • Comments generated: 2

Comment thread .github/workflows/validate-repository-metadata.yml Outdated
Comment thread scripts/install.js
Rename the plugin-name metadata workflow step to match Open Plugins validation and ensure the installer rejects unrelated local marketplace manifests before falling back to other sources.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolve conflicts by preserving the Open Plugins compatibility symlinks, carrying forward the Power Pages 2.2.0 metadata, and adopting the latest plan-alm planner updates from main with PLUGIN_ROOT resource paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 18, 2026 05:33

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.

Copilot's findings

  • Files reviewed: 128/134 changed files
  • Comments generated: 0 new

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@priyanshu92
Priyanshu Agrawal (priyanshu92) merged commit f001179 into main Jun 19, 2026
7 checks passed
@priyanshu92
Priyanshu Agrawal (priyanshu92) deleted the priyanshu92/migrate-open-plugins branch June 19, 2026 05:12
T-Nid (tyaginidhi) added a commit that referenced this pull request Jun 19, 2026
#188 (Open Plugins migration) merged after #192 and rebuilt the manifests with
`.plugin/plugin.json` = 2.2.0 — wiping #192's 2.3.0 bump — and made
`.claude-plugin/plugin.json` a symlink to it. So main's effective version
regressed to 2.2.0, and this PR's own bump (which targeted the now-symlinked old
path) became a no-op.

Set the canonical Open Plugins manifests to 2.4.0 (reflects #191+#192+#193; the
2.3.0 label for #192 is skipped but the end state is correct — #194 still lands
2.5.0):
- plugins/power-pages/.plugin/plugin.json: 2.2.0 -> 2.4.0
- marketplace.json (power-pages entry): 2.2.0 -> 2.4.0

The legacy `.claude-plugin/{plugin,marketplace}.json` symlinks follow
automatically. validate-legacy-compatibility.js: metadata in sync. 1229 tests pass,
alm-lint 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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