# Creating plugins

> Build a plugin, get it reviewed, and earn from the prompt it contributes.

Source: https://reverie.im/en/docs/plugins/creating-plugins
Language: en

Anyone signed in can write a plugin. Open a chat, go to the side panel's **Plugins** tab, and press **Create Plugin**. The editor walks through three steps: **Type**, **Basics**, and **Configuration**.

## Pick a type \[#pick-a-type]

You can create three of the four plugin types. The fourth adjusts model sampling settings and belongs to Reverie.

| Type                   | You author                                                                                                                              | Limits                                                                                                                                                             |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Prompt Plugin**      | A prompt template, written in Handlebars, that is appended to the character's system prompt                                             | Template up to 100,000 characters                                                                                                                                  |
| **Tool Plugin**        | A prompt template plus a tool definition: name, description, input parameters, output structure, and an optional HTML/CSS card template | Tool name starts with a letter and uses letters, digits and underscores, up to 64 characters; description up to 2,000; card template and styles up to 100,000 each |
| **Interactive Plugin** | An identifier and at least one of: a trigger button with a form, an AI-generated surface, or an AI-callable tool                        | Identifier up to 80 characters, letters/digits/hyphen/underscore, starting with a letter or digit                                                                  |

The type cannot be changed later — **Plugin type cannot be changed when editing**.

> A tool plugin performs no network requests. When the model calls your tool,
> the model invents the arguments, and your output structure and card template
> arrange those invented values for display. Write tools that present
> information — status panels, meters, inventories, dice rolls — not tools
> that claim to look something up.

## Fill in the basics \[#fill-in-the-basics]

**Plugin Name** is required, up to 100 characters. **Description** is optional, up to 1,000.

Two switches sit here, and they are independent — you can set either, both, or neither:

| Switch                               | Effect                                                                                           |
| ------------------------------------ | ------------------------------------------------------------------------------------------------ |
| **Make Plugin Public**               | Sends the version for review. Once approved, it is listed in the **Community** tab for everyone. |
| **Associate with Current Character** | Restricts the plugin to chats with the character you are in.                                     |

An AI-generated surface's content request is a template like a prompt template: it can use the same placeholders, such as `{{char}}`, `{{user}}` and `{{date}}`, and any settings you expose to installers. The page it produces is composed from a fixed set of components — headers, paragraphs, quotes, stat tiles, progress bars, ratings, timelines, checklists, tags, fact lists, callouts, dialogue bubbles, choice grids, switchable tabs, pictures, a collapsed spoiler block, buttons, and a text field the reader can type into — and it picks its look by meaning: a tone, a card style (plain, paper, glass or frame) and a density, all of which follow the reader's theme. Pictures come from the chat itself — the character's portrait or banner, the reader's avatar, the scenario or moment artwork — and a page can point at nothing else. Its buttons can speak for the reader, set a scene direction the character plays out, draw a random result on the reader's device, open a deeper page, refresh the page in place, or close it. The current time and the character's world canon are supplied automatically.

## Start from an example \[#start-from-an-example]

**Load Example** opens a catalog of starting points — Relationship Dynamics, Scene Setup, Lorebook / Memory Bank, Character Status Panel, Affection Meter, Dice / Skill Check, Time Lapse, Character Diary, Inner Thoughts, Truth or Dare and more, grouped by category.

These are templates for the editor, not plugins anyone has installed. Picking one fills the configuration fields so you can edit from something that already works; nothing about it is shared or published until you save and publish your own plugin.

## Let AI draft it \[#let-ai-draft-it]

Each type has an AI helper — **AI Generate** for a prompt template with variables, and equivalents for tool and interactive configurations. You describe what you want in a sentence or two and the editor fills the fields. Settings you expose to installers can also be filled this way, from **AI Fill Configuration**. Each generation spends credits.

## Preview and Debug are different \[#preview-and-debug-are-different]

|               | **Preview**                                                                                                  | **Debug**                                                                                     |
| ------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
| What it does  | Renders your template with test values you type in — character name defaults to *Alice*, user name to *User* | Runs the unsaved draft for real against the character whose chat you opened the editor from   |
| What it shows | Generated prompt, system prompt, and the rendered output                                                     | Character reply, rendered tool output, execution trace, model, duration, tokens               |
| Context used  | Placeholders only                                                                                            | A snapshot of the character, scenario, persona, memories, recent messages and enabled plugins |
| Cost          | Free                                                                                                         | Free — no credits are charged                                                                 |
| Allowance     | Unlimited                                                                                                    | 30 runs per 3 hours; the dialog shows runs remaining                                          |

Debug also caps the test message at 1,000 characters and the test configuration at 50,000 characters. A tool plugin can only be debugged on a tool-capable model.

## Publishing and review \[#publishing-and-review]

Saving a private plugin makes it usable immediately — by you, and it is installed into the chat you created it from. Turning on **Make Plugin Public** puts that version into review instead:

1. The card shows **Pending Approval** in your **My** tab, and nobody else can install it.
2. An automated pre-check runs on a schedule and records its verdict.
3. A person approves or rejects. Approved plugins show **Approved** and appear in the **Community** tab.

Editing an approved plugin creates a new version, which goes through review again — the card returns to **Pending Approval** while the previously approved version keeps running for everyone who installed it.

> Every save freezes an immutable copy of the plugin, including its
> translations. Installations run the copy they pinned, so people who
> installed version 2 stay on version 2 until they press update. Character
> defaults may only pin a version that has passed review.

## What you earn \[#what-you-earn]

When someone else uses your plugin in a paid message, you earn **5% of the credit cost of the text your plugin itself adds to the prompt** — not 5% of the message. The amount is the plugin's own prompt tokens, multiplied by the model's credit multiplier, times 5%, scaled by the share of that message that was paid for with paid credits.

Nothing is minted when:

| Case                                                | Why                                                               |
| --------------------------------------------------- | ----------------------------------------------------------------- |
| The plugin is official                              | Reverie's own plugins pay no commission                           |
| You use your own plugin                             | No self-payment                                                   |
| The plugin has no prompt template                   | Interactive plugins earn nothing — they add nothing to the prompt |
| The message was paid for entirely with free credits | The paid share is zero                                            |

> **Interactive plugins never earn commission.** If earning matters to you,
> build a prompt or tool plugin — those are the two types that contribute
> prompt text.

## Getting paid \[#getting-paid]

Commissions accumulate as pending credits and settle **monthly, on the 1st**. If your pending balance is under **100 credits** at settlement, nothing is paid out that month and the balance rolls forward to the next one.

**View Earnings** in the **My** tab shows **Total Earned**, **Pending**, **This Month** and **Next Settlement**, a per-plugin breakdown with revenue, usage count and last-used date, and your settlement history.

## Related \[#related]

* [Using plugins](https://reverie.im/en/docs/plugins/using-plugins) — how installers see your work
* [Plugins overview](https://reverie.im/en/docs/plugins) — the three kinds, side by side
* [Revenue streams](https://reverie.im/en/docs/creators/revenue-streams) — the other ways creators earn
* [Credits](https://reverie.im/en/docs/billing/credits) — what a credit is and how messages are priced
