{"id":21081717,"url":"https://github.com/openvoiceos/ovos-workshop","last_synced_at":"2026-06-28T03:00:48.485Z","repository":{"id":38821160,"uuid":"354055597","full_name":"OpenVoiceOS/ovos-workshop","owner":"OpenVoiceOS","description":"frameworks, templates and patches for the OpenVoiceOS universe","archived":false,"fork":false,"pushed_at":"2026-06-23T17:47:21.000Z","size":3057,"stargazers_count":6,"open_issues_count":22,"forks_count":15,"subscribers_count":2,"default_branch":"dev","last_synced_at":"2026-06-23T19:26:43.872Z","etag":null,"topics":["openvoiceos"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenVoiceOS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["OpenVoiceOS"],"patreon":"openvoiceos","liberapay":"OpenVoiceOS-Foundation","custom":"https://paypal.me/openvoiceos"}},"created_at":"2021-04-02T15:15:29.000Z","updated_at":"2026-06-06T19:45:40.000Z","dependencies_parsed_at":"2022-09-01T19:13:09.903Z","dependency_job_id":"ca1ca2cc-1dbf-4d63-991b-e9ab052f7a5b","html_url":"https://github.com/OpenVoiceOS/ovos-workshop","commit_stats":{"total_commits":203,"total_committers":8,"mean_commits":25.375,"dds":0.4926108374384236,"last_synced_commit":"693a213a666bdc17e1c82809d4eff838a5e6f732"},"previous_names":[],"tags_count":302,"template":false,"template_full_name":null,"purl":"pkg:github/OpenVoiceOS/ovos-workshop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVoiceOS%2Fovos-workshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVoiceOS%2Fovos-workshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVoiceOS%2Fovos-workshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVoiceOS%2Fovos-workshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenVoiceOS","download_url":"https://codeload.github.com/OpenVoiceOS/ovos-workshop/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenVoiceOS%2Fovos-workshop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34875362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openvoiceos"],"created_at":"2024-11-19T20:10:30.170Z","updated_at":"2026-06-28T03:00:48.480Z","avatar_url":"https://github.com/OpenVoiceOS.png","language":"Python","funding_links":["https://github.com/sponsors/OpenVoiceOS","https://patreon.com/openvoiceos","https://liberapay.com/OpenVoiceOS-Foundation","https://paypal.me/openvoiceos"],"categories":[],"sub_categories":[],"readme":"# OVOS Workshop\n\nBase classes, decorators, and helpers for building skills and applications for OpenVoiceOS.\n\n## Install\n\n```bash\npip install ovos-workshop\n```\n\nRuntime dependencies include `ovos-yes-no-plugin` and `ovos-option-matcher-fuzzy-plugin`, which back the `ask_yesno` and `ask_selection` skill methods.\n\n## Quick Start\n\n```python\nfrom ovos_workshop.skills.ovos import OVOSSkill\nfrom ovos_workshop.decorators import intent_handler\n\n\nclass HelloWorldSkill(OVOSSkill):\n\n    @intent_handler(\"hello.intent\")\n    def handle_hello(self, message):\n        self.speak_dialog(\"hello.response\")\n\n\ndef create_skill():\n    return HelloWorldSkill()\n```\n\nRegister in `pyproject.toml`:\n\n```toml\n[project.entry-points.\"opm.skills\"]\nhello-world-skill = \"hello_world_skill:HelloWorldSkill\"\n```\n\n## Configuration\n\nKey settings a skill can accept in its `settings.json`:\n\n| Key | Default | Description |\n|-----|---------|-------------|\n| `ask_yesno_plugin` | `ovos-solver-yes-no-plugin` | YesNoEngine plugin used by `ask_yesno()` |\n| `ask_selection_plugin` | `ovos-option-matcher-fuzzy-plugin` | OptionMatcherEngine plugin used by `ask_selection()` |\n\nBoth keys can also be set system-wide under the `skills` block in `mycroft.conf`.\n\n## Documentation\n\nFull reference is in [`docs/`](docs/index.md):\n\n- [Skill classes](docs/skill-classes.md)\n- [OVOSSkill base class](docs/ovos-skill.md)\n- [ask_yesno / ask_selection plugin system](docs/skill-interaction.md)\n- [Decorators](docs/decorators.md)\n- [Settings](docs/settings.md)\n- [Resource files](docs/resource-files.md)\n\n## License\n\nApache 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenvoiceos%2Fovos-workshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenvoiceos%2Fovos-workshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenvoiceos%2Fovos-workshop/lists"}