Skip to content
Simon Clark edited this page Apr 11, 2026 · 2 revisions

Indigo Claude Code Plugin

AI-powered development assistant for Indigo home automation. This Claude Code plugin gives you expert guidance for building Indigo plugins, integrating with the Indigo API, and creating control pages — all from your terminal.

What is this?

This is a plugin for Claude Code (Anthropic's AI coding assistant). When installed, it gives Claude deep knowledge of Indigo's plugin SDK, API, and control page system. Think of it as having an Indigo development expert available in your terminal.

What it helps with

  • Plugin Development — Create new plugins, add device types, implement lifecycle methods, debug issues
  • API Integration — Build iOS/web apps that connect to Indigo via WebSocket or HTTP
  • Control Pages — Design and export control page XML with device controls and layouts

Requirements

  • Claude Code CLI installed
  • An Indigo server (for testing plugins you build)

Installation

claude plugin add simons-plugins/indigo-claude-plugin

That's it. The plugin auto-activates when you're working on Indigo-related files.

Commands

Use these slash commands in Claude Code to invoke specific capabilities:

/indigo:dev — Plugin Development

Your main command for building Indigo plugins. Provides:

  • Quick Start Guide — Create your first plugin step by step
  • Plugin Lifecycle__init__, startup, shutdown, runConcurrentThread
  • Device DesignDevices.xml, ConfigUI fields, custom states
  • Plugin PreferencesPluginConfig.xml, pluginPrefs, validation
  • Custom EventsEvents.xml, trigger definitions
  • API Reference — Complete Indigo Object Model (IOM) split into focused topics:
    • Architecture, Command Namespaces, Device Classes
    • Trigger Classes, Filters, Subscriptions, Constants
  • 16 SDK Example Plugins — Working code for every device type:
    • Custom Device, Relay/Dimmer, Thermostat, Sensor
    • Speed Control, Sprinkler, Energy Meter
    • HTTP Responder, Action API, Broadcaster/Subscriber
    • Variable Subscriber, Database Traverse
  • Troubleshooting — Common issues and debugging techniques
  • Patterns — API patterns, open-source contributing guide

Example usage:

> /indigo:dev
> "Create a plugin that monitors my UPS battery level"

/indigo:api — API Integration

For building client applications (iOS, web, etc.) that connect to Indigo:

  • WebSocket API — Real-time device updates, command execution
  • HTTP API — RESTful device control, variable management
  • Authentication — Local and reflector authentication methods
  • Device Commands — Control lights, thermostats, sprinklers remotely

Example usage:

> /indigo:api
> "How do I connect to Indigo via WebSocket from a Swift iOS app?"

/indigo:control-pages — Control Page Builder

Guided creation of Indigo control page XML:

  • Schema Reference — All available control types and attributes
  • Image Library — Built-in Indigo control page images
  • Layout Guidance — Positioning, sizing, font selection
  • Export — Generate .textClipping files for drag-and-drop import

Example usage:

> /indigo:control-pages
> "Build a control page for my living room with light controls and thermostat"

Auto-Activation (Skills)

You don't always need to type a command. The plugin automatically activates when Claude detects you're working on relevant files:

Skill Triggers On
Plugin Development .indigoPlugin/ directories, plugin.py, Devices.xml, Actions.xml
API Integration WebSocket/HTTP integration code targeting Indigo
Control Pages Control page XML, .textClipping files

Tips for Best Results

Be specific about what you're building

# Good
"Create a sensor plugin that reads temperature from a REST API every 5 minutes"

# Less helpful
"Make a plugin"

Reference device types

Indigo has specific device types with their own behaviors:

  • Relay — On/off switches
  • Dimmer — Lights with brightness
  • Thermostat — HVAC with heat/cool setpoints
  • Sensor — Read-only values (temperature, humidity, motion)
  • Sprinkler — Multi-zone irrigation
  • Speed Control — Fan speed levels
  • Custom — Anything else with custom states

Ask for examples

"Show me the SDK example for a thermostat device"
"How does the HTTP Responder example handle web requests?"

Use for debugging

"My plugin's runConcurrentThread keeps crashing — here's the error"
"Why isn't my device state updating in Indigo?"

Documentation Structure

The plugin includes comprehensive offline documentation:

docs/
├── plugin-dev/
│   ├── quick-start.md              # Getting started guide
│   ├── concepts/
│   │   ├── plugin-lifecycle.md     # Lifecycle methods
│   │   ├── devices.md             # Device types & ConfigUI
│   │   ├── plugin-preferences.md   # Plugin prefs
│   │   └── events.md             # Custom triggers
│   ├── api/
│   │   ├── indigo-object-model.md  # API overview
│   │   └── iom/                   # Modular IOM reference
│   ├── patterns/
│   │   └── api-patterns.md        # Common patterns
│   ├── examples/
│   │   └── sdk-examples-guide.md   # Example catalog
│   └── troubleshooting/
│       └── common-issues.md        # Debugging guide
├── api/
│   ├── websocket-api.md           # WebSocket reference
│   ├── http-api.md                # REST API reference
│   ├── authentication.md          # Auth methods
│   └── device-commands.md         # Command reference
└── control-pages/
    ├── schema/                    # XML schema docs
    ├── images/                    # Built-in image catalog
    ├── layouts/                   # Layout patterns
    └── export/                    # Export tooling

Related Resources

Contributing

Found an issue or want to improve the documentation? PRs welcome at simons-plugins/indigo-claude-plugin.