The Cortana Skills Kit

The Cortana Skills Kit is a suite of tools that help you build extensions (or skills) for Cortana that connect users to your custom services and solutions.

Cortana skills enable you to add value by governing how it responds to user requests. Cortana can delegate to bots built on Microsoft's Bot Framework.

The skills kit supports basic deep links to full integration of your services and solutions into the Cortana experience.

Note

The Cortana Skills Kit is currently in public preview.

What can skills do?

Cortana skills let you provide functionality through Cortana in response to spoken input from a user.

The following table highlights the different ways to create skills for Cortana and when to use one development path over the other.

Skill type When to use this path
Bot Framework based skill Recommended. Use this path when starting from scratch, when you have an existing bot you want to expose as a Cortana skill or when you want to be able to access Cortana specific features such as user profile and contextual information or rich card responses.

The following are some key features of Cortana skills.

Supports natural language understanding

Cortana presents skills in response to user requests by employing an intent model. An intent model applies machine learning to detect utterances from a set of training data used to derive the user's intent from the request (along with entities, or specific data from the intent). Based on the request, this info is then passed to the skill, which enables Cortana to provide a suitably customized user experience.

You can create your own intents using Luis.ai, a Microsoft Cognitive Service, and connect it to your bot.

If using Luis.ai please refer to its relevant documentation on creating intents and entities.

Conducts audio-visual conversations with users

Skills that invoke bot or service targets can use the Cortana user interface (also known as the Cortana canvas, or simply as the canvas) to host a conversation with the user through the microphone or keyboard. In addition, a skill can customize the canvas to augment the conversation and assist the user with relevant images, text, links, and so on. See Card Design Best Practices for more information.

For details on conversation experiences, see the Voice Design Best Practices guide.

Personalizes experiences using user insights

With permission, Cortana can access user profile and contextual information about the user at runtime, including their current location, cuisine preference, name, and so on. When creating a skill, you can request that Cortana pass this user data to your skill when invoked.

See User Profile & Contextual Information reference for more details on the user information that can be requested.

Add intelligence to your skill using Microsoft Cognitive Services

Microsoft Cognitive Services enables natural and contextual interaction with tools that augment users' experiences using the power of machine-based intelligence. Tap into an ever-growing collection of powerful artificial intelligence algorithms for vision, speech, language, and knowledge. Here are just some of the intelligent services that you can integrate into your Cortana skill:

How users invoke skills

Users in the en-US locale can invoke skills by speaking to Cortana. No installation, or activation, is required.

Note

Support for other locales is coming soon.

Users invoke skills by speaking an invocation phrase to Cortana. The invocation phrase includes an invocation name, which uniquely identifies the skill to invoke. For example, if a skill's invocation name is "Northwind Photo", a proper invocation phrase could include "Ask Northwind Photo to..." or "Tell Northwind Photo that...". See the Invocation Name Guidelines for a full list of invocation phrases.

Skills are available on all platforms that support Cortana. For details on code compatibility per platform, see the Cortana platform requirements reference.

How users interact with skills

When a user invokes your skill, Cortana sends a structured request to the service that powers your skill and waits for a response. There are two ways a user can have Cortana listen for a request. The first is to press the microphone button in the Cortana app or in the "Ask me anything" search box in Windows. The second is that users can enable Cortana to respond to "Hey Cortana". Here are a few examples of how users might interact with Cortana.

If a user asks Cortana about the weather, Cortana would likely trigger the built-in weather skill. For example:

User: "What is the weather like?"
Cortana: "It is currently 58 degrees and mostly cloudy..."

If using Cortana on a device that has a screen, she will display a card with additional information in her canvas as well.

Weather Card

If a user wants to invoke a custom skill, they would simply need to use an invocation phrase which the skill supports. If for example a user wanted to use a skill called "Northwind Photo" to check the status of an order and make a change, the conversation might go something like this:

User: "Ask Northwind Photo what the status of my order of cat photos is."
Cortana: "Your order of cat photos will be ready in an hour. Can I help you with anything else?"
User: "What did I order?"
Cortana: "3 copies of prints on glossy paper. Would you like to make a change?"
User: "Make it matte paper."
Cortana: "You would like to change the paper to matte. Is this correct?"
User: "Yes"
Cortana: "Your order has been updated."

Take a look at the following design guides to create engaging user experiences:

Have additional overview questions?

Take a look at the Cortana Skills Kit FAQ or the glossary

Next up

Ready to create a skill? Make sure your devices, as well as Cortana, are ready.

Set up your developer environment.