Agent skill

Duckduckgo Search

by Tommy-yw in Tommy-yw/RunbookHermes

Free web search via DuckDuckGo — text, news, images, videos.

MITAuto-check passedProductivity & Automation

Install Duckduckgo Search

skills CLI
$ npx skills add Tommy-yw/RunbookHermes --skill duckduckgo-search -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Tommy-yw/RunbookHermes duckduckgo-search --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Tommy-yw/RunbookHermes.git skills-src && mkdir -p .claude/skills && cp -r skills-src/optional-skills/research/duckduckgo-search .claude/skills/duckduckgo-search && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
duckduckgo-search
GitHub stars
546
Used in
3 other repos
Token cost
~2.1k tokens
SKILL.md length
780 words
Files
2 (incl. scripts)
Skills in repo
38
Repo updated
First seen
Licence
MIT

At a glance

Free web search via DuckDuckGo — text, news, images, videos.

  • Works in 4 steps: If ddgs CLI is installed, prefer… → If ddgs CLI is missing, do not assume… → If the user wants DuckDuckGo… → …
  • Tasks that involve Web search
  • SKILL.md covers Detection Flow, Installation, Method 1: CLI Search (Preferred) and Method 2: Python API (Only…, plus 5 more sections
  • Runs Shell scripts from its folder; calls pip; needs FIRECRAWL_API_KEY

What it does

Duckduckgo Search is an agent skill from Tommy-yw/RunbookHermes. Free web search via DuckDuckGo — text, news, images, videos. No API key needed. Prefer the ddgs CLI when installed; use the Python DDGS library only after verifying that ddgs is available in the current runtime.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/duckduckgo.sh`).

It sits in Productivity & Automation, covering Web search. It works with Python. The repository describes itself as: Hermes-native AIOps agent for evidence-driven incident response, approval-gated remediation, and runbook learning. The licence is MIT.

When your agent uses it

  • Tasks that involve Web search

Example prompts

  • “/duckduckgo-search”

Requirements

  • Python 3
  • A Bash shell
  • A credential in FIRECRAWL_API_KEY

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. If ddgs CLI is installed, prefer terminal + ddgs
  2. If ddgs CLI is missing, do not assume execute_code can import ddgs
  3. If the user wants DuckDuckGo specifically, install ddgs first in the relevant environment
  4. Otherwise fall back to built-in web/browser tools

What it can do on your machine

Read from SKILL.md and the folder at commit 7fd2b9a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • FIRECRAWL_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Duckduckgo Search loads about 2.1k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 780 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~58
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from Tommy-yw/RunbookHermes at commit 7fd2b9a, republished under its MIT licence (© Tommy-yw). 780 words, ~2,101 tokens.

Download SKILL.mdSave it as .claude/skills/duckduckgo-search/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
duckduckgo-search
description
Free web search via DuckDuckGo — text, news, images, videos. No API key needed. Prefer the `ddgs` CLI when installed; use the Python DDGS library only after verifying that `ddgs` is available in the current runtime.
version
1.3.0
author
gamedevCloudy
license
MIT

Free web search using DuckDuckGo. No API key required.

Preferred when web_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:

bash
# Check CLI availability
command -v ddgs >/dev/null && echo "DDGS_CLI=installed" || echo "DDGS_CLI=missing"

Decision tree:

  1. If ddgs CLI is installed, prefer terminal + ddgs
  2. If ddgs CLI is missing, do not assume execute_code can import ddgs
  3. If the user wants DuckDuckGo specifically, install ddgs first in the relevant environment
  4. Otherwise fall back to built-in web/browser tools

Important runtime note:

  • Terminal and execute_code are separate runtimes
  • A successful shell install does not guarantee execute_code can import ddgs
  • Never assume third-party Python packages are preinstalled inside execute_code

Installation

Install ddgs only when DuckDuckGo search is specifically needed and the runtime does not already provide it.

bash
# Python package + CLI entrypoint
pip install ddgs

# Verify CLI
ddgs --help

If a workflow depends on Python imports, verify that same runtime can import ddgs before using from ddgs import DDGS.

Method 1: CLI Search (Preferred)

Use the ddgs 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.

bash
# Text search
ddgs text -q "python async programming" -m 5

# News search
ddgs news -q "artificial intelligence" -m 5

# Image search
ddgs images -q "landscape photography" -m 10

# Video search
ddgs videos -q "python tutorial" -m 5

# With region filter
ddgs text -q "best restaurants" -m 5 -r us-en

# Recent results only (d=day, w=week, m=month, y=year)
ddgs text -q "latest AI news" -m 5 -t w

# JSON output for parsing
ddgs text -q "fastapi tutorial" -m 5 -o json
CLI Flags
FlagDescriptionExample
-qQuery — required-q "search terms"
-mMax results-m 5
-rRegion-r us-en
-tTime limit-t w (week)
-sSafe search-s off
-oOutput format-o json

Method 2: Python API (Only After Verification)

Use the DDGS 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_code with ddgs after installing or verifying the package if needed"

Avoid saying:

  • "execute_code includes ddgs"
  • "DuckDuckGo search works by default in execute_code"

Important: max_results must always be passed as a keyword argument — positional usage raises an error on all methods.

Best for: general research, companies, documentation.

python
from ddgs import DDGS

with DDGS() as ddgs:
    for r in ddgs.text("python async programming", max_results=5):
        print(r["title"])
        print(r["href"])
        print(r.get("body", "")[:200])
        print()

Returns: title, href, body

Best for: current events, breaking news, latest updates.

python
from ddgs import DDGS

with DDGS() as ddgs:
    for r in ddgs.news("AI regulation 2026", max_results=5):
        print(r["date"], "-", r["title"])
        print(r.get("source", ""), "|", r["url"])
        print(r.get("body", "")[:200])
        print()

Returns: date, title, body, url, image, source

Best for: visual references, product images, diagrams.

python
from ddgs import DDGS

with DDGS() as ddgs:
    for r in ddgs.images("semiconductor chip", max_results=5):
        print(r["title"])
        print(r["image"])
        print(r.get("thumbnail", ""))
        print(r.get("source", ""))
        print()

Returns: title, image, thumbnail, url, height, width, source

Best for: tutorials, demos, explainers.

python
from ddgs import DDGS

with DDGS() as ddgs:
    for r in ddgs.videos("FastAPI tutorial", max_results=5):
        print(r["title"])
        print(r.get("content", ""))
        print(r.get("duration", ""))
        print(r.get("provider", ""))
        print(r.get("published", ""))
        print()

Returns: title, content, description, duration, provider, published, statistics, uploader

Quick Reference
MethodUse WhenKey Fields
text()General research, companiestitle, href, body
news()Current events, updatesdate, title, source, body, url
images()Visuals, diagramstitle, image, thumbnail, url
videos()Tutorials, demostitle, content, duration, provider

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 with web_extract, browser tools, or curl.

CLI example:

bash
ddgs text -q "fastapi deployment guide" -m 3 -o json

Python example, only after verifying ddgs is installed in that runtime:

python
from ddgs import DDGS

with DDGS() as ddgs:
    results = list(ddgs.text("fastapi deployment guide", max_results=3))
    for r in results:
        print(r["title"], "->", r["href"])

Then extract the best URL with web_extract or another content-retrieval tool.

Show full SKILL.md (313 more words)Show less

Limitations

  • Rate limiting: DuckDuckGo may throttle after many rapid requests. Add a short delay between searches if needed.
  • No content extraction: ddgs returns snippets, not full page content. Use web_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 ddgs versions. Use .get() for optional fields to avoid KeyError.
  • Separate runtimes: A successful ddgs install in terminal does not automatically mean execute_code can import it.

Troubleshooting

ProblemLikely CauseWhat To Do
ddgs: command not foundCLI not installed in the shell environmentInstall ddgs, or use built-in web/browser tools instead
ModuleNotFoundError: No module named 'ddgs'Python runtime does not have the package installedDo not use Python DDGS there until that runtime is prepared
Search returns nothingTemporary rate limiting or poor queryWait a few seconds, retry, or adjust the query
CLI works but execute_code import failsTerminal and execute_code are different runtimesKeep using CLI, or separately prepare the Python runtime

Pitfalls

  • max_results is keyword-only: ddgs.text("query", 5) raises an error. Use ddgs.text("query", max_results=5).
  • Do not assume the CLI exists: Check command -v ddgs before using it.
  • Do not assume execute_code can import ddgs: from ddgs import DDGS may fail with ModuleNotFoundError unless that runtime was prepared separately.
  • Package name: The package is ddgs (previously duckduckgo-search). Install with pip install ddgs.
  • Don't confuse -q and -m (CLI): -q is for the query, -m is for max results count.
  • Empty results: If ddgs returns nothing, it may be rate-limited. Wait a few seconds and retry.

Validated With

Validated examples against ddgs==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.

© Tommy-yw, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in optional-skills/research/duckduckgo-search of Tommy-yw/RunbookHermes.

  • SKILL.md
  • scripts/duckduckgo.sh

Open the folder on GitHubat commit 7fd2b9a

Used in 3 other repositories

We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 3 other GitHub owners. This page covers the copy in Tommy-yw/RunbookHermes, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Duckduckgo Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Duckduckgo Search compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Duckduckgo Search this skillTommy-yw/RunbookHermes5463 repos~2.1kAutomated safety check: PassMIT
Web Searchfastclaw-ai/fastclaw1.4k—~294Automated safety check: PassCustom licence
Deepsearchhuangruiteng/CS-Notes4k—~977Automated safety check: PassApache-2.0
Tavily SearchOpenMinis/MinisSkills446—~869Automated safety check: PassMIT
Ag2 Use Builtin Toolsag2ai/build-with-ag2252—~1.3kAutomated safety check: PassApache-2.0
Web Accessitwanger/PaiCLI-Python102—~183Automated safety check: PassMIT

Similar skills

  • Web Search

    fastclaw-ai/fastclaw

    Search the web and fetch web pages. An agent skill from fastclaw-ai/fastclaw.

    1.4k GitHub stars~294 tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • Deepsearch

    huangruiteng/CS-Notes

    深度研究代理系统社区版,对复杂主题进行多轮迭代的网络搜索和综合分析。使用场景:当用户需要对特定主题进行深入、全面的研究时,特别是需要基于最新网络信息生成详细分析报告的情况。支持多轮迭代搜索、智能搜索方向调整和综合分析报告生成。本skill是一个工作流描述文档,没有执行脚本,依赖web-search skill进行网页搜索。

    4k GitHub stars~977 tokensUpdated 2 days ago
    Productivity & AutomationAuto-check passed
  • Tavily Search

    OpenMinis/MinisSkills

    Use the Tavily Search API to perform web searches. An agent skill from OpenMinis/MinisSkills.

    446 GitHub stars~869 tokensUpdated 3 days ago
    Productivity & AutomationAuto-check passed
  • Ag2 Use Builtin Tools

    ag2ai/build-with-ag2

    Wire AG2 beta's shipped tools into an Agent — both provider-native server-side tools (web search, web fetch, code execution, MCP, image generation, memory) and locally-executed common toolkits…

    252 GitHub stars~1.3k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Web Access

    itwanger/PaiCLI-Python

    A skill your agent uses for live web research, webpage fetching, login-state browsing, dynamic pages, social sites, and tasks that need current internet evidence.

    102 GitHub stars~183 tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed
  • Brightdata SDK JS

    brightdata/skills

    Web data extraction and discovery using the Bright Data JavaScript/TypeScript SDK (@brightdata/sdk).

    264 GitHub stars~3k tokensUpdated 4 days ago
    Productivity & AutomationAuto-check passed

More from Tommy-yw/RunbookHermes

All 38 skills in this repo
  • Fastmcp

    Tommy-yw/RunbookHermes

    Build, test, inspect, install, and deploy MCP servers with FastMCP in Python.

    546 GitHub starsUsed in 3 repos~2.1k tokens
    Auto-check passed
  • Drug Discovery

    Tommy-yw/RunbookHermes

    Pharmaceutical research assistant for drug discovery workflows.

    546 GitHub starsUsed in 1 repo~2.3k tokens
    Auto-check passed
  • Youtube Content

    Tommy-yw/RunbookHermes

    Fetch YouTube video transcripts and transform them into structured content (chapters, summaries, threads, blog posts).

    546 GitHub starsUsed in 1 repo~785 tokens
    Auto-check passed
  • Oss Forensics

    Tommy-yw/RunbookHermes

    Supply chain investigation, evidence recovery, and forensic analysis for GitHub repositories.

    546 GitHub starsUsed in 3 repos~5k tokens
    Auto-check passed
  • P5js

    Tommy-yw/RunbookHermes

    Production pipeline for interactive and generative visual art using p5.js.

    546 GitHub starsUsed in 1 repo~6.8k tokens
    Auto-check passed
  • Touchdesigner MCP

    Tommy-yw/RunbookHermes

    Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals.

    546 GitHub starsUsed in 2 repos~3.4k tokens
    Auto-check passed

Works with

Questions about Duckduckgo Search

What does Duckduckgo Search do?

Free web search via DuckDuckGo — text, news, images, videos. Duckduckgo Search is an agent skill from Tommy-yw/RunbookHermes. Free web search via DuckDuckGo — text, news, images, videos.

When should I use Duckduckgo Search?

Duckduckgo Search fits situations like: tasks that involve Web search.

How do I install Duckduckgo Search in Claude Code?

Run `npx skills add Tommy-yw/RunbookHermes --skill duckduckgo-search -a claude-code`. Or copy the skill folder (optional-skills/research/duckduckgo-search in Tommy-yw/RunbookHermes) into .claude/skills/duckduckgo-search in your project. Claude Code loads it when a task matches its description.

How do I install Duckduckgo Search in Codex?

Run `npx skills add Tommy-yw/RunbookHermes --skill duckduckgo-search -a codex`. Or copy the skill folder (optional-skills/research/duckduckgo-search in Tommy-yw/RunbookHermes) into .agents/skills/duckduckgo-search in your project. Codex loads it when a task matches its description.

Can I use Duckduckgo Search in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Tommy-yw/RunbookHermes --skill duckduckgo-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/duckduckgo-search, .gemini/skills/duckduckgo-search, .github/skills/duckduckgo-search and .opencode/skills/duckduckgo-search in your project.

What does Duckduckgo Search need to run?

Going by SKILL.md and its folder, Duckduckgo Search needs a shell for the scripts in its folder, the command-line tools its instructions call (pip) and credentials named FIRECRAWL_API_KEY. Our summary lists: Python 3; A Bash shell; A credential in FIRECRAWL_API_KEY.

Does Duckduckgo Search access the network?

SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Duckduckgo Search safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Duckduckgo Search use?

Duckduckgo Search is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Duckduckgo Search use?

About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Duckduckgo Search?

Skills that share tags, products or a category with Duckduckgo Search: Web Search (fastclaw-ai/fastclaw, 1.4k stars), Deepsearch (huangruiteng/CS-Notes, 4k stars), Tavily Search (OpenMinis/MinisSkills, 446 stars) and Ag2 Use Builtin Tools (ag2ai/build-with-ag2, 252 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Duckduckgo Search?

Tommy-yw (a GitHub user) maintains it in Tommy-yw/RunbookHermes, which has 546 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on May 18, 2026.

Source: Tommy-yw/RunbookHermes on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.