Plugin Type Reference

This section provides detailed documentation for each plugin type in Lightfall.

Overview

Type

Base Class

Purpose

Singleton

settings

SettingsPlugin

Add preferences pages

Yes

panel

PanelPlugin

Add application panels

Yes

plan

PlanPlugin

Register Bluesky plans

Yes

engine

EnginePlugin

Provide execution backends

Yes

theme

ThemePlugin

Define color themes

Yes

statusbar

StatusBarPlugin

Add status bar indicators

Yes

controller

ControllerPlugin

Device-specific control widgets

Yes

mcp_tool

MCPToolPlugin

Claude assistant tools

Yes

skill

SkillPlugin

Claude assistant expertise

Yes

Common Interface

All plugin types inherit from PluginType and share these characteristics:

Class Attributes

class PluginType(ABC):
    type_name: ClassVar[str] = "base"       # Unique type identifier
    description: ClassVar[str] = "..."      # Human-readable description
    is_singleton: ClassVar[bool] = False    # One instance per plugin?

Required Property

@property
@abstractmethod
def name(self) -> str:
    """Unique identifier within this plugin type."""
    ...

Optional Methods

def get_introspection_data(self) -> dict[str, Any]:
    """Return plugin metadata for debugging/MCP tools."""
    return {
        "type": self.type_name,
        "name": self.name,
        "class": self.__class__.__name__,
        "module": self.__class__.__module__,
    }

Choosing a Plugin Type

UI Extensions

Goal

Plugin Type

Add a preferences page

SettingsPlugin

Add a new panel/dock widget

PanelPlugin

Add custom device control widget

ControllerPlugin

Add a status indicator

StatusBarPlugin

Add a color theme

ThemePlugin

Data Acquisition

Goal

Plugin Type

Add a Bluesky scan plan

PlanPlugin

Add an execution backend

EnginePlugin

Claude Assistant

Goal

Plugin Type

Add tools Claude can call

MCPToolPlugin

Add domain expertise/context

SkillPlugin

Documentation Template

Each plugin type page follows this structure:

  1. Purpose - What this plugin type is for

  2. Base Class - Import path and class name

  3. Class Attributes - Type-specific class attributes

  4. Required Methods - Methods you must implement

  5. Optional Methods - Methods you can override

  6. Lifecycle - When methods are called

  7. Complete Example - Working implementation

  8. Registration - How to register the plugin