One of the benefits writing your bots in Bubblescript is the fact that you can reuse code in different dialogs. With Skills, you can reuse parts of one bot, within another bot. Skills can therefore be thought of as a tool that you can buy. Programmers can think of Skills as libraries or packages. A skill can depend on other skills, just as a drill can depend on a drill-bit to perform its function.
Botsquad provides a few internally developed skills for you, but of course you can create skills yourself. At the moment, it is not possible to publish skills for other people to install, but this is a planned functionality for the future.
Installing an external Skill¶
Skills provided by Botsquad can be installed through the Skills main-menu item. On the underlying page, you can find an overview of skills that are available and the skills that are already installed in your bot. A skill is installed using the "Install" button in the pop-up.
All the dependencies for a skill will be installed automatically.
Configuring a Skill¶
Once a skill is installed, it can, depending on the skill, be configured to perform its task in a way you desire. Configuration of the Skill is done in the "Installed" section by clicking on the cogwheel of a Skill.
Uninstalling a Skill¶
Skills can be uninstalled in the "Installed Skills" by clicking on a Skill and then on the "Uninstall Skill" button. If the Skill you are trying to uninstall has another installed Skill that depends on it, an error will be shown with the name(s) of the Skill(s) that depend on it. Uninstall those skills first.
Disabling a skill¶
Skills can be temporarily disabled. This functionality can be used to first install the skill and then configure it, without exposing the skill yet to the world.
A skill exists in its own folder in the bot, where all the files that are necessary for the Skill to function properly are stored. Subfolders can be used to create a more structured hierarchy if needed.
The information about the Skill is stored in the
that resides in the directory of the Skill. This file has the
following fields that describe the skill:
string, mandatory, unique identifier of the Skill,
string, mandatory, a display title for the Skill,
string, mandatory, the icon that is displayed in the Skills section (blueprintjs icon),
string, mandatory, a small description of what the Skill does.
list of string, a list of names of other Skills that this Skill depends on,
list of string, a list of names of other Skills that need to be ordered below this skill,
string, the license that the skill is published under,
list of images, screenshots of the Skill,
settings schema, a CMS definition of the settings for this Skill,
list of strings, a list of tags that apply to this Skill,
string, a semantic version of the Skill at the time of publishing.
A minimal skill.yaml file:
name: "company/skill" title: "My Skill" subtitle: "Provides basic behaviour" icon: "badge" version: "1.0.0" dependencies: - "bsqd/base"
Often you develop multiple skills inside a single bot. In that case, you might want to write test cases that only cover a single skill. In such cases, it is best to disable the other skills in the bot that are not the focus of the current test.
It is possible to automatically disable certain skills for certain test files,
by setting the
@disabled_skills constant in the test file, like this:
@disabled_skills ["b"] test "Only testing skill a" expect "Hello from a" end