Skip to content
Console
Try one

    What SkillKit Gives You

    Find SkillKit helpers by task, from what you want the skill to do to the call that does it and the page that explains it.

    SkillKit is a small library for writing Thalovant skills without copying the plumbing every skill needs. OVOS still owns intent routing, speech, sessions, and scheduling; SkillKit gives your code the pieces around them. This page is the map. Pick what you want to do, and it names the helper and the page that shows it working.

    You want toUseShown in
    Answer a spoken commandThalovantSkill with @intent_handler and an .intent fileChoose the right base
    Answer a topic nothing else claimedThalovantFallbackSkill with can_answer, reply, and FALLBACK_PRIORITYChoose a fallback priority
    Keep a conversation goingThalovantConversationalSkill with can_converse and converseLesson 3 of the quiz
    Do both, or play mediaThalovantConversationalFallbackSkill, ThalovantCommonPlaySkillChoose the right base
    Speak to the room that asked, in its languageself.speak_to(message, text)Lesson 2 of the quiz
    Show a reply without speakingpreview_replyLesson 1 of the quiz
    You want toUseShown in
    Read the words, the language, or the locationself.utterance, self.lang_of, self.location_ofWhat you can call
    Match a keyword people inflect (“logs”, “logging”)self.mentions, self.mentioned_termWhat you can call
    Check a whole phrase against an intent filelocale_resources.matches_literal_intentLesson 2 of the quiz
    Check alternative transcriptsmessage.utterancesRead alternative transcripts
    Write optional phrases and slots.intent templates and thalovant-skillkit checkWrite intent phrases
    Compare text the way vocabulary files are comparedfold, fold_words, strip_accentsWhat you can call
    You want toUseShown in
    Pick a translated line, with placeholdersself.dialog("name", lang, data)Lesson 2 of the quiz
    Add pauses or pronunciation hintsself.dialog, .ssml twins, ssml.say, ssml.digitsAdd pauses and pronunciation
    Vary replies without repeatingself.speak_varied_dialogFind sounds once
    Serve a regional variant without a second translationlocale/regional.json and thalovant-skillkit locales --writeSupport regional variations
    Say a date, time, or duration for ears and for a screenmoments.date_text, time_text, duration_text, speak_with_writtenSay a date or time both ways
    Read one skill setting safelyself.setting("key", default)What you can call
    You want toUseShown in
    Keep one game or state per playerSessionStateStoreKeep one game per player
    Call a web service with a time budgetJsonServiceClient, RequestBudgetGive online work a time budget
    Ask the Thalovant knowledge serviceknowledge.knowledge_replyAsk the knowledge service
    Ship many sounds and pick without repeatsbundled_files, ShuffleBagPoolFind sounds once
    Refresh a catalog in the backgroundPeriodicWorkerRefresh away from the reply
    Keep optional shared state in Redis or PostgreSQLJsonStateStoreSave state without copying backend code
    Get your own reply back on a shared bus topicbus.wait_for_responseKeep shared bus replies with their caller
    You want toUseShown in
    Test without a running assistanttesting.message, testing.FakeBus, preview_replyTest it
    Test through the real OVOS busskill_harness, managed_minicroft, capture_turnExercise the real OVOS bus
    Start a projectthalovant-skillkit newStart from a working skill
    Check resources, and that no other skill owns your phrasesthalovant-skillkit checkShip it
    Check that the built package carries its filesthalovant-skillkit check-artifactsCheck what you built

    Recognising which skill a sentence belongs to, turning text into speech, keeping a session alive, and running timers and alarms are OVOS’s jobs. self.speak, self.speak_dialog, self.play_audio, the intent decorators, and the scheduler all keep working exactly as they do in any OVOS skill.

    The SkillKit reference has every signature and return value.