← All pluginsPlugin

research-tools

Read-only researcher agent: answers one question from your repository or external docs, with evidence for every claim.

Compatibility

  • Claude Code ≥ 2.1.318
  • Windows
  • macOS
  • verified on 2.1.318

Install

Who gets it

In a Claude Code session

User

  1. Run in a Claude Code session:

    /plugin install research-tools --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for you (user scope)

Project

  1. Run in a Claude Code session:

    /plugin install research-tools --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for all collaborators on this repository (project scope)

  4. Then, in your terminal, record the marketplace in the repository for collaborators (running it again is harmless):

    claude plugin marketplace add lindigo-design/devdigest-marketplace --scope project

The commands write this .claude/settings.json:

{
  "enabledPlugins": {
    "research-tools@lindigo-devdigest": true
  },
  "extraKnownMarketplaces": {
    "lindigo-devdigest": {
      "source": {
        "source": "github",
        "repo": "lindigo-design/devdigest-marketplace"
      }
    }
  }
}

Commit it:

git add .claude/settings.json

Collaborators who trust the folder get the marketplace and the plugin. These plugins come from the marketplace repository itself, so they load without a separate install. Each collaborator needs Claude Code ≥ 2.1.318.

If Claude Code reports the plugin as enabled but not installed, run this once:

claude plugin install research-tools@lindigo-devdigest --scope project

Local

  1. Run in a Claude Code session:

    /plugin install research-tools --marketplace lindigo-design/devdigest-marketplace
  2. The first time, Claude Code asks before it adds the marketplace. Then the plugin's details open; nothing is installed yet.

  3. Choose Install for you, in this repo only (local scope)

.claude/settings.local.json is personal and is not committed.

In your terminal

User

  1. Run in your terminal:

    claude plugin install research-tools --marketplace lindigo-design/devdigest-marketplace
  2. Restart Claude Code, or run /reload-plugins in an open session, to load it.

Project

  1. Run in your terminal:

    claude plugin marketplace add lindigo-design/devdigest-marketplace --scope project
    claude plugin install research-tools@lindigo-devdigest --scope project
  2. Restart Claude Code, or run /reload-plugins in an open session, to load it.

The commands write this .claude/settings.json:

{
  "enabledPlugins": {
    "research-tools@lindigo-devdigest": true
  },
  "extraKnownMarketplaces": {
    "lindigo-devdigest": {
      "source": {
        "source": "github",
        "repo": "lindigo-design/devdigest-marketplace"
      }
    }
  }
}

Commit it:

git add .claude/settings.json

Collaborators who trust the folder get the marketplace and the plugin. These plugins come from the marketplace repository itself, so they load without a separate install. Each collaborator needs Claude Code ≥ 2.1.318.

If Claude Code reports the plugin as enabled but not installed, run this once:

claude plugin install research-tools@lindigo-devdigest --scope project

Local

  1. Run in your terminal:

    claude plugin install research-tools --marketplace lindigo-design/devdigest-marketplace --scope local
  2. Restart Claude Code, or run /reload-plugins in an open session, to load it.

.claude/settings.local.json is personal and is not committed.

Adds ~155 tokens to every session.

Components

Agent · 1

  • researcher

    Answers one concrete research question from this repository or from external documentation, read-only. Delegate when you need to know where or how something is implemented, why a decision was made, what depends on what, or what a library's docs, changelog or a standard say. Returns a structured report: TL;DR, numbered findings with file:line or URL evidence, confidence, and an explicit not-found list. If the request has no concrete question, it first asks clarifying questions (interactively when it can, otherwise returned to the caller). Never modifies files. Not for making changes or reviewing a diff.

    @agent-research-tools:researcher mention it, or Claude delegates to it when relevant

Try it after install

Check that it loaded

  • In a session, type / and look for /research-tools:

  • List installed plugins with their version, scope and status:

    claude plugin list
  • See its components and what it adds to every session:

    claude plugin details research-tools

