Skip to main content

Skill Exchange

Overview

Skill Exchange is an internal marketplace to promote and seek out unique, on-the-job learning opportunities for your developers and other members of your tech ecosystem. With Skill Exchange, Portal becomes a hub for custom learning and growth by sharing existing expertise and fostering meaningful collaboration across your organization.

Codify growth and connectivity

Skill Exchange puts employee growth and collaboration at the forefront of the developer experience. Within Portal, mentors can connect with mentees, teams can connect with temporary help, developers can pair up to program together, and ad hoc teams can assemble to work on hack projects.

Unlock learnings across your org

Talent, knowledge, and experience can often get trapped inside organizational silos. With Skill Exchange, your R&D community can unlock opportunities for collaboration and meaningful connection, no matter where anyone sits in the org chart.

Elevate existing expertise

Skill Exchange elevates the existing expertise of your current employees, so that your developers and members of your tech org can learn from each other instead of looking and hiring externally. Skill Exchange helps you invest in and develop your current talent.

Prerequisites

Enabling Skill Exchange

You have the option to enable or disable Skill Exchange at any time through the Config Manager.

Defining default lists

Skill Exchange has the ability to ingest lists of items that can be used across the application. For example, by adding a YAML list of locations, Gigs (Embeds, Mentorships, etc) can have their location to set to one of the locations defined in the YAML list. You can also define a default list of skills that users can select to add to their profiles. This list is defined in a YAML file and passed to the Skill Exchange plugin via configuration.

You can add Skills, Locations, and Embed Priority Labels by creating a new yaml file using the following basic structure. Locations and embed priority labels are defined as a flat list of names. See Defining Skills for Ingestion below for more information on ingesting skills.

default-lists.yaml
# default-lists.yaml

skills:
- name: Web
category: DISCIPLINE
- name: Backend
category: DISCIPLINE
- name: JavaScript
category: LANGUAGES
subset: SKILLS
disciplines:
- Web
- Backend
- name: API Development
category: TECHNIQUES
subset: SKILLS
disciplines:
- Backend

locations:
- Stockholm
- New York
- London

embedPriorityLabels:
- Tech Lead
- Company Bet Lead
You can have multiple YAML lists.

You can have a different YAML file for skills and locations, and you can also have multiple files for the same type of data. For example, you can have a YAML file for locations in North America, and another YAML file for locations in Asia.

Ingestion runs when you next restart Portal. Items are only added and not removed, and duplicates are auto-detected. Therefore, you can leave the configuration settings and restart the Portal instance multiple times without duplicating items. Modifying the YAML file will allow you to add new default items later.

Defining Skills for Ingestion

Skills defined through YAML for ingestion are treated as the source of truth for all skills within Skill Exchange.

Each skill can be defined with the following fields:

FieldTypeDescriptionValue
nameString[Required] The name of the skill.
categoryEnum[Required] The category of the skill."DISCIPLINE" | "LANGUAGES" | "FRAMEWORKS" | "INFRASTRUCTURE" | "TECHNIQUES"
subsetEnum[Optional] Subset of the skill. Not required for skills with category "DISCIPLINE"."SKILLS" | "TOOLS"
disciplinesString[][Optional] List of disciplines the skill is associated with. Not required for skills with category "DISCIPLINE".
Remote configuration options

If you have integrations set up within your Portal instance, you also have the option to specify a list of remote sources that you'd like Skill Exchange to periodically read from. Types of valid integration URLs that Skill Exchange supports are listed here. Skill Exchange will de-duplicate lists of both local and remote sources and ingest from all sources it points to within the defaultLists config.

For Portal customers, you can use the skillExchange.defaultLists.remoteUrls configuration field to specify a list of URLs to YAML files that are accessible by your Portal instance.

Remote URL Skill Configuration

Here is an extensive list of skills in YAML format to get you started. To start using these default skills out of the box, provide a link to these skills to the remote configuration portion of Skill Exchange.

The cadence at which remote file updates can be polled for can be controlled by using the skillExchange.remoteFileUpdates field, which can take in a cron field, or a duration field, which follows this shape.

Adding a new Skill

To add a new skill, simply add a new entry to the skills list to the skills YAML file. The skill will be ingested the next time the remote skills are polled for updates.

Editing and Deleting a Skill

To update or delete a skill, this must be done through the database as we currently do not support editing or deleting skills through the YAML at the moment.

(Optional) Slack integration setup

Slack needs to be integrated to access notification and messaging functionality in Skill Exchange. A custom Slack app and the associated token (oauth token), app token and signing secret, must be created to set up Slack integration. Socked mode needs to be enabled for the app.

You will also need to create a Slack app manifest file. The manifest we provide below lists the required scopes for Skill Exchange's notifications functionality. For more information, you can refer to Slack's Create apps using manifests documentation.

# This file is an example Slack app manifest used for installing a custom app in your workspace to deliver
# Skill Exchange notifications. For more information, see https://api.slack.com/reference/manifests
display_information:
name: Skill Exchange for Backstage
description: Enables notifications from Skill Exchange for Backstage in Slack.
background_color: '#9BF0E1'
features:
bot_user:
display_name: Skill Exchange for Backstage
always_online: true
oauth_config:
scopes:
bot:
# scopes needed to read user information
- users:read
- users:read.email
# scope needed to open DMs to users
- im:write
# scopes needed to send messages
- chat:write
- chat:write.public
settings:
interactivity:
is_enabled: true
org_deploy_enabled: false
socket_mode_enabled: true
token_rotation_enabled: false

The slack configuration must be added to Skill Exchange's configuration via the Config Manager:

Skill Exchange Slack Configuration

(Optional) Schedule Hack Digest Notifications

For adopters who have their Slack integration running, and would like to schedule periodic Slack updates (edits to the hack, or new comments) to users who follow hacks, they can specify a cron value in the Skill Exchange portion of the Config Manager. This cron value dictates the frequency with which users will receive updates on their hacks, if any updates exist since the last updates were sent. See the example below:

Skill Exchange Hack Digest Configuration

In this example, Skill Exchange will schedule your notifications to go out once a week at 5:00 PM on Monday.

Available Permissions

The Skill Exchange plugin does not implement any permissions to restrict access to the plugin.