Skip to content

[Feature] Plugin system for custom tools and commands #5

@DaveSimoes

Description

@DaveSimoes

🧩 Plugin System for Custom Tools and Commands

This is a roadmap feature open for community contribution!

🎯 Overview

We want CrustAI to support a plugin architecture so developers can
add custom commands and tool integrations without modifying the core codebase.

💡 Vision

// Example: a user-created plugin
export default {
  name: 'weather',
  command: '/weather',
  description: 'Get current weather for a city',
  async handle({ args, reply }) {
    const data = await fetchWeather(args[0]);
    reply(`🌤️ ${data.city}: ${data.temp}°C`);
  }
};

Users drop this file into a plugins/ folder and CrustAI auto-loads it.

🏗️ What needs to be built

  • Plugin loader in src/core/ that scans a plugins/ directory on startup
  • Plugin interface/contract (what methods a plugin must export)
  • Command registry that maps /command → plugin handler
  • 2 example plugins to document the pattern:
    • /weather — simple HTTP fetch
    • /remind — scheduled message reminder
  • Documentation in docs/ for plugin authors

✅ Acceptance Criteria

  • Plugins loaded dynamically at startup with no core code changes
  • Broken plugins fail gracefully with a warning (no crash)
  • Works across all adapters (Telegram, Discord, WhatsApp, Slack)
  • CONTRIBUTING.md updated with plugin development guide

📐 Architecture discussion

Before coding, let's align on the plugin interface.
Please share your design proposal in the comments!


🚀 This is a high-impact architectural feature. Ideal for experienced JS devs
who want to leave a lasting mark on the project. We'll credit you prominently in the README!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions