| name | local-difypkg-validator |
| description | Validate a local Dify .difypkg file with bundled Marketplace package validators. Use when a user wants to check a downloaded or locally built plugin package before submitting a PR, including package contents, secrets, binaries, manifest/privacy, README, dependencies, outbound access domains, dependency vulnerabilities, Python safety warnings, and financial-activity review signals. |
Local DIFYPKG Validator
Use this skill when the user wants to validate a local .difypkg package without opening or reviewing a GitHub PR.
Workflow
- Get the local
.difypkg path from the user.
- Check prerequisites before running validation:
command -v python3
command -v yq
If python3 is missing, ask the user before installing or direct them to install Python. If yq is missing, ask whether to install it with Homebrew (brew install yq) before continuing. Do not install dependencies silently.
- Run the bundled validator CLI from this skill:
python3 validator/validate-difypkg.py /path/to/plugin.difypkg
- The wrapper script is also available for agent environments that prefer
scripts/ entrypoints:
python3 scripts/validate_difypkg.py /path/to/plugin.difypkg
- By default, the skill uses its bundled
validator/ directory. To force use of an external toolkit checkout, pass:
python3 scripts/validate_difypkg.py /path/to/plugin.difypkg --toolkit-dir /path/to/dify-marketplace-toolkit
- Report the summary table and the report directory path.
- Treat exit code
0 as pass with possible warnings; exit code 1 means blocking errors or environment failures were found.
Optional Inputs
--pr-body-file <path>: run sensitive capability disclosure checks that need PR body text.
--keep-temp: keep the unpacked package and reports in the temp directory.
--output-dir <path>: write reports to a stable directory.
--offline: skip the dependency vulnerability lookup.
Prerequisites
python3 and yq must be available. The manifest validator uses yq.
The bundled validator CLI checks for yq at startup. In an interactive terminal it prompts before running brew install yq; in non-interactive environments it prints the install command and exits with code 1.
Coverage
Default local validation covers checks that can be evaluated from the .difypkg itself:
- package path and safe unzip
- package contents, size, and file count
- secret patterns
- executable binaries and platform daemon names
- manifest metadata and privacy policy
- README metadata
- dependency policy
- Python compile check
- Python safety warnings
- prohibited financial activity review warnings
- outbound access domains vs. the optional
network.domains manifest node
- dependency vulnerabilities looked up in the OSV database
The dependency vulnerability check is the only one that reaches the network. Pass --offline to skip it; the run then reports the dependency set without a verdict rather than reporting a clean one.
The skill is self-contained for local package checks: copying or installing the local-difypkg-validator folder includes the validator scripts it calls. It does not submit GitHub reviews and does not run PR-only checks unless the required local input is provided. PR title/body language, PR template completeness, and Marketplace duplicate-version checks remain PR/CI workflow responsibilities.
Expected Response
Summarize:
- whether the package passed blocking checks
- blocking categories and first few findings
- warning categories and first few findings
- skipped PR-only checks
- report directory path