Skill Settings
Skill settings in OVOS allow users to configure and personalize the behavior of Skills—either through the command line, configuration files, or a web-based interface. This enables advanced customization and support for external integrations, while remaining completely optional for basic usage.
Common Use Cases
- Changing default behaviors (e.g. alarm sounds, display preferences)
 - Authenticating with third-party services (e.g. Spotify)
 - Entering longer or complex data (e.g. IP addresses, API keys)
 
Using Skill Settings in Your Skill
Settings are managed through a dictionary-like object available on the OVOSSkill base class. They are persisted to disk and can be updated locally by the Skill or remotely by the user via a frontend.
Settings are stored in your Skill's configuration directory, usually:
~/.config/mycroft/skills/<your_skill_id>/settings.json
Accessing Settings
You can read settings like a standard Python dictionary, but it's recommended to use .get() to avoid KeyError exceptions:
# Safely read the 'show_time' setting with a default fallback
show_time = self.settings.get("show_time", False)
⚠️ Avoid using
self.settings['show_time']directly, as it will raise aKeyErrorif the setting is not defined.
Also, do not access self.settings in your __init__() method—wait until the initialize() method to ensure the settings are fully loaded.
Handling Settings Updates
OVOS automatically checks for setting changes, either locally or from a remote backend. You can register a callback to react when settings change:
def initialize(self):
    self.settings_change_callback = self.on_settings_changed
    self.on_settings_changed()  # Also run immediately on start
def on_settings_changed(self):
    show_time = self.settings.get('show_time', False)
    self.trigger_time_display(show_time)
This ensures your Skill responds to user configuration changes dynamically.
Writing to Settings
You can update and persist values to the settings file simply by assigning them:
self.settings['show_time'] = True
Changes will persist across restarts unless overridden remotely via a backend or web interface.
Web-Based Skill Settings (Optional UI)
A community-built web interface, OVOS Skill Config Tool, provides a modern, user-friendly way to configure OVOS skills.
Features
- Clean UI for managing skill-specific settings
 - Grouping and organization of Skills
 - Dark mode support
 - Built-in Basic Authentication for security
 

Installation
Install via pip:
pip install ovos-skill-config-tool
Run the tool:
ovos-skill-config-tool
Access it in your browser at http://0.0.0.0:8000
Default Login
- Username: 
ovos - Password: 
ovos 
To customize credentials:
export OVOS_CONFIG_USERNAME=myuser
export OVOS_CONFIG_PASSWORD=mypassword
ovos-skill-config-tool
Tips
- Always use 
.get(key, default)for safe reads. - Use 
initialize()instead of__init__()for anything that depends on settings. - Use settings callbacks to keep your Skill reactive to user changes.