#Wrong Usage of API /Skill

1 messages · Page 1 of 1 (latest)

nocturne locust
#

I have brave search and clawdhub weather and skills.md. But when i am doing what is the weather at <location>? It's doing web fetch with wrong url instead of the one described in the skills. Technically using the brave search api instead of weather

undone coralBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

lunar spearBOT
#

A couple things can cause this, but the big one is: skills aren’t “hard routing”. Even if you installed a Weather skill, the model can still decide “I’ll just search the web” (Brave) unless the skill is (a) actually loaded/eligible in the session and (b) the model chooses to follow it.

1) First confirm the Weather skill is actually eligible/loaded

On the machine running the gateway, run:

openclaw --version
openclaw skills list --eligible | rg -i weather
openclaw skills check

If weather doesn’t show up as eligible, it won’t be in the system prompt → the model will default to search.

Docs: https://docs.openclaw.ai/cli/skills and https://docs.openclaw.ai/tools/skills

2) If you just installed it: you need a new session (or refresh)

OpenClaw snapshots eligible skills when the session starts. So after installing/updating skills, either:

#
  • start a new chat/session, or
  • ask the agent to “refresh skills”, or
  • restart the gateway.

3) Check you didn’t create skills.md (plural) and expect it to work

OpenClaw loads skills from folders containing SKILL.md (singular, exact filename), not a standalone skills.md.

4) If Weather is eligible but it still uses Brave: force it (or reduce overlap)

Options:

  • Try invoking it explicitly (if it exposes a slash command): /weather <location>
  • Or phrase it as: “Use the weather skill (wttr.in) for this.”
  • If you want it to stop choosing Brave for weather questions, temporarily disable the Brave-search skill (or remove it from model-invocation) and retest.

If you paste the output of openclaw skills list --eligible + the tool call you’re seeing, I can tell you exactly which of the above is happening in your setup.

nocturne locust
#

yeah weather is working and also in eligible list of skills

#

@lunar spear yeah weather is working and also in eligible list of skills

lunar spearBOT
#

If it’s eligible but the model still answers “what’s the weather in X?” by doing Brave/web_fetch, that usually means one of these is true:

1) The skill is eligible, but not in the model prompt

Two common reasons:

A. disable-model-invocation: true on the weather skill
That makes it eligible (and manually invocable) but excluded from the model’s skills list.

Check:

openclaw skills info weather

…and/or open the skill’s SKILL.md and look for disable-model-invocation.

B. Skills list is getting truncated

#

Eligible just means “OpenClaw can include it” — it doesn’t force the model to pick it.

Quick clarifier: does /weather <location> work, but the plain message “what’s the weather in <location>?” sometimes goes to Brave/web_fetch instead? If yes, then it’s a routing / prompt-priority issue, not a “skill missing” issue.

Here are the two most common causes + what to check:

1) The weather skill is eligible, but not actually visible to the model in this session

In chat, run:

  • /context detail

Look for:

  • “⚠️ Skills truncated …” (weather might be cut off)
  • whether weather appears in the listed skills

(If it’s not there, the model can’t follow it.)

2) Your Brave/search skill is “too general” and is hijacking weather questions

#

If you have lots of skills, OpenClaw may truncate the skills block in the system prompt (so the model literally can’t “see” weather).

In chat, send:

  • /context list (or /context detail)

and look for a warning like “⚠️ Skills truncated …”, and confirm weather is actually listed there.

2) Your Brave skill instructions are too aggressive

Some Brave-search skills are written like “for any question, use Brave search” which will override weather unless the weather skill is very explicit.

Fix: edit the Brave skill SKILL.md to add an explicit exception, e.g. “If the user asks about weather, prefer the weather skill (wttr.in) and do not use Brave search.”

3) The weather skill says “use curl”, but your agent can’t/doesn’t use exec

If exec is not allowed by your tool policy, the model will “work around” by using web_fetch/Brave. In that case, update the weather skill to explicitly use web_fetch against wttr.in (same endpoint), instead of curl.

If you paste:

#

A lot of search skills say (implicitly or explicitly) “for any question, search the web” — and the model will comply.

To confirm, paste:

  • openclaw skills info weather
  • openclaw skills info <your-brave-skill-name> (whatever it’s called in openclaw skills list --eligible)

Quick workarounds (while you debug)

  • Use /weather <location> for deterministic behavior.
  • Or ask: “Use the weather skill (wttr.in) for this: weather in <location>”.
  • If you want it to never use Brave for weather: add an explicit line to the Brave skill like “If the user asks about weather/forecast/temperature, use the weather skill and do not use Brave search.”

Docs that matter here:

#
  • the output of openclaw skills info weather
  • and your Brave skill SKILL.md (just the instruction part)

…I can tell you which of the above is happening and what exact line to change.

nocturne locust
#

@lunar spear OpenClaw uses Brave Search as the default provider for web_search

🦞 OpenClaw 2026.2.17 (4134875) — I'll refactor your busywork like it owes me money.

📦 weather ✓ Ready

Get current weather and forecasts (no API key required).

Details:
Source: openclaw-workspace
Path: ~/.openclaw/workspace/skills/weather/SKILL.md
Homepage: https://wttr.in/:help

Tip: use npx clawhub to search, install, and sync skills.

đź§  Context breakdown (detailed)
Workspace: /home/ubuntu/.openclaw/workspace
Bootstrap max/file: 20,000 chars
Bootstrap max/total: 150,000 chars
Sandbox: mode=off sandboxed=false
System prompt (estimate): 19,106 chars (~4,777 tok) (Project Context 8,819 chars (~2,205 tok))
Injected workspace files:

AGENTS.md: OK | raw 7,804 chars (~1,951 tok) | injected 7,804 chars (~1,951 tok)
TOOLS.md: OK | raw 850 chars (~213 tok) | injected 850 chars (~213 tok)
Skills list (system prompt text): 2,052 chars (~513 tok) (6 skills)
Skills: discord, healthcheck, skill-creator, sonoscli, tmux, weather
Top skills (prompt entry size):
healthcheck: 491 chars (~123 tok)
skill-creator: 296 chars (~74 tok)
tmux: 255 chars (~64 tok)
discord: 215 chars (~54 tok)
sonoscli: 207 chars (~52 tok)
weather: 202 chars (~51 tok)
Lemme know if u need anything in specific