Skip to main content

thalovant-skillkit

Write a Thalovant skill without writing the plumbing.

pip install thalovant-skillkit
thalovant-skillkit new garden-watering

That writes a complete skill — package, locales, tests, packaging, CI — that passes its own checks before you touch it.

The skill

from thalovant_skillkit.skill import ThalovantFallbackSkill


class GardenWateringSkill(ThalovantFallbackSkill):
    FALLBACK_PRIORITY = 98

    def can_answer(self, message) -> bool:
        return self.mentions(self.utterance(message), "GardenWateringKeyword")

    def reply(self, utterance, lang, context):
        return self.dialog("garden.watering", lang)

reply is the one method most skills need. What it returns is spoken on the hub and shown in the showroom, so the two cannot drift apart.

A test

from thalovant_skillkit.testing import message

def test_it_hears_its_keyword():
    assert GardenWateringSkill().can_answer(message("water the garden"))

def test_it_ignores_the_rest():
    assert not GardenWateringSkill().can_answer(message("set a timer"))

Keeping it right

thalovant-skillkit check

Every locale complete, placeholders matching, packaging sound, priority in band — and your sentences against every other skill's. Every skill's intents are trained into one classifier on the hub, so a sentence you publish must not already be another skill's: the check compares your .intent files with the fleet's model on the Hugging Face Hub (thalovant/thalovant-m2v-intents, public). A sentence another skill already publishes fails, on the line, naming the owner; a sentence the classifier reads as another skill's warns, with its confidence. The same check runs in the CI the scaffold writes for you, on every push, and tells you which line to change. Offline, it says so and checks the rest.

What you get

self.utterance(msg) what was said
self.lang_of(msg) the language of this utterance
self.location_of(msg) where the house is
self.mentions(text, "Voc") does the text mention this vocabulary — plurals included
self.dialog("name", lang) a line from locale/<lang>/dialog/name.dialog
self.setting("key", default) one skill setting
self.reply(utterance, lang, ctx) your answer; spoken and previewed from one place

There are four bases: ThalovantSkill for a skill with its own intents, ThalovantFallbackSkill for one that answers what no intent claimed, ThalovantConversationalSkill for one that keeps a conversation going, and ThalovantCommonPlaySkill for one that answers OCP searches.

Everything on OVOSSkill still works — self.speak, self.speak_dialog, self.voc_match, the intent decorators. Nothing here replaces them.


Guide: docs.thalovant.com/developers/writing-a-skill

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thalovant_skillkit-0.9.0.tar.gz (64.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thalovant_skillkit-0.9.0-py3-none-any.whl (50.9 kB view details)

Uploaded Python 3

File details

Details for the file thalovant_skillkit-0.9.0.tar.gz.

File metadata

  • Download URL: thalovant_skillkit-0.9.0.tar.gz
  • Upload date:
  • Size: 64.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for thalovant_skillkit-0.9.0.tar.gz
Algorithm Hash digest
SHA256 bbf60e225685d360e4705dadb64e646bc1ea59bd1656a6d296ad149e757af81f
MD5 af7206a54d82ef12de7e47fe90c768bf
BLAKE2b-256 c5060fe02d2b1002364e0464775c69e0f6bfee085b6ec5fa44778ec142c9cf69

See more details on using hashes here.

Provenance

The following attestation bundles were made for thalovant_skillkit-0.9.0.tar.gz:

Publisher: publish.yml on thalovant/thalovant-skillkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thalovant_skillkit-0.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for thalovant_skillkit-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ae0c5492ad3cfb77325e2b0c4596d58751e16cf2a9965df475b16ac6364b64a
MD5 efd47d05f3e3aa710253a9fd580772dc
BLAKE2b-256 fdfdb7c48469f19711c3f0d14b9b830f7ede2daee2ff50f6bc41dbb0ec181614

See more details on using hashes here.

Provenance

The following attestation bundles were made for thalovant_skillkit-0.9.0-py3-none-any.whl:

Publisher: publish.yml on thalovant/thalovant-skillkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

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