---
dimensions:
  type:
    primary: conceptual
    detail: architecture
  level: beginner
standard_title: Cheatsheet
language: en
title: Dify Plugin Development Cheatsheet
description: A comprehensive reference guide for Dify plugin development, including
  environment requirements, installation methods, development process, plugin categories
  and types, common code snippets, and solutions to common issues. Suitable for developers
  to quickly consult and reference.
---

### Environment Requirements

-   Python version ≥ 3.12
-   Dify plugin scaffold tool (dify-plugin-daemon)

> Learn more: [Initializing Development Tools](/plugin-dev-en/0221-initialize-development-tools)

### Obtaining the Dify Plugin Development Package

[Dify Plugin CLI](https://github.com/langgenius/dify-plugin-daemon/releases)

#### Installation Methods for Different Platforms

**macOS [Brew](https://github.com/langgenius/homebrew-dify) (Global Installation):**

```bash
brew tap langgenius/dify
brew install dify
```

After installation, open a new terminal window and enter the `dify version` command. If it outputs the version information, the installation was successful.

**macOS ARM (M Series Chips):**

```bash
# Download dify-plugin-darwin-arm64
chmod +x dify-plugin-darwin-arm64
./dify-plugin-darwin-arm64 version
```

**macOS Intel:**

```bash
# Download dify-plugin-darwin-amd64
chmod +x dify-plugin-darwin-amd64
./dify-plugin-darwin-amd64 version
```

**Linux:**

```bash
# Download dify-plugin-linux-amd64
chmod +x dify-plugin-linux-amd64
./dify-plugin-linux-amd64 version
```

**Global Installation (Recommended):**

```bash
# Rename and move to system path
# Example (macOS ARM)
mv dify-plugin-darwin-arm64 dify
sudo mv dify /usr/local/bin/
dify version
```

### Running the Development Package

Here we use `dify` as an example. If you are using a local installation method, please replace the command accordingly, for example `./dify-plugin-darwin-arm64 plugin init`.

### Plugin Development Process

#### 1. Create a New Plugin

```bash
./dify plugin init
```

Follow the prompts to complete the basic plugin information configuration

> Learn more: [Dify Plugin Development: Hello World Guide](/plugin-dev-en/0211-getting-started-dify-tool)

#### 2. Run in Development Mode

Configure the `.env` file, then run the following command in the plugin directory:

```bash
python -m main
```

> Learn more: [Remote Debugging Plugins](/plugin-dev-en/0411-remote-debug-a-plugin)

#### 4. Packaging and Deployment

Package the plugin:

```bash
cd ..
dify plugin package ./yourapp
```

> Learn more: [Publishing Overview](/plugin-dev-en/0321-release-overview)

### Plugin Categories

#### Tool Labels

Category `tag` [class ToolLabelEnum(Enum)](https://github.com/langgenius/dify-plugin-sdks/blob/main/python/dify_plugin/entities/tool.py)

```python
class ToolLabelEnum(Enum):
    SEARCH = "search"
    IMAGE = "image"
    VIDEOS = "videos"
    WEATHER = "weather"
    FINANCE = "finance"
    DESIGN = "design"
    TRAVEL = "travel"
    SOCIAL = "social"
    NEWS = "news"
    MEDICAL = "medical"
    PRODUCTIVITY = "productivity"
    EDUCATION = "education"
    BUSINESS = "business"
    ENTERTAINMENT = "entertainment"
    UTILITIES = "utilities"
    OTHER = "other"
```

### Plugin Type Reference

Dify supports the development of various types of plugins:

-   **Tool plugin**: Integrate third-party APIs and services
    > Learn more: [Dify Plugin Development: Hello World Guide](/plugin-dev-en/0211-getting-started-dify-tool)

-   **Model plugin**: Integrate AI models
    > Learn more: [Model Plugin](/plugin-dev-en/0411-model-plugin-introduction), [Quick Integration of a New Model](/plugin-dev-en/0211-getting-started-new-model)

-   **Agent strategy plugin**: Customize Agent thinking and decision-making strategies
    > Learn more: [Agent Strategy Plugin](/plugin-dev-en/9433-agent-strategy-plugin)

-   **Extension plugin**: Extend Dify platform functionality, such as Endpoints and WebAPP
    > Learn more: [Extension Plugin](/plugin-dev-en/9231-extension-plugin)

-   **Data source plugin**: Serve as the document data source and starting point for knowledge pipelines
    > Learn more: [Data Source Plugin](/plugin-dev-en/0222-datasource-plugin)

-   **Trigger plugin**: Automatically trigger Workflow execution upon third-party events
    > Learn more: [Trigger Plugin](/plugin-dev-en/0222-trigger-plugin)

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[Edit this page](https://github.com/langgenius/dify-docs/edit/main/plugin-dev-en/0131-cheatsheet.mdx) | [Report an issue](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)

