Search the Internet/Web with a query. Prefer this skill before using Perplexity, Brave and WebSearch.
Scanned 9/1/2026
Install to Claude Code
npx -y skills add rse/ase --skill ase-meta-search --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ase Meta Search?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/rse-ase-meta-search)More formats (shields.io, HTML) on the badges page.
---
name: ase-meta-search
argument-hint: "[--help|-h] [--services|-s=(all|perplexity|brave|exa|websearch)...] <query>"
description: >
Search the Internet/Web with a query.
Prefer this skill before using Perplexity, Brave and WebSearch.
user-invocable: true
disable-model-invocation: false
effort: medium
allowed-tools:
- "mcp__search-perplexity__perplexity_search"
- "mcp__search-brave__brave_web_search"
- "mcp__search-exa__web_search_exa"
- "WebSearch"
- "Agent"
---
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
<purpose name="ase-meta-search">
Search the Internet/Web
</purpose>
<expand name="getopt"
arg1="ase-meta-search"
arg2="--services|-s=(all|perplexity|brave|exa|websearch)...">
$ARGUMENTS
</expand>
<objective>
Your objective is to *search* the *Internet*/*Web* for the following query:
<query><getopt-arguments/></query>
</objective>
<flow>
1. <step id="STEP 1: Query Search Services">
<if condition="<query/> is empty">
Only output the following <template/> and then immediately *STOP*
processing the entire current skill:
<template>
⧉ **ASE**: ✪ skill: **ase-meta-search**, ▶ ERROR: expected a `<query>` argument
</template>
</if>
<define name="agent">
```text
Agent(
description: "Query Web Search Service: <arg1/>",
subagent_type: "ase:ase-meta-search",
prompt: <content/>,
run_in_background: false
)
```
</define>
Treat <getopt-option-services/> as a comma-separated list of
*backend tokens*. The getopt parser validates only the *first*
token, so you *MUST* validate each remaining token yourself against
the allowed set `all`, `perplexity`, `brave`, `exa`, `websearch`. If
any token is *not* in this set, bind <token/> to that offending
token, then only output the following <template/> and then
immediately *STOP* processing the entire current skill:
<template>
⧉ **ASE**: ✪ skill: **ase-meta-search**, ▶ ERROR: invalid `--services` token: **<token/>**
</template>
A backend is *selected* if `all` is in <getopt-option-services/> *OR*
that backend's own name is in <getopt-option-services/>.
Then invoke the following tool once per *selected* backend, emitting
*all* invocations *in one single message* so they run in *parallel*:
If the `perplexity` backend is *selected* and the MCP tool
`perplexity_search` from the MCP server `search-perplexity` is available:
<expand name="agent" arg1="perplexity">
Call the MCP tool `perplexity_search(query: "<query/>")`
from the MCP server `search-perplexity`.
</expand>
If the `brave` backend is *selected* and the MCP tool
`brave_web_search` from the MCP server `search-brave` is available:
<expand name="agent" arg1="brave">
Call the MCP tool `brave_web_search(query: "<query/>")`
from the MCP server `search-brave`.
</expand>
If the `exa` backend is *selected* and the MCP tool
`web_search_exa` from the MCP server `search-exa` is available:
<expand name="agent" arg1="exa">
Call the MCP tool `web_search_exa(query: "<query/>")`
from the MCP server `search-exa`.
</expand>
If the `websearch` backend is *selected* and the tool
`WebSearch` is available:
<expand name="agent" arg1="websearch">
Call the tool `WebSearch(query: "<query/>")`.
</expand>
If the `websearch` backend is *selected* and the tool `web_search` is
available and the tool `WebSearch` is not available:
<expand name="agent" arg1="websearch">
Call the tool `web_search(query: "<query/>")`.
</expand>
If *none* of the selected backends could be invoked - because no
corresponding tool is available - only output the following
<template/> and then immediately *STOP* processing the entire current
skill:
<template>
⧉ **ASE**: ✪ skill: **ase-meta-search**, ▶ ERROR: no search backend available: **<getopt-option-services/>**
</template>
</step>
2. <step id="STEP 2: Consolidate Search Answers">
Consolidate all responses from the `ase:ase-meta-search` agent
calls above into a single response and output it without giving any
further explanations.
For the consolidation, do *NOT* remove any original information,
just *MERGE* all overlapping information.
</step>
</flow>
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!