What "Skills" Will You Make for Mycroft?


What Skills Will You Make for Mycroft?

What Mycroft is capable of is defined by modules, which we are calling “Skills” now. These skills can be pretty much anything that you can make a Linux command line do (so any API you can talk to on a Linux box, you can make Mycroft do it). It’s that design that makes Mycroft so capable.

Right now here is what we are working on for core modules:

Play Media: Play from a variety of sources on a variety of players.

Internet of Things Support: Supporting the following platforms:

If This Then That: User can select Mycroft as a source/destination to manipulate Facebook, Twitter, etc.

Internet of Things Scene: Mycroft can manipulate a group of IoT
devices at one time, or what we call “creating a scene.” For example,
the “Lock up” scene might turn off all of the lights, lock the door and
shut off any music or media.

Create Voice Channel: Mycroft can create a voice channel between two units. This creates an on demand intercom link between two rooms.

Announce: If there are several Mycroft units in an installation, one unit can create an announcement that is played on all of the units.

Record: Mycroft can record audio. Recordings are uploaded to
your preferred cloud storage for later retrieval. To let folks know it
is recording Mycroft periodically beeps softly.

Calendar: Mycroft can read either Google Calendar or iCal.

Twitter: Mycroft can tweet for you.

Alarm Clock: Mycroft can act as an alarm clock and perform behaviors such as scenes, news, weather, etc. at certain times.

Reminders: Mycroft can repeat a reminder phrase to at a specified date, time.

Weather: Mycroft can give the current or future weather for a specified location.

Time: Mycroft can give the current time.

News: When asked for the news, Mycroft can play the top of the hour news from NPR or the BBC.

Stock Quotes: Mycroft can return the current price of a specified ticker symbol or company name.

Spelling: Mycroft can spell words out.

Math: Mycroft can perform simple arithmetic.

Parrot Mode: Upon entering this mode, Mycroft can repeat back whatever you say. Useful for entertaining a parrot or small child.

Exact match: Uses regular expressions to perform a shell command
when an exact phrase or sub-phrase is spoken. Say the key phrase and
perform any task.

Novelty: Performs search using Google, Wolfram Alpha, etc and tells knock-knock jokes.

We have quite a few ideas that we are planning to talk about that we’d like to tackle, but I’m interested to see what the community thinks - and what ideas you guys have!


I’ve got a few ideas in my head:

  • MythTV - search listings, set recording schedules, and control frontend playback. “Mycroft, record The Gadget Show on Channel 5”. This should be pretty easy. I hacked up a demo with Asterisk already: https://www.youtube.com/watch?v=7DMeRVU9hik
  • Asterisk interface - “Mycroft, phone Alan”. Which would then call the phone extension closest to you and when you pick it up would dial out to the phone number stored in either Mycroft or Asterisk’s phone book.
  • TV control “Science? What’s science ever done for us? TV OFF”. My Sony TV has a web API which can control most functions.
  • Interface to my totally amazing homemade automation system “Mycroft, good night” - turns off the TV, turns off the lights (after a delay), puts the phone on Do Not Disturb, turns the heating down.


This would also be useful if the time can be set to be a certain time interval from now: Mycroft, remind me in 45 minutes to take the pork out of the oven. I use “OK Google” for this all the time.

On the media front, I’d like Mycroft, tell Kodi to play The Avengers; in particular, this means “kodi, look through your library and play that” rather than me having to specify the back end that it comes from. (Mycroft, tell Kodi to play smb://server/films/The Avengers.mkv is a lot harder to say…) This shouldn’t be too difficult for me to build if it’s not already on the list.

Email: Mycroft, email Bill saying: are you around over Christmas? This obviously requires setting up one’s email account, including a list of contacts, and probably needs disambiguation (there are many “Bill’s” in my address book; it might be useful to look at how Inform 7 does disambiguation here!)

Talk to friend’s Mycrofts: social networking! Sorta. Mycroft, tell Alan's Mycroft to remind him that the party is tonight. I don’t think I’d build the social networking piece, but once it was built I’d use it.


Mycroft to Mycroft voice IM between houses would be lots of fun!


You just invent the phone :stuck_out_tongue:

Else I’d like to control the TV box from my provider

“Mycroft, what on the TV tonight ?” “- [blablabla]… Doctor Who on Channel 14…[blablabla]” “- OK Mycroft, let’s watch Doctor Who”

And be able to control my Mycroft at home from my Mycroft on my Ubuntuphone


Hah! Yeah, pretty much.

Potential user story: I’m watching the new episode of $BIG_BUDGET_US_DRAMA_WITH_[SPACESHIPS|ZOMBIES] and so are you. We start watching at the same time, arranged via Mycroft some how, and then I can we have have a little side chat going on about what’s happening.

I don’t know if that’s something which anyone would actually use, but it sounds like fun to try.


Hmmm I don’t know how to ask that to Mycroft. Maybe a “Mycroft, play the new episode of [this TV show] for Alan, Will, Stuart and me, and open a voice channel between us”

But maybe before we’ll need a couchpotato or sickbeard module : “Mycroft, can you download the last episode of [this TV show] ?”


I am really interested in making a skill for Mycroft to use Telegram API for messaging or to be able to give commands to the Telegram app so that user can use one app as a Desktop app and use it with Mycroft as well.


@Kristijan_Zic a Telegram app is an awesome idea. And Mycroft to Mycroft (between homes) is a neat idea too.

I would imagine Telegram’s API would make messaging pretty simple. Everyone on the team would definitely appreciate that (as we use Telegram for messaging).


Oh yeah, through à Mycroft Telegram Bot We could talk to our Mycroft from Android devices or Windows clients as well :smile:

Could be awesome


One of skills Mycroft could really use is quite meta: ability to easily teach Mycroft new things.
I don’t mean easy to code it, I mean some interface that average non-tech-saavy people can use to dump their knowledge onto Mycroft.

Also teaching Mycroft to write code / make programs would be quite useful IMHO.

And it would need some IoT diagnostic, for example you say “Mycroft, show me all devices you can interact with” and it displays topography / hierarchy of all connected devices, basically nmap for IoT.


I was thinking of making:
GitHub/Git: support webhooks and grab data from users, repos, and organisations.
Pushbullet: Send and receive pushes to pushbullet
RSS receive entries from RSS


A dictionary app would be on the top of my list (ie. “Define [word]”). And how are skills triggered? Is it based on keywords and each app disects the sentence or does each app categorize itself into a certain category that has a trigger format (ie. All communication apps such as telegram would have a recipiant field and a content field).

And, would you be able to set a default app? For instance, what app would a common keyword trigger such as, “tell Joe to do something”.


@Wolfgange yes, I think being able to set a default app is important. I think having Mycroft ask this would be good, or you could just set defaults in the companion app.


I suggest adding Lifx and also Harmony. IFTTT integration would also be good.


I think that this thread raises a bigger question: What does community expect from Mycroft?
And in my opinion, forum thread is not a good tool to answer this question.
Some preferably open source alternative to UserVoice would be the best way to get community wishlist / feedback.


Notifications ability for Mycroft to beep or say short sentence on receiving a notification.

Mycroft: “Simon, you have a new email from Alice”.
Me (replying with 5 secs): "Mycroft, what does it say?"
Mycroft: < reads email >


Mycroft: < unintrusive beep >
Me: “Mycroft, what is it?”
< see convosation above >

I’d want to be able to set which contacts end up as notifications so as to not get Mycroft alert me of all the spam I get through.


These are really good ideas for the interaction!


I would like to know if MyCroft will execute commands based on exact phrases of command triggers or certain keywords.

For example… If you wanted MyCroft to turn on a light.

You say “MyCroft, turn the light on”

Now would it have to be that exact phrase for MyCroft to execute this command or can you say anything but as long as you say something on the lines of turn the light on will it perform the task?

For example… blah blah blah blah blah turn on the light. Long as you said turn on the light it would execute the command based off the keyword trigger. I like this better because it eliminates the need to always remember the exact command trigger you need to use.


Second scenario could be a bit dodgy, since you could say “Mycroft, make sure that alarm doesn’t turn on the light”, and turning on the light isn’t your intent.