Mycroft Community Forum

Skill implemeting multiple common interface


I started to develop my really first skill to revive the Karotz.

Reading the developer documentation, I found some common skills interface: CommonPlaySkill, CommonQuerySkill, CommonIoTScript. As the Karotz is both a sort of IoT (we can control led color, ears position) and a player (it can play HTTP stream), I’m looking for the best solution to implement both CommonPlaySkill and CommonIoTScript.

Should I create multiple skills?
Should I create a single class with mutlple inheritance?
Should I create multiple classes and load them via a single skill?

Any help to design such case would be really appreciated.


Humh… I think I misunderstood the CommonPlaySkill. It seems to provide sources of content, rather than providing an audio emitter.

Hi Guyou,

The Common Play and IoT Skills are created to disambiguate common utterances. In the case of the Common Play Skill it is intended for music services like Spotify, Emby, etc that can play a whole range of content. So when a user asks to “play metallica” it checks in with each of the Common Play Skills to see which is the most confident about it’s ability to fulfill the request.

Similarly for IoT if a user says “turn off the kitchen light”, do they mean to use HomeAssistant, LIFX, Wink or something else?

So one of the main deciding factors on which type of Skill you would create is what language your users would use to talk to the Karotz.