deep-research

deep-research is a skill for Claude Code from zbs-gg/zbs-researcher. It costs 209 tokens per session (11,851 once invoked), scanned B, original, MIT.

A research workflow that gathers information from several sources, including websites, social networks, developer communities, and specialist services, then combines the findings.

In plain words
What is it for?
Investigating complex questions, comparing evidence, finding community discussion, and producing a source-linked summary.
Why use it?
It helps when one search does not provide enough coverage or when sources disagree.

Skill for Claude Code

Written for Claude Code: SessionStart hook event. Also seen: names the AskUserQuestion tool; positional $N argument; mentions Claude Code.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the deep-research plugin — 1 skill, 1 hook shipped together

Good fit Investigating complex questions, comparing evidence, finding community discussion, and producing a source-linked summary.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add zbs-gg/zbs-researcher
Claude Code
/plugin install deep-research

Made for: Claude Code.

Or install deep-research, the plugin that ships this one along with the rest of its 1 skill, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for deep-research

README.md
[![agentmods](https://agentmods.dev/badge/skills/zbs-gg/zbs-researcher/deep-research/github.svg)](https://agentmods.dev/skills/zbs-gg/zbs-researcher/deep-research)
Your own site
<a href="https://agentmods.dev/skills/zbs-gg/zbs-researcher/deep-research"><img src="https://agentmods.dev/badge/skills/zbs-gg/zbs-researcher/deep-research/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for deep-research

Your own site · 80×15
<a href="https://agentmods.dev/skills/zbs-gg/zbs-researcher/deep-research"><img src="https://agentmods.dev/badge/skills/zbs-gg/zbs-researcher/deep-research.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 209 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 11,851 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00209 $0.11851
Opus 5 $0.00105 $0.05926
Sonnet 5 $0.00042 $0.02370
Haiku 4.5 $0.00021 $0.01185

Measured 11d ago against content hash ea499642b211, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade B, and why

deep-research scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.

The scan reads SKILL.md. This mod also ships 45 executable files (scripts/connectors/__init__.py, scripts/connectors/launch_radar.py, scripts/connectors/meta_ads.py, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Asks for rootmediumPrivilege escalation

A mod that escalates privileges can change anything on the machine, not only the project.

(`chmod 600` it). The secrets dir is `DEEP_RESEARCH_SECRETS_DIR` if set,
skills/deep-research/SKILL.md · 800 lines

How it starts

The opening of the file, as written. The whole thing — 800 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Deep Research — plan first, then multi-channel pull + synthesis

Use when normal web search isn't enough — you need to triangulate across very different source types (reasoning-model lenses and raw platform signal) and surface contradictions, not just retrieve the top-ranked summary.

The edge is QUALITY: native, full-breadth social/community depth — this tool reads the platforms from inside (live X, Telegram communities, the full Reddit archive) and backs every load-bearing claim with a real quote, an author handle, and a clickable live link. A web-index researcher sees only the indexed scraps. "Free/cheaper" is not the pitch — quality is.

STEP 0 — RESEARCH PLAN (mandatory, before any run)

Never fire the connectors cold. Every skill invocation creates one self-contained bundle in the project from which the skill was launched. The meaningful research plan must exist inside that bundle before connector work starts. The rule is: "when you invoke research — the research plan first, then the run."

  1. Capture the launch directory before resolving plugin paths, then probe the live connectors from that directory. Never cd into the plugin and accidentally make it the research owner. Resolve SKILL_DIR from the absolute directory containing the loaded SKILL.md; this path is supplied during skill discovery on Codex and other hosts. Do not assume CLAUDE_PLUGIN_ROOT exists, and never execute the placeholder below—replace it with the discovered absolute directory in every shell call:
    LAUNCH_CWD="$(pwd -P)"
    SKILL_DIR="<absolute directory containing the loaded SKILL.md>"
    SCRIPT="$SKILL_DIR/scripts/deep-research.py"
    test -f "$SCRIPT"
    printf 'launch_cwd=%s\n' "$LAUNCH_CWD"
    (cd "$LAUNCH_CWD" && python3 "$SCRIPT" --list-connectors \
        --launch-cwd "$LAUNCH_CWD")
    
    Record the printed absolute path. Shell variables may not survive between tool calls, so later calls must reassign LAUNCH_CWD to this captured literal; do not recalculate it after visiting another directory.
  2. Resolve the topic (this is where the quality comes from — borrowed from last30days' pre-research idea). Don't search raw keywords; first name the concrete entities:
    • people → exact @handles (X/GitHub/Bluesky)
    • communities → exact subreddits (r/…), HN, specific orgs
    • repos → owner/name
    • is this a forecastable event? → Polymarket is worth including
    • is this a skills/tech-trend question? → the hiring channel shows whether the job market is heating up on it (resolve the query to 1–2 sharp terms, e.g. RAG, context engineering, not a long phrase)
  3. Pick channels + aim each one. Decide which of the 18 connectors run and why each — which channel covers which facet. Write a per-channel query where the default topic string isn't the sharpest aim.
  4. Name the contradictions you expect to test — the value of the run is in the disagreements, so say up front what tension you're probing.
  5. Show the compact plan, then reserve exactly one run directory through the runner. Use the resolved topic, not an unexpanded placeholder:
    LAUNCH_CWD="/absolute/path/printed-in-step-1"
    SKILL_DIR="/absolute/directory/containing/the/loaded/SKILL.md"
    SCRIPT="$SKILL_DIR/scripts/deep-research.py"
    TOPIC="RESOLVED TOPIC"
    RUN_DIR="$(cd "$LAUNCH_CWD" && python3 "$SCRIPT" "$TOPIC" \
        --allocate-run --launch-cwd "$LAUNCH_CWD")"
    printf 'run_dir=%s\n' "$RUN_DIR"
    
    The default owner is the launch directory's Git top-level, or the captured launch directory outside Git. If a monorepo's Git root is broader than the actual project, pass the intended owner explicitly during allocation:
    LAUNCH_CWD="/absolute/path/printed-in-step-1"
    SKILL_DIR="/absolute/directory/containing/the/loaded/SKILL.md"
    SCRIPT="$SKILL_DIR/scripts/deep-research.py"
    TOPIC="RESOLVED TOPIC"
    PROJECT_ROOT="/absolute/path/to/intended/project"
    RUN_DIR="$(cd "$LAUNCH_CWD" && python3 "$SCRIPT" "$TOPIC" \
        --allocate-run --launch-cwd "$LAUNCH_CWD" \
        --project-root "$PROJECT_ROOT")"
    printf 'run_dir=%s\n' "$RUN_DIR"
    
    Allocation writes only _topic.txt, which binds the reservation to the exact topic. It does not start connectors.
  6. Write research-plan.md inside the absolute run path printed in step 5 before starting connectors. Use the normal file-writing tool, not a placeholder shell echo. The plan must name the resolved topic/entities, research questions and scope, selected channels with rationale, exact per-channel queries, expected contradictions, and what evidence would answer the request. Record the captured launch directory and any explicit project-root choice.
  7. Run connectors into that exact directory. Do not allocate a second run and do not derive a path independently:
    LAUNCH_CWD="/absolute/path/printed-in-step-1"
    SKILL_DIR="/absolute/directory/containing/the/loaded/SKILL.md"
    SCRIPT="$SKILL_DIR/scripts/deep-research.py"
    TOPIC="RESOLVED TOPIC"
    RUN_DIR="/absolute/path/printed-in-step-5"
    (cd "$LAUNCH_CWD" && python3 "$SCRIPT" "$TOPIC" \
        --launch-cwd "$LAUNCH_CWD" --output-dir "$RUN_DIR" --prepared-run)
    
    Add --only, --skip, and repeated --q name:query options from the written plan. Afterward, read the reports and write synthesis.md beside research-plan.md; if a brief is useful, render it there too:
    SKILL_DIR="/absolute/directory/containing/the/loaded/SKILL.md"
    SCRIPT="$SKILL_DIR/scripts/deep-research.py"
    RUN_DIR="/absolute/path/printed-in-step-5"
    python3 "$SCRIPT" --render-html "$RUN_DIR/synthesis.md" \
        --html-out "$RUN_DIR/brief.html"
    

Read the full file on GitHub · 800 lines

Files

What ships with it

45 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 11d ago First seen · 800 lines · 209 tokens per session scan B ea499642b211

Subscribe to this mod's changes

deep-research is a skill published in the GitHub repository zbs-gg/zbs-researcher (4 stars, last pushed 24d ago), licensed MIT. It adds 209 tokens to every session and 11,851 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

local-ai-agents

Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…

microsoft/ai-agents-for-beginners · 200 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens

insight-error-page

Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…

vercel/next.js · 83 tokens

next-cache-components-optimizer

Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…

vercel/next.js · 170 tokens

next-partial-prefetching-adoption

Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…

vercel/next.js · 103 tokens