Huw Prosser
38 supporters
Giving JARVIS Skills

Giving JARVIS Skills

May 07, 2022

Another really common question I get asked about my Jarvis project is “what can he actually do?”. This is a perfectly valid question but perhaps a more valid question would be “what can you make him do?”.

From day one I wanted Jarvis to be able to trigger a different Python scripts for different tasks without them being part of his main code base. You can think of them as separate little programs that just get opened by Jarvis, they send messages back to Jarvis and communicate other information by using an API that was developed specifically for the skills called J-boy. J-boy is just three lines of code that can be added to any Python script that allows that script to communicate with Jarvis in a single, agreed-upon and consistent format. Each skill can provide an output which could be speech or text displayed on a screen. It also can call widgets to appear on any interface that I’m near using the widget API. I’ll speak more about the interface in another post.

So far the skills that I have written for Jarvis are really simple, email, calendar, GitHub all of the things that I use on a daily basis and the skills are only a few lines long but the power that Jarvis has once he’s patched into these third-party services is actually quite surprising. I can definitely see some of the skills ballooning into entire projects of their own, for example I’m working on something called Big Query that tries to mimic the scene in Iron Man 2 where Tony is sat in his hot rod doing some research on Anton Vanko.

Another interesting addition to the skills system is background skills. These are skills they get triggered by Jarvis and continue to run in the background. Once new information is available they push information through via J-Boy to the main server to then distribute it. Imagine I have an important email, the email background skill will scan it, interpret it, summarise it and then send it through to Jarvis to then distribute it to me in a single paragraph.

I’ve purposely left the skills pretty barebones at the moment because in truth it’s actually quite easy to make them. This is also something that would make really great content live streaming, creating new skills for Jarvis is certainly something that I want to do.

In order to get Jarvis to trigger them a new intent has to be added to his intent classifier which is a neural network that classifies the input and figures out whether I’m trying to trigger a skill or not. To train his intent classifier and trigger a skill all I have to do is give him some examples of a command, for example “what’s the weather?”, “how’s the weather today?” and the neural network will train on the patterns found in each example to better understand what they mean and then better recognise them when a new input is given.

If you like this post be sure to check out my videos on TikTok and the discord server all linked via the link below.


Enjoy this post?

Buy Huw Prosser a coffee

More from Huw Prosser