Use the local smart-search command as the default execution layer for web research. This entrypoint keeps only routing, boundaries, and reference selection; load the focused reference file when command details or provider contracts matter.
What This Skill Is
smart-search-cli is an instruction bundle for an AI tool. It explains when to call the local smart-search executable, which command fits the user's intent, how to preserve source evidence, and how to interpret provider status and fallback fields.
- The Skill does not provide search access by itself; the configured
smart-searchCLI and its providers do the work. - The Skill is not an MCP server, does not store provider API keys, and does not create Trellis, hooks, agents, or commands.
smart-search setup --install-skills ...connects selected Agents. Installed Skills use a short bootstrap: runsmart-search agent-guidefor this CLI's current instructions andsmart-search agent-guide references/<name>.mdfor a referenced document.- The App's Update Skills page reads the selected CLI's catalog. Explicit sync backs up changed files; Remove Skills backs up and disconnects selected targets. Automatic maintenance belongs to the CLI, works with the App closed, and preserves personal edits. Each connected target retains its CLI installation and configuration profile.
- After upgrading the CLI, normal use checks its managed Skills;
skills statusremains read-only andskills updateprovides an explicit refresh. Reopen the Agent session after changes (Gemini:/skills reload). - Skill updates do not change provider configuration or API keys. Missing optional keys remain skipped rather than being treated as successful live checks.
Default Workflow
- Run
smart-search doctor --format jsonwhen configuration or availability is uncertain. - If
doctorreports missing configuration, usesmart-search setuporsmart-search config set KEY VALUEwhen the user provides keys. Do not ask users to edit global environment variables by default. - If OpenAI-compatible
searchhangs or times out afterdoctorsucceeds, runsmart-search diagnose openai-compatible --format markdownand use its summary. - Keep
OPENAI_COMPATIBLE_API_MODE=chat-completionsunless a named relay has passed the official Responses subset probes; setresponsesonly for that relay and keep the diagnostic evidence. - If
doctorreturnsok: true, use onlysmart-searchCLI subcommands for web research. Do not call Codex native web search in the same task. - Use
smart-search skills status --targets codex --format jsonwhen the installed global skill may be stale; usesmart-search skills update --targets codex --format jsonto refresh it without rerunning setup. - Use
smart-search smoke --mock --format jsonafter CLI/provider architecture changes. Use--liveonly when real keys are available and the user expects live checks. - Treat
TAVILY_ENABLED=falseas an intentional no-network boundary: do not work around it with direct Tavily ormapcalls. Checkdoctorand live smoke for disabled/skipped Tavily state; Firecrawl remains independently configured. - If a result reports a degraded provider in
provider_notices, or a provider attempt isskipped, runsmart-search providers status --format json. The channel is on a persisted failure cooldown; fix the credential or runsmart-search providers reset PROVIDERinstead of retrying the same failing provider. - Preserve command lines and source URLs in your answer. Prefer citing fetched pages or
primary_sources; treatextra_sourcesas follow-up candidates until fetched.
Routing
search: first hop for realtime, broad exploration, community signals, multi-source summaries, and routing metadata.route: explain capability routing locally without executing providers;--router-mode jev --remoteexplicitly opts into a potentially billable TypeSafe judgment.research: live Deep Research executor for end-to-end plan, discovery, fetch/read, gap check, and evidence-only synthesis.deep: offline Deep Research planner; it does not run providers, fetch pages, or replace defaultsearch.zhipu-search: Chinese-language, domestic China, policy/regulatory, announcements, current news, or China-local source discovery.context7-library/context7-docs: library, SDK, API, framework, or documentation intent. Automatic routes select Context7 only when a query subject overlaps a candidate title/id; otherwise use same-capability Exa fallback. Explicit commands retain the candidate list and supplied library id.exa-search: official domains, papers, product pages, trusted pages, date/domain-filtered low-noise discovery, and adjacent source discovery throughexa-similar.fetch: user-provided URLs or any claim that depends on page content.map: documentation site or domain structure before fetching many pages from one site.anysearch-*: explicit experimental vertical search only. Inspect domains first and do not use AnySearch as default fallback. Parse JSON parameters before repeatable--param key=valueoverrides;anysearch-extract --max-lengthsends only the URL upstream and truncates successful text locally.sciverse-*: explicit experimental academic search only. Use for catalog/search/semantic/read/relations; do not use Sciverse asdocs_search,standard, or defaultsearch/researchfallback.providers status/providers reset: inspect or clear the persisted failure cooldown for optional providers; use it when a channel keeps reporting the same failure.model current: inspect explicit provider models only. Change models withsmart-search config set XAI_MODEL ...orsmart-search config set OPENAI_COMPATIBLE_MODEL ....
Key Boundaries
smart-searchshould resolve from the user's PATH.- Private API keys should be saved with
smart-search setuporsmart-search config set; environment variables remain supported for CI and advanced users. - In sandboxed runtimes, set
SMART_SEARCH_CONFIG_DIRto an absolute writable path when the default config directory is unavailable or must be pinned. - The standard minimum profile requires one configured provider in each of
main_search,docs_search, and fetch capability. Missing required capabilities are hard configuration failures. - Fallback must remain same-capability only. Do not use Context7 for broad news/web facts or page-extraction providers as documentation search replacements.
- xAI Responses and OpenAI-compatible are peer
main_searchproviders. Do not reuse one provider's URL/key to fabricate the other provider as fallback. - For current-news, policy, finance, health, and other high-risk facts, do not answer from broad
search.contentalone. Fetch key pages and summarize only what fetched text supports. - Native
web_searchis disabled in this CLI-first workflow unless the user explicitly configures another approved route; do not silently fall back to another web-search route.
References
- Command examples, evidence files, timeout retry policy, and guardrails:
references/command-patterns.md - Deep Research planner/executor workflow, plan fields, gap check, and smoke matrix:
references/deep-research-mode.md - CLI entrypoints, command signatures, aliases, output fields, exit codes, and tool policy:
references/cli-core.md - Setup, config storage, skill installation, provider endpoints, and OpenAI-compatible diagnostics:
references/setup-config.md - Intent routing, provider capabilities, source provenance, fallback boundaries, and routing maintenance:
references/provider-routing.md - Regression, packaged install checks, release lanes, and release closeout lessons:
references/regression-release.md - Compatibility reference map for older instructions that mention the original monolithic file:
references/cli-contract.md