api-quality-checks
API class validation rules for Scopy plugins. Auto-loads when reviewing or editing `*_api.h` / `*_api.cpp` files or running API…
Standard scopy plugin patterns including ToolTemplate, refresh buttons, sections, plugin lifecycle, and architecture. Auto-loads when creating plugin scaffolds, tool classes, or section layouts.
$ npx -y skills add analogdevicesinc/scopy --skill scopy-plugin-patterns --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/scopy-plugin-patternsContext preview
The summary Claude sees to decide when to auto-load this skill.
Standard scopy plugin patterns including ToolTemplate, refresh buttons, sections, plugin lifecycle, and architecture. Auto-loads when creating plugin scaffolds, tool classes, or section layouts.
name: scopy-plugin-patterns description: Standard scopy plugin patterns including ToolTemplate, refresh buttons, sections, plugin lifecycle, and architecture. Auto-loads when creating plugin scaffolds, tool classes, or section layouts.
class MyPlugin : public QObject, PluginBase {
SCOPY_PLUGIN
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.adi.Scopy.PluginBase")
Q_INTERFACES(scopy::PluginBase)
public:
bool compatible(QString m_param, QString category) override;
void loadToolList() override;
bool loadIcon() override;
void initMetadata() override;
bool onConnect() override;
bool onDisconnect() override;
private:
IIOWidgetGroup *m_widgetGroup = nullptr;
};explicit MyTool(iio_context *ctx, IIOWidgetGroup *group, QWidget *parent = nullptr);
m_tool = new ToolTemplate(this); m_refreshButton = new AnimatedRefreshBtn(false, this); m_tool->addWidgetToTopContainerHelper(m_refreshButton, TTA_RIGHT);
Refresh button triggers `readRequested()` via `QtConcurrent::run`.
scopy/packages/<name>/
├── manifest.json.cmakein
├── CMakeLists.txt
├── emu-xml/
└── plugins/<name>/
├── src/ # Implementation files
├── include/<name>/ # Header files
├── test/ # Unit tests
└── CMakeLists.txt| iio-oscilloscope | Scopy | Purpose | |---|---|---| | `identify()` | `compatible()` | Device detection | | `init()` | `onConnect()` | Create tools on connection | | `destroy()` | `onDisconnect()` | Cleanup on disconnect | | `iio_widget` helpers | `IIOWidget` / `IIOWidgetBuilder` | Attribute binding | | Glade XML | Programmatic Qt code | UI definition |
Has debug/advanced attributes (adi,*)? ├── YES → Basic tool + Advanced tool (QStackedWidget + sub-tabs) └── NO → Single tool only Shares devices with another plugin? ├── YES → Multiple tool variants (detect in onConnect) └── NO → Single tool (most common)
QWidget *section = new QWidget(parent);
Style::setBackgroundColor(section, json::theme::background_primary);
Style::setStyle(section, style::properties::widget::border_interactive);
QLabel *title = new QLabel("Section Title", section);
Style::setStyle(title, style::properties::label::menuBig);// Header Q_DECLARE_LOGGING_CATEGORY(CAT_MYPLUGIN) // Source Q_LOGGING_CATEGORY(CAT_MYPLUGIN, "MyPlugin") // Usage qDebug(CAT_MYPLUGIN) << "Message";
See `reference.md` in this directory for complete lifecycle code templates.
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…
How Scopy libraries depend on each other, plugin commonalities, MessageBroker topics, shared widgets, style system flow, and…