Skip to main content

BAD — michael jackson bad

Bad Research

michael jackson bad

PyPI version Python versions License: MIT

A keyless deep-research agent that runs as a Claude Code skill — a fork-and-enhance of hyperresearch. It searches wide, filters garbage, grounds every claim to a source, and needs zero API keys: the Claude Code host model supplies all inference, exactly like hyperresearch. Optional local CLIs and a [local] neural extra are enhancements, never requirements.

Install

Bad Research is a small CLI that registers itself as a Claude Code skill. No API keys. Requires Python 3.11–3.13.

# Install the CLI (pipx or uv — either works)
pipx install bad-research
uv tool install bad-research

# Register the /bad-research skill into ~/.claude
bad install

# Verify
bad doctor

bad install writes the entry skill to ~/.claude/skills/bad-research/; the per-step skills install lazily on first use. For a project-local install instead of global, run bad install --project inside the project. bad doctor shows what's wired (host model, keyless search/browse, the optional external CLIs it can drive, the [local] neural stack).

Use it in Claude Code

After bad install, open Claude Code in any project and either:

  • Invoke it directly — type the slash command with your question:
    /bad-research Is open-source AI more dangerous than closed-source for national security?
    
  • Let Claude trigger it — just ask a research-shaped question ("write me a cited report comparing vector databases", "literature review on GLP-1 drugs") and Claude loads the skill automatically.

It scales to the question: a simple lookup gets a fast cited answer in minutes; a broad or contested one runs the full adversarially-reviewed pipeline (~1.5–2.5 h). The final report and every fetched source land in a vault under ./research/ that compounds across sessions.

Pick the depth (it auto-scales, or force it)

By default the skill auto-routes — a simple, bounded question takes the fast route (a quick cited answer, minutes); a broad or contested one takes the full adversarially-reviewed pipeline (~1.5–2.5 h). You can steer it:

  • Want a thorough report without the multi-hour wait? The fast route is the sweet spot — its breadth branch fans out K parallel researchers over a wide multi-source browse, then writes a sectioned, fully-cited answer in minutes. Force it with bad route --apply --fast if the auto-router picked full and you want the quicker take. If you're just trying Bad Research out, start here.
  • Dial the effort with --effort minimal|low|medium|high to nudge the route and per-step fan-out (minimal/low bias toward fast; medium/high toward full).

On an interactive run the skill announces the chosen route and its rough ETA before it commits to a long job (and for full it shows the editable plan first), so you're never surprised by a 2-hour job you didn't want. The route is decided from the step-1 decomposition and shown by that up-front in-skill route announcement — so you see which route a query takes before any long work starts.

Want the latest unreleased build? Install from source: pipx install git+https://github.com/LeventySeven/badresearch.git

Updating

Already installed? Upgrade the CLI and re-register the skill so both are current:

# From PyPI (pipx or uv — whichever you installed with)
pipx upgrade bad-research      # or: uv tool upgrade bad-research
bad install                    # refresh the /bad-research skill + agents in ~/.claude

# ...or track the latest source
pipx install --force git+https://github.com/LeventySeven/badresearch.git
bad install

bad install is idempotent — re-run it any time after upgrading the CLI to pull the newest entry skill + agents (the per-step skills refresh lazily on the next /bad-research run). Confirm with bad --version.

What it does

A tier-adaptive pipeline turns a question into an audited, fully-cited report, and every fetched source lands in a persistent, searchable vault that compounds across sessions. Keyless by design:

  • Search — the host WebSearch tool + DuckDuckGo + 7 scholarly APIs, fused and reranked by the host model.
  • Content — a native fetch-and-clean pipeline (readability → markdown → optional LLM clean), SSRF-guarded.
  • Browse — an agentic observe → act → extract loop driven by a local, keyless headless browser.
  • Retrieve — SQLite FTS5/BM25 by default (no model required), with an optional local neural lane.
  • Ground — every factual sentence must carry a source citation, and a deterministic ship-gate blocks any uncited claim. Fabricated quotes are caught for free by a byte-identity check; the harder paraphrase-faithfulness cases are judged by the host model (an optional [local] cross-encoder upgrades this to NLI).

How it works & where the patterns came from

Bad Research takes hyperresearch as its base and enhances each stage with patterns drawn from the best deep-research systems — Perplexity, Gemini, Firecrawl, Stagehand, AgentQL, and others — reimplemented to run keyless on the host model. The full write-up, stage by stage with provenance, is in docs/HOW_IT_WORKS.md.

MIT licensed.

Release files for bad-research 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bad-research 0.3.0
File Size Uploaded
bad_research-0.3.0.tar.gz 1.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for bad-research 0.3.0
File Interpreter ABI Platform
bad_research-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.9 MB

Release files / bad_research-0.3.0.tar.gz

Download URL bad_research-0.3.0.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
41af16b431f7923f7cbb469d435d50e9d0ca8e4b1498dd95dd2844b25a629c33
BLAKE2b-256 checksum
How to use checksums
62fae763b0b2275c8c748fad2b4eab964be0260d904e929135afcfb8886bb59a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / bad_research-0.3.0-py3-none-any.whl

Download URL bad_research-0.3.0-py3-none-any.whl
Size 529.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ffc7c68da7cb13772cfc0d029dd50a72fd6796ae4e9043f4cf61b4fb5df95f2
BLAKE2b-256 checksum
How to use checksums
1418c5bdb423f231df077f3cc1efa8caf140364de27cba43bcb6b8f95b1bc19a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page