Skills Overview
A skill is a Docker container that runs on the ARM64 architecture of Optra Edge devices. Skills are the applications you deploy to your fleet — AI inference models, computer vision pipelines, network monitoring agents, audio processors, and more.
Skills are versioned, configurable, and deployed to devices through workflows. You can build your own skills from Docker images or Docker Compose packages, and you can also subscribe to pre-built skills from the Marketplace.
The Skills page
The Skills page is divided into two main sections: Library and Marketplace.
Library
The Library tab (selected by default) shows all skills available to your organization. These include:
- Skills you have created yourself
- Skills you have subscribed to from the Marketplace
Use the search bar to filter skills by keyword.
Marketplace
The Marketplace hosts skills built by Lexmark and third-party developers that are compatible with the Optra Edge platform. You can browse listings, read descriptions, and add any skill to your Library with a single click.
Navigate to the Marketplace by clicking the Marketplace tab or the grid icon next to Library.
Developer resources
The right panel of the Skills page includes a Developer Resources section with links to:
- Sample Skill Repository — Reference code and examples for building your own skills
- Contact Support — Help building or troubleshooting skills
Types of skills
Docker Image skills
A Docker Image skill points to a container image hosted in a Docker registry (Docker Hub, Azure ACR, or any private registry. AWS ECR not supported). This is the most common and flexible skill type. It supports the full set of configuration options: inputs, outputs, environment variables, and hardware privileges.
Docker Compose skills
A Docker Compose skill is packaged as a TAR file containing a docker-compose.yml and associated assets. It is useful when you need to define multiple coordinated containers. Docker Compose skills have a simplified configuration — they support environment variables and a Web UI port, but do not have individual input or output definitions.
Skill anatomy
Every skill is organized around a parent skill record (name, icon, color) and one or more versions. A version contains the actual container configuration. When you deploy a skill through a workflow, you select a specific version.
Inputs
Inputs are user-configurable parameters delivered to the device through the Azure IoT module twin desired settings. The skill reads these values using the Azure IoT device SDK, allowing the same skill to be reused across different workflows with different settings — for example, an API endpoint URL, a detection threshold, or a connection string.
Inputs have can be:
| Type | Description |
|---|---|
| Text | A single-line text field |
| Password | A masked field for sensitive values like API keys or credentials |
When a skill is added to a workflow, the person configuring the workflow fills in the input values.
Outputs
Outputs are named data fields that the skill emits at runtime as Azure IoT messages through the Azure IoT infrastructure. They define what the skill produces — for example, a count, a status string, a boolean flag, or a sensor reading. Output data flows from the device back to the portal and can be consumed by actions (email alerts, API calls, charts).
Each output has:
- Output Key — The identifier the skill uses when emitting data
- Output Label — The human-readable name shown in the portal and charts
- Data Type —
String,Number, orBoolean - Unhealthy After — An optional timeout; if no output is received within this window, the skill is marked unhealthy on that device
For Number and Boolean outputs, you can configure status mapping to automatically color-code output values as healthy (green), warning (yellow), or unhealthy (red) in the portal.
In addition to the outputs you define, every skill version automatically exposes a set of platform-provided outputs, including device name, device ID, serial number, and GPS coordinates.
All outputs emitted from skills are tracked in charting by default so you can easily visualize trends and patterns in your data. See Charts for details on how to customize your charts and dashboards.
Environment variables
Environment variables are static key/value pairs injected into the container at runtime, separate from the user-facing inputs. They are typically used for configuration that is fixed at skill creation time and does not vary between workflow deployments.
Privileges
Privileges grant the skill container access to hardware resources and elevated OS capabilities on the device — cameras, audio, removable media, file system volumes, GPIO pins, and more. See Privileges for a full reference.
Skill versions
Skills are versioned. Each version is independent and can be deployed to different workflows simultaneously. When a new version is ready, you can upgrade a workflow to use it without affecting other workflows that are still on an older version.
For full details see Versioning.
Next steps
- Add a Skill — Step-by-step guide to creating a Docker Image or Docker Compose skill
- Inputs and Outputs — Deep dive on configuring inputs, outputs, and status mapping
- Privileges — Full reference for all hardware and system access options
- Versioning — How skill versions work and how to manage them
- Marketplace — Browsing, subscribing to, and publishing skills