diff --git a/.github/workflows/ovoscope.yml b/.github/workflows/ovoscope.yml
new file mode 100644
index 0000000..4c96bc0
--- /dev/null
+++ b/.github/workflows/ovoscope.yml
@@ -0,0 +1,17 @@
+name: Skill End-to-End Tests (ovoscope)
+
+on:
+ pull_request:
+ branches: [dev, master, main]
+ workflow_dispatch:
+
+jobs:
+ ovoscope:
+ uses: OpenVoiceOS/gh-automations/.github/workflows/ovoscope.yml@dev
+ secrets: inherit
+ with:
+ python_version: '3.11'
+ install_extras: 'test'
+ test_path: 'test/end2end/'
+ system_deps: 'swig'
+ require_padatious: true
diff --git a/__pycache__/__init__.cpython-311.pyc b/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..665429e
Binary files /dev/null and b/__pycache__/__init__.cpython-311.pyc differ
diff --git a/ovos_skill_diagnostics.egg-info/PKG-INFO b/ovos_skill_diagnostics.egg-info/PKG-INFO
new file mode 100644
index 0000000..8408d5d
--- /dev/null
+++ b/ovos_skill_diagnostics.egg-info/PKG-INFO
@@ -0,0 +1,53 @@
+Metadata-Version: 2.4
+Name: ovos-skill-diagnostics
+Version: 0.0.11a1
+Summary: OVOS diagnostics skill
+Home-page: https://github.com/OpenVoiceOS/ovos-skill-diagnostics
+Author: OpenVoiceOS
+Author-email: jarbasai@mailfence.com
+License: Apache-2.0
+Keywords: ovos skill plugin
+Description-Content-Type: text/markdown
+License-File: LICENSE
+Requires-Dist: ovos_workshop>=0.0.12
+Requires-Dist: ovos-lang-parser
+Requires-Dist: psutil
+Dynamic: author
+Dynamic: author-email
+Dynamic: description
+Dynamic: description-content-type
+Dynamic: home-page
+Dynamic: keywords
+Dynamic: license
+Dynamic: license-file
+Dynamic: requires-dist
+Dynamic: summary
+
+#
System Diagnostics
+Retrieve system information such as CPU, memory, and language settings.
+
+## About
+The **System Diagnostics Skill** provides various system metrics, including kernel version, CPU and memory usage, GPU availability, and language settings. Users can query these details via voice commands.
+
+## Examples
+* "What is your kernel version?"
+* "Do you have a GPU?"
+* "What is your CPU usage?"
+* "How much memory are you using?"
+* "What language are you using?"
+
+## Category
+**System**
+
+## Tags
+#system
+#diagnostics
+#hardware
+#performance
+#language
+
+## Credits
+
+
+
+> This skill was funded by the Ministerio para la Transformación Digital y de la Función Pública and Plan de Recuperación, Transformación y Resiliencia - Funded by EU – NextGenerationEU within the framework of the project ILENIA with reference 2022/TL22/00215337
diff --git a/ovos_skill_diagnostics.egg-info/SOURCES.txt b/ovos_skill_diagnostics.egg-info/SOURCES.txt
new file mode 100644
index 0000000..2d4a758
--- /dev/null
+++ b/ovos_skill_diagnostics.egg-info/SOURCES.txt
@@ -0,0 +1,679 @@
+LICENSE
+MANIFEST.in
+README.md
+__init__.py
+renovate.json
+requirements.txt
+setup.py
+version.py
+./__init__.py
+./renovate.json
+./version.py
+./locale/ca/available_memory.dialog
+./locale/ca/cpu_percent.dialog
+./locale/ca/current_lang.dialog
+./locale/ca/current_memory.dialog
+./locale/ca/has_gpu.dialog
+./locale/ca/kernel_version.dialog
+./locale/ca/no_gpu.dialog
+./locale/ca/no_secondary_langs.dialog
+./locale/ca/primary_lang.dialog
+./locale/ca/query_cpu_usage.intent
+./locale/ca/query_extra_langs.intent
+./locale/ca/query_gpu.intent
+./locale/ca/query_kernel_version.intent
+./locale/ca/query_langs.intent
+./locale/ca/query_memory_usage.intent
+./locale/ca/query_ovos_location.intent
+./locale/ca/query_primary_lang.intent
+./locale/ca/query_user_lang.intent
+./locale/ca/query_user_location.intent
+./locale/ca/secondary_langs.dialog
+./locale/ca/system_location.dialog
+./locale/ca/user_location.dialog
+./locale/ca-ES/available_memory.dialog
+./locale/ca-ES/cpu_percent.dialog
+./locale/ca-ES/current_lang.dialog
+./locale/ca-ES/current_memory.dialog
+./locale/ca-ES/has_gpu.dialog
+./locale/ca-ES/kernel_version.dialog
+./locale/ca-ES/no_gpu.dialog
+./locale/ca-ES/no_secondary_langs.dialog
+./locale/ca-ES/primary_lang.dialog
+./locale/ca-ES/query_cpu_usage.intent
+./locale/ca-ES/query_extra_langs.intent
+./locale/ca-ES/query_gpu.intent
+./locale/ca-ES/query_kernel_version.intent
+./locale/ca-ES/query_langs.intent
+./locale/ca-ES/query_memory_usage.intent
+./locale/ca-ES/query_ovos_location.intent
+./locale/ca-ES/query_primary_lang.intent
+./locale/ca-ES/query_user_lang.intent
+./locale/ca-ES/query_user_location.intent
+./locale/ca-ES/secondary_langs.dialog
+./locale/ca-ES/system_location.dialog
+./locale/ca-ES/user_location.dialog
+./locale/ca-ES/ca/available_memory.dialog
+./locale/ca-ES/ca/cpu_percent.dialog
+./locale/ca-ES/ca/current_lang.dialog
+./locale/ca-ES/ca/current_memory.dialog
+./locale/ca-ES/ca/has_gpu.dialog
+./locale/ca-ES/ca/kernel_version.dialog
+./locale/ca-ES/ca/no_gpu.dialog
+./locale/ca-ES/ca/no_secondary_langs.dialog
+./locale/ca-ES/ca/primary_lang.dialog
+./locale/ca-ES/ca/query_cpu_usage.intent
+./locale/ca-ES/ca/query_extra_langs.intent
+./locale/ca-ES/ca/query_gpu.intent
+./locale/ca-ES/ca/query_kernel_version.intent
+./locale/ca-ES/ca/query_langs.intent
+./locale/ca-ES/ca/query_memory_usage.intent
+./locale/ca-ES/ca/query_ovos_location.intent
+./locale/ca-ES/ca/query_primary_lang.intent
+./locale/ca-ES/ca/query_user_lang.intent
+./locale/ca-ES/ca/query_user_location.intent
+./locale/ca-ES/ca/secondary_langs.dialog
+./locale/ca-ES/ca/system_location.dialog
+./locale/ca-ES/ca/user_location.dialog
+./locale/da/available_memory.dialog
+./locale/da/cpu_percent.dialog
+./locale/da/current_lang.dialog
+./locale/da/current_memory.dialog
+./locale/da/has_gpu.dialog
+./locale/da/kernel_version.dialog
+./locale/da/no_gpu.dialog
+./locale/da/no_secondary_langs.dialog
+./locale/da/primary_lang.dialog
+./locale/da/query_cpu_usage.intent
+./locale/da/query_extra_langs.intent
+./locale/da/query_gpu.intent
+./locale/da/query_kernel_version.intent
+./locale/da/query_langs.intent
+./locale/da/query_memory_usage.intent
+./locale/da/query_ovos_location.intent
+./locale/da/query_primary_lang.intent
+./locale/da/query_user_lang.intent
+./locale/da/query_user_location.intent
+./locale/da/secondary_langs.dialog
+./locale/da/system_location.dialog
+./locale/da/user_location.dialog
+./locale/da-DK/available_memory.dialog
+./locale/da-DK/cpu_percent.dialog
+./locale/da-DK/current_lang.dialog
+./locale/da-DK/current_memory.dialog
+./locale/da-DK/has_gpu.dialog
+./locale/da-DK/kernel_version.dialog
+./locale/da-DK/no_gpu.dialog
+./locale/da-DK/no_secondary_langs.dialog
+./locale/da-DK/primary_lang.dialog
+./locale/da-DK/query_cpu_usage.intent
+./locale/da-DK/query_extra_langs.intent
+./locale/da-DK/query_gpu.intent
+./locale/da-DK/query_kernel_version.intent
+./locale/da-DK/query_langs.intent
+./locale/da-DK/query_memory_usage.intent
+./locale/da-DK/query_ovos_location.intent
+./locale/da-DK/query_primary_lang.intent
+./locale/da-DK/query_user_lang.intent
+./locale/da-DK/query_user_location.intent
+./locale/da-DK/secondary_langs.dialog
+./locale/da-DK/system_location.dialog
+./locale/da-DK/user_location.dialog
+./locale/da-DK/da/available_memory.dialog
+./locale/da-DK/da/cpu_percent.dialog
+./locale/da-DK/da/current_lang.dialog
+./locale/da-DK/da/current_memory.dialog
+./locale/da-DK/da/has_gpu.dialog
+./locale/da-DK/da/kernel_version.dialog
+./locale/da-DK/da/no_gpu.dialog
+./locale/da-DK/da/no_secondary_langs.dialog
+./locale/da-DK/da/primary_lang.dialog
+./locale/da-DK/da/query_cpu_usage.intent
+./locale/da-DK/da/query_extra_langs.intent
+./locale/da-DK/da/query_gpu.intent
+./locale/da-DK/da/query_kernel_version.intent
+./locale/da-DK/da/query_langs.intent
+./locale/da-DK/da/query_memory_usage.intent
+./locale/da-DK/da/query_ovos_location.intent
+./locale/da-DK/da/query_primary_lang.intent
+./locale/da-DK/da/query_user_lang.intent
+./locale/da-DK/da/query_user_location.intent
+./locale/da-DK/da/secondary_langs.dialog
+./locale/da-DK/da/system_location.dialog
+./locale/da-DK/da/user_location.dialog
+./locale/de-de/available_memory.dialog
+./locale/de-de/cpu_percent.dialog
+./locale/de-de/current_lang.dialog
+./locale/de-de/current_memory.dialog
+./locale/de-de/has_gpu.dialog
+./locale/de-de/kernel_version.dialog
+./locale/de-de/no_gpu.dialog
+./locale/de-de/no_secondary_langs.dialog
+./locale/de-de/primary_lang.dialog
+./locale/de-de/query_cpu_usage.intent
+./locale/de-de/query_extra_langs.intent
+./locale/de-de/query_gpu.intent
+./locale/de-de/query_kernel_version.intent
+./locale/de-de/query_langs.intent
+./locale/de-de/query_memory_usage.intent
+./locale/de-de/query_ovos_location.intent
+./locale/de-de/query_primary_lang.intent
+./locale/de-de/query_user_lang.intent
+./locale/de-de/query_user_location.intent
+./locale/de-de/secondary_langs.dialog
+./locale/de-de/system_location.dialog
+./locale/de-de/user_location.dialog
+./locale/en-us/available_memory.dialog
+./locale/en-us/cpu_percent.dialog
+./locale/en-us/current_lang.dialog
+./locale/en-us/current_memory.dialog
+./locale/en-us/has_gpu.dialog
+./locale/en-us/kernel_version.dialog
+./locale/en-us/no_gpu.dialog
+./locale/en-us/no_secondary_langs.dialog
+./locale/en-us/primary_lang.dialog
+./locale/en-us/query_cpu_usage.intent
+./locale/en-us/query_extra_langs.intent
+./locale/en-us/query_gpu.intent
+./locale/en-us/query_kernel_version.intent
+./locale/en-us/query_langs.intent
+./locale/en-us/query_memory_usage.intent
+./locale/en-us/query_ovos_location.intent
+./locale/en-us/query_primary_lang.intent
+./locale/en-us/query_user_lang.intent
+./locale/en-us/query_user_location.intent
+./locale/en-us/secondary_langs.dialog
+./locale/en-us/system_location.dialog
+./locale/en-us/user_location.dialog
+./locale/es-es/available_memory.dialog
+./locale/es-es/cpu_percent.dialog
+./locale/es-es/current_lang.dialog
+./locale/es-es/current_memory.dialog
+./locale/es-es/has_gpu.dialog
+./locale/es-es/kernel_version.dialog
+./locale/es-es/no_gpu.dialog
+./locale/es-es/no_secondary_langs.dialog
+./locale/es-es/primary_lang.dialog
+./locale/es-es/query_cpu_usage.intent
+./locale/es-es/query_extra_langs.intent
+./locale/es-es/query_gpu.intent
+./locale/es-es/query_kernel_version.intent
+./locale/es-es/query_langs.intent
+./locale/es-es/query_memory_usage.intent
+./locale/es-es/query_ovos_location.intent
+./locale/es-es/query_primary_lang.intent
+./locale/es-es/query_user_lang.intent
+./locale/es-es/query_user_location.intent
+./locale/es-es/secondary_langs.dialog
+./locale/es-es/system_location.dialog
+./locale/es-es/user_location.dialog
+./locale/fr-fr/available_memory.dialog
+./locale/fr-fr/cpu_percent.dialog
+./locale/fr-fr/current_lang.dialog
+./locale/fr-fr/current_memory.dialog
+./locale/fr-fr/has_gpu.dialog
+./locale/fr-fr/kernel_version.dialog
+./locale/fr-fr/no_gpu.dialog
+./locale/fr-fr/no_secondary_langs.dialog
+./locale/fr-fr/primary_lang.dialog
+./locale/fr-fr/query_cpu_usage.intent
+./locale/fr-fr/query_extra_langs.intent
+./locale/fr-fr/query_gpu.intent
+./locale/fr-fr/query_kernel_version.intent
+./locale/fr-fr/query_langs.intent
+./locale/fr-fr/query_memory_usage.intent
+./locale/fr-fr/query_ovos_location.intent
+./locale/fr-fr/query_primary_lang.intent
+./locale/fr-fr/query_user_lang.intent
+./locale/fr-fr/query_user_location.intent
+./locale/fr-fr/secondary_langs.dialog
+./locale/fr-fr/system_location.dialog
+./locale/fr-fr/user_location.dialog
+./locale/gl/available_memory.dialog
+./locale/gl/cpu_percent.dialog
+./locale/gl/current_lang.dialog
+./locale/gl/current_memory.dialog
+./locale/gl/has_gpu.dialog
+./locale/gl/kernel_version.dialog
+./locale/gl/no_gpu.dialog
+./locale/gl/no_secondary_langs.dialog
+./locale/gl/primary_lang.dialog
+./locale/gl/query_cpu_usage.intent
+./locale/gl/query_extra_langs.intent
+./locale/gl/query_gpu.intent
+./locale/gl/query_kernel_version.intent
+./locale/gl/query_langs.intent
+./locale/gl/query_memory_usage.intent
+./locale/gl/query_ovos_location.intent
+./locale/gl/query_primary_lang.intent
+./locale/gl/query_user_lang.intent
+./locale/gl/query_user_location.intent
+./locale/gl/secondary_langs.dialog
+./locale/gl/system_location.dialog
+./locale/gl/user_location.dialog
+./locale/gl-ES/available_memory.dialog
+./locale/gl-ES/cpu_percent.dialog
+./locale/gl-ES/current_lang.dialog
+./locale/gl-ES/current_memory.dialog
+./locale/gl-ES/has_gpu.dialog
+./locale/gl-ES/kernel_version.dialog
+./locale/gl-ES/no_gpu.dialog
+./locale/gl-ES/no_secondary_langs.dialog
+./locale/gl-ES/primary_lang.dialog
+./locale/gl-ES/query_cpu_usage.intent
+./locale/gl-ES/query_extra_langs.intent
+./locale/gl-ES/query_gpu.intent
+./locale/gl-ES/query_kernel_version.intent
+./locale/gl-ES/query_langs.intent
+./locale/gl-ES/query_memory_usage.intent
+./locale/gl-ES/query_ovos_location.intent
+./locale/gl-ES/query_primary_lang.intent
+./locale/gl-ES/query_user_lang.intent
+./locale/gl-ES/query_user_location.intent
+./locale/gl-ES/secondary_langs.dialog
+./locale/gl-ES/system_location.dialog
+./locale/gl-ES/user_location.dialog
+./locale/gl-ES/gl/available_memory.dialog
+./locale/gl-ES/gl/cpu_percent.dialog
+./locale/gl-ES/gl/current_lang.dialog
+./locale/gl-ES/gl/current_memory.dialog
+./locale/gl-ES/gl/has_gpu.dialog
+./locale/gl-ES/gl/kernel_version.dialog
+./locale/gl-ES/gl/no_gpu.dialog
+./locale/gl-ES/gl/no_secondary_langs.dialog
+./locale/gl-ES/gl/primary_lang.dialog
+./locale/gl-ES/gl/query_cpu_usage.intent
+./locale/gl-ES/gl/query_extra_langs.intent
+./locale/gl-ES/gl/query_gpu.intent
+./locale/gl-ES/gl/query_kernel_version.intent
+./locale/gl-ES/gl/query_langs.intent
+./locale/gl-ES/gl/query_memory_usage.intent
+./locale/gl-ES/gl/query_ovos_location.intent
+./locale/gl-ES/gl/query_primary_lang.intent
+./locale/gl-ES/gl/query_user_lang.intent
+./locale/gl-ES/gl/query_user_location.intent
+./locale/gl-ES/gl/secondary_langs.dialog
+./locale/gl-ES/gl/system_location.dialog
+./locale/gl-ES/gl/user_location.dialog
+./locale/it-it/available_memory.dialog
+./locale/it-it/cpu_percent.dialog
+./locale/it-it/current_lang.dialog
+./locale/it-it/current_memory.dialog
+./locale/it-it/has_gpu.dialog
+./locale/it-it/kernel_version.dialog
+./locale/it-it/no_gpu.dialog
+./locale/it-it/no_secondary_langs.dialog
+./locale/it-it/primary_lang.dialog
+./locale/it-it/query_cpu_usage.intent
+./locale/it-it/query_extra_langs.intent
+./locale/it-it/query_gpu.intent
+./locale/it-it/query_kernel_version.intent
+./locale/it-it/query_langs.intent
+./locale/it-it/query_memory_usage.intent
+./locale/it-it/query_ovos_location.intent
+./locale/it-it/query_primary_lang.intent
+./locale/it-it/query_user_lang.intent
+./locale/it-it/query_user_location.intent
+./locale/it-it/secondary_langs.dialog
+./locale/it-it/system_location.dialog
+./locale/it-it/user_location.dialog
+./locale/pt-pt/available_memory.dialog
+./locale/pt-pt/cpu_percent.dialog
+./locale/pt-pt/current_lang.dialog
+./locale/pt-pt/current_memory.dialog
+./locale/pt-pt/has_gpu.dialog
+./locale/pt-pt/kernel_version.dialog
+./locale/pt-pt/no_gpu.dialog
+./locale/pt-pt/no_secondary_langs.dialog
+./locale/pt-pt/no_secondary_langs.intent
+./locale/pt-pt/primary_lang.dialog
+./locale/pt-pt/query_cpu_usage.intent
+./locale/pt-pt/query_extra_langs.intent
+./locale/pt-pt/query_gpu.intent
+./locale/pt-pt/query_kernel_version.intent
+./locale/pt-pt/query_langs.intent
+./locale/pt-pt/query_memory_usage.intent
+./locale/pt-pt/query_ovos_location.intent
+./locale/pt-pt/query_primary_lang.intent
+./locale/pt-pt/query_user_lang.intent
+./locale/pt-pt/query_user_location.intent
+./locale/pt-pt/secondary_langs.dialog
+./locale/pt-pt/system_location.dialog
+./locale/pt-pt/user_location.dialog
+locale/ca/available_memory.dialog
+locale/ca/cpu_percent.dialog
+locale/ca/current_lang.dialog
+locale/ca/current_memory.dialog
+locale/ca/has_gpu.dialog
+locale/ca/kernel_version.dialog
+locale/ca/no_gpu.dialog
+locale/ca/no_secondary_langs.dialog
+locale/ca/primary_lang.dialog
+locale/ca/query_cpu_usage.intent
+locale/ca/query_extra_langs.intent
+locale/ca/query_gpu.intent
+locale/ca/query_kernel_version.intent
+locale/ca/query_langs.intent
+locale/ca/query_memory_usage.intent
+locale/ca/query_ovos_location.intent
+locale/ca/query_primary_lang.intent
+locale/ca/query_user_lang.intent
+locale/ca/query_user_location.intent
+locale/ca/secondary_langs.dialog
+locale/ca/system_location.dialog
+locale/ca/user_location.dialog
+locale/ca-ES/available_memory.dialog
+locale/ca-ES/cpu_percent.dialog
+locale/ca-ES/current_lang.dialog
+locale/ca-ES/current_memory.dialog
+locale/ca-ES/has_gpu.dialog
+locale/ca-ES/kernel_version.dialog
+locale/ca-ES/no_gpu.dialog
+locale/ca-ES/no_secondary_langs.dialog
+locale/ca-ES/primary_lang.dialog
+locale/ca-ES/query_cpu_usage.intent
+locale/ca-ES/query_extra_langs.intent
+locale/ca-ES/query_gpu.intent
+locale/ca-ES/query_kernel_version.intent
+locale/ca-ES/query_langs.intent
+locale/ca-ES/query_memory_usage.intent
+locale/ca-ES/query_ovos_location.intent
+locale/ca-ES/query_primary_lang.intent
+locale/ca-ES/query_user_lang.intent
+locale/ca-ES/query_user_location.intent
+locale/ca-ES/secondary_langs.dialog
+locale/ca-ES/system_location.dialog
+locale/ca-ES/user_location.dialog
+locale/ca-ES/ca/available_memory.dialog
+locale/ca-ES/ca/cpu_percent.dialog
+locale/ca-ES/ca/current_lang.dialog
+locale/ca-ES/ca/current_memory.dialog
+locale/ca-ES/ca/has_gpu.dialog
+locale/ca-ES/ca/kernel_version.dialog
+locale/ca-ES/ca/no_gpu.dialog
+locale/ca-ES/ca/no_secondary_langs.dialog
+locale/ca-ES/ca/primary_lang.dialog
+locale/ca-ES/ca/query_cpu_usage.intent
+locale/ca-ES/ca/query_extra_langs.intent
+locale/ca-ES/ca/query_gpu.intent
+locale/ca-ES/ca/query_kernel_version.intent
+locale/ca-ES/ca/query_langs.intent
+locale/ca-ES/ca/query_memory_usage.intent
+locale/ca-ES/ca/query_ovos_location.intent
+locale/ca-ES/ca/query_primary_lang.intent
+locale/ca-ES/ca/query_user_lang.intent
+locale/ca-ES/ca/query_user_location.intent
+locale/ca-ES/ca/secondary_langs.dialog
+locale/ca-ES/ca/system_location.dialog
+locale/ca-ES/ca/user_location.dialog
+locale/da/available_memory.dialog
+locale/da/cpu_percent.dialog
+locale/da/current_lang.dialog
+locale/da/current_memory.dialog
+locale/da/has_gpu.dialog
+locale/da/kernel_version.dialog
+locale/da/no_gpu.dialog
+locale/da/no_secondary_langs.dialog
+locale/da/primary_lang.dialog
+locale/da/query_cpu_usage.intent
+locale/da/query_extra_langs.intent
+locale/da/query_gpu.intent
+locale/da/query_kernel_version.intent
+locale/da/query_langs.intent
+locale/da/query_memory_usage.intent
+locale/da/query_ovos_location.intent
+locale/da/query_primary_lang.intent
+locale/da/query_user_lang.intent
+locale/da/query_user_location.intent
+locale/da/secondary_langs.dialog
+locale/da/system_location.dialog
+locale/da/user_location.dialog
+locale/da-DK/available_memory.dialog
+locale/da-DK/cpu_percent.dialog
+locale/da-DK/current_lang.dialog
+locale/da-DK/current_memory.dialog
+locale/da-DK/has_gpu.dialog
+locale/da-DK/kernel_version.dialog
+locale/da-DK/no_gpu.dialog
+locale/da-DK/no_secondary_langs.dialog
+locale/da-DK/primary_lang.dialog
+locale/da-DK/query_cpu_usage.intent
+locale/da-DK/query_extra_langs.intent
+locale/da-DK/query_gpu.intent
+locale/da-DK/query_kernel_version.intent
+locale/da-DK/query_langs.intent
+locale/da-DK/query_memory_usage.intent
+locale/da-DK/query_ovos_location.intent
+locale/da-DK/query_primary_lang.intent
+locale/da-DK/query_user_lang.intent
+locale/da-DK/query_user_location.intent
+locale/da-DK/secondary_langs.dialog
+locale/da-DK/system_location.dialog
+locale/da-DK/user_location.dialog
+locale/da-DK/da/available_memory.dialog
+locale/da-DK/da/cpu_percent.dialog
+locale/da-DK/da/current_lang.dialog
+locale/da-DK/da/current_memory.dialog
+locale/da-DK/da/has_gpu.dialog
+locale/da-DK/da/kernel_version.dialog
+locale/da-DK/da/no_gpu.dialog
+locale/da-DK/da/no_secondary_langs.dialog
+locale/da-DK/da/primary_lang.dialog
+locale/da-DK/da/query_cpu_usage.intent
+locale/da-DK/da/query_extra_langs.intent
+locale/da-DK/da/query_gpu.intent
+locale/da-DK/da/query_kernel_version.intent
+locale/da-DK/da/query_langs.intent
+locale/da-DK/da/query_memory_usage.intent
+locale/da-DK/da/query_ovos_location.intent
+locale/da-DK/da/query_primary_lang.intent
+locale/da-DK/da/query_user_lang.intent
+locale/da-DK/da/query_user_location.intent
+locale/da-DK/da/secondary_langs.dialog
+locale/da-DK/da/system_location.dialog
+locale/da-DK/da/user_location.dialog
+locale/de-de/available_memory.dialog
+locale/de-de/cpu_percent.dialog
+locale/de-de/current_lang.dialog
+locale/de-de/current_memory.dialog
+locale/de-de/has_gpu.dialog
+locale/de-de/kernel_version.dialog
+locale/de-de/no_gpu.dialog
+locale/de-de/no_secondary_langs.dialog
+locale/de-de/primary_lang.dialog
+locale/de-de/query_cpu_usage.intent
+locale/de-de/query_extra_langs.intent
+locale/de-de/query_gpu.intent
+locale/de-de/query_kernel_version.intent
+locale/de-de/query_langs.intent
+locale/de-de/query_memory_usage.intent
+locale/de-de/query_ovos_location.intent
+locale/de-de/query_primary_lang.intent
+locale/de-de/query_user_lang.intent
+locale/de-de/query_user_location.intent
+locale/de-de/secondary_langs.dialog
+locale/de-de/system_location.dialog
+locale/de-de/user_location.dialog
+locale/en-us/available_memory.dialog
+locale/en-us/cpu_percent.dialog
+locale/en-us/current_lang.dialog
+locale/en-us/current_memory.dialog
+locale/en-us/has_gpu.dialog
+locale/en-us/kernel_version.dialog
+locale/en-us/no_gpu.dialog
+locale/en-us/no_secondary_langs.dialog
+locale/en-us/primary_lang.dialog
+locale/en-us/query_cpu_usage.intent
+locale/en-us/query_extra_langs.intent
+locale/en-us/query_gpu.intent
+locale/en-us/query_kernel_version.intent
+locale/en-us/query_langs.intent
+locale/en-us/query_memory_usage.intent
+locale/en-us/query_ovos_location.intent
+locale/en-us/query_primary_lang.intent
+locale/en-us/query_user_lang.intent
+locale/en-us/query_user_location.intent
+locale/en-us/secondary_langs.dialog
+locale/en-us/system_location.dialog
+locale/en-us/user_location.dialog
+locale/es-es/available_memory.dialog
+locale/es-es/cpu_percent.dialog
+locale/es-es/current_lang.dialog
+locale/es-es/current_memory.dialog
+locale/es-es/has_gpu.dialog
+locale/es-es/kernel_version.dialog
+locale/es-es/no_gpu.dialog
+locale/es-es/no_secondary_langs.dialog
+locale/es-es/primary_lang.dialog
+locale/es-es/query_cpu_usage.intent
+locale/es-es/query_extra_langs.intent
+locale/es-es/query_gpu.intent
+locale/es-es/query_kernel_version.intent
+locale/es-es/query_langs.intent
+locale/es-es/query_memory_usage.intent
+locale/es-es/query_ovos_location.intent
+locale/es-es/query_primary_lang.intent
+locale/es-es/query_user_lang.intent
+locale/es-es/query_user_location.intent
+locale/es-es/secondary_langs.dialog
+locale/es-es/system_location.dialog
+locale/es-es/user_location.dialog
+locale/fr-fr/available_memory.dialog
+locale/fr-fr/cpu_percent.dialog
+locale/fr-fr/current_lang.dialog
+locale/fr-fr/current_memory.dialog
+locale/fr-fr/has_gpu.dialog
+locale/fr-fr/kernel_version.dialog
+locale/fr-fr/no_gpu.dialog
+locale/fr-fr/no_secondary_langs.dialog
+locale/fr-fr/primary_lang.dialog
+locale/fr-fr/query_cpu_usage.intent
+locale/fr-fr/query_extra_langs.intent
+locale/fr-fr/query_gpu.intent
+locale/fr-fr/query_kernel_version.intent
+locale/fr-fr/query_langs.intent
+locale/fr-fr/query_memory_usage.intent
+locale/fr-fr/query_ovos_location.intent
+locale/fr-fr/query_primary_lang.intent
+locale/fr-fr/query_user_lang.intent
+locale/fr-fr/query_user_location.intent
+locale/fr-fr/secondary_langs.dialog
+locale/fr-fr/system_location.dialog
+locale/fr-fr/user_location.dialog
+locale/gl/available_memory.dialog
+locale/gl/cpu_percent.dialog
+locale/gl/current_lang.dialog
+locale/gl/current_memory.dialog
+locale/gl/has_gpu.dialog
+locale/gl/kernel_version.dialog
+locale/gl/no_gpu.dialog
+locale/gl/no_secondary_langs.dialog
+locale/gl/primary_lang.dialog
+locale/gl/query_cpu_usage.intent
+locale/gl/query_extra_langs.intent
+locale/gl/query_gpu.intent
+locale/gl/query_kernel_version.intent
+locale/gl/query_langs.intent
+locale/gl/query_memory_usage.intent
+locale/gl/query_ovos_location.intent
+locale/gl/query_primary_lang.intent
+locale/gl/query_user_lang.intent
+locale/gl/query_user_location.intent
+locale/gl/secondary_langs.dialog
+locale/gl/system_location.dialog
+locale/gl/user_location.dialog
+locale/gl-ES/available_memory.dialog
+locale/gl-ES/cpu_percent.dialog
+locale/gl-ES/current_lang.dialog
+locale/gl-ES/current_memory.dialog
+locale/gl-ES/has_gpu.dialog
+locale/gl-ES/kernel_version.dialog
+locale/gl-ES/no_gpu.dialog
+locale/gl-ES/no_secondary_langs.dialog
+locale/gl-ES/primary_lang.dialog
+locale/gl-ES/query_cpu_usage.intent
+locale/gl-ES/query_extra_langs.intent
+locale/gl-ES/query_gpu.intent
+locale/gl-ES/query_kernel_version.intent
+locale/gl-ES/query_langs.intent
+locale/gl-ES/query_memory_usage.intent
+locale/gl-ES/query_ovos_location.intent
+locale/gl-ES/query_primary_lang.intent
+locale/gl-ES/query_user_lang.intent
+locale/gl-ES/query_user_location.intent
+locale/gl-ES/secondary_langs.dialog
+locale/gl-ES/system_location.dialog
+locale/gl-ES/user_location.dialog
+locale/gl-ES/gl/available_memory.dialog
+locale/gl-ES/gl/cpu_percent.dialog
+locale/gl-ES/gl/current_lang.dialog
+locale/gl-ES/gl/current_memory.dialog
+locale/gl-ES/gl/has_gpu.dialog
+locale/gl-ES/gl/kernel_version.dialog
+locale/gl-ES/gl/no_gpu.dialog
+locale/gl-ES/gl/no_secondary_langs.dialog
+locale/gl-ES/gl/primary_lang.dialog
+locale/gl-ES/gl/query_cpu_usage.intent
+locale/gl-ES/gl/query_extra_langs.intent
+locale/gl-ES/gl/query_gpu.intent
+locale/gl-ES/gl/query_kernel_version.intent
+locale/gl-ES/gl/query_langs.intent
+locale/gl-ES/gl/query_memory_usage.intent
+locale/gl-ES/gl/query_ovos_location.intent
+locale/gl-ES/gl/query_primary_lang.intent
+locale/gl-ES/gl/query_user_lang.intent
+locale/gl-ES/gl/query_user_location.intent
+locale/gl-ES/gl/secondary_langs.dialog
+locale/gl-ES/gl/system_location.dialog
+locale/gl-ES/gl/user_location.dialog
+locale/it-it/available_memory.dialog
+locale/it-it/cpu_percent.dialog
+locale/it-it/current_lang.dialog
+locale/it-it/current_memory.dialog
+locale/it-it/has_gpu.dialog
+locale/it-it/kernel_version.dialog
+locale/it-it/no_gpu.dialog
+locale/it-it/no_secondary_langs.dialog
+locale/it-it/primary_lang.dialog
+locale/it-it/query_cpu_usage.intent
+locale/it-it/query_extra_langs.intent
+locale/it-it/query_gpu.intent
+locale/it-it/query_kernel_version.intent
+locale/it-it/query_langs.intent
+locale/it-it/query_memory_usage.intent
+locale/it-it/query_ovos_location.intent
+locale/it-it/query_primary_lang.intent
+locale/it-it/query_user_lang.intent
+locale/it-it/query_user_location.intent
+locale/it-it/secondary_langs.dialog
+locale/it-it/system_location.dialog
+locale/it-it/user_location.dialog
+locale/pt-pt/available_memory.dialog
+locale/pt-pt/cpu_percent.dialog
+locale/pt-pt/current_lang.dialog
+locale/pt-pt/current_memory.dialog
+locale/pt-pt/has_gpu.dialog
+locale/pt-pt/kernel_version.dialog
+locale/pt-pt/no_gpu.dialog
+locale/pt-pt/no_secondary_langs.dialog
+locale/pt-pt/no_secondary_langs.intent
+locale/pt-pt/primary_lang.dialog
+locale/pt-pt/query_cpu_usage.intent
+locale/pt-pt/query_extra_langs.intent
+locale/pt-pt/query_gpu.intent
+locale/pt-pt/query_kernel_version.intent
+locale/pt-pt/query_langs.intent
+locale/pt-pt/query_memory_usage.intent
+locale/pt-pt/query_ovos_location.intent
+locale/pt-pt/query_primary_lang.intent
+locale/pt-pt/query_user_lang.intent
+locale/pt-pt/query_user_location.intent
+locale/pt-pt/secondary_langs.dialog
+locale/pt-pt/system_location.dialog
+locale/pt-pt/user_location.dialog
+ovos_skill_diagnostics.egg-info/PKG-INFO
+ovos_skill_diagnostics.egg-info/SOURCES.txt
+ovos_skill_diagnostics.egg-info/dependency_links.txt
+ovos_skill_diagnostics.egg-info/entry_points.txt
+ovos_skill_diagnostics.egg-info/requires.txt
+ovos_skill_diagnostics.egg-info/top_level.txt
\ No newline at end of file
diff --git a/ovos_skill_diagnostics.egg-info/dependency_links.txt b/ovos_skill_diagnostics.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ovos_skill_diagnostics.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/ovos_skill_diagnostics.egg-info/entry_points.txt b/ovos_skill_diagnostics.egg-info/entry_points.txt
new file mode 100644
index 0000000..488b7ec
--- /dev/null
+++ b/ovos_skill_diagnostics.egg-info/entry_points.txt
@@ -0,0 +1,2 @@
+[ovos.plugin.skill]
+ovos-skill-diagnostics.openvoiceos = ovos_skill_diagnostics:SystemDiagnosticsSkill
diff --git a/ovos_skill_diagnostics.egg-info/requires.txt b/ovos_skill_diagnostics.egg-info/requires.txt
new file mode 100644
index 0000000..7822c92
--- /dev/null
+++ b/ovos_skill_diagnostics.egg-info/requires.txt
@@ -0,0 +1,3 @@
+ovos_workshop>=0.0.12
+ovos-lang-parser
+psutil
diff --git a/ovos_skill_diagnostics.egg-info/top_level.txt b/ovos_skill_diagnostics.egg-info/top_level.txt
new file mode 100644
index 0000000..f327f12
--- /dev/null
+++ b/ovos_skill_diagnostics.egg-info/top_level.txt
@@ -0,0 +1 @@
+ovos_skill_diagnostics
diff --git a/setup.py b/setup.py
index 90ad546..3bde953 100755
--- a/setup.py
+++ b/setup.py
@@ -88,5 +88,6 @@ def get_requirements(requirements_filename: str = "requirements.txt"):
include_package_data=True,
install_requires=get_requirements("requirements.txt"),
keywords='ovos skill plugin',
+ extras_require={'test': ['ovoscope>=0.13.1', 'pytest>=7.0.0', 'pytest-timeout>=2.0.0', 'ovos-padatious-pipeline-plugin']},
entry_points={'ovos.plugin.skill': PLUGIN_ENTRY_POINT}
)
diff --git a/test/end2end/test_intents_en_us.py b/test/end2end/test_intents_en_us.py
new file mode 100644
index 0000000..345ac85
--- /dev/null
+++ b/test/end2end/test_intents_en_us.py
@@ -0,0 +1,221 @@
+"""E2E intent-routing tests for ovos-skill-diagnostics.
+
+Auto-generated by tools/gen_ovoscope_tests.py
+Run: pytest test/end2end/ -v
+"""
+from unittest import TestCase
+
+from ovos_bus_client.message import Message
+from ovos_bus_client.session import Session
+from ovoscope import End2EndTest, get_minicroft
+
+SKILL_ID = "ovos-skill-diagnostics.openvoiceos"
+LANG = "en-US"
+
+
+class _IntentRoutingMixin:
+ """Shared MiniCroft setup."""
+
+ @classmethod
+ def setUpClass(cls):
+ cls.minicroft = get_minicroft([SKILL_ID])
+
+ @classmethod
+ def tearDownClass(cls):
+ if getattr(cls, 'minicroft', None):
+ cls.minicroft.stop()
+
+
+ def _assert_padatious(self, utterance: str, intent_file: str):
+ intent_msg_type = f"{SKILL_ID}:{intent_file}"
+ session = Session(f"e2e-en_us-{intent_file}-{hash(utterance)}")
+ session.lang = LANG
+ session.pipeline = [
+ "ovos-padatious-pipeline-plugin-high",
+ "ovos-padatious-pipeline-plugin-medium",
+ "ovos-padatious-pipeline-plugin-low",
+ ]
+ message = Message(
+ "recognizer_loop:utterance",
+ {"utterances": [utterance], "lang": LANG},
+ {"session": session.serialize()},
+ )
+ test = End2EndTest(
+ minicroft=self.minicroft,
+ skill_ids=[SKILL_ID],
+ eof_msgs=["ovos.utterance.handled"],
+ flip_points=["recognizer_loop:utterance"],
+ source_message=message,
+ activation_points=[intent_msg_type],
+ test_msg_context=False,
+ test_message_number=False,
+ ignore_messages=["speak", "mycroft.audio.play_sound"],
+ expected_messages=[
+ message,
+ Message(f"{SKILL_ID}.activate", {}, {"skill_id": SKILL_ID}),
+ Message(intent_msg_type, {}, {"skill_id": SKILL_ID}),
+ Message("mycroft.skill.handler.start", {}, {"skill_id": SKILL_ID}),
+ Message("mycroft.skill.handler.complete", {}, {"skill_id": SKILL_ID}),
+ Message("ovos.utterance.handled", {}, {"skill_id": SKILL_ID}),
+ ],
+ )
+ test.execute(timeout=30)
+
+
+class TestPadatious1_Query_kernel_version_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_kernel_version.intent"""
+ def test_tell_me_your_kernel_version(self):
+ self._assert_padatious(r"tell me your kernel version", r"query_kernel_version.intent")
+
+ def test_what_is_your_kernel_version(self):
+ self._assert_padatious(r"what is your kernel version", r"query_kernel_version.intent")
+
+ def test_what_kernel_version_are_you_using(self):
+ self._assert_padatious(r"what kernel version are you using", r"query_kernel_version.intent")
+
+ def test_which_kernel_do_you_have(self):
+ self._assert_padatious(r"which kernel do you have", r"query_kernel_version.intent")
+
+class TestPadatious2_Query_gpu_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_gpu.intent"""
+ def test_are_you_using_a_gpu(self):
+ self._assert_padatious(r"are you using a gpu", r"query_gpu.intent")
+
+ def test_do_you_have_a_gpu(self):
+ self._assert_padatious(r"do you have a gpu", r"query_gpu.intent")
+
+ def test_does_your_system_have_a_gpu(self):
+ self._assert_padatious(r"does your system have a gpu", r"query_gpu.intent")
+
+ def test_is_there_a_gpu_in_your_system(self):
+ self._assert_padatious(r"is there a gpu in your system", r"query_gpu.intent")
+
+class TestPadatious3_Query_cpu_usage_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_cpu_usage.intent"""
+ def test_cpu_diagnostics(self):
+ self._assert_padatious(r"cpu diagnostics", r"query_cpu_usage.intent")
+
+ def test_current_cpu_load(self):
+ self._assert_padatious(r"current cpu load", r"query_cpu_usage.intent")
+
+ def test_how_much_cpu_are_you_using(self):
+ self._assert_padatious(r"how much cpu are you using", r"query_cpu_usage.intent")
+
+ def test_how_much_processor_is_in_use(self):
+ self._assert_padatious(r"how much processor is in use", r"query_cpu_usage.intent")
+
+ def test_tell_me_your_cpu_usage(self):
+ self._assert_padatious(r"tell me your cpu usage", r"query_cpu_usage.intent")
+
+class TestPadatious4_Query_memory_usage_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_memory_usage.intent"""
+ def test_current_memory_usage(self):
+ self._assert_padatious(r"current memory usage", r"query_memory_usage.intent")
+
+ def test_how_much_ram_are_you_using(self):
+ self._assert_padatious(r"how much ram are you using", r"query_memory_usage.intent")
+
+ def test_memory_diagnostics(self):
+ self._assert_padatious(r"memory diagnostics", r"query_memory_usage.intent")
+
+ def test_tell_me_your_memory_status(self):
+ self._assert_padatious(r"tell me your memory status", r"query_memory_usage.intent")
+
+ def test_what_is_your_memory_usage(self):
+ self._assert_padatious(r"what is your memory usage", r"query_memory_usage.intent")
+
+class TestPadatious5_Query_user_location_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_user_location.intent"""
+ def test_tell_me_my_location(self):
+ self._assert_padatious(r"tell me my location", r"query_user_location.intent")
+
+ def test_what_is_my_current_location(self):
+ self._assert_padatious(r"what is my current location", r"query_user_location.intent")
+
+ def test_what_s_my_location(self):
+ self._assert_padatious(r"what's my location", r"query_user_location.intent")
+
+ def test_where_am_i(self):
+ self._assert_padatious(r"where am i", r"query_user_location.intent")
+
+class TestPadatious6_Query_ovos_location_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_ovos_location.intent"""
+ def test_tell_me_your_location(self):
+ self._assert_padatious(r"tell me your location", r"query_ovos_location.intent")
+
+ def test_what_is_your_current_location(self):
+ self._assert_padatious(r"what is your current location", r"query_ovos_location.intent")
+
+ def test_what_s_your_location(self):
+ self._assert_padatious(r"what's your location", r"query_ovos_location.intent")
+
+ def test_where_are_you(self):
+ self._assert_padatious(r"where are you", r"query_ovos_location.intent")
+
+class TestPadatious7_Query_user_lang_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_user_lang.intent"""
+ def test_what_language_am_i_speaking(self):
+ self._assert_padatious(r"what language am I speaking", r"query_user_lang.intent")
+
+ def test_what_language_am_i_using(self):
+ self._assert_padatious(r"what language am I using", r"query_user_lang.intent")
+
+ def test_which_language_am_i_speaking(self):
+ self._assert_padatious(r"which language am I speaking", r"query_user_lang.intent")
+
+ def test_which_language_am_i_using(self):
+ self._assert_padatious(r"which language am I using", r"query_user_lang.intent")
+
+ def test_what_language_are_we_speaking(self):
+ self._assert_padatious(r"what language are we speaking", r"query_user_lang.intent")
+
+class TestPadatious8_Query_primary_lang_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_primary_lang.intent"""
+ def test_tell_me_your_core_language(self):
+ self._assert_padatious(r"tell me your core language", r"query_primary_lang.intent")
+
+ def test_tell_me_your_language(self):
+ self._assert_padatious(r"tell me your language", r"query_primary_lang.intent")
+
+ def test_what_is_your_main_language(self):
+ self._assert_padatious(r"what is your main language", r"query_primary_lang.intent")
+
+ def test_what_is_your_primary_language(self):
+ self._assert_padatious(r"what is your primary language", r"query_primary_lang.intent")
+
+ def test_what_language_are_you_using(self):
+ self._assert_padatious(r"what language are you using", r"query_primary_lang.intent")
+
+class TestPadatious9_Query_extra_langs_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_extra_langs.intent"""
+ def test_do_you_have_secondary_languages(self):
+ self._assert_padatious(r"do you have secondary languages", r"query_extra_langs.intent")
+
+ def test_tell_me_your_extra_languages(self):
+ self._assert_padatious(r"tell me your extra languages", r"query_extra_langs.intent")
+
+ def test_what_are_your_additional_languages(self):
+ self._assert_padatious(r"what are your additional languages", r"query_extra_langs.intent")
+
+ def test_what_other_languages_do_you_have(self):
+ self._assert_padatious(r"what other languages do you have", r"query_extra_langs.intent")
+
+ def test_which_extra_languages_are_you_using(self):
+ self._assert_padatious(r"which extra languages are you using", r"query_extra_langs.intent")
+
+class TestPadatious10_Query_langs_intent(_IntentRoutingMixin, TestCase):
+ """Padatious intent: query_langs.intent"""
+ def test_what_languages_can_you_speak(self):
+ self._assert_padatious(r"what languages can you speak", r"query_langs.intent")
+
+ def test_what_languages_can_you_understand(self):
+ self._assert_padatious(r"what languages can you understand", r"query_langs.intent")
+
+ def test_which_languages_can_you_speak(self):
+ self._assert_padatious(r"which languages can you speak", r"query_langs.intent")
+
+ def test_which_languages_can_you_understand(self):
+ self._assert_padatious(r"which languages can you understand", r"query_langs.intent")
+
+ def test_available_languages(self):
+ self._assert_padatious(r"available languages", r"query_langs.intent")