Add a Skill
Skills can be created from a Docker image or a Docker Compose package. This guide covers both paths.
Step 1: Open the Create Skill dialog
- Click the Skills tab in the top navigation bar.
- Click the New Skill button.
Step 2: Choose the skill type
Select your preferred deployment method:
- Docker Image — Pull a single container image from a Docker registry
- Docker Compose — Upload a TAR file containing a Compose-based multi-container skill package
Step 3: Customize the skill appearance
- Choose a color and a built-in icon, or
- Upload a custom icon (PNG, JPG, or SVG)
Step 4: Enter basic information
| Field | Description |
|---|---|
| Skill Name | A descriptive name, unique within your organization |
| Version Number | A version identifier for this release (e.g., 1.0.0) |
Version numbers follow semantic versioning. You cannot reuse the same version string on a skill — each version must be unique.
Docker Image configuration
After filling in the basic information, configure the skill across five tabs: Container, Inputs, Outputs, Env, and Privileges.
Container tab
| Field | Description |
|---|---|
| Docker Container URL | The full image reference, e.g. registry.example.com/my-skill:1.2.3. Raw Docker Hub images must be prefixed with docker.io (e.g. docker.io/myuser/myimage:1.0). |
| Registry Username | Username for authenticating with the private registry (leave blank for public images) |
| Registry Password | Password or token for the registry. This value is encrypted and stored securely. |
Inputs tab
Inputs are user-configurable parameters delivered to the skill on the device through the Azure IoT module twin desired settings. The skill reads these values at runtime using the Azure IoT device SDK. For each input:
| Field | Description |
|---|---|
| Input Key | The field name within desired.inputs.<key> in the Azure IoT module twin that the skill reads (e.g., API_URL) |
| Input Label | The human-readable label shown to users when they configure the workflow |
| Field Type | Text or Password — controls how the value is entered |
The Password type masks the value in the UI and is recommended for API keys, tokens, and credentials.
See Inputs and Outputs for more details.
Outputs tab
Outputs define the data the skill sends back to the portal at runtime as Azure IoT messages. For each output:
| Field | Description |
|---|---|
| Output Key | The field name in the Azure IoT message payload the skill emits (e.g., count, status, temperature) |
| Output Label | The human-readable name shown in the portal and charts |
| Data Type | String, Number, or Boolean |
| Unhealthy After | Optional timeout in milliseconds; if no output is received within this window the skill is flagged unhealthy on that device. Minimum 1 minute, maximum 11 hours. |
For Number and Boolean outputs you can also enable Status Mapping to color-code values as green, yellow, or red in the portal.
See Inputs and Outputs for a full guide on outputs and status mapping.
Env tab
Environment variables are static key/value pairs injected into the container at runtime. Unlike inputs, these are set once at skill creation time and are not configurable per workflow deployment.
| Field | Description |
|---|---|
| Env Key | The environment variable name (must not contain ., $, #, or spaces) |
| Env Value | The value passed to the environment variable in the skill |
Privileges tab
Privileges grant the skill container access to hardware resources and elevated capabilities on the device. Toggle each privilege on or off depending on what your skill requires.
See Privileges for a full description of every available option.
Docker Compose configuration
After filling in the basic information, configure the skill across three tabs: Compose, Env, and Privileges.
Compose tab
Upload the TAR file (.tgz) containing your Docker Compose skill package. The package should include a docker-compose.yml and all associated assets.
Env tab
Define static environment variables to be injected into the Compose environment at runtime. Same as the Docker Image skill — provide an Env Key and Env Value for each variable.
Privileges tab
Docker Compose skills support one privilege: Web UI.
Toggle Web UI to expose a browser-based interface from within the skill. When enabled, specify the Port Number the skill listens on. Once deployed, users can open the skill's Web UI directly from the device detail page in the portal.
Ports 22, 80, and 443 are not allowed for the Web UI port.
Step 5: Save the skill
After completing all configuration, click Save.
You can view the raw JSON configuration for each section by expanding the raw config panel at the bottom of the form. This is useful for diagnosing issues with Docker permissions in the skill.
The skill will appear in your Library and can immediately be added to a workflow.
Adding a new version
To add a new version to an existing skill:
- Open the skill in your Library.
- Click Add Version.
- Fill in the new version number and updated configuration.
- Click Save.
Existing workflows continue to use their currently assigned version until you explicitly upgrade them. See Versioning for more details.