Today, Microsoft announced a slew of new features for the Cortana Skills Kit, enabling you to build even more interesting and engaging skills with Cortana.



Let’s take a look to see how you as a developer can take advantage of these features.


Introducing skill suggestions

We believe that one of the major issues blocking skill adoption in general is discoverability. Unlike apps and websites, where there is visual UX indicating what the software can do, users need to know exactly how to trigger an assistant’s skill via an invocation or name. With very few patterns or best practices on how to name a skill, many skills go undiscovered.


Cortana’s skill suggestions use Microsoft’s investment in search, powered by Bing and Azure Search, to suggest skills to solve user requests. This means that an end user does not need to know a skill exists (much less know the invocation name) before they find and use it. Cortana will suggest highly relevant skills, much like a search engine identifies websites that answer a user’s query. 


Skills published to all users are suggestable by Cortana, who uses metadata provided by the developer to know when to suggest a skill. Skills are also invokable via invocation name as done before.


How do you make your skill suggestable?

There are things you as a developer can do to make your skill more suggestable. These include:


  1. Make sure your skill title and descriptions are indicative of your skill’s We use that are part of our search criteria.
  2. In the skill publication process, we ask for metadata about the skill. Make sure that data is comprehensive and accurate. This feeds into our search engine to suggest the right skill.
  3. Make sure your skill is high quality! Skills that complete one task well are more likely to be suggested than a skill that doesn’t help users as much.


Please note that our certification process checks the accuracy of skill metadata, with the goal of maintaining a good skill suggestions experience for our users.


Chaining Cortana skills

Skills enable users to get things done, but it’s rare that completing a single task solves a real-world need. Skill chaining allows a user to use multiple skills in succession to complete a task. Context from each skill is passed to the next skill, ensuring an effortless skill experience. This allows users to work with Cortana to seamlessly move from one task to the next, just as they would with a real human assistant.


Much like skill suggestions, Cortana utilizes Microsoft’s investments in search and AI to get things done. That said, the search here is not based on user input like for skill suggestions. Instead, it is based on a skill-emittable definition of a real-world object, which we call an entity. And thanks to Bing's Knowledge and Action Graph, we know to recognize virtually any entity in the world.


Take, for example, the act of buying movie tickets. If a movie-booking skill buys tickets and emits a movie entity, our search algorithm will intelligently and automatically suggest other skills like "get a ride", "add event to calendar" that allow your users to act on this information. If the user follows through on one of the skills Cortana suggests, the entity is passed to that next skill, so context is preserved. This means the user doesn't have to enter a destination address for the "get a ride" skill, or calendar details for the "add to calendar" skill.


We’re working on rolling out several skills that utilize these new capabilities. We look forward to sharing this capability with you in the very near future.


Building skills using the Microsoft Knowledge Graph Exchange

Building skills oftentimes requires a high level of domain expertise in a field. Knowing the language models, business logic, and APIs to complete even simple tasks is a lot of work – you must know exactly what a user would want to create the skill.


The Microsoft Knowledge Graph Exchange looks to simplify skill building by developers to connect their skills to Microsoft’s knowledge of real world entities. It enables developers to use prebuilt modules (called botlets) that encapsulate data, language understanding, and logic during the skill creation process. These reusable components make it much easier for developers like you to create more useful skills with even less effort. Before, a skill was equivalent to a single bot, which needed to encapsulate a skill’s knowledge. Now, multiple botlets can be combined to create complex, multi-domain skills.


You as a developer can create botlets using code you are familiar with – either by creating bots using the Azure Bot Services, or by registering a service endpoint as a botlet. You can also use the Knowledge Graph Exchange to define and share entities, which can be used to chain skills. Assembling botlets and entities is done through defining a skill execution flow in our developer portal. Details around this are detailed in our documentation.


As of today, the Knowledge Graph Exchange is now open in public preview. Check it out at


Let us know what you think!

The skills kit, including these new features, are in public preview – we’ll be adding and updating how we discover, chain, and build skills over time. Can you see your skill as part of skill discovery? How do you find building skills with the Knowledge Graph Exchange? Are there more botlets you’d like to see? Let us know in the blog comments, or reach out to us @cortanadev on Twitter.


Happy holidays, and we hope you enjoy using these new features to build skills!