Add power-automate-cloud-flow plugin (JSON LSP for cloud-flow files) - #1
Merged
Conversation
added 2 commits
July 21, 2026 11:10
Second marketplace plugin, mirroring dataverse-customization-xml's setup/LSP/test model but for Power Automate solution cloud flows. - Live schema validation of unpacked Workflows/*.json (and *.flow.json) via vscode-json-language-server, using a bundled draft-07 clientdata/WDL wrapper schema. Structure only: connector inputs are left loose because OpenApiConnection isn't in the public Logic Apps schema. - Server is npm ci-installed at setup, pinned in package-lock.json; not committed. Set-LspSchemaPaths.ps1 stamps the machine-local file:// schema URI into .lsp.json (CLAUDE_PLUGIN_ROOT isn't substituted in settings). - Install-Plugin.ps1 self-check drives the real server end-to-end (scripts/lsp-smoke.mjs) over both the push and pull config paths and asserts the schema fires (valid clean, invalid flagged). - Headless/CI structure checks via built-in Test-Json; semantic linting (runAfter/connectionName resolution, hardcoded values) stays in the power-automate-flow-dev skill. - Pester suite (config parity + fixture validation), CI on Windows + Ubuntu. Marketplace, CI, README, llms.txt and CHANGELOG updated for the new plugin.
Set-LspSchemaPaths built the file URI via [uri].AbsoluteUri, which returns an empty string for a rooted POSIX path on Linux PowerShell (stamped "schema -> "). Build the file:// URI by hand instead, so it is correct on Windows and Linux. Also make lsp-smoke.mjs read the json settings straight from .lsp.json (resolving a relative url to a file URI) rather than recomputing them, so the self-check exercises the actual stamped schema url and would catch a bad stamp directly.
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.
Adds a second marketplace plugin,
power-automate-cloud-flow, mirroringdataverse-customization-xml's setup/LSP/test model — so the marketplace now ships two LSPs: one for Dataverse customization XML, one for Power Automate cloud-flow JSON.What it does
Live schema validation of unpacked solution cloud flows (
Workflows/*.json,*.flow.json) as you hand-edit them, viavscode-json-language-serverand a bundled draft-07 clientdata/WDL wrapper schema. Malformed structure shows up as editor diagnostics beforepac solution import.This is the shape layer only. Cross-node semantics (
runAfter/connectionNameresolution, hard-coded env values) and the export/pack/import round-trip stay in thepower-automate-flow-devskill — the plugin defers to it explicitly and duplicates no rules.Design notes
inputsare left loose becauseOpenApiConnectionisn't in Microsoft's public Logic Apps schema — a strict$refwould produce more false positives than findings.pac solution check/ a successful import stays authoritative.npm ci-installed at setup, pinned inpackage-lock.json.Set-LspSchemaPaths.ps1stamps the machine-localfile://schema URI into.lsp.json(${CLAUDE_PLUGIN_ROOT}isn't substituted inside LSPsettings).Test-Jsonagainst the same schema the LSP loads.Verification
Install-Plugin.ps1self-check drives the real language server end-to-end (scripts/lsp-smoke.mjs) over both the push (didChangeConfiguration) and pull (workspace/configuration) config paths, asserting valid fixtures produce 0 diagnostics and invalid fixtures ≥1..lsp.jsoncommand+argsformat verified against the official plugin reference docs.Install (after merge)