Skip to content
Back to skills

Widget Development

ASecurity

Build, preview, test, and load Orange widgets and Canvas workflows.

  • 247 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 8, 2026
databasessqltestingdebuggingapi

Works with

  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill widget-development --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Widget Development?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Widget Development
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-widget-development/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-widget-development)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: widget-development
description: "Build, preview, test, and load Orange widgets and Canvas workflows."
metadata:
  disco-role: operating
disable-model-invocation: true
license: NOASSERTION
---

# Orange3 Widget Development

Use this sub-skill when the task is about Orange's widget framework rather than a specific data-mining method: authoring an `OWWidget`, wiring GUI controls and settings, previewing or unit-testing widgets, loading `.ows` Canvas workflows, debugging widget discovery, or generating a widget catalog from the installed Orange package.

## Route by task

- **New or revised widget class** → read [`references/widget-framework.md`](references/widget-framework.md), then [`references/gui-controls.md`](references/gui-controls.md). Use `OWWidget`, new-style `Inputs`/`Outputs`, `Setting`/`ContextSetting`, `Msg` message classes, and a `WidgetPreview` fence.
- **GUI control binding or settings** → read [`references/gui-controls.md`](references/gui-controls.md), then the context/settings section in [`references/widget-framework.md`](references/widget-framework.md).
- **Preview, tests, or headless Qt** → read [`references/canvas-and-workflows.md`](references/canvas-and-workflows.md) and [`references/troubleshooting.md`](references/troubleshooting.md). Prefer `WidgetPreview` for interactive/manual checks and `Orange.widgets.tests.base.WidgetTest` for assertions.
- **Canvas workflow loading or compatibility** → read [`references/canvas-and-workflows.md`](references/canvas-and-workflows.md). Use `WidgetsScheme.load_from(..., registry=reg)` or the non-interactive Canvas runner; pause signal propagation while loading test workflows.
- **Widget discovery/catalog work** → read [`references/canvas-and-workflows.md`](references/canvas-and-workflows.md), then run the bundled [`scripts/create_widget_catalog.py`](scripts/create_widget_catalog.py) against an installed Orange package.
- **Failure triage** → read [`references/troubleshooting.md`](references/troubleshooting.md) first; it covers discovery, missing metadata/I/O, stored settings, context migrations, GUI binding, Qt platform/offscreen issues, preview exits, background cancellation, SQL credential errors, and workflow-loading failures.

## Operating rules

1. Keep widget-development guidance framework-focused. Do not explain package-specific data, model, projection, visualization, or evaluation semantics except when they demonstrate the widget framework.
2. Treat SQL widget bases (`OWBaseSql`, SQL input decorators, credentials) as optional cross-cutting widget support. Do not require live PostgreSQL/MSSQL services for the minimum GUI/framework workflow.
3. Do not point future agents to source-checkout scripts or docs. Use the bundled references and bundled `scripts/create_widget_catalog.py`; the references below distill the needed framework behavior.
4. In headless Linux/CI, set `QT_QPA_PLATFORM=offscreen` before widget previews, widget tests, workflow loads, or catalog icon rendering.
5. For long-running widgets, use cooperative cancellation (`ConcurrentWidgetMixin`, `TaskState.is_interruption_requested()`) and call `shutdown()` from `onDeleteWidget()`.

## Evidence snapshot

Distilled and live-checked against Orange3 `3.41.0.dev` with Qt/PyQt available. Key verified API facts include:

- `OWWidget(*args, captionTitle=None, **kwargs)`
- `Input(name, type, ..., multiple=False, default=False, explicit=False, auto_summary=None, closing_sentinel=None)`
- `Output(name, type, ..., default=False, explicit=False, dynamic=True, auto_summary=None)`
- `WidgetPreview(widget_cls).run(input_data=None, *, no_exec=False, no_exit=False, **kwargs)`
- `DomainContextHandler(*, match_values=0, first_match=True, **kwargs)`
- `WidgetTest.create_widget(cls, stored_settings=None, reset_default_settings=True, **kwargs)`
- `ConcurrentWidgetMixin.start(task, *args, **kwargs)`, `cancel()`, and `shutdown()`

Representative source evidence was distilled from Orange widget/canvas framework modules, development docs, GUI/settings/testing helpers, workflow tests, SQL widget helpers, and the repo-maintained widget-catalog script. The runtime guidance here is self-contained and does not require those source files to be present.

Files in this skill

  • SKILL.md4.1 KB
  • references/canvas-and-workflows.md7.1 KB
  • references/gui-controls.md7.7 KB
  • references/troubleshooting.md8.4 KB
  • references/widget-framework.md10 KB
  • scripts/create_widget_catalog.py11.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.