Skill-Recommendation-Skill

Skill name: skill-recommendation-skill

User story:

As a new user, asking a question or telling Mycroft to do X often triggers the default fallback response “I don’t understand, but I’m learning new things everyday”.

This is not always true, there are many default skills and skills that can be installed that may be able satisfy the intent/question/action.

Scenario 1
User is unaware of the proper dialog to trigger/execute a skill that is installed by default. Example, just saying “time” results in “I don’t understand” The skill would find the time and timer skills and ask the user if they want to use x skill and explain how to interact with the skills.

Scenario 2
User is unaware that there is a skill that can be installed to satisfy the intent. Example, a user may ask Mycroft to “play some music/jazz” and Mycroft will say “I don’t know what that means”. The skill would find skills used for playing music and suggest them.

In each case, this skill would search a database of intents that are matched to a skill, installed or not, and recommend the proper dialog to execute the skill or recommend installing a skill that matches the failed the intent. The database of intents could be generated/scraped from a skill README.md (usually skills have an Example or Usage section that lists the dialog/intent to trigger the skill)

What third party services, data sets or platforms will the Skill interact with?

Mycroft skills on GitHub - https://github.com/MycroftAI/mycroft-skills
3rd party skills on GitHub - ?

Are there similar Mycroft Skills already?

Not that I know of.

What will the user Speak to trigger the Skill?

Since this would primarily be fallback skill, the user wouldn’t have to say anything, however, the user could say “(how do i use/interact) with X skill” and Mycroft would list the dialog to interact with X skill.

What phrases will Mycroft Speak?

"If you were trying to do X/keyword, X skill/s is/are installed, just say “X Y Z”

"If you were trying to do X/keyword, X skill/s is/are available, just say “install X skill”, after it’s installed say “how do I use/interact with X skill”

What Skill Settings will this Skill need to store?

The skill could store a list/log of failed intents and when convenient, the Mycroft user could get an e-mail with the failed intents.

The user can then…
Make a formal suggestion on the skill suggestions forum.
Search the forums and chatrooms for others that are looking for a skill that fulfills the failed intent/s.

This could be an automated/hands free process and Mycroft could just say “I’ve noticed that you have said X, X times and I don’t have the answer/don’t know how to proceed, would you like me to enter the failed intent into the skill suggestion/persona database?”

Other comments?

This concept could also be applied to Persona and the voice UI for Mycroft. Because there would be a log of failed intents, this would be an easy way to remember the failed intents that could be entered into a local or global ‘Persona’.

An addition to this, if the skill is available then Mycroft could use the converse() method and respond " would you like to install this skill?" Also the Skills documentation already has a list of the commands to install community developed skills.