langgenius/dify-plugins.
What You Need
- A working plugin project tested with the current Dify Community Edition or Dify Cloud.
- The Dify plugin CLI for packaging.
- Python 3 and
yqfor local validation. - A public source repository that reviewers and users can inspect.
The Marketplace accepts a packaged
.difypkg, not your source tree. Reviewers still use the source repository declared in your metadata and PR to understand behavior that cannot be proven from the package alone.Prepare the Package
- Runtime files
- Metadata and docs
- Dependencies
Include only files needed when the plugin runs:
manifest.yaml, provider or tool definitions, source code, dependencies, README files, privacy policy, and assets.Do not package development state such as .git/, virtual environments, caches, logs, .DS_Store, local settings, IDE files, or test artifacts. Never include .env files, access tokens, private keys, cloud credentials, or other secrets.Document Privacy and Network Access
YourPRIVACY.md or hosted privacy policy must describe what user data the plugin collects, stores, logs, or sends to third parties. If the plugin collects no user data, say so explicitly.
When a plugin contacts external services, you can declare the expected domains in manifest.yaml:
Classify the Risk
Choose the highest level that matches the plugin. You will select exactly one level in the Marketplace PR template.
For medium- and high-risk plugins, document the security boundary: how inputs are constrained, where data goes, which credentials are used, what timeouts apply, and how errors avoid exposing secrets.
Build and Validate Locally
1
Package the plugin
From the directory above your plugin project, run:The command creates a
.difypkg archive. Inspect its filename and file size before continuing.2
Clone the Marketplace Toolkit
3
Run package validation
--pr-body-file /path/to/pr-body.md.4
Resolve the report
Open
validation-report/summary.md, then inspect the generated *.errors.txt and *.warnings.txt files.Exit code 0 means no blocking package-level errors were found. Exit code 1 means a blocking finding or environment error must be resolved. Warnings do not fail validation, but reviewers may ask for clarification.Choose the Submission Type
- New plugin
- Version update
Create a package directory under your author namespace:The package metadata, source repository, contact information, README, privacy policy, and risk disclosure must all describe the same plugin.
Open the PR
1
Fork and synchronize the repository
Fork
langgenius/dify-plugins, then clone your fork and keep its main branch synchronized with upstream.2
Create a focused branch
.difypkg package:3
Commit and push
4
Create the pull request
Open a PR from your fork to
langgenius/dify-plugins:main. Keep the PR out of draft only when the package and description are ready for automated and human review.Complete the Submission Template
The current template is part of the review contract. Do not delete fields or replace it with a short free-form description.Plugin information
Plugin information
Provide the author, plugin name, version, public source repository, and a monitored contact channel. These values must agree with
manifest.yaml and the package documentation.Submission type and changes
Submission type and changes
Select New plugin or Version update, then explain what the plugin does or what changed in this version. Write release-note-quality details for updates, including migrations and breaking changes.
Risk level
Risk level
Select exactly one of Low risk, Medium risk, or High risk. The repository applies a matching
risk:* label. Selecting none or multiple levels produces risk: missing and a bot comment.Required checks
Required checks
Confirm package hygiene, testing, README quality, privacy coverage, and English localization only after verifying each item. If a requirement has a limitation, explain it in Reviewer notes instead of silently checking the box.
Security and privacy notes
Security and privacy notes
List command or code execution, SQL, SSH/SFTP, browser automation, file operations, arbitrary URL fetching, proxying, and sensitive-data handling. Write
None only when none apply.Local validation and reviewer notes
Local validation and reviewer notes
Paste the validator command and result. Add known limitations, package or binary exceptions, migration notes, and context reviewers need to interpret warnings.
Help Reviewers Verify Your Plugin
Handle PR Checks and Review
Opening the PR, pushing commits, or marking a draft ready for review starts the automated checks. Use the result to decide whether you need to act.
After approval and merge, the repository validates the package again and uploads it to the production Marketplace. You do not need to start CI or upload the approved package yourself.
Review Plugin Performance and Feedback in Creator Center
After your plugin appears in Marketplace, view its performance data on the Plugin page in Creator Center. Review individual ratings, likes, and feedback messages in Inbox.Review Your Published Plugins
Under your personal account, connect the GitHub account used to publish your plugins. If you have connected multiple accounts, select the account whose plugins you want to view. Each plugin card shows its downloads, overall rating, rating count, and likes.Review Plugin Performance and Feedback With Your Team
Select the organization your team uses. Any plugins listed there are visible to all organization members. When creating a new organization for plugins, find the Plugin ID on the plugin’s Marketplace details page. Enter the part before/ in Unique handle. For example, if the Plugin ID is team-name/plugin-name, enter team-name.
Plugin ID on the Marketplace Details Page
Claim Missing Organization Plugins
If a plugin published under your organization’s name does not appear on the organization’s Plugin page, open Claim plugin to request access to its performance data and feedback.- Under your personal account, select Claim plugin.
- For each plugin, copy its Plugin ID from its Marketplace details page and pair it with the PR that originally published it.
- Confirm your contact email and describe your role in maintaining the plugins. If a different GitHub account opened the PRs, explain why.
- Select Submit claim.
Related Resources
PR template
Review the live template before submitting; repository requirements can evolve.
Plugin review guidelines
See how maintainers inspect documentation, dependencies, privacy, and sensitive capabilities.