I want to define a slash command that calls a script, but I don’t want a model to be involved either before or after the call.
The shell script is in the allow list and is approved. The version is 2025.2.14.
My SKILL.md looks like this:
---
name: getinfo
description: Testing
user-invocable: true
disable-model-invocation: false
metadata:
openclaw:
tools:
call-getinfo:
command: exec
args:
command: "/home/pi/myopenclaw/bin/getinfo"
workdir: "/home/pi"
---
Used in Telegram: /getinfo
In this case, the model is called before and after the script execution (see the model conversation in the session log):
--> user: Use the "getinfo" skill for this request.
<-- assistant: toolCall , "exec","arguments":{"command":"/home/pi/myopenclaw/bin/getinfo"
--> toolResult: Hello World!
<-- assistant: skill executed successfully .. Hello World!
If I change disable-model-invocation: true:
---
name: getinfo
description: Testing
user-invocable: true
disable-model-invocation: true
...
The conversation looks like:
--> user: Use the "getinfo" skill for this request.
<-- assistant: There's no "getinfo" skill listed in the available skills
It does not work, because the model has no skill description, as expected. I would expect the gateway executes the skill directly. Is this behavior a bug?
How can I define a slash command skill that does not involve the model?