🔎 Ultra Research
Faithful web research for Claude Code — a folder of clean, cited markdown, not a black-box answer.
Aggregation, not synthesis. Gather the real spread of human sources from the open web, then reason over them on your terms — every claim traceable to a file you can open.

Quick Start · How It Works · What Gets Installed · Security · Roadmap
The goal isn't a confident-sounding answer that hides its sources — it's a durable, auditable folder of what real people actually wrote, so you can judge it yourself.
AI search tools collapse the web into one smooth paragraph. That's convenient — and it's exactly where nuance, disagreement, and provenance go to die. Ultra Research does the opposite: it browses like a person, reads each page, keeps only the good ones, and hands you a folder of clean markdown — one file per source, with metadata — that you (or Claude, when you ask) reason over as a separate, explicit step.
[!NOTE]
Unofficial, community-built. Not affiliated with or endorsed by Anthropic.
✨ Why Ultra Research
| Typical AI search | Ultra Research |
|---|
| Output | One synthesized answer | A folder of per-source markdown you can re-open |
| Provenance | Citations you can't easily audit | Every file carries url · author · org · date front-matter |
| Disagreement | Smoothed away | Preserved — minority views survive as their own files |
| Who reasons | The tool, invisibly | You — collection and reasoning are separate stages |
| Page selection | Opaque ranker | Claude reads the results and picks, then inspects each page before saving |
| Date precision | Opaque | `--when day |
| Search operators | None | Claude uses site:, "exact", OR, -exclude, ..range natively |
| Failures | Hidden | Skips (paywall / empty / off-topic / stale date) are reported out loud |
🚀 Quick Start
# 1. Add this repo as a plugin marketplace
/plugin marketplace add r-ichard/ultra-research
# 2. Install the plugin
/plugin install ultra-research
# 3. Just ask — in any project, any folder:
"research whether bun is ready for production"
# …or invoke explicitly:
/ultra-research:research
That's it. No separate setup step — the engine installs itself on first use (see below).
What a session actually looks like
You: research whether bun is ready for production
Ultra Research proposes a plan (and invites your input):
engines : google · brave · duckduckgo
variants: broad · "bun production problems" (contrarian) · bun site:reddit.com (channel)
→ "Add/drop/edit before I run — and any angles or sources of your own?"
You: add a HN search, skip youtube
…then it browses, reading results and inspecting each page before saving:
✓ kept 01-dev-to-bun-in-production.md (DEV, 2026-01)
✓ kept 02-reddit-com-switched-back-from-bun.md
⤫ skipped a paywalled infoq.com article
⤫ skipped an empty SPA shell
Captured 7 pages from 6 hosts → ./research/is-bun-ready-for-production-20260530/
"Enough, or want me to re-run on a new axis?"
Reasoning over the locker — compare viewpoints, steelman the minority, rank by recency — is a separate step you ask for explicitly.
🤫 What happens on first use
The first time you run a research task, the plugin silently sets up its engine — no prompt, no interruption, by design:
- creates a managed Python virtualenv at
~/.local/share/ultra-research/
- installs
crawl4ai into it (pinned versions)
- downloads a headless Chromium browser (~200 MB) via Playwright
This happens once per machine and lives entirely outside your project. Later runs reuse it with zero setup.