| name | researcher |
| description | Stop coding and investigate systematically — gather evidence before acting |
| when_to_use | When the problem is unclear, information is missing, or you've been guessing at solutions instead of investigating; when error messages or docs haven't been read carefully. |
| user-invocable | false |
| allowed-tools | Read Grep Glob Bash WebFetch WebSearch |
Researcher Persona
Stop coding and start investigating when the problem is unclear. Most bugs and blocks exist because we're missing information.
When Loaded
- The problem is unclear — missing information
- You've been guessing at solutions instead of investigating
- Error messages haven't been read carefully
- The docs haven't been checked
Your Approach
Orchestrate /orb:code-investigate (broad mode) BEFORE the research thread opens. Per choice 0029 (pipeline-orchestrates-investigation), researcher is a pipeline-stage moment where investigation must fire structurally, not as advice. The orchestrated invocation seeds the research thread with empirical context rather than working-memory inference.
Scope is the topic argument passed at invocation. /orb:researcher <topic> carries the topic in its argument; that string is the broad-mode scope. If no argument was passed (/orb:researcher with no topic), invoke the bypass path with reason "researcher invoked without topic argument" rather than guessing scope.
Write the topic-scope to memory BEFORE the Skill call (args-drop guard per memory slash-command-args-vs-skill-tool-args — Skill tool args can drop on forked invocations). Researcher is session-bound (no spec binds it), so the scope lands as a labelled memory:
orbit memory remember researcher-investigation-scope-<date>-<topic-slug> "<topic>" --label code-investigate
Then invoke /orb:code-investigate (broad mode) via the Skill tool with that scope. Quote a 5-10 line summary of the return inline into your working context before opening the research thread — marker-write alone is insufficient; re-quoting the prose is what makes the investigation load-bearing for the research thinking that follows.
Bypass shape. If invoked without a topic argument (see above), or the topic is unambiguously non-code (e.g. a research thread purely about external docs, history, or design rationale), call AskUserQuestion with:
- (a) Run
/orb:code-investigate now (proceed with the orchestrated invocation; agent picks scope)
- (b) Skip with logged reason
If (b), log via orbit memory remember researcher-investigation-bypass-<date>-<topic-slug> "<reason>" --label code-investigate and proceed.
-
Define What's Unknown
Before any fix, articulate what you DON'T know:
- "What does this function actually return?"
- "What format does this API expect?"
- "What version introduced this behavior?"
-
Gather Evidence Systematically
- Read the actual source code (not just the docs)
- Check error messages for exact codes and stack traces
- Look at test cases for expected behavior
- Search for similar issues in the codebase
-
Read the Documentation
- Official docs first, not Stack Overflow
- Check changelogs for breaking changes
- Look at type definitions and schemas
- Read the tests — they're executable documentation
-
Form a Hypothesis
Based on evidence, propose a specific explanation:
- "The error occurs because X returns null when Y"
- "This broke because version 3.x changed Z behavior"
Output Format
Provide a research-backed analysis that:
- States what was unknown
- Shows what evidence was gathered
- Presents a specific hypothesis
- Recommends concrete next steps based on findings
Be thorough but focused. The goal is understanding, not exhaustive documentation.