Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alsk1992 avatar

Plugins

  • 12 installs
  • 610 repo stars
  • Updated June 26, 2026
  • alsk1992/cloddsbot

Plugins (in cloddsbot) is a skill that installs, manages, and authors plugins that extend a bot with new commands, tools, and event handlers.

About

This skill manages the plugin system that extends a bot's functionality. A developer uses it to install plugins from a registry, URL, or local path, enable/disable and update them, and edit their settings. It also defines how to author custom plugins that register commands, tools, and event handlers under scoped permissions.

  • Installs, manages, and configures plugins to extend a bot's functionality
  • Plugin lifecycle: install, enable/disable, update, configure, uninstall
  • Custom plugins register commands, tools, and event handlers with scoped permissions

Plugins by the numbers

  • 12 all-time installs (skills.sh)
  • Ranked #502 of 782 Skill Development skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

plugins capabilities & compatibility

Capabilities
agent tooling
Use cases
orchestration
Pricing
Free
From the docs

What plugins says it does

Install, manage, and configure plugins to extend Clodds functionality.
SKILL.md
Plugin management, installation, and lifecycle control
SKILL.md
npx skills add https://github.com/alsk1992/cloddsbot --skill plugins

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs12
repo stars610
Last updatedJune 26, 2026
Repositoryalsk1992/cloddsbot

What it does

Install, configure, and author plugins that extend a bot's commands and tools.

When should I use this skill?

You want to install or build plugins that add commands or tools to the bot.

What you get

Installed, configured plugins that register new commands and tools for the agent.

By the numbers

  • 5 plugin permissions
  • 3 install sources (registry, URL, local path)

Files

SKILL.mdMarkdownGitHub ↗

Plugins - Complete API Reference

Install, manage, and configure plugins to extend Clodds functionality.

---

Chat Commands

List Plugins

/plugins                                    List installed plugins
/plugins available                          Browse available plugins
/plugins search <query>                     Search plugin registry

Install/Remove

/plugins install <name>                     Install from registry
/plugins install <url>                      Install from URL
/plugins uninstall <id>                     Remove plugin
/plugins update <id>                        Update plugin
/plugins update-all                         Update all plugins

Enable/Disable

/plugins enable <id>                        Enable plugin
/plugins disable <id>                       Disable plugin
/plugins restart <id>                       Restart plugin

Configuration

/plugins config <id>                        View plugin settings
/plugins set <id> <key> <value>             Update setting
/plugins reset <id>                         Reset to defaults

---

TypeScript API Reference

Create Plugin Manager

import { createPluginManager } from 'clodds/plugins';

const plugins = createPluginManager({
  // Plugin directory
  pluginDir: './plugins',

  // Registry URL
  registry: 'https://plugins.clodds.ai',

  // Auto-update
  autoUpdate: true,
  updateCheckIntervalMs: 86400000,  // Daily
});

List Plugins

// Get installed plugins
const installed = plugins.list();

for (const plugin of installed) {
  console.log(`${plugin.id}: ${plugin.name} v${plugin.version}`);
  console.log(`  Status: ${plugin.status}`);  // 'enabled' | 'disabled' | 'error'
  console.log(`  Description: ${plugin.description}`);
}

Install Plugin

// Install from registry
await plugins.install('advanced-charts');

// Install from URL
await plugins.install('https://github.com/user/plugin/releases/latest/plugin.zip');

// Install from local path
await plugins.install('/path/to/plugin');

Enable/Disable

// Enable plugin
await plugins.enable('advanced-charts');

// Disable plugin
await plugins.disable('advanced-charts');

// Check status
const status = plugins.getStatus('advanced-charts');
console.log(`Enabled: ${status.enabled}`);

Configure Plugin

// Get plugin settings
const settings = plugins.getSettings('advanced-charts');
console.log(settings);

// Update settings
await plugins.setSettings('advanced-charts', {
  theme: 'dark',
  refreshInterval: 5000,
});

// Reset to defaults
await plugins.resetSettings('advanced-charts');

Uninstall Plugin

await plugins.uninstall('advanced-charts');

Create Custom Plugin

// plugins/my-plugin/index.ts
import { Plugin, PluginContext } from 'clodds/plugins';

export default class MyPlugin implements Plugin {
  id = 'my-plugin';
  name = 'My Custom Plugin';
  version = '1.0.0';
  description = 'Adds custom functionality';

  // Default settings
  defaultSettings = {
    enabled: true,
    threshold: 0.5,
  };

  async onLoad(ctx: PluginContext) {
    console.log('Plugin loaded!');

    // Register commands
    ctx.registerCommand({
      name: 'my-command',
      description: 'Does something cool',
      handler: async (args) => {
        return `Result: ${args.join(' ')}`;
      },
    });

    // Register tools
    ctx.registerTool({
      name: 'my-tool',
      description: 'A custom tool',
      execute: async (params) => {
        return { result: 'success' };
      },
    });

    // Subscribe to events
    ctx.on('message', async (msg) => {
      if (msg.content.includes('hello')) {
        await ctx.reply('Hello back!');
      }
    });
  }

  async onUnload(ctx: PluginContext) {
    console.log('Plugin unloaded!');
  }

  async onSettingsChange(settings: any, ctx: PluginContext) {
    console.log('Settings updated:', settings);
  }
}

Plugin Lifecycle

// Events
plugins.on('installed', (plugin) => {
  console.log(`Installed: ${plugin.name}`);
});

plugins.on('enabled', (plugin) => {
  console.log(`Enabled: ${plugin.name}`);
});

plugins.on('disabled', (plugin) => {
  console.log(`Disabled: ${plugin.name}`);
});

plugins.on('error', (plugin, error) => {
  console.error(`Plugin error: ${plugin.name}`, error);
});

---

Plugin Structure

my-plugin/
├── index.ts          # Main plugin file
├── package.json      # Plugin metadata
├── settings.json     # Default settings
├── commands/         # Command handlers
├── tools/            # Tool definitions
└── assets/           # Static assets

package.json

{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "My custom plugin",
  "main": "index.ts",
  "clodds": {
    "minVersion": "0.1.0",
    "permissions": ["network", "storage"],
    "commands": ["my-command"],
    "tools": ["my-tool"]
  }
}

---

Plugin Permissions

PermissionAccess
networkHTTP/WebSocket requests
storageLocal file storage
execShell command execution
tradingTrading APIs
memoryUser memory access

---

Best Practices

1. Minimal permissions — Only request what you need 2. Handle errors — Don't crash on plugin errors 3. Clean unload — Release resources on unload 4. Version compatibility — Check minVersion 5. Document settings — Explain configuration options

Related skills

FAQ

Where can plugins be installed from?

From the registry, a URL, or a local path.

What can a custom plugin register?

Commands, tools, and event handlers, gated by permissions like network, storage, exec, trading, and memory.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.