companion-feedbacks

Implement boolean and advanced feedback definitions for Bitfocus Companion modules using @companion-module/base.

Updated May 19, 2026
One-click install
npx skills add https://github.com/digitaldrummerj/bitfocus-companion-skills --skill companion-feedbacks-digitaldrummerj
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: companion-feedbacks
Source: https://github.com/digitaldrummerj/bitfocus-companion-skills/tree/main/plugins/companion-feedbacks
Command: npx skills add https://github.com/digitaldrummerj/bitfocus-companion-skills --skill companion-feedbacks-digitaldrummerj

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @companion-module/base.

What problem does it solve? Building Bitfocus Companion modules requires correctly wiring feedbacks so buttons reflect device state, but the boolean vs advanced feedback APIs, styling properties, and re-check triggers are easy to misuse. This Skill provides the patterns and API reference needed to implement state-driven button styling without guesswork. ## Core Features & Use Cases - Boolean Feedbacks: Define simple on/off styling with defaultStyle, combineRgb() colors, options, and showInvert support. - Advanced Feedbacks: Render custom text, PNG images, sizes, colors, and alignment through CompanionAdvancedFeedbackResult. - State-Driven Updates: Trigger re-evaluation with checkFeedbacks() and checkAllFeedbacks(), and manage polling with subscribe/unsubscribe lifecycles. - Use Case: When a device mute state changes, update the module's cached state and call self.checkFeedbacks('is_muted') so the button instantly turns red using the boolean feedback's defaultStyle. ## Quick Start Ask the agent to add a boolean feedback that turns the button red when the device is muted in your Companion module.

Frequently Asked Questions about companion-feedbacks

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a feedback to a Bitfocus Companion module?▼

Define feedbacks inside an UpdateFeedbacks function that calls self.setFeedbackDefinitions() with CompanionFeedbackDefinition entries. Each boolean feedback needs a type, name, options, defaultStyle using combineRgb() colors, and a callback returning true or false.

What is the difference between boolean and advanced feedbacks in Companion?▼

Boolean feedbacks return true to apply a predefined defaultStyle, suiting simple on/off indicators. Advanced feedbacks return a full CompanionAdvancedFeedbackResult with custom text, PNG images, colors, size, and alignment for complete rendering control.

How do I update Companion button colors when device state changes?▼

Update your module's cached state first, then call self.checkFeedbacks('feedback_id') for specific feedbacks or self.checkAllFeedbacks() for all of them. Companion re-runs the callbacks and applies the resulting styles to buttons.

When should I use subscribe and unsubscribe in Companion feedbacks?▼

Use subscribe to start polling or monitoring when a feedback is placed on a button, and unsubscribe to stop it when removed. Always implement unsubscribe alongside subscribe to avoid resource leaks from orphaned polling loops.

Why is my Companion feedback callback slow or blocking?▼

Feedback callbacks must be fast and read from cached module state rather than querying devices synchronously. Store device data in module state as it arrives, then have callbacks compute results from that cache with fallback defaults.