testdouble/investigate
> Evidence-based investigation of issues, bugs, API calls, integrations, and other aspects of software development that need a deep dive to find the root cause and solutions. Use when you need to debug, troubleshoot, diagnose, or figure out why something is broken. Does not review code for quality or style — use code-review for auditing changes or post-code-review-to-pr for posting review feedback to GitHub. Does not assess architectural health or structural risk — use architectural-analysis for architectural concerns. Does not research open-ended options, prior art, or how something works when nothing is broken — use research for that. Does not capture feedback on Han's own skills — use han-feedback for that.
npx skills add https://github.com/testdouble/han --skill investigate
find . -maxdepth 1 -name "CLAUDE.md" -type ffind . -maxdepth 3 -name "project-discovery.md" -type fhan-core:evidence-based-investigator agents for different angles simultaneously — one for the error path, one for the data flow, one for recent changes.han-core:adversarial-validator agent handles all three validation strategies (challenge evidence, challenge fix, challenge assumptions) internally.Launch at least 2 han-core:evidence-based-investigator agents in parallel, each investigating from a different angle — for example, one tracing the error path and another following the data flow.
Classify the bug from the user's symptom description before launching. Skip any specialist that does not apply. Dispatch every applicable specialist in parallel with the han-core:evidence-based-investigator agents in the same message.
After all agents complete (investigators and specialists), compile an evidence summary — a numbered list of concrete findings (E1, E2, E3, ...) that will feed into the root cause analysis. Specialist findings go into the same E-series list, tagged with the specialist's domain (e.g., E3 (concurrency)).
Write to the plan file using the template at template.md. Fill the sections in the workflow order below; this is deliberately not the template's on-page order, which leads with the Summary and places the supporting Evidence Summary, Validation Results, and Coding Standards Reference near the end for the reader. Fill in these sections:
Resolve project config: read CLAUDE.md's ## Project Discovery section for docs, ADR, and coding-standards directories; fall back to project-discovery.md; fall back to Glob defaults (docs/, docs/adr/, docs/coding-standards/). Search found directories for relevant standards, ADRs, and docs. Also check CLAUDE.md, AGENTS.md, and linter/formatter configs for coding standards. If none found, infer conventions from surrounding code.
Design a fix that directly addresses the root cause from Step 2 — fix the underlying problem, not symptoms. Then fill in the remaining sections of template.md in the plan file:
Launch han-core:adversarial-validator agents and pass them the complete evidence summary (all E1-EN items with full code snippets), the root cause analysis, and the planned fix with all file changes. Do not summarize — the validator needs verbatim detail to challenge effectively. Their job is adversarial — they must actively try to disprove the findings and break the fix.
When counter-evidence is found, document it as a validation finding (V1, V2, ...), investigate whether it changes the root cause analysis, adjust the plan (evidence, root cause, and fix sections) as needed, and fill in the Adjustments Made section listing what changed and which validation finding triggered each change. When counter-evidence is not found, document what was checked and why it supports the original findings, recording it as a validation finding confirming the analysis.
After all validation is complete, incorporate the han-core:adversarial-validator agents' Confidence Assessment and Remaining Risks into the plan.
Add the Summary section at the top of the plan file with one sentence each for: root cause (what caused the problem), fix (what the planned changes will do), why correct (reference the strongest evidence), validation outcome (what validation confirmed or changed), and remaining risks (reference the Confidence Assessment).
Once the write-up draft is complete, dispatch han-core:readability-editor (one Agent call) to audit and rewrite the findings against the readability rule. This is separate from the Step 4 adversarial-validator pass: that pass checks the fix is correct (accuracy); this pass checks how the write-up reads. Keep both. Pass the editor the plan file path, the rule path ../../references/readability-rule.md, and the named audience: the engineer who will implement the fix and may be paged on the bug. It must preserve every fact and operate on prose regions only — never inside code fences, function signatures in code blocks, diagram bodies, or file:line citation identifiers. Apply its rewrite to the plan file.
Then run the standardized readability self-check from ../../references/readability-rule.md over the write-up's prose regions only — never inside code fences, function signatures, diagram bodies, or file:line citation identifiers. Confirm each criterion and fix any failure before presenting:
Fidelity wins: the standard governs how the content is said, never whether a required technical fact appears.
Present the plan file to the user for approval. The user can approve the plan (triggering implementation) or provide feedback for revisions.
Take testdouble/investigate from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.