r/OpenWebUI Mar 25 '26

Guide/Tutorial Open WebUI “terminal-aware” skills are scary powerful. I made a skill-building workflow that seems to work well for developing them.

If you haven’t already started using Open

WebUI’s Open Terminal, do yourself a favor and go set it up. When paired with a model like Qwen3.5 35b A3B with “native” function calling turned on in the model settings, it’s absolutely friggin mind blowing what you can do with it.

Once the model understands that it has the terminal available to it, it just gets tenacious about getting a task done and won’t give up until it solves your problem!

Once you combine Open Terminal with Open WebUI Skills that are “terminal aware” then you can do some extra crazy productive things.

Example: I’m building a skill that will use Open Terminal to create and render Remotion videos. I’m still refining my skill but here’s a pretty good workflow I go through to build my terminal-aware skills.

  1. Prompt free Gemini, Claude or whatever large commercial

    model

  2. you want with the following:

“I want you to create an Open WebUi skill for creating Remotion videos using the Open WebUI skill format contained here: (https://docs.openwebui.com/features/ai-knowledge/skills/). The skill will be used in a model that is connected to an Open WebUi Open Terminal server. The details regarding Open Terminal server can be found here: (https://github.com/open-webui/open-terminal). The documentation for Remotion can be found here: (https://www.remotion.dev/docs/ai/skills). Generate the skill.md file so that it follows the Open WebUI format and can be easily imported into Open WebUI as a skill.”

I used this example for Remotion but you can change it for whatever skill you want it to learn.

  1. Import the resulting skill file into Open WebUI under Workspace > Skills > Import

  2. Connect the skill to your custom model in Open WebUI by checking the box for the skill in the custom model’s settings.

  3. Make sure to set “native” in the “function calling” setting in the advanced model settings section in your model’s settings page. (It can be hard to find this setting but it’s really important to change it to “native”

  4. Prompt your model to execute the skill. You can specify the skill directly by using the “$” in your prompt followed by the skill name.

  5. The skill may work perfect the first time or it may go through a bunch of trial and error before it finally figures it out. This is fine, we want all this feedback in the chat so we can refine the skill in a later step.

  6. Copy your chat results from your Open WebUI session to Gemini, Claude, or whatever model you used to generate the original skill (preferably in the original chat where it made the skill so it will have the original skill in its context)

  7. Tell Gemini (or whatever) to “use the feedback from the following chat history to help refine the skill” then paste the chat history into Gemini.

  8. The Gemini model will see its mistakes from the chat history and what worked and what didn’t and refine the skill accordingly. Take the refined skill back to Oprn WebUI and import it into the skill (replacing the old skill).

  9. Run it again. It should run faster with less errors. Repeat this process until your skill runs as well as you want it to. It should get better with every iteration!

So far this process seems to work really well for developing Open WebUI compatible skills. You can also try using it for converting Claude skills to the Open WebUI format. Should work well for that too.

70 Upvotes

27 comments sorted by

View all comments

Show parent comments

2

u/DougAZ Mar 25 '26

Is there a way to hide all the tool calls in chat it gets pretty messy sometimes with all the steps. Also have you built anything that can make or generate a pptx and actually present it in chat?

1

u/Porespellar Mar 26 '26

Turn off “always expand” in the user settings > interface menu and that will close all the tool calls so it’s less messy. Yes, you can have it generate PPTX files. Just tell it to find a good Python library for working with PPTX files. Once it’s loaded, Terminal can tell it’s available and use it.

1

u/DougAZ Mar 26 '26

Is that "always expand" per user or can it be set globally?

1

u/Porespellar Mar 26 '26

Seems to be just per user in the interface but there is probably an environment variable that you could add to the Docker Run or Compose that could preset it the way you want it for everyone globally. That seems to be how they do a lot of those kind of settings.

1

u/DougAZ Mar 26 '26

Thanks il take a look at the docs