Skip to content
Work IQ Dev Tools are in preview (v0.26.0). Commands and APIs may change before 1.0. See the installation guide.

Validation & MVL

Validation checks a defined surface, not every aspect of a plugin. Use wiqd plugin validate and choose the mode for the inputs you want checked.

Terminal window
wiqd plugin validate --mode source --env dev
wiqd plugin provision --env dev
wiqd plugin package --env dev
wiqd plugin validate --mode package --env dev --package-file "<zip>"

Explicitly select offline source before provisioning or packaging; the default is package and uploads an existing ZIP. Provision before packaging so the selected environment and app identity exist.

Source checks require valid m365agents.yml and appPackage/manifest.json inside the project. They check the declared declarative-agent component when present, not full app-package schema/composition validity, skills or root connectors. No component means empty coverage; a declared component with missing canonical source fails. Neither an empty scope nor a source pass establishes whole-plugin validity. Package and Marketplace accept ZIP-only input without these source guards.

Source, package and Marketplace validation

Section titled “Source, package and Marketplace validation”

Choose one mode per invocation:

Terminal window
wiqd plugin validate --mode source --path ./my-agent --env local
wiqd plugin validate --mode package --package-file ./final.zip
wiqd plugin validate --mode marketplace --package-file ./final.zip --listing-file ./listing.json

Source runs offline checks on saved files, rather than unsaved editor buffers. It checks the saved DA file registered in appPackage/manifest.json, not a required filename, and returns checked files and diagnostic codes, severities and locations. It needs no ZIP, build, sign-in or report directory and does not start an LSP server. This is not project-wide or final-package acceptance. Environment context is limited to the selected --env (local by default).

Package is the default when --mode is omitted. It uploads a read-only copy of an existing captured ZIP to Teams Developer Portal (TDP). Marketplace includes that package validation and StoreOps policy checks on the same snapshot. Neither mode builds automatically. Select an explicit ZIP, or use a structurally recognized project with exactly one nonrecursive ZIP in appPackage/build; missing or ambiguous inputs fail rather than choosing the newest. Unavailable package authentication or incomplete provider execution cannot produce a pass. Individual unverified Marketplace policies remain visible without necessarily blocking the overall result.

Use the same project/environment for source and authorized package/provision operations. Source checks cannot prove that a later provision uploads a previously validated package. Validation never authorizes publication.

Exit 0 means passed; 1 means findings, incomplete provider execution, input or report-write failure; 2 means invalid source project or missing runtime/configuration; 130 means cancelled. Read success data or completed non-pass error.data and use validation.result for the overall verdict. Confirmed must-fix findings yield FAILED. Without blockers, incomplete provider execution yields ERROR; completed validation without must-fix findings is PASSED, even with warnings, suggestions or unverified policy checks. A pass is not complete policy coverage or official certification. Package/Marketplace reports preserve captured inputs; source has no HTML report.

Old modes static, deep, manifest and comma-combined selections are rejected with migration guidance, not silently mapped to uploads. Replace retired wiqd agent validate commands with wiqd plugin validate.

The VS Code extension provides live diagnostics, hovers and available quick fixes. Unsaved buffers and editor-only advisory checks can differ from saved-source results; neither promises identical editor and final-ZIP findings.