Add SkillWard plugin#2603
Merged
Merged
Conversation
crazywoola
requested changes
Jun 25, 2026
crazywoola
left a comment
Member
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
dify_plugin version |
❌ Fail | dify_plugin version must be >= 0.9.0; found 0.6.2. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-6mq1rs04/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-6mq1rs04/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=3034, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
✅ Pass | icon exists: _assets/icon.svg | None. |
Version check |
✅ Pass | version 0.0.8 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=2104, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
❌ Fail | dify_plugin version must be >= 0.9.0; found 0.6.2. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-6mq1rs04/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-6mq1rs04/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
✅ Pass | packaging check passed. | None. |
Next steps
- dify_plugin version: Use dify_plugin >= 0.9.0 in the packaged plugin environment.
- Install test: Fix the plugin so test-plugin-install.py passes.
Please address these issues and push an update.
Contributor
Author
|
I have pushed a fix for the dify_plugin SDK version requirement. The workflow is currently awaiting maintainer approval. Thank you for reviewing. |
crazywoola
requested changes
Jun 26, 2026
crazywoola
left a comment
Member
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-6vqgt4o8/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-6vqgt4o8/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=3034, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
✅ Pass | icon exists: _assets/icon.svg | None. |
Version check |
✅ Pass | version 0.0.8 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=2104, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
✅ Pass | dify_plugin version 0.9.1 satisfies >= 0.9.0. | None. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-6vqgt4o8/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-6vqgt4o8/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
✅ Pass | packaging check passed. | None. |
Next steps
- Install test: Fix the plugin so test-plugin-install.py passes.
Please address these issues and push an update.
Contributor
Author
|
Thanks for the review. I pushed a follow-up commit ( |
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.
Plugin Submission
Plugin information
Submission type
What changed
Add SkillWard, a tool plugin for reviewing AI Agent Skill archives before publication or deployment.
This initial Marketplace release exposes one stable tool,
scan_skill_archive. Users upload a.zip,.tar.gz, or.tgzarchive containing an Agent Skill withSKILL.md; the plugin forwards the archive to the hosted SkillWard/api/scan/archiveendpoint and returns a structured security report.SkillWard is still under active development, and a major update is planned after this initial Marketplace release.
Risk level
The plugin processes uploaded archives and sends them to the hosted SkillWard backend. Depending on user settings, the hosted backend may perform LLM safety evaluation and Docker sandbox runtime verification.
Required checks
.envfiles,.gitdirectories, virtual environments, caches, logs, or IDE files.PRIVACY.mdor a hosted privacy policy, andmanifest.yamlreferences it.Security and privacy notes
SkillWard handles user-uploaded Skill archives. The plugin sends one uploaded archive and scan options to the configured SkillWard API base URL. The hosted backend receives the archive through
/api/scan/archive, extracts it into a temporary working directory, performs the requested scan, and returns a structured report.Uploaded archives and extracted files are used only for the requested scan. They are not published, shared, sold, or redistributed by the plugin. Temporary working files created for extraction and scanning are removed after the scan finishes.
Depending on user-selected scan options, the hosted backend may perform static analysis, LLM-based safety evaluation, and Docker sandbox runtime verification. If LLM evaluation is enabled, relevant Skill content may be sent to the model service configured by the SkillWard backend for the purpose of producing the security assessment.
The plugin package does not include secrets, local credentials, executables, bundled binaries, virtual environments, or cache directories.
Local validation
Result: 5 unit tests passed, Python compile check passed, and package creation succeeded.
Package verification:
fangcunai/skillward/skillward-0.0.8.difypkgmanifest.yaml,README.md,PRIVACY.md,_assets/, provider code, client code, andscan_skill_archive.Reviewer notes
This first release only exposes archive upload scanning. SkillWard is still being actively iterated, and a future major update is planned to improve the hosted scan and report workflow.