Plugin System

Overview

Rimuru's plugin system allows you to extend functionality with community-built modules. Plugins can add new agent capabilities, MCP servers, workflow templates, and more.

Architecture

rimuru/
  plugins/
    rimuru-plugin-<name>/
      manifest.json    # Plugin metadata
      index.js         # Plugin entry point
      assets/          # Static assets
      docs/            # Plugin documentation

Plugin Manifest (manifest.json)

{
  "name": "rimuru-plugin-docs",
  "version": "1.0.0",
  "description": "Documentation generation plugin",
  "author": "Rimuru Team",
  "license": "MIT",
  "entry": "index.js",
  "capabilities": ["generate-docs"],
  "requires": {
    "rimuru": ">=1.0.0",
    "node": ">=18.0.0"
  }
}

Installing Plugins

From Marketplace

rimuru plugin install rimuru-plugin-docs
rimuru plugin install rimuru-plugin-testing
rimuru plugin install rimuru-plugin-deploy

From npm

npm install -g rimuru-plugin-custom
rimuru plugin add rimuru-plugin-custom

From Source

git clone https://github.com/rimuru/rimuru-plugin-example
rimuru plugin add ./rimuru-plugin-example

Managing Plugins

rimuru plugin list                 # List installed
rimuru plugin info <name>          # Show plugin details
rimuru plugin enable <name>        # Enable a plugin
rimuru plugin disable <name>       # Disable a plugin
rimuru plugin remove <name>        # Uninstall a plugin
rimuru plugin update <name>        # Update a plugin

Creating a Plugin

Quick Start

rimuru plugin create my-plugin
cd rimuru-plugin-my-plugin

Plugin Structure

rimuru-plugin-my-plugin/
├── manifest.json
├── index.js
├── assets/
└── README.md

Example Plugin (index.js)

module.exports = {
  name: 'my-plugin',

  async activate(context) {
    // Register a new MCP server
    context.registerMCP('my-tool', {
      command: 'python',
      args: ['server.py']
    });

    // Add a custom command
    context.registerCommand('my-plugin:hello', async () => {
      return 'Hello from my plugin!';
    });

    // Add a workflow template
    context.registerTemplate('my-workflow', {
      name: 'My Custom Workflow',
      agents: ['scraper', 'summarizer']
    });
  },

  async deactivate() {
    // Cleanup
  }
};

Available Plugins

PluginDescriptionDownloads
rimuru-plugin-docsDocumentation generation50K+
rimuru-plugin-testingTest automation35K+
rimuru-plugin-deployDeployment pipelines28K+
rimuru-plugin-monitorObservability22K+
rimuru-plugin-codegenCode generation18K+

Best Practices

  1. Use semantic versioning for your plugin
  2. Include comprehensive documentation
  3. Test with multiple Rimuru versions
  4. Handle errors gracefully
  5. Clean up resources on deactivation
  6. Follow the naming convention: rimuru-plugin-<name>