Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

extend skill.json spec #31

Closed
wants to merge 1 commit into from
Closed

Conversation

JarbasAl
Copy link
Member

@JarbasAl JarbasAl commented Jan 26, 2023

extend skill.json spec to allow specifying more complex requirements

requirements is a dict specifying other ovos platform requirements, in distributed setups such as docker plugins live in different services and can not be specified as regular python packages

"requirements": {
      "qt_version": "5",
      "phal": ["phal-plugin-X"],
      "admin": ["phal-admin-plugin-X"],
      "ocp": ["ocp-plugin-X"],
      "utterance": ["utterance-transformer.plugin-X"],
      "audio": ["audio-transformer-plugin-X"],
      "playback": ["audio-player-plugin-X"]      
}

example usages are bandcamp/deezer/news needing their respective OCP extractors, skills that need Oauth will require the companion PHAL plugin, hardware control skills will also require phal or possibly admin plugins. some skills such as spotify (WIP) and peerflix (WIP) may also require dedicated audio service players

this also accounts for OpenVoiceOS/ovos-core#163 where skills may start depending on message.context from those plugins

@JarbasAl JarbasAl added documentation Improvements or additions to documentation enhancement New feature or request labels Jan 26, 2023
}
},
"requirements": {
"qt_version": "5",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible we need other optional qt components? We also have python and other dependencies here, so maybe:

requirements:
  python: []
  system: {}
  skill: []
  plugins: [] # Or dict of plugin type to entrypoint?
  qt:
    version: '5'  # Or maybe separate min_version and max_version?
    packages: []  # Or plugins? Not sure the terminology here or if this would ever vary from defaults?

@mikejgray
Copy link
Contributor

I might be missing it, but is there much information on folder/foldername? This is unclear when writing a skill with the class in a subfolder instead of the root of the repository.

@JarbasAl
Copy link
Member Author

JarbasAl commented Apr 9, 2023

I might be missing it, but is there much information on folder/foldername? This is unclear when writing a skill with the class in a subfolder instead of the root of the repository.

folder is a legacy parameter used by plasma bigscreen, it was meant for skills that needed to override other skills, because of mycroft hardcoding default skills bigscreen used this to install some skills over official ones. That field is currently unused AFAIK just a legacy documented value

original SPEC was from https://plasma-bigscreen.org/docs/develop/ and we just adopted and extended it (mycroft-core never did)

@mikejgray
Copy link
Contributor

mikejgray commented Apr 9, 2023

Is foldername an option? Or is there a way to specify that a skill class isn't in the repository root from here?

@JarbasAl
Copy link
Member Author

JarbasAl commented Apr 9, 2023

Is foldername an option? Or is there a way to specify that a skill class isn't in the repository root from here?

skills classes are defined in setup.py entrypoints and can live anywhere, as long as OSM/mycroft compat is not important, thats how you specify other locations

the folder param will be fully removed from the spec, that was a "download folder" and now unused. it's intended usage in Pling marketplace was to specify a skill_id (same as folder name) in order to override uninstallable skills. It will be dropped from the spec

@JarbasAl
Copy link
Member Author

@JarbasAl JarbasAl closed this Jun 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants