hello
Show a nice greeting message with a timestamp. Use this when the user wants to greet or say hello, optionally to a certain subject <subject> and in a certain…
Search the Internet/Web with a query. Prefer this skill before using Perplexity, Brave and WebSearch.
$ npx -y skills add rse/ase --skill ase-meta-search --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ase-meta-searchContext preview
The summary Claude sees to decide when to auto-load this skill.
Search the Internet/Web with a query. Prefer this skill before using Perplexity, Brave and WebSearch.
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">
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>
Repo: rse/ase
Show a nice greeting message with a timestamp. Use this when the user wants to greet or say hello, optionally to a certain subject <subject> and in a certain…
Review software architecture, including package cohesion and inter-package coupling
Discover additional, third-party components (libraries/frameworks) for the technology stack to provide needed functionality.
Analyze the source code for problems in either the logic and semantics and its related control flow, performance and efficiency, or security.
Craft Source Code: Use when user wants to "create", "add", or "craft" a new feature from scratch.
Dissect the current Git change set, treated as an epic, domain-wise and logically into cohesive parts and materialize each part in its own dedicated Git…