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.28.0

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.28.0
File Size Uploaded
thalovant_skillkit-0.28.0.tar.gz 171.1 kB Details

Built distribution (wheel)

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

Total release size: 287.8 kB

Release files / thalovant_skillkit-0.28.0.tar.gz

Download URL thalovant_skillkit-0.28.0.tar.gz
Size 171.1 kB
Tags Source
SHA-256 checksum
How to use checksums
80d73f9710845ffe9eee8a0cf6eafa0eb9f127a096043b9a7743d8018aadc1b3
BLAKE2b-256 checksum
How to use checksums
0d9158bbb0ed60703fb6969012d662773da9934bd245de732ad348b9a5218d61
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 16, 2026.

Transparency log

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

Download URL thalovant_skillkit-0.28.0-py3-none-any.whl
Size 116.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3d21f87dbb23dd0904d9ec2264e67597e5cd04ac3c1b6cc8a9331377e033815e
BLAKE2b-256 checksum
How to use checksums
a9576528da8c1740d7e2edc482121b315321d16c41006418c37ef6ef1599b2c4
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 16, 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