I know there are some bigger fish to fry, but as I am getting my feet wet in skill development, I have found a couple of cases where it seems like the “right” solution would be a standard convenience function built into mycroft objects. Here are my suggestions:
First, when mycroft speaks an email address, it would be great to have a single function that would modify the string so that it will be pronounced in a “natural” way. There is nuance to this: sometimes the best thing is to spell out certain parts (but obviously rarely the TLD, unless it is a country-code), sometimes the domain or the mailbox name are just concatenations of two simple dictionary words (which should just be pronounced, probably). Also, SMTP actually permits several non-alpha-numeric characters such as hyphens, plus, period, underscore, an several others. Note, it is not always practical to put in a pre-modified string. What is the email address is supplied by settings.json? so something like this would be great: self.speak('please send email to: ’ + self.pronounce_email(self.settings.get(“support_email”, “”))
Maybe a whole list of special pronounce_ methods.
Second, while I found the scrolling text display code in the IP address skill and got it to work, this seems like just the sort of thing that should happen in a function named something like self.enclosure.auto_scroll_mouth_text(‘Important, longish info here’) or an optional mode of the already existing mouth_text method activated by an optional additional parameter. Just call it and forget it. Let it handle timing and enclosure type awareness and resetting, etc.
Last, a single function that when called, checks for the existence of a valid self.settings value, and if None exists, prompts for a value, confirms it and then writes it to settings.json. I presume that not every setting would be a reasonable fit for this, but some things probably don’t really need a trip to home.mycroft.ai (though that option should be kept available).