webcmd plugin search matches the query as one literal substring, so any multi-word query misses.
Repro (webcmd 0.6.0, node v22.23.1, macOS)
webcmd plugin search "hacker news" -f json # => {"plugins": [], "errors": []}
webcmd plugin search hackernews -f json # => hackernews plugin
webcmd plugin search hacker -f json # => hackernews plugin
Why it matters
skills/webcmd-usage/SKILL.md sends agents down this exact path: registry filter → empty → webcmd plugin search <query> → empty → raw browser fallback. Agents naturally derive the query from the user's words ("pull the top 5 stories from Hacker News" → hacker news), get zero results, and conclude no adapter exists. The hackernews plugin is right there. In our run of start.md this cost the whole verification step: we fell through to webcmd web fetch instead of installing the adapter.
Note the skill even tells agents to "preserve the user's term when practical", which makes the spaced form more likely, not less.
Suggested fix
Tokenize the query and match tokens independently against the plugin name/description, ignoring separators — so hacker news, hacker-news, and hackernews all hit. Cheapest version: strip non-alphanumerics from both query and haystack before the substring test, then AND the remaining tokens.
Worth doing the same for webcmd list -f json consumers if that path shares the matcher.
webcmd plugin searchmatches the query as one literal substring, so any multi-word query misses.Repro (webcmd 0.6.0, node v22.23.1, macOS)
Why it matters
skills/webcmd-usage/SKILL.mdsends agents down this exact path: registry filter → empty →webcmd plugin search <query>→ empty → raw browser fallback. Agents naturally derive the query from the user's words ("pull the top 5 stories from Hacker News" →hacker news), get zero results, and conclude no adapter exists. Thehackernewsplugin is right there. In our run ofstart.mdthis cost the whole verification step: we fell through towebcmd web fetchinstead of installing the adapter.Note the skill even tells agents to "preserve the user's term when practical", which makes the spaced form more likely, not less.
Suggested fix
Tokenize the query and match tokens independently against the plugin name/description, ignoring separators — so
hacker news,hacker-news, andhackernewsall hit. Cheapest version: strip non-alphanumerics from both query and haystack before the substring test, then AND the remaining tokens.Worth doing the same for
webcmd list -f jsonconsumers if that path shares the matcher.