Skill metadata
Reference: full SKILL.md
The following is the complete skill definition that Mibyan loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
DuckDuckGo Search
Free web search using DuckDuckGo. No API key required. Preferred whenweb_search is unavailable or unsuitable (for example when FIRECRAWL_API_KEY is not set). Can also be used as a standalone search path when DuckDuckGo results are specifically desired.
Detection Flow
Check what is actually available before choosing an approach:- If
ddgsCLI is installed, preferterminal+ddgs - If
ddgsCLI is missing, do not assumeexecute_codecan importddgs - If the user wants DuckDuckGo specifically, install
ddgsfirst in the relevant environment - Otherwise fall back to built-in web/browser tools
- Terminal and
execute_codeare separate runtimes - A successful shell install does not guarantee
execute_codecan importddgs - Never assume third-party Python packages are preinstalled inside
execute_code
Installation
Installddgs only when DuckDuckGo search is specifically needed and the runtime does not already provide it.
ddgs before using from ddgs import DDGS.
Method 1: CLI Search (Preferred)
Use theddgs command via terminal when it exists. This is the preferred path because it avoids assuming the execute_code sandbox has the ddgs Python package installed.
CLI Flags
Method 2: Python API (Only After Verification)
Use theDDGS class in execute_code or another Python runtime only after verifying that ddgs is installed there. Do not assume execute_code includes third-party packages by default.
Safe wording:
- “Use
execute_codewithddgsafter installing or verifying the package if needed”
- “
execute_codeincludesddgs” - “DuckDuckGo search works by default in
execute_code”
max_results must always be passed as a keyword argument — positional usage raises an error on all methods.
Text Search
Best for: general research, companies, documentation.title, href, body
News Search
Best for: current events, breaking news, latest updates.date, title, body, url, image, source
Image Search
Best for: visual references, product images, diagrams.title, image, thumbnail, url, height, width, source
Video Search
Best for: tutorials, demos, explainers.title, content, description, duration, provider, published, statistics, uploader
Quick Reference
Workflow: Search then Extract
DuckDuckGo returns titles, URLs, and snippets — not full page content. To get full page content, search first and then extract the most relevant URL withweb_extract, browser tools, or curl.
CLI example:
ddgs is installed in that runtime:
web_extract or another content-retrieval tool.
Limitations
- Rate limiting: DuckDuckGo may throttle after many rapid requests. Add a short delay between searches if needed.
- No content extraction:
ddgsreturns snippets, not full page content. Useweb_extract, browser tools, or curl for the full article/page. - Results quality: Generally good but less configurable than Firecrawl’s search.
- Availability: DuckDuckGo may block requests from some cloud IPs. If searches return empty, try different keywords or wait a few seconds.
- Field variability: Return fields may vary between results or
ddgsversions. Use.get()for optional fields to avoidKeyError. - Separate runtimes: A successful
ddgsinstall in terminal does not automatically meanexecute_codecan import it.
Troubleshooting
Pitfalls
max_resultsis keyword-only:ddgs.text("query", 5)raises an error. Useddgs.text("query", max_results=5).- Do not assume the CLI exists: Check
command -v ddgsbefore using it. - Do not assume
execute_codecan importddgs:from ddgs import DDGSmay fail withModuleNotFoundErrorunless that runtime was prepared separately. - Package name: The package is
ddgs(previouslyduckduckgo-search). Install withpip install ddgs. - Don’t confuse
-qand-m(CLI):-qis for the query,-mis for max results count. - Empty results: If
ddgsreturns nothing, it may be rate-limited. Wait a few seconds and retry.
Validated With
Validated examples againstddgs==9.11.2 semantics. Skill guidance now treats CLI availability and Python import availability as separate concerns so the documented workflow matches actual runtime behavior.
