Skip to main content

thalovant-skillkit

Build and test Thalovant skills for Open Voice OS (OVOS) with shared message, locale, conversation, and packaging helpers. SkillKit provides base classes, a project scaffold, and checks for skill resources and built packages. OVOS owns intent routing, speech, sessions, and scheduling.

Quickstart

You need Python 3.11 or newer with venv and pip, a terminal, and access to your Python package index. SkillKit itself supports Python 3.10 and newer; its generated projects require 3.11. No running hub or speaker is needed here.

Start in a working directory where thalovant-skill-garden-watering does not already exist:

python3 -m venv .venv
. .venv/bin/activate
python -m pip install --pre "thalovant-skillkit==0.22.0"
thalovant-skillkit new garden-watering
cd thalovant-skill-garden-watering
python -m pip install --pre -e ".[test]" build
thalovant-skillkit check
python -m pytest -q

This example pins SkillKit 0.22.0. --pre allows the current OVOS prerelease stack; see the reference for legacy Workshop 8 compatibility.

You should have a fallback skill with five passing tests, English and French locale resources, package metadata, and a GitHub test workflow. The check reports ok: thalovant-skill-garden-watering keeps its contracts. This scaffold uses vocabulary files, so it has no intent examples for fleet comparison. The workflow tests and validates packages; it does not install your skill on a speaker.

The sample answers what is garden watering with a placeholder reply and declines ordinary room chatter. Edit thalovant_skill_garden_watering/__init__.py for its behavior and locale/ inside that package for vocabulary and replies. Both initial vocabularies use the same English keyword; translate them before calling the skill translated.

Regional tags such as en-CA, en-GB, and fr-CA reuse compatible translations while retaining the speaker's language. For regional wording, keep only the differences in locale/regional.json; thalovant-skillkit locales --write builds complete OVOS resources. See the regional guide.

Speech markup

A reply can carry SSML beside its plain words: a pause, a code read one character at a time, a word in another language. The Thalovant voice app reads the markup. Clients that only read the plain words, such as the Android app, say the same sentence without it. SkillKit never puts a tag in the plain words.

A pause before a punchline. Put a twin beside the dialog, one line for each line of the dialog, with the same {placeholders}. For locale/en-US/dialog/joke.dialog:

Why did the scarecrow win an award? Because he was outstanding in his field.

write locale/en-US/dialog/joke.ssml:

Why did the scarecrow win an award? <break time="700ms"/> Because he was outstanding in his field.

self.speak_dialog("joke") and self.dialog("joke", lang) pick a line and send both forms of that line. A language without a twin says its plain line.

Spelling a code. Mark up the value instead of the dialog. This works in every language the skill ships, with no locale file to change:

from thalovant_skillkit.ssml import spell

self.speak_dialog("code", {"code": spell("XK7")})

A word in another language. Build the sentence in Python:

from thalovant_skillkit.ssml import foreign, say

self.speak_to(message, say("One", foreign("café au lait", "fr-FR"), "coming up."))

A plain string passed to these helpers is escaped, so what a user said can never become markup. thalovant-skillkit check checks every twin, and so does check --fleet-only. The reference lists the helpers, the tags a voice renders and the rules.

Continue building

  • Writing a Skill — choose a base class and understand how a skill works with OVOS.
  • SkillKit tutorial — build a bilingual educational quiz with sounds, one working lesson at a time.
  • API and CLI reference — helper contracts, session state, native OVOS testing, resource lookup, and command options.
  • Changelog — releases and upgrade notes.

Contribute

From a SkillKit checkout, activate a virtual environment and run the same lint and unit checks as CI:

python -m pip install --pre -e . pytest ruff
python -m ruff check thalovant_skillkit test scripts
python -m pytest -q

For changes to native OVOS integration, also follow the integration job in the test workflow. Its optional dependencies and harness contracts are covered in the reference. Report reproducible problems or suggest improvements in GitHub issues.

Metadata

Release files for thalovant-skillkit 0.24.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thalovant-skillkit 0.24.1
File Size Uploaded
thalovant_skillkit-0.24.1.tar.gz 158.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for thalovant-skillkit 0.24.1
File Interpreter ABI Platform
thalovant_skillkit-0.24.1-py3-none-any.whl Python 3 none any Details

Total release size: 264.0 kB

Release files / thalovant_skillkit-0.24.1.tar.gz

Download URL thalovant_skillkit-0.24.1.tar.gz
Size 158.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1ab9c5852e785be8d76bfc9c2ec590bfcf83bab3ae6b7086ca855ed036907a63
BLAKE2b-256 checksum
How to use checksums
ac6e995f5fe4a20c02c9322d93282922c56d9f9fabb96c224caf875e9a3cd3d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / thalovant_skillkit-0.24.1-py3-none-any.whl

Download URL thalovant_skillkit-0.24.1-py3-none-any.whl
Size 105.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f5912b1db4eed0002d1bfcfafab1de6b5abfc95df22ca280fad4e98b27c45fb8
BLAKE2b-256 checksum
How to use checksums
fc9c5acf45445d26e73ebf829018cef10300e18a19b9fcc1ddf35892cafcfd03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page