From 8b94e9963170ee49bfd77c4c5201e1ec5c8046c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Trellu?= Date: Thu, 8 Oct 2026 09:14:17 -0400 Subject: [PATCH 1/2] fix: launch six skills by the ids their packages register hello-world, jokes, parrot, personal, randomness and wikipedia exited at start with "ValueError: unknown skill_id" and restarted forever, on both channels: their packages were renamed and the images still asked the launcher for the old ids (skill-ovos-hello-world.openvoiceos, the capitalised ovos-skill-personal.OpenVoiceOS, and randomness the other way round). Six reconnecting skills kept core retraining, so on alpha "what time is it" never reached the date-time skill and fell to DuckDuckGo. The smoke test now checks that a skill image's SKILL_ID is an id an installed package registers, so a rename fails the build instead. Co-Authored-By: Claude Opus 5.5 --- scripts/ci/smoke.sh | 13 ++++++++++++- skills/skill-hello-world/Dockerfile | 4 ++-- skills/skill-jokes/Dockerfile | 4 ++-- skills/skill-parrot/Dockerfile | 4 ++-- skills/skill-personal/Dockerfile | 4 ++-- skills/skill-randomness/Dockerfile | 4 ++-- skills/skill-wikipedia/Dockerfile | 4 ++-- 7 files changed, 24 insertions(+), 13 deletions(-) diff --git a/scripts/ci/smoke.sh b/scripts/ci/smoke.sh index 4a45b005..80dc0e84 100755 --- a/scripts/ci/smoke.sh +++ b/scripts/ci/smoke.sh @@ -24,7 +24,18 @@ done if [ -n "${SKILL_ID:-}" ]; then command -v ovos-skill-launcher > /dev/null python -c "import ovos_workshop, ovos_bus_client" - echo "skill ${SKILL_ID}: launcher and workshop present" + # The launcher finds the skill by the id its package registers. An id no package + # registers makes the container exit at start ("unknown skill_id") and restart + # forever: six skill images did, on both channels, after their skills were renamed. + python - "$SKILL_ID" << 'REGISTERED' +import sys +from importlib.metadata import entry_points +wanted = sys.argv[1] +ids = sorted({ep.name for group in ("opm.skill", "ovos.plugin.skill") for ep in entry_points(group=group)}) +if wanted not in ids: + sys.exit(f"skill {wanted}: no installed package registers it; registered: {', '.join(ids) or 'none'}") +REGISTERED + echo "skill ${SKILL_ID}: launcher and workshop present, and its package registers that id" fi if [ -n "${SMOKE_BIN:-}" ]; then command -v "$SMOKE_BIN" > /dev/null diff --git a/skills/skill-hello-world/Dockerfile b/skills/skill-hello-world/Dockerfile index 3d9bd7c7..7fceea01 100644 --- a/skills/skill-hello-world/Dockerfile +++ b/skills/skill-hello-world/Dockerfile @@ -33,11 +33,11 @@ ADD --chmod=0644 https://raw.githubusercontent.com/OpenVoiceOS/ovos-releases/${O RUN --mount=type=cache,target=/home/ovos/.cache/uv,uid=1000,gid=1000,sharing=locked \ uv pip install ovos-skill-hello-world -c /tmp/constraints.txt -ENV SKILL_ID="skill-ovos-hello-world.openvoiceos" +ENV SKILL_ID="ovos-skill-hello-world.openvoiceos" # A loaded skill answers mycroft..is_ready (ovos-workshop ProcessStatus); the start period # covers waiting for ovos-core to become ready before the skill loads. HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-ovos-hello-world.openvoiceos"] +CMD ["ovos-skill-launcher", "ovos-skill-hello-world.openvoiceos"] diff --git a/skills/skill-jokes/Dockerfile b/skills/skill-jokes/Dockerfile index 9ef29800..a8f455be 100644 --- a/skills/skill-jokes/Dockerfile +++ b/skills/skill-jokes/Dockerfile @@ -33,11 +33,11 @@ ADD --chmod=0644 https://raw.githubusercontent.com/OpenVoiceOS/ovos-releases/${O RUN --mount=type=cache,target=/home/ovos/.cache/uv,uid=1000,gid=1000,sharing=locked \ uv pip install ovos-skill-icanhazdadjokes -c /tmp/constraints.txt -ENV SKILL_ID="skill-ovos-icanhazdadjokes.openvoiceos" +ENV SKILL_ID="ovos-skill-icanhazdadjokes.openvoiceos" # A loaded skill answers mycroft..is_ready (ovos-workshop ProcessStatus); the start period # covers waiting for ovos-core to become ready before the skill loads. HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-ovos-icanhazdadjokes.openvoiceos"] +CMD ["ovos-skill-launcher", "ovos-skill-icanhazdadjokes.openvoiceos"] diff --git a/skills/skill-parrot/Dockerfile b/skills/skill-parrot/Dockerfile index f2de74f0..6e57c2fb 100644 --- a/skills/skill-parrot/Dockerfile +++ b/skills/skill-parrot/Dockerfile @@ -33,11 +33,11 @@ ADD --chmod=0644 https://raw.githubusercontent.com/OpenVoiceOS/ovos-releases/${O RUN --mount=type=cache,target=/home/ovos/.cache/uv,uid=1000,gid=1000,sharing=locked \ uv pip install ovos-skill-parrot -c /tmp/constraints.txt -ENV SKILL_ID="skill-ovos-parrot.openvoiceos" +ENV SKILL_ID="ovos-skill-parrot.openvoiceos" # A loaded skill answers mycroft..is_ready (ovos-workshop ProcessStatus); the start period # covers waiting for ovos-core to become ready before the skill loads. HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-ovos-parrot.openvoiceos"] +CMD ["ovos-skill-launcher", "ovos-skill-parrot.openvoiceos"] diff --git a/skills/skill-personal/Dockerfile b/skills/skill-personal/Dockerfile index 6ae7d232..e5f0193b 100644 --- a/skills/skill-personal/Dockerfile +++ b/skills/skill-personal/Dockerfile @@ -33,11 +33,11 @@ ADD --chmod=0644 https://raw.githubusercontent.com/OpenVoiceOS/ovos-releases/${O RUN --mount=type=cache,target=/home/ovos/.cache/uv,uid=1000,gid=1000,sharing=locked \ uv pip install ovos-skill-personal -c /tmp/constraints.txt -ENV SKILL_ID="ovos-skill-personal.OpenVoiceOS" +ENV SKILL_ID="ovos-skill-personal.openvoiceos" # A loaded skill answers mycroft..is_ready (ovos-workshop ProcessStatus); the start period # covers waiting for ovos-core to become ready before the skill loads. HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-personal.OpenVoiceOS"] +CMD ["ovos-skill-launcher", "ovos-skill-personal.openvoiceos"] diff --git a/skills/skill-randomness/Dockerfile b/skills/skill-randomness/Dockerfile index 7e465b92..aaf0f109 100644 --- a/skills/skill-randomness/Dockerfile +++ b/skills/skill-randomness/Dockerfile @@ -33,11 +33,11 @@ ADD --chmod=0644 https://raw.githubusercontent.com/OpenVoiceOS/ovos-releases/${O RUN --mount=type=cache,target=/home/ovos/.cache/uv,uid=1000,gid=1000,sharing=locked \ uv pip install ovos-skill-randomness -c /tmp/constraints.txt -ENV SKILL_ID="ovos-skill-randomness.openvoiceos" +ENV SKILL_ID="skill-ovos-randomness.openvoiceos" # A loaded skill answers mycroft..is_ready (ovos-workshop ProcessStatus); the start period # covers waiting for ovos-core to become ready before the skill loads. HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-randomness.openvoiceos"] +CMD ["ovos-skill-launcher", "skill-ovos-randomness.openvoiceos"] diff --git a/skills/skill-wikipedia/Dockerfile b/skills/skill-wikipedia/Dockerfile index 5121608c..25ba541f 100644 --- a/skills/skill-wikipedia/Dockerfile +++ b/skills/skill-wikipedia/Dockerfile @@ -34,11 +34,11 @@ ADD --chmod=0644 https://raw.githubusercontent.com/OpenVoiceOS/ovos-releases/${O RUN --mount=type=cache,target=/home/ovos/.cache/uv,uid=1000,gid=1000,sharing=locked \ uv pip install ovos-skill-wikipedia -c /tmp/constraints.txt -ENV SKILL_ID="skill-ovos-wikipedia.openvoiceos" +ENV SKILL_ID="ovos-skill-wikipedia.openvoiceos" # A loaded skill answers mycroft..is_ready (ovos-workshop ProcessStatus); the start period # covers waiting for ovos-core to become ready before the skill loads. HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-ovos-wikipedia.openvoiceos"] +CMD ["ovos-skill-launcher", "ovos-skill-wikipedia.openvoiceos"] From adf792734277b111ce385c809d217bf21d06f523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Trellu?= Date: Thu, 8 Oct 2026 09:20:26 -0400 Subject: [PATCH 2/2] fix: start every skill with the id SKILL_ID holds Each skill image wrote its id twice: in ENV SKILL_ID, which the health check and the smoke test read, and again as a literal in the launcher's CMD, because Docker expands no variable in CMD's exec form. Two copies of one value can drift apart. CMD now uses the shell form, so the launcher gets the id SKILL_ID holds, and exec keeps the launcher PID 1, as the old CMD did behind the entrypoint's exec "$@". The smoke test's check of SKILL_ID now covers the id that actually starts. Co-Authored-By: Claude Opus 5.5 --- skills/skill-alerts/Dockerfile | 3 ++- skills/skill-camera/Dockerfile | 3 ++- skills/skill-date-time/Dockerfile | 3 ++- skills/skill-duckduckgo/Dockerfile | 3 ++- skills/skill-easter-eggs/Dockerfile | 3 ++- skills/skill-fallback-unknown/Dockerfile | 3 ++- skills/skill-ggwave/Dockerfile | 3 ++- skills/skill-hello-world/Dockerfile | 3 ++- skills/skill-homeassistant/Dockerfile | 3 ++- skills/skill-homescreen/Dockerfile | 3 ++- skills/skill-jokes/Dockerfile | 3 ++- skills/skill-parrot/Dockerfile | 3 ++- skills/skill-personal/Dockerfile | 3 ++- skills/skill-randomness/Dockerfile | 3 ++- skills/skill-tunein/Dockerfile | 3 ++- skills/skill-volume/Dockerfile | 3 ++- skills/skill-weather/Dockerfile | 3 ++- skills/skill-wikihow/Dockerfile | 3 ++- skills/skill-wikipedia/Dockerfile | 3 ++- skills/skill-wolfie/Dockerfile | 3 ++- skills/skill-wordnet/Dockerfile | 3 ++- 21 files changed, 42 insertions(+), 21 deletions(-) diff --git a/skills/skill-alerts/Dockerfile b/skills/skill-alerts/Dockerfile index 37157b55..39a05287 100644 --- a/skills/skill-alerts/Dockerfile +++ b/skills/skill-alerts/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-alerts.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-alerts.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-camera/Dockerfile b/skills/skill-camera/Dockerfile index 793664e2..799a4068 100644 --- a/skills/skill-camera/Dockerfile +++ b/skills/skill-camera/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-camera.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-camera.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-date-time/Dockerfile b/skills/skill-date-time/Dockerfile index ec825ce8..b6a15534 100644 --- a/skills/skill-date-time/Dockerfile +++ b/skills/skill-date-time/Dockerfile @@ -42,4 +42,5 @@ ENV SKILL_ID="ovos-skill-date-time.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-date-time.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-duckduckgo/Dockerfile b/skills/skill-duckduckgo/Dockerfile index 4a415561..494614c9 100644 --- a/skills/skill-duckduckgo/Dockerfile +++ b/skills/skill-duckduckgo/Dockerfile @@ -41,4 +41,5 @@ ENV SKILL_ID="ovos-skill-ddg.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-ddg.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-easter-eggs/Dockerfile b/skills/skill-easter-eggs/Dockerfile index ec8b39f8..9ab2f463 100644 --- a/skills/skill-easter-eggs/Dockerfile +++ b/skills/skill-easter-eggs/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="skill-easter-eggs.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-easter-eggs.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-fallback-unknown/Dockerfile b/skills/skill-fallback-unknown/Dockerfile index d0200f6e..5414507e 100644 --- a/skills/skill-fallback-unknown/Dockerfile +++ b/skills/skill-fallback-unknown/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-fallback-unknown.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-fallback-unknown.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-ggwave/Dockerfile b/skills/skill-ggwave/Dockerfile index 552d9489..73996325 100644 --- a/skills/skill-ggwave/Dockerfile +++ b/skills/skill-ggwave/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-ggwave.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-ggwave.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-hello-world/Dockerfile b/skills/skill-hello-world/Dockerfile index 7fceea01..88703216 100644 --- a/skills/skill-hello-world/Dockerfile +++ b/skills/skill-hello-world/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-hello-world.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-hello-world.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-homeassistant/Dockerfile b/skills/skill-homeassistant/Dockerfile index 7f41b931..40711b3d 100644 --- a/skills/skill-homeassistant/Dockerfile +++ b/skills/skill-homeassistant/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="skill-homeassistant.oscillatelabsllc" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-homeassistant.oscillatelabsllc"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-homescreen/Dockerfile b/skills/skill-homescreen/Dockerfile index a19935ac..c98ab359 100644 --- a/skills/skill-homescreen/Dockerfile +++ b/skills/skill-homescreen/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="skill-ovos-homescreen.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-ovos-homescreen.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-jokes/Dockerfile b/skills/skill-jokes/Dockerfile index a8f455be..a385767c 100644 --- a/skills/skill-jokes/Dockerfile +++ b/skills/skill-jokes/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-icanhazdadjokes.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-icanhazdadjokes.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-parrot/Dockerfile b/skills/skill-parrot/Dockerfile index 6e57c2fb..cf4ca58d 100644 --- a/skills/skill-parrot/Dockerfile +++ b/skills/skill-parrot/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-parrot.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-parrot.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-personal/Dockerfile b/skills/skill-personal/Dockerfile index e5f0193b..10f7f142 100644 --- a/skills/skill-personal/Dockerfile +++ b/skills/skill-personal/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-personal.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-personal.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-randomness/Dockerfile b/skills/skill-randomness/Dockerfile index aaf0f109..fd1c9385 100644 --- a/skills/skill-randomness/Dockerfile +++ b/skills/skill-randomness/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="skill-ovos-randomness.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-ovos-randomness.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-tunein/Dockerfile b/skills/skill-tunein/Dockerfile index a9a7d7ca..ec6a5a1e 100644 --- a/skills/skill-tunein/Dockerfile +++ b/skills/skill-tunein/Dockerfile @@ -41,4 +41,5 @@ ENV SKILL_ID="skill-ovos-tunein.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "skill-ovos-tunein.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-volume/Dockerfile b/skills/skill-volume/Dockerfile index 9af7f2a8..17e2190d 100644 --- a/skills/skill-volume/Dockerfile +++ b/skills/skill-volume/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-volume.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-volume.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-weather/Dockerfile b/skills/skill-weather/Dockerfile index 2a0f7a79..40697f94 100644 --- a/skills/skill-weather/Dockerfile +++ b/skills/skill-weather/Dockerfile @@ -55,4 +55,5 @@ ENV SKILL_ID="ovos-skill-weather.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-weather.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-wikihow/Dockerfile b/skills/skill-wikihow/Dockerfile index da755a6a..ae863db7 100644 --- a/skills/skill-wikihow/Dockerfile +++ b/skills/skill-wikihow/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-wikihow.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-wikihow.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-wikipedia/Dockerfile b/skills/skill-wikipedia/Dockerfile index 25ba541f..1f4d027e 100644 --- a/skills/skill-wikipedia/Dockerfile +++ b/skills/skill-wikipedia/Dockerfile @@ -41,4 +41,5 @@ ENV SKILL_ID="ovos-skill-wikipedia.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-wikipedia.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-wolfie/Dockerfile b/skills/skill-wolfie/Dockerfile index da12eb9f..c85bafdd 100644 --- a/skills/skill-wolfie/Dockerfile +++ b/skills/skill-wolfie/Dockerfile @@ -41,4 +41,5 @@ ENV SKILL_ID="ovos-skill-wolfie.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-wolfie.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID" diff --git a/skills/skill-wordnet/Dockerfile b/skills/skill-wordnet/Dockerfile index 6b2239ab..a353ac6b 100644 --- a/skills/skill-wordnet/Dockerfile +++ b/skills/skill-wordnet/Dockerfile @@ -40,4 +40,5 @@ ENV SKILL_ID="ovos-skill-wordnet.openvoiceos" HEALTHCHECK --interval=60s --timeout=10s --retries=3 --start-period=180s \ CMD ovos-hc -s "$SKILL_ID" || exit 1 -CMD ["ovos-skill-launcher", "ovos-skill-wordnet.openvoiceos"] +# Shell form, so the launcher gets the id SKILL_ID holds; exec keeps it PID 1. +CMD exec ovos-skill-launcher "$SKILL_ID"