Help us improve
Share bugs, ideas, or general feedback.
From sdlc
Produce a standalone research document in `research/` that answers a question about this codebase, with every finding backed by `file:line` references. Document what *is*, not what *should be*.
npx claudepluginhub iamladi/cautious-computing-machine --plugin sdlcHow this command is triggered — by the user, by Claude, or both
Slash command
/sdlc:researchThe summary Claude sees in its command listing — used to decide when to auto-load this command
# Research & Document Codebase ## Role Produce a standalone research document in `research/` that answers a question about this codebase, with every finding backed by `file:line` references. Document what *is*, not what *should be*. ## Priorities Precision (file:line refs) > Completeness (trace full paths) > Concision ## Scope Load canonical documentarian constraints: `Glob(pattern: "**/sdlc/**/references/documentarian-constraints.md", path: "~/.claude/plugins")` and read the result. The categorical rule: document what exists, not what should exist — `/review` and `/plan` own the "sho...
/researchPerforms adaptive deep web research on a query with configurable --depth and --strategy options. Outputs markdown report with executive summary, analysis, confidence scores, and cited sources.
/researchExecutes deep multi-AI research workflow, synthesizing multi-source analysis via orchestrated LLM agents with configurable breadth and intensity.
/researchConducts multi-turn deep research on a codebase topic over 5 iterations, tracing code paths with citations, Mermaid diagrams, tables, and confidence ratings.
/researchResearches technologies, services, and products matching project requirements including SaaS, open source, gov platforms. Performs build vs buy analysis with 3-year TCO comparisons.
/researchConducts a multi-database scientific research investigation using ToolUniverse, calling tools to look up specific claims, cross-validate, and report honest INDETERMINATE results when evidence is insufficient.
/researchGathers knowledge from trusted web sources and files, cross-references claims across multiple sources, and produces cited research documents in docs/research/. Optional skill distillation via --skill-for.
Share bugs, ideas, or general feedback.
Produce a standalone research document in research/ that answers a question about this codebase, with every finding backed by file:line references. Document what is, not what should be.
Precision (file:line refs) > Completeness (trace full paths) > Concision
Load canonical documentarian constraints: Glob(pattern: "**/sdlc/**/references/documentarian-constraints.md", path: "~/.claude/plugins") and read the result. The categorical rule: document what exists, not what should exist — /review and /plan own the "should" pass. The loaded file names five specific boundaries (scope, critique, RCA, proposals, axis-specific commentary), each with its own downstream failure mode; don't paraphrase by enumerating a subset, since the boundaries dropped from the shorthand are the ones callers can't reconstruct from memory.
/rename "Research: $ARGUMENTS" — or, if no topic was supplied, ask first, then rename.
Swarm is the default — research usually benefits from teammates sharing discoveries in real time. Pass --no-swarm to fall back to a solo parallel-subagent flow. Strip --no-swarm from the args; the remainder is the research topic. If nothing remains, ask the user for a research question.
If swarm mode is active but TeamCreate isn't available, tell the user:
Swarm mode requires agent teams. Set CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 in settings.json or environment.
Falling back to standard workflow.
Then continue — the topic is already parsed.
Find and run the interview protocol:
Glob(pattern: "**/sdlc/**/skills/interview/SKILL.md", path: "~/.claude/plugins")Run in context-only mode: no file updates, no Interview Insights section. Focus on scope, focus areas, depth vs breadth, intended use of the research output. Topic is the parsed research question. Carry interview decisions into the spawn prompts so teammates inherit the scope.
Read any user-mentioned files completely (no limit/offset) before spawning anything. Teammates need to inherit shared grounding, and you can't summarize what you haven't read.
Create the team with TeamCreate: name research-{topic-kebab}-{YYYYMMDD-HHMMSS}, description Research: {topic}.
Register three shared tasks via TaskCreate — structure without prescribing investigation approach:
Spawn three teammates via Task with team_name and subagent_type: "general-purpose". In parallel, spawn web-search-researcher as a plain subagent (no team_name) — it supplements but never blocks.
Use multiple search strategies; don't rely on a single grep pattern — components routinely live under aliases (renamed dirs, index re-exports, multiple extensions) and a single-pattern search silently misses them. Categorize findings using the downstream contract: Implementation Files, Test Files, Configuration, Type Definitions, Related Directories (with Contains X files counts so the caller can gauge scope before dispatching follow-ups). Don't read file contents — content analysis is the Analyzer's job, and reading here wastes tokens and leaks into the output as uninvited analysis. Share discoveries via SendMessage when teammates should examine what you've surfaced. All findings include full file paths. When coverage is comprehensive, TaskUpdate to mark complete and send RESEARCH COMPLETE.
Read files end-to-end before describing them — spot-reading around a grep match writes the right sentence for the wrong function. Every claim cites file:line — a claim without a cite is a guess, and an unsourced sentence propagates as "confirmed" once it leaves you. Focus on mechanism — "how", not "what" or "why": the function name says what, the design doc says why, answering "should" is the reviewer's job; drifting into those leaks opinion into what should be a factual trace. For data transformations, note before/after shape exactly — renaming, filtering, and type coercion are load-bearing details consumers need to judge correctness. Cover: entry points, core logic, data flow, error handling, component interactions.
Share patterns worth documenting or missing files via SendMessage. When you can explain the implementation, TaskUpdate to mark complete and send RESEARCH COMPLETE.
Show working code with surrounding context (callers, imports, error handling), not isolated snippets — a pattern copied without its context breaks the moment it's reused. Include file:line for every example. Show multiple variations when they exist — a single example hides the choice and forces callers to rediscover variants; three examples reveal the dimensions that actually vary (auth shape, validation placement, error shape). Pair each implementation pattern with its test pattern; a feature-with-no-test-pattern is itself a signal — flag the absence explicitly so the caller knows they'll be inventing testing convention rather than following one. Don't evaluate which pattern is better — ranking without the caller's context picks the wrong winner; show what exists and let the caller choose. Categorize: API, data, component, testing patterns. Share leads with the Analyzer and Locator via SendMessage. When breadth is sufficient, TaskUpdate to mark complete and send RESEARCH COMPLETE.
Wait for all three teammates to send RESEARCH COMPLETE, up to 10 minutes per teammate from spawn. On teammate timeout, proceed with available findings and note the timeout in the output. If a teammate gets stuck (repeated identical messages, no progress), pick: note the failure and proceed, respawn with tighter scope, or handle that role yourself — decide on criticality.
Web research gets up to 2 extra minutes after teammates finish. Then proceed without it — it always runs, never blocks.
Integrate findings into a coherent answer to the research question — not a mechanical merge.
[Locator], [Analyzer], [Pattern Finder]. Independently confirmed findings get [Consensus].file:line reference from teammates in the final document.The team must be deleted before the command returns, regardless of whether synthesis succeeded. Skipping leaks team slots and orphans the shared task list.
SendMessage with type: "shutdown_request" to each teammate.TeamDelete.If cleanup itself errors, tell the user "Team cleanup incomplete. You may need to check for lingering team resources." and continue.
Spawn subagents with complementary perspectives on the research question, in parallel:
Each subagent has judgment latitude on how to investigate; be clear on what they're investigating. They decide their own search strategy based on what they find. Include interview decisions and focus areas in each spawn prompt.
The web-search-researcher always runs in parallel; if it fails or returns nothing, proceed with codebase-only findings. If it's still running when codebase subagents finish, give it up to 2 extra minutes.
All findings must trace to specific file:line locations. When the codebase and existing documentation disagree, the codebase is the source of truth.
Integrate all results — codebase analysis + web search — into a single coherent document, preserving every source attribution.
Save to research/research-[topic-kebab-case].md with YAML frontmatter: date, git_commit, branch, repository, topic, tags, status, last_updated, last_updated_by.
Required sections: Research Question → Summary → Detailed Findings (with file:line) → Code References → Architecture Documentation → Related Research → Open Questions.
Add GitHub permalinks if the branch is pushed: https://github.com/{owner}/{repo}/blob/{commit}/{file}#L{line}.
For follow-ups: append to the same doc, update frontmatter, add ## Follow-up Research [timestamp].
When --no-swarm wasn't used (swarm was active), the Summary also carries a short line on team composition and which teammates contributed.
Close with a brief summary of findings and the path to the saved research document.
$ARGUMENTS
If no idea: "I'm ready to research the codebase. Please provide your research question."