Skip to main content

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

  1. Click the Skills tab in the top navigation bar.
  2. 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

FieldDescription
Skill NameA descriptive name, unique within your organization
Version NumberA version identifier for this release (e.g., 1.0.0)
note

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

FieldDescription
Docker Container URLThe 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 UsernameUsername for authenticating with the private registry (leave blank for public images)
Registry PasswordPassword 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:

FieldDescription
Input KeyThe field name within desired.inputs.<key> in the Azure IoT module twin that the skill reads (e.g., API_URL)
Input LabelThe human-readable label shown to users when they configure the workflow
Field TypeText 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:

FieldDescription
Output KeyThe field name in the Azure IoT message payload the skill emits (e.g., count, status, temperature)
Output LabelThe human-readable name shown in the portal and charts
Data TypeString, Number, or Boolean
Unhealthy AfterOptional 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.

FieldDescription
Env KeyThe environment variable name (must not contain ., $, #, or spaces)
Env ValueThe 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.

note

Ports 22, 80, and 443 are not allowed for the Web UI port.


Step 5: Save the skill

After completing all configuration, click Save.

tip

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:

  1. Open the skill in your Library.
  2. Click Add Version.
  3. Fill in the new version number and updated configuration.
  4. Click Save.

Existing workflows continue to use their currently assigned version until you explicitly upgrade them. See Versioning for more details.