This guide covers how to set up and manage the VAISH plugin registry for production.
The plugin registry is a JSON file that lists all available plugins in the marketplace. Users browse and install plugins from this list.
Submission Flow:
- Developer creates a plugin and publishes to npm
- Developer submits PR to registry repo
- Maintainers review and merge
- Plugin appears in marketplace automatically
Create a new public repository called registry (or vaish-plugin-registry):
https://github.com/YOUR_USERNAME/registry
Create plugins.json in the repository root:
{
"plugins": [
{
"name": "vaish-plugin-economy",
"displayName": "Economy System",
"description": "Complete economy system with coins, work commands, shop, and leaderboards",
"author": "VAISH",
"version": "1.0.0",
"category": "features",
"permissions": ["db.read", "db.write", "commands.register"],
"requiresRestart": false,
"verified": true,
"npmPackage": "vaish-plugin-economy"
},
{
"name": "vaish-plugin-moderation",
"displayName": "Advanced Moderation",
"description": "Auto-mod, logs, slowmode, and advanced moderation tools",
"author": "VAISH",
"version": "1.0.0",
"category": "moderation",
"permissions": ["db.read", "db.write", "commands.register"],
"requiresRestart": false,
"verified": true,
"npmPackage": "vaish-plugin-moderation"
}
]
}Each plugin entry supports these fields:
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Internal name (npm package name) |
displayName |
string | Yes | Human-readable name |
description |
string | Yes | What the plugin does |
author |
string | Yes | Developer name |
version |
string | Yes | Current version |
category |
string | Yes | Category (see below) |
permissions |
array | No | Required permissions |
requiresRestart |
boolean | No | Needs bot restart to apply |
verified |
boolean | No | Official/audited plugin |
npmPackage |
string | Yes | Exact npm package name |
port |
number | No | Dashboard port if applicable |
configSchema |
object | No | Settings schema |
Use these category IDs:
| ID | Display Name |
|---|---|
features |
Features |
moderation |
Moderation |
entertainment |
Entertainment |
utility |
Utility |
analytics |
Analytics |
Create a README.md explaining the submission process:
# VAISH Plugin Registry
This repository contains the official list of VAISH plugins.
## Adding a Plugin
1. Publish your plugin to npm (must start with `vaish-plugin-`)
2. Fork this repository
3. Add your plugin to `plugins.json`
4. Submit a PR
## Plugin Requirements
- Must have a valid `plugin.json` manifest
- Must be published to npm
- Must not break the bot
- Must follow VAISH conventions
## Review Process
PRs are reviewed within 5 business days. We check for:
- Valid plugin.json
- Working npm package
- No security issues
- Proper Discord.py/discord.js usageIn your bot's environment:
# For GitHub raw URL
export PLUGIN_REGISTRY_URL="https://raw.githubusercontent.com/YOUR_USERNAME/registry/main/plugins.json"
# For custom server
export PLUGIN_REGISTRY_URL="https://your-server.com/plugins.json"If not set, defaults to:
https://raw.githubusercontent.com/vaish-plugin-registry/registry/main/plugins.json
When reviewing a PR, verify:
- Plugin has valid
plugin.json - npm package exists and is accessible
- Version matches package.json
- Description is accurate
- Category is appropriate
- No malicious code
- Plugin loads without errors
# Clone the repo
git clone https://github.com/vaish-plugin-registry/registry.git
cd registry
# Add the new plugin entry to plugins.json
# (use a text editor or jq)
# Commit and push
git add plugins.json
git commit -m "Add vaish-plugin-example"
git push origin main# Add a new plugin
jq '.plugins += [{
"name": "vaish-plugin-example",
"displayName": "Example Plugin",
"description": "An example plugin",
"author": "ExampleAuthor",
"version": "1.0.0",
"category": "features",
"requiresRestart": false,
"verified": false,
"npmPackage": "vaish-plugin-example"
}]' plugins.json > temp.json && mv temp.json plugins.jsonThe bot caches the registry for 30 minutes. To force refresh:
- Restart the bot, or
- The bot will fetch automatically on next request after cache expires
Monitor your registry:
# Test URL accessibility
curl -I https://raw.githubusercontent.com/YOUR_USERNAME/registry/main/plugins.json
# Validate JSON
curl -s https://raw.githubusercontent.com/YOUR_USERNAME/registry/main/plugins.json | jq .Keep a backup of plugins.json - it's your source of truth.
- Check the JSON is valid:
jq . plugins.json - Verify the npm package exists
- Ensure
npmPackagematches exactly - Wait for cache to expire (30 min) or restart bot
# Find syntax errors
jq plugins.json- Must be HTTPS
- Must return valid JSON
- Raw GitHub URL format:
https://raw.githubusercontent.com/USER/REPO/BRANCH/FILE
See vaish-plugin-registry/registry for a complete example.
- Issues: Open an issue on the registry repo
- Discord: VAISH Support