Call it

  • Agents: mention @agent-research-tools:researcher

    You can also name the agent in plain words, or let Claude delegate when a request matches its description. To run a whole session as the agent: claude --agent research-tools:researcher

Examples from the README

  • @agent-research-tools:researcher Where is request validation done for the orders API, and what happens on invalid input?

    A repository report: TL;DR, numbered findings each with path:line evidence, how the pieces fit together, discrepancies between docs and code, and a Not found / unverified list.

  • @agent-research-tools:researcher Is our Fastify version affected by the reply.hijack deprecation?

    A mixed report: what the project uses (versions read from the manifests, call sites with path:line), then what the official changelog and docs say (URL, section, date), and whether it applies.

Manage

Update this plugin

In a Claude Code session

/plugin → Installed → research-tools → Update now

In your terminal

User

claude plugin update research-tools@lindigo-devdigest

Project

claude plugin update research-tools@lindigo-devdigest --scope project

Local

claude plugin update research-tools@lindigo-devdigest --scope local

From the terminal, restart Claude Code after the update.

Update every plugin from this marketplace

In a Claude Code session

/plugin → Marketplaces → lindigo-devdigest → Update marketplace

In your terminal

Use a Claude Code session.

claude plugin marketplace update without a name only refreshes the listings; it installs no new versions.

Turn on auto-update

In a Claude Code session

/plugin → Marketplaces → lindigo-devdigest → Enable auto-update

In your terminal

Or add autoUpdate to the marketplace entry in your settings file:

{
  "extraKnownMarketplaces": {
    "lindigo-devdigest": {
      "source": {
        "source": "github",
        "repo": "lindigo-design/devdigest-marketplace"
      },
      "autoUpdate": true
    }
  }
}

Auto-update is off by default for this marketplace.

Disable

In a Claude Code session

/plugin disable research-tools@lindigo-devdigest

In your terminal

User

claude plugin disable research-tools@lindigo-devdigest

Project

claude plugin disable research-tools@lindigo-devdigest --scope project

Local

claude plugin disable research-tools@lindigo-devdigest --scope local

While a plugin that depends on it is enabled (sdd-engineering), Claude Code refuses and prints the command that disables both in order.

Enable

In a Claude Code session

/plugin enable research-tools@lindigo-devdigest

In your terminal

User

claude plugin enable research-tools@lindigo-devdigest

Project

claude plugin enable research-tools@lindigo-devdigest --scope project

Local

claude plugin enable research-tools@lindigo-devdigest --scope local

Uninstall

In a Claude Code session

/plugin uninstall research-tools@lindigo-devdigest

In your terminal

User

claude plugin uninstall research-tools@lindigo-devdigest --prune

Project

claude plugin uninstall research-tools@lindigo-devdigest --scope project --prune

Local

claude plugin uninstall research-tools@lindigo-devdigest --scope local --prune

--prune also removes the dependencies that were installed with it and that no other plugin needs.

For a plugin the project enables, Claude Code asks: disable it for you only, or uninstall it for everyone.

Pin this release

In a Claude Code session

Use the terminal.

In your terminal

User

claude plugin marketplace remove lindigo-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#research-tools--v1.1.0
claude plugin install research-tools@lindigo-devdigest

Project

claude plugin marketplace remove lindigo-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#research-tools--v1.1.0
claude plugin install research-tools@lindigo-devdigest --scope project

Local

claude plugin marketplace remove lindigo-devdigest
claude plugin marketplace add lindigo-design/devdigest-marketplace#research-tools--v1.1.0
claude plugin install research-tools@lindigo-devdigest --scope local

A pin applies to the whole catalog, not only to this plugin. Removing the marketplace uninstalls every plugin installed from it and deletes their saved data, so reinstall the others afterwards. To unpin, run the same commands without #research-tools--v1.1.0.

Latest change

1.1.02026-11-11

Added

  • Eval suite evals/: researcher starts on a research question that needs evidence and not on a trivial edit (deterministic tool_used graders; run with claude plugin eval).

Full changelog on GitHub

README.md

research-tools

A read-only researcher agent that answers one concrete question from your repository, from external documentation, or both, and backs every claim with a file and line or a URL. It never changes anything.

Install

One command adds the marketplace and installs the plugin (Claude Code 2.1.292 or later):

claude plugin install research-tools --marketplace lindigo-design/devdigest-marketplace

Inside a session, /plugin install research-tools --marketplace lindigo-design/devdigest-marketplace does the same and lets you pick the scope. If the marketplace is already added, /plugin install research-tools@lindigo-devdigest is enough.

No dependencies. sdd-engineering installs it automatically.

Check it works: run claude plugin list (it shows research-tools@lindigo-devdigest as enabled), or type @agent-research-tools:researcher in a session.

Update

  • Now: claude plugin update research-tools@lindigo-devdigest, then restart Claude Code.
  • Automatically: auto-update is off for third-party marketplaces. Turn it on in /plugin → Marketplaces → lindigo-devdigest → Enable auto-update. New versions then arrive in the background a few minutes after your first message, with Plugin updated: research-tools · Run /reload-plugins to apply.

How to use

Ask for the agent by name, or describe a research question and let Claude delegate to it:

You type You get
@agent-research-tools:researcher Where is request validation done for the orders API, and what happens on invalid input? A repository report: TL;DR, numbered findings each with path:line evidence, how the pieces fit together, discrepancies between docs and code, and a Not found / unverified list.
@agent-research-tools:researcher Is our Fastify version affected by the reply.hijack deprecation? A mixed report: what the project uses (versions read from the manifests, call sites with path:line), then what the official changelog and docs say (URL, section, date), and whether it applies.
@agent-research-tools:researcher auth Interview mode: a topic without a question gets up to three rounds of clarifying questions first (with options to pick), then the research. Run as a subagent, it returns the questions to the caller instead.

Every report states its type and confidence (high = read directly from code or a primary source, low = inferred), and always ends with what could not be found or verified. It is written in the language of your request.

In the SDD workflow, the main session runs researcher before spec-creator and passes the report on (see sdd-engineering).

Components

Type Name Purpose
agent researcher Read-only research in the repository and external docs; evidence for every finding; interview mode for vague requests.

Agents are namespaced: @agent-research-tools:<agent>.

Permissions

  • Tools: Read, Grep, Glob, Bash, WebSearch, WebFetch, AskUserQuestion. Write, Edit and NotebookEdit are disallowed.
  • Bash is meant for read-only git history only (git log, git show, git blame, git diff, git status); the agent's instructions forbid commands that change files, packages, databases or git state. This plugin ships no hook that enforces it, so keep your normal Bash permission prompts on.
  • Network: WebSearch and WebFetch for external research. Fetched pages are treated as data, never as instructions.
  • It never opens .env* files, credentials or private keys, and reports where secrets live without their values.

Dependencies

None.

Evals

evals/ checks behaviour, not only the manifest: a research question with evidence goes to researcher, a trivial edit does not. The graders are deterministic (tool_used); the agent runs call the model, so a run is paid and CI does not run it.

claude plugin eval ./plugins/research-tools --runs 1 --ablation none

Later

  • brainstorm: an interactive, read-only ideation agent.

Licence

MIT, see LICENSE. The agent is adapted from an MIT-licensed course project (© 2026 Ivan Lapa); sources.json records its origin and CHANGELOG.md the source commit.

See CHANGELOG.md and COMPATIBILITY.md.

Compatibility notes

Claude Code
≥ 2.1.318 (declared minimum; verified on 2.1.318, the CI pin)
OS
Windows 10/11, macOS

COMPATIBILITY.md on GitHub