[Productivity] Calendar Skill


Skill name: calendar-skill

User story:

  • As a busy person, I want to be able to hear my daily schedule via voice so that I can know what my schedule is without having to look at my phone, so that I can be more organised

  • As a busy person, I want to be able to see my daily schedule on my Mycroft device without having to look at my phone, so that I can be more organised

  • As a busy person, I want to be able to hear a weekly overview or summary of my schedule on my Mycroft device so that I can be more organised

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

This is the big question. There are several calendaring applications that we could potentially interact with. We could even build a Skill that allows the user to specify which calendaring service they would like to connect to.

Some that come to mind include:

We might also want to integrate using a protocol rather than a specific platform - like WebDAV or ics.

Are there similar Mycroft Skills already?

What will the user Speak to trigger the Skill?

  • Hey Mycroft, what's my schedule for today?
  • Hey Mycroft, what's my schedule for {{day}}?
  • Hey Mycroft, what's next on my calendar?
  • Hey Mycroft, add a new event on my calendar for {{day}} => converse()
  • Hey Mycroft, how many appointments are on my calendar for {{day}}?
  • Hey Mycroft, when's the next free time in my calendar?

What phrases will Mycroft Speak?

  • You have {{number_of_events}} on your schedule for today. They are {{event}} at {{event_location}}, followed by … {{event_n}}

  • You have {{number_of_events}} on your schedule for {{day}}. They are {{event}} at {{event_location}}, followed by … {{event_n}}

  • Next up you have {{event}}, followed by {{next_event}}

  • Sure, I’ve added {{event}} to your calendar for {{time}} on {{day}}

What Skill Settings will this Skill need to store?

  • user’s timezone
  • common meeting locations

Other comments?

This one’s going to be difficult to do but is going t add a lot of value for end users.


I agree this would be invaluable. I have actually considered giving my Mycroft unit it’s own gmail (or similar) account so it can have it’s own e-mail address (send or respond via e-mail for commands) “eg. send e-mail to Mycroft to turn on the porch lights as I am going to be late, responds with an e-mail confirming the action”. Also Mycroft would maintain its own calendar and sync to mine.


If I was going to send messages to a Mycroft remotely, I’d be tempted to set it up to do it over IRC or the like. Could even have multiple Mycroft units (and possibly other types of devices as well?) “talk” to each other that way.

Heck, IRC used to be the preferred way to run a botnet, and while custom web services have apparently taken over as the most popular way nowadays, almost as many are still using the old tried-and-true IRC approach instead of the “new” approach.

I know, a handfull of Mycroft units and whatever other devices may be talking to them is different than a botnet, but I still think that having them communicating with each other that way could be a handy trick to “borrow” from botnets still.

[Productivity] Reminders

This has my vote - but for me, it’s only useful if Mycroft supports Calendaring Extensions to WebDAV (“CalDAV”), as I have my own domain (“website”) and my calendar is synchronized in multiple places using this “open” protocol…


I have Nextcloud Running on my own server at home and I agree that this skill, and mycroft in general, should support open Protocols like CalDAV for Calendar - which is also good for syncing tasks - and CardDav for Contacts. I rthink that it is really important for an Open-Source Project to support Open Protocols.

In generell I think it would be really cool to have mycroft fully interacting with OwnCloud / Nextcloud becouse these are Open-Source projects too and a lot of peaple who like OwnCloud / Netxtcloud would probably also like Mycroft!


Actually that’s a great idea. Anyone want to write up a Nextcloud Skill Suggestion?


I second this. If I wanted Google Calendar I would’ve bought a Google Home assistant.

CalDAV, ics, local clients etc. would be preferred, altough CalDAV would probably be the most useful in terms of connectivity.


Great comments, all.

We’re hearing you - CalDAV, .ics appear to be the preferred integration standards / platforms for this Skill. You can always export your Google Calendar into another format if needed, as you can from Outlook and other proprietary platforms. Support the ‘standard’ or ‘protocol’ first.


Just to let you all know, I’ve been developing a calendar skill which supports CalDAV and local ics files. It might take another weekend or so for me to finish the first iteration but I’ll update this once I’m done.


Alright, this got a bit behind and I know is isn’t

after the last post, but I’ve created a pretty simple calendar skill. Right now, it supports an ics file or a CalDav server.

Features (as of now - I’m going to add more):

  • Listing of the events on a given day
  • Adding an event to the calendar.

It works alright feel free to install and use. Once I fix things up, I’ll create a skills feedback post here on the forum. (no time guarantees!)

Link to the calendar skill : https://github.com/LinusS1/calendar-skill