api-quality-checks
API class validation rules for Scopy plugins. Auto-loads when reviewing or editing `*_api.h` / `*_api.cpp` files or running API…
How Scopy libraries depend on each other, plugin commonalities, MessageBroker topics, shared widgets, style system flow, and build system relationships. Loaded when determining component interactions or change impact.
$ npx -y skills add analogdevicesinc/scopy --skill scopy-component-relationships --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/scopy-component-relationshipsContext preview
The summary Claude sees to decide when to auto-load this skill.
How Scopy libraries depend on each other, plugin commonalities, MessageBroker topics, shared widgets, style system flow, and build system relationships. Loaded when determining component interactions or change impact.
name: scopy-component-relationships description: How Scopy libraries depend on each other, plugin commonalities, MessageBroker topics, shared widgets, style system flow, and build system relationships. Loaded when determining component interactions or change impact.
┌──────────────┐
│ scopy-core │
└──────┬───────┘
┌───────────────┼───────────────────┐
│ │ │
┌──────▼───────┐ ┌─────▼──────┐ ┌──────────▼──────────┐
│scopy-pluginbase│ │ scopy-gui │ │ scopy-pkg-manager │
└──────┬───────┘ └─────┬──────┘ └─────────────────────┘
│ │
┌──────▼───────────────▼──────┐
│ scopy-common │
└──────┬──────────────────────┘
│
┌──────▼───────┐ ┌────────────────────┐
│ scopyiioutil │◄───│ scopy-iio-widgets │
└──────────────┘ └────────────────────┘
│
┌─────▼──────┐
│scopy-gr-util│
└────────────┘**Detailed link dependencies:**
| Library | Links Against | |---------|--------------| | `scopy-common` | Qt Core/Widgets/Concurrent | | `scopyiioutil` | Qt Widgets, libiio, libserialport | | `scopy-gui` | scopy-common, scopy-pluginbase, QWT, Boost, Qt Widgets/Xml/Svg | | `scopy-gr-util` | scopy-iioutil, scopy-gui, scopy-iio-widgets, Gnuradio (runtime/analog/blocks/fft/filter/pmt/iio), Genalyzer | | `scopy-pluginbase` | scopy-common, scopyiioutil, Qt Core/Widgets/Concurrent/Qml, libiio | | `scopy-iio-widgets` | scopy-gui, scopyiioutil, libiio, Qt Core/Widgets | | `scopy-pkg-manager` | Qt Core | | `scopy-core` | all above, Python3, libsigrokdecode, Qt Core/Widgets/Concurrent/Network |
**Packages:** ad936x, ad9371, adrv9002, adrv9009, apollo-ad9084, cn0511, daq2, fmcomms11, swiot, pqmon, imu, rfpowermeter
**Common patterns:**
**Package:** generic-plugins **Plugins:** ADC, DAC, Datalogger, Debugger, Regmap, JESD Status
**Common patterns:**
**Package:** extproc (external processor), test-plugins
**Patterns:**
The MessageBroker is a singleton pub/sub system. All plugins auto-subscribe to "broadcast".
**Known topic conventions:**
**Usage pattern:**
// Publisher plugin
MessageBroker::GetInstance()->publish("MyPlugin", "calibration_complete");
// Subscriber plugin (in constructor or init)
MessageBroker::GetInstance()->subscribe(this, "MyPlugin");
// Receive
void messageCallback(QString topic, QString message) override {
if(topic == "MyPlugin" && message == "calibration_complete") { /* react */ }
}IIOWidgetBuilder is used across most device plugins. Common widget configurations:
| Widget Type | Use Case | Plugins Using It | |-------------|----------|-----------------| | `RangeUi` | Numeric attributes (frequency, gain) | ad936x, adrv9002, adrv9009, generic ADC/DAC | | `ComboUi` | Enumerated attributes (mode, filter) | ad936x, adrv9002, swiot, generic | | `CheckBoxUi` | Boolean attributes (enable/disable) | swiot, pqmon | | `EditableUi` | Free-form text attributes | debugger, regmap | | `TemperatureUi` | Temperature with thresholds | imu, rfpowermeter |
**IIOWidgetGroup** — groups widgets for batch read/write operations. Most plugins create one group per tool/section.
JSON theme files → Style::getAttribute() / Style::getColor()
→ Style::setStyle(widget, property)
→ Style::setBackgroundColor(widget, color)**Key theme color categories:**
| Category | Values | Purpose | |----------|--------|---------| | Background | `background_primary`, `background_subtle`, `background_secondary`, `background_plot` | Container backgrounds | | Content | `content_default`, `content_subtle`, `content_silent`, `content_inverse` | Text and icons | | Status | `content_success`, `content_error`, `content_busy` | Status indicators | | Interactive | `interactive_primary_*`, `interactive_subtle_*`, `interactive_secondary_*` | Buttons, controls (idle/hover/pressed/disabled) | | Special | `interactive_accent_idle`, `danger_default`, `interactive_focus` | Accent and danger states |
**Common style properties:**
Style::setStyle(widget, style::properties::label::menuBig); Style::setStyle(widget, style::properties::widget::border_interactive); Style::setStyle(widget, style::properties::widget::basicBackground, true, true); Style::setBackgroundColor(widget, json::theme::background_primary);
**Package enable flags:**
**Plugin enable flags (within a package):**
API class validation rules for Scopy plugins. Auto-loads when reviewing or editing `*_api.h` / `*_api.cpp` files or running API…
Guidelines for using Context7, web search, and other research tools to find solutions outside the Scopy codebase. Loaded when the…
How to create IIOWidgets for device attributes using IIOWidgetBuilder. Covers spinbox, combo, checkbox, and read-only patterns.…
API class conventions for Scopy plugins including ApiObject inheritance, Q_INVOKABLE patterns, and IIOWidgetGroup access.…
Core Scopy architecture knowledge including plugin lifecycle, library dependencies, build system, and key design patterns. Loaded…
Decision trees for common Scopy architectural choices - plugin vs core, tool vs section, widget type selection, sync vs async,…