CLAUDE.md · git:20260524.7538095 · 2026-05-24 · sha256 38d88344c0aa09e1
CLAUDE.md git:20260524.7538095A
Immutable. This exact content never changes and is served at /api/v1/blob/38d88344c0aa09e1.
# CLAUDE.md This file provides guidance to Claude Code when working in this repository. ## Project Summary Web Forager — a search-and-fetch toolkit for AI agents with three MCP capabilities: - Web search via DuckDuckGo (ddgs) - News search via DuckDuckGo (ddgs) - URL fetch + conversion via direct HTTP/trafilatura (Jina Reader as fallback) Also includes five Agent Skills (in `skills/`) that orchestrate search + fetch into specialized workflows: deep-research, fact-check, news-monitor, competitive-intel, tech-advisor. Implements MCP over STDIO using FastMCP. ## Key Paths - `src/web_forager/cli.py`: CLI entry point (serve/search/news/fetch/version) - `src/web_forager/duckduckgo_search.py`: DuckDuckGo web search implementation - `src/web_forager/duckduckgo_news.py`: DuckDuckGo news search implementation - `src/web_forager/web_fetch.py`: URL fetch (direct HTTP + trafilatura, Jina Reader fallback) - `src/web_forager/server.py`: MCP server setup - `src/web_forager/_version.py`: generated by setuptools_scm (do not edit) - `skills/`: Agent Skills (each has a SKILL.md following the Agent Skills spec) ## Common Commands ### Setup ```bash uv pip install -e . uv pip install -e ".[dev]" ``` ### Run ```bash web-forager serve web-forager serve --debug ``` ### CLI Smoke Tests ```bash web-forager search "your search query" --max-results 5 --safesearch moderate web-forager news "your search query" --max-results 10 web-forager fetch "https://example.com" --format markdown --with-images web-forager fetch "https://example.com" --format json web-forager version ``` ### Quality ```bash black src isort src mypy src pytest pytest --cov=web_forager ``` ## Workflow Guidelines - Keep changes small and aligned with existing patterns. - Read relevant files before editing; avoid speculative edits. - Do not edit generated files (notably `src/web_forager/_version.py`). - Do not add or expose secrets in code or docs. - If you change CLI flags or MCP tool behavior, update README.md accordingly. - Prefer running targeted tests for the change when possible. ## Notes - Search and news search use the `ddgs` package (renamed from `duckduckgo-search`). - Fetch tries direct HTTP + trafilatura first, falls back to Jina Reader at `https://r.jina.ai/`. - Skills work standalone (ddgs + direct HTTP/Jina) and prefer MCP tools when available.