investigate
Skill7 starsChanged 22 days agoMITView on GitHub
Deep root cause analysis engine for defects whose cause is genuinely unknown. Runs an 8-phase diagnostic protocol — observe, reproduce, trace, hypothesize, prove, root cause, fix, prevent — using sequential-thinking MCP, multi-pass code reading, git forensics, competing hypotheses, and the 5 Whys, proving the cause with evidence before any fix. Returns a proven root-cause report; the fix runs only after that diagnosis is approved. Use when the user runs /investigate, or when a bug, crash, exception, stack trace, regression, flaky or intermittent failure, data corruption, memory leak, or unexplained slowness needs its root cause found and nobody knows why. Expensive — do not select it when the cause is already known, for a typo, syntax, import or config mistake, for a feature request or refactor, for "what does this code do", or for applying a fix the user already chose; handle those directly. For a live production outage, route to incident-commander first and investigate after service is restored.
128 other projects use a version of this.
Adopted by
Most recently taken up by
- lohi-ai/babysittheir own version, first seen Nov 8, 2026
- charles-adedotun/sre-plugintheir own version, first seen Nov 8, 2026
- NemesLaszlo/claude-code-harnesstheir own version, first seen Nov 8, 2026
- haoyisun/skillstheir own version, first seen Nov 8, 2026
- GeiserX/sstacktheir own version, first seen Nov 8, 2026
- timurgaleev/vibestacktheir own version, first seen Nov 8, 2026
Used with
Projects with it also use pair-agent, plan-devex-review and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
seek888Skillpair-agent
Pair a remote AI agent with your browser. One command generates a setup key and prints instructions the other agent can follow to connect. Works with OpenClaw, Hermes, Codex, Cursor, or any agent that can make HTTP requests. The remote agent gets its own tab with scoped access (read+write by default, admin on request). Use when asked to "pair agent", "connect agent", "share browser", "remote browser", "let another agent use my browser", or "give browser access". (gstack) Voice triggers (speech-to-text aliases): "pair agent", "connect agent", "share my browser", "remote browser access".
Also in 10 projects that use this
seek888Skillplan-devex-review
Interactive developer experience plan review. Explores developer personas, benchmarks against competitors, designs magical moments, and traces friction points before scoring. Three modes: DX EXPANSION (competitive advantage), DX POLISH (bulletproof every touchpoint), DX TRIAGE (critical gaps only). Use when asked to "DX review", "developer experience audit", "devex review", or "API design review". Proactively suggest when the user has a plan for developer-facing products (APIs, CLIs, SDKs, libraries, platforms, docs). (gstack) Voice triggers (speech-to-text aliases): "dx review", "developer experience review", "devex review", "devex audit", "API design review", "onboarding review".
Also in 13 projects that use this
ShreyRaviSkilllanding-report
Read-only queue dashboard for workspace-aware ship. Shows which VERSION slots are currently claimed by open PRs, which sibling Conductor workspaces have WIP work likely to ship soon, and what slot /ship would pick next. No mutations — just a snapshot. Use when asked to "landing report", "what's in the queue", "show me open PRs", or "which version do I claim next". (gstack)
Also in 7 projects that use this
ayudaySkillsetup-deploy
Configure deployment settings for /land-and-deploy. Detects your deploy platform (Fly.io, Render, Vercel, Netlify, Heroku, GitHub Actions, custom), production URL, health check endpoints, and deploy status commands. Writes the configuration to CLAUDE.md so all future deploys are automatic. Use when: "setup deploy", "configure deployment", "set up land-and-deploy", "how do I deploy with gstack", "add deploy config".
Also in 14 projects that use this
ayudaySkillcso
Chief Security Officer mode. Performs OWASP Top 10 audit, STRIDE threat modeling, attack surface analysis, auth flow verification, secret detection, dependency CVE scanning, supply chain risk assessment, and data classification review. Use when: "security audit", "threat model", "pentest review", "OWASP", "CSO review".
Also in 17 projects that use this
ramybarsoumSkilldocument-release
Post-ship documentation update. Reads all project docs, cross-references the diff, updates README/ARCHITECTURE/CONTRIBUTING/CLAUDE.md to match what shipped, polishes CHANGELOG voice, cleans up TODOS, and optionally bumps VERSION. Use when asked to "update the docs", "sync documentation", or "post-ship docs". Proactively suggest after a PR is merged or code is shipped.
Also in 18 projects that use this
- +1 more from seek888
Other versions128 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 128
- recharts/recharts★ 28ksame name
- gitkraken/vscode-gitlens★ 10ksame name
- vercel/eve★ 5.8ksame name
- rilldata/rill★ 3ksame name
- DenchHQ/DenchClaw★ 1.7ksame name
- DenchHQ/ironclaw★ 1.7ksame name
- ceedaragents/cyrus★ 888same name
- cyrusagents/cyrus★ 888same name
- rommapp/argosy-launcher★ 710same name
- mr-daedalium/ostack-saas★ 108same name
118 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- api-contract-testingSkill
- browser-testingSkill
- ci-cd-templatesSkill
- code-review-checklistSkill
- context-escalationSkill
- deep-analysisSkill
- deep-readSkill
- deliverySkill
- deployment-runbookSkill
- divergeSkill
- docker-deploymentSkill
- executeSkill
- experiment-loopSkill
- git-workflowSkill
- handoffSkill
- infrastructure-as-codeSkill
- kubernetes-opsSkill
- library-docsSkill
- multi-agent-orchestrationSkill
- observability-stackSkill
- remote-triggersSkill
- repo-contextSkill
- scheduled-tasksSkill
- security-scanSkill
- skill-creatorSkill
- sre-runbooksSkill
- ui-guidelinesSkill
- verified-handoffSkill
- worktree-workflowSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
55 rules. 0 are common, 48 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 115 edited versions we read keep these.
48
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Core principle: Never fix what you don't understand.
- Distinctive: line 25
Run the 8-phase protocol only for a real bug / unexpected behavior whose root cause is UNKNOWN.
- Distinctive: line 42
When it started / what changed recently
- Distinctive: line 46
If a gap blocks the investigation, exhaust the codebase, git history, and tests first.
- Distinctive: line 47
Check memory files for known pitfalls related to this area:
- Distinctive: line 48
Read MEMORY.md and any topic-specific memory files
- Distinctive: line 49
Check CLAUDE.md for documented patterns
- Distinctive: line 51
Run git log --oneline -20 to see recent changes
- Very specific: line 52
Run git diff --stat HEAD~5 to see what files changed recently
- Distinctive: line 53
Check for any failing tests with the project's test runner
- Distinctive: line 57
Gate: Do NOT theorize yet. Only facts.
- Distinctive: line 66
Run existing tests that cover the affected area
- Distinctive: line 67
If no test exists, attempt manual reproduction via Bash
- Very specific: line 74
Use start_codegen_session to record the reproduction as a reusable test
- Distinctive: line 75
Document the reproduction steps precisely
- Distinctive: line 76
If the issue is intermittent:
- Distinctive: line 78
Look for concurrent access, shared mutable state, missing locks/guards
- Distinctive: line 79
Check for dependency on external state (network, filesystem, database)
- Distinctive: line 80
If the issue cannot be reproduced:
- Distinctive: line 82
Do NOT skip remaining phases — proceed with available evidence
- Distinctive: line 92
Start from the symptom and trace backward to the origin.
- Distinctive: line 95
Use Grep for error messages, exception types, log strings
- Very specific: line 98
Use LSP goToDefinition and findReferences to navigate the call chain precisely
- Very specific: line 99
Use LSP incomingCalls/outgoingCalls to map the full call hierarchy
- Distinctive: line 101
Read each file fully with Read tool — do NOT skim
- Distinctive: line 102
Document the complete flow: input → transform → output
- Very specific: line 107
Use LSP findReferences to find all callers of the failing function (more precise than Grep)
- Distinctive: line 109
Check for shared state, singletons, global variables
- Very specific: line 110
Look for recent changes in dependencies with git log --oneline -- <file>
- Distinctive: line 114
If a clear suspect commit is found, read its full diff
- Distinctive: line 126
Start the sequential-thinking chain with the symptom and all evidence from Phases 1-3
- Distinctive: line 140
Use branching in sequential-thinking to explore alternative explanations:
- Distinctive: line 159
Read the specific code paths predicted by the hypothesis
- Distinctive: line 160
Check logs/output for patterns the hypothesis predicts
- Distinctive: line 161
Run targeted tests that would pass if the hypothesis is correct
- Distinctive: line 162
Use git blame / git log to check if timing matches
- Distinctive: line 164
Look for code paths that should also fail if the hypothesis is correct but don't
- Distinctive: line 165
Check edge cases that contradict the hypothesis
- Distinctive: line 167
Use WebSearch for known issues in the library/framework version
- Distinctive: line 168
Use library-docs skill (context7 MCP) to verify correct API usage
- Very specific: line 169
Search GitHub issues for the library: mcp__github__search_issues
- Distinctive: line 185
Write the definitive explanation before touching any code.
- Distinctive: line 187
Document the complete causal chain:
- Distinctive: line 195
If fixed, would it prevent recurrence?
- Distinctive: line 199
Use Grep to find analogous code that may have the same bug
- Distinctive: line 223
Read every file before modifying it
- Distinctive: line 225
Add inline comments only where the fix is non-obvious
- Distinctive: line 227
Run the reproduction steps from Phase 2 — symptom should be gone
- Distinctive: line 228
Run existing tests — no regressions
- Distinctive: line 229
Run code-quality agent on modified files if the change is substantial
- Distinctive: line 230
Check for similar patterns:
- Distinctive: line 231
If the bug was a pattern (e.g., missing null check), search for the same pattern elsewhere
- Distinctive: line 244
Use test-automation agent for comprehensive test generation
- Distinctive: line 245
Update project memory: if a new pitfall was discovered:
- Distinctive: line 246
Add to MEMORY.md under Common Pitfalls
“Common” is measured: kept by at least 6 in 10 of the 115 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Investigate — Root Cause Analysis Engine
Systematic deep investigation protocol. Finds the REAL cause, not the surface symptom.
Core principle: Never fix what you don't understand. Every fix must trace to a proven root cause with evidence.
Pre-Flight Gate
Activation is decided by the frontmatter description alone — this file is read only AFTER the skill has been selected. Nothing here can prevent over-triggering, so this gate is a post-selection redirect, not a filter.
Before proceeding, check the ABORT and ROUTE OUT conditions below. If any holds, STOP, say in one
line which one fired, and take the redirect instead of starting the 8-phase protocol. Being
invoked — including a literal /investigate or "find the root cause" — does NOT override an ABORT:
the phrasing that selected this skill is not evidence the cause is unknown.
- Run the 8-phase protocol only for a real bug / unexpected behavior whose root cause is UNKNOWN.
- ABORT: a bug whose cause is already known (just fix it), a feature request, an obvious-cause config/syntax error, or anything not actually broken.
- ROUTE OUT: a live production outage — service down, users impacted, an active incident — goes to incident-commander FIRST. Mitigate and restore service, then run
/investigatefor the root cause. An unknown cause does NOT admit an outage to this protocol: diagnosis-before-mitigation is paid for in downtime.
Protocol
Process every /investigate invocation through these 8 phases in strict order. Never skip a phase. Never jump to Phase 7 (FIX) without completing Phases 1-6 and satisfying the Phase 6 consent gate. Phase 6 is a hard halt: stopping there for approval is a correct completion of the protocol, not a skipped phase.
Phase 1: OBSERVE — Gather All Symptoms
Collect every observable fact before forming any theory.
- Parse
$ARGUMENTSas the symptom description Extract the available facts from
$ARGUMENTSand note which are unknown — capture gaps rather than prompting interactively (see the fork note under "Tool Usage by Phase"):- Expected vs actual behavior
- When it started / what changed recently
- Consistent or intermittent
- Error messages, logs, or stack traces
If a gap blocks the investigation, exhaust the codebase, git history, and tests first; only then surface the specific questions in the final report (per the Phase 5 gate).
- Check memory files for known pitfalls related to this area:
- Read MEMORY.md and any topic-specific memory files
- Check CLAUDE.md for documented patterns
- Gather environmental context:
- Run
git log --oneline -20to see recent changes - Run
git diff --stat HEAD~5to see what files changed recently - Check for any failing tests with the project's test runner
- Run
Output: A symptom report listing every observable fact, recent changes, and any relevant memory entries.
Gate: Do NOT theorize yet. Only facts.
Phase 2: REPRODUCE — Confirm the Issue
An issue you cannot reproduce is an issue you cannot prove you fixed.
- Identify the shortest path to trigger the symptom:
- Run existing tests that cover the affected area
- If no test exists, attempt manual reproduction via Bash
- For UI issues, use Playwright MCP for precise reproduction:
playwright_navigateto the affected pageplaywright_screenshotto capture initial state- Replay the interaction sequence (
playwright_click,playwright_fill, etc.) playwright_screenshotto capture the error stateplaywright_console_logswithtype: "error"to capture JS errors- Use
start_codegen_sessionto record the reproduction as a reusable test
- Document the reproduction steps precisely
- If the issue is intermittent:
- Flag it as potentially timing-dependent (race condition, async, state)
- Look for concurrent access, shared mutable state, missing locks/guards
- Check for dependency on external state (network, filesystem, database)
- If the issue cannot be reproduced:
- Shift to forensic investigation (logs, git history, code review)
- Do NOT skip remaining phases — proceed with available evidence
Output: Reproduction steps, or explicit documentation of why reproduction failed.
Gate: Issue confirmed (or forensic mode declared). Proceed.
Phase 3: TRACE — Follow the Execution Path
Start from the symptom and trace backward to the origin.
- Locate the symptom — find the exact file and line where the error occurs:
- Use Grep for error messages, exception types, log strings
- Explore agent for broad searches if the location is unclear — unavailable when forked; batch parallel Grep/Glob calls inline instead
- Trace the call chain — read every file in the execution path:
- Use LSP
goToDefinitionandfindReferencesto navigate the call chain precisely - Use LSP
incomingCalls/outgoingCallsto map the full call hierarchy - From error site → caller → caller's caller → entry point
- Read each file fully with Read tool — do NOT skim
- Document the complete flow: input → transform → output
- Use LSP
- Trace the data flow — follow the data that caused the error:
- What value caused the crash? Where did it come from?
- Trace the value backward: variable → assignment → source → input
- Map dependencies — what else touches this code path:
- Use LSP
findReferencesto find all callers of the failing function (more precise than Grep) - Fall back to Grep if LSP is unavailable for the file type
- Check for shared state, singletons, global variables
- Look for recent changes in dependencies with
git log --oneline -- <file>
- Use LSP
- Check git forensics — when was the problem introduced:
git log --oneline -- <affected-files>— who changed these files and when?git blame <file>on the suspicious lines — what commit introduced them?- If a clear suspect commit is found, read its full diff
Output: Complete execution trace with file paths and line numbers. Data flow map. Git timeline.
Gate: The full code path from entry point to symptom is mapped and understood.
Phase 4: HYPOTHESIZE — Deep Reasoning with 5 Whys
This phase MUST use the sequential-thinking MCP server for structured multi-step reasoning.
- Start the sequential-thinking chain with the symptom and all evidence from Phases 1-3
- Apply the 5 Whys method — for each answer, ask "but why does THAT happen?":
Symptom: App crashes when tapping a document Why 1: DocumentDetailView accesses a deleted NSManagedObject Why 2: The object was deleted from Core Data while the view held a reference Why 3: context.delete() was called from a background operation Why 4: The background sync didn't check if the view was still displaying the object Why 5: There's no soft-delete pattern — objects are hard-deleted immediately ROOT CAUSE: Missing soft-delete guard in the sync pipeline - Generate at least 2 competing hypotheses — don't lock on the first theory:
- Categorize each by type: Code Logic | Data State | Timing/Race | Environment | Dependency | Configuration
- For each hypothesis, define what evidence would prove or disprove it
- Use branching in sequential-thinking to explore alternative explanations:
branchFromThought: 3, branchId: "alternative-cause" - Rank hypotheses by likelihood based on available evidence
Output: Ranked list of hypotheses with evidence requirements for each.
Gate: At least 2 hypotheses generated. Each has defined proof criteria.
Phase 5: PROVE — Test Each Hypothesis with Evidence
Systematically confirm or eliminate each hypothesis. No guessing.
For each hypothesis (highest-ranked first):
- Gather confirming evidence:
- Read the specific code paths predicted by the hypothesis
- Check logs/output for patterns the hypothesis predicts
- Run targeted tests that would pass if the hypothesis is correct
- Use
git blame/git logto check if timing matches
- Gather disconfirming evidence:
- Look for code paths that should also fail if the hypothesis is correct but don't
- Check edge cases that contradict the hypothesis
- Check external sources:
- Use WebSearch for known issues in the library/framework version
- Use library-docs skill (context7 MCP) to verify correct API usage
- Search GitHub issues for the library:
mcp__github__search_issues
- Verdict per hypothesis:
- CONFIRMED — evidence supports it, no contradictions
- ELIMINATED — evidence contradicts it
- INCONCLUSIVE — need more evidence (define what)
If all hypotheses are eliminated: Return to Phase 4 with new evidence. Generate new hypotheses.
Output: Evidence log per hypothesis. One confirmed root cause (or request for more data).
Gate: Exactly one root cause confirmed with evidence. Or an explicit statement that the cause requires additional data from the user (with specific questions).
Phase 6: ROOT CAUSE — Document the Causal Chain
Write the definitive explanation before touching any code.
- Document the complete causal chain:
ROOT CAUSE: <the deepest systemic issue> → causes: <intermediate effect> → causes: <intermediate effect> → manifests as: <the symptom the user reported> - Explain why this is the root cause (not just a proximate cause):
- If fixed, would it prevent recurrence? (yes = root cause)
- Is there a deeper cause? (if yes, keep digging)
- Identify the blast radius — what else is affected:
- Are there similar patterns elsewhere in the codebase?
- Use Grep to find analogous code that may have the same bug
- Present the root cause analysis for approval before proceeding to fix
Output: Root cause statement, causal chain, blast radius assessment.
Gate — HARD HALT. Consent is required, and silence is never consent. Phase 7 may begin only after the user has seen this diagnosis and approved a fix.
- Forked run (
context: fork— the default): STOP HERE. End the run at Phase 6, return the root-cause report as the final answer, and do NOT enter Phase 7 or Phase 8. Consent cannot be obtained mid-run because a forked run cannot use AskUserQuestion, so the fix is out of scope for this invocation by construction. Close the report with: "Root cause proven — approve to proceed with the fix (Phases 7-8)." - Un-forked only: present the diagnosis, obtain the user's explicit agreement, then continue to Phase 7. No agreement, no fix — stop here instead.
- Resuming: Phases 7-8 run in a subsequent invocation that carries the user's approval of this diagnosis. The approval must be present in that invocation; never infer it from the fact that an investigation already ran.
Phase 7: FIX — Address the Root Cause
Fix the root cause, not the symptom. Minimal, targeted change.
Precondition — do not start without it: the Phase 6 consent gate is satisfied, i.e. this invocation carries the user's approval of the diagnosis. A forked run has already ended at Phase 6 and never reaches this phase. If you cannot point to that approval, stop and return the Phase 6 report instead.
- Design the fix:
- What is the minimum change that eliminates the root cause?
- Does the fix handle all cases in the blast radius (Phase 6)?
- Does the fix introduce any new risks?
- Implement the fix:
- Read every file before modifying it
- Make the smallest change possible
- Add inline comments only where the fix is non-obvious
- Verify the fix:
- Run the reproduction steps from Phase 2 — symptom should be gone
- Run existing tests — no regressions
- Run code-quality agent on modified files if the change is substantial
- Check for similar patterns:
- If the bug was a pattern (e.g., missing null check), search for the same pattern elsewhere
- Fix all instances, not just the reported one
Output: Code changes with explanation of what was changed and why.
Phase 8: PREVENT — Ensure It Never Recurs
The investigation isn't complete until recurrence is prevented.
- Add a regression test that would have caught this bug:
- The test must fail without the fix and pass with it
- Use test-automation agent for comprehensive test generation
- Update project memory if a new pitfall was discovered:
- Add to MEMORY.md under Common Pitfalls
- Include the pattern, why it's dangerous, and the safe alternative
- Suggest structural improvements (optional, only if the bug reveals a design flaw):
- Propose architectural changes that make this class of bug impossible
- Present as a suggestion, not an immediate action
- Write the investigation summary:
## Investigation Report
**Symptom:** <what was reported>
**Root Cause:** <the deepest systemic issue>
**Causal Chain:** root cause → ... → symptom
**Fix:** <what was changed, which files>
**Blast Radius:** <other areas checked/fixed>
**Regression Test:** <test added>
**Prevention:** <memory updated, guard added, pattern documented>
**Time:** <phases completed, hypotheses tested>Evidence semantics
A reporting convention over the phases above — how claims are qualified in the Phase 5 evidence log, the Phase 6 root-cause statement and the Phase 8 report. Not a new phase, and it relaxes neither the Phase 5 proof gate nor the Phase 6 causal-proof/consent gate. Scale it to the question. No numeric confidence scores.
- Category each claim. Observed — directly inspected; state the basis: source inspection (
file:lineat the read revision) vs an actual runtime capture (a reproduction, test or log you ran). Reading the code is an observation of the code; reproduction (Phase 2) establishes the observed outcome, not that a specific internal path ran — attributing the outcome to a path is a derived claim from named premises unless a capture shows that branch executed. Derived — follows from named premises; cite them. Inferred — a hypothesis still to verify; this is the Phase 4/5 state, carried as INCONCLUSIVE until proven. Cite the exact input revision or artifact where it matters. - Keep unknowns and contradictions. Unavailable, unsupported or unreproduced is a missing fact — not proof of absence, and not a cue to invent a cause. Preserve disconfirming evidence and INCONCLUSIVE verdicts; an unproven cause is not a root cause, so do not report the investigation complete on it.
- Bound every negative. Tie "not the cause" or "not found" to what was searched or run — the files read, the blast-radius Grep scope and its exclusions, the reproduction attempted. A green test or clean Grep exit covers only what it exercised, not the whole repository.
- On a truncated read, page it with a supported smaller Read (offset/limit) or re-read the retained source by stable path; if evidence stays unavailable keep the limit rather than promote a preview, and do not rerun an identical expensive reproduction for a result already captured.
- Report behaviour separately from static reasoning. A reproduction or regression result is runtime evidence; code reading is static. Keep them distinct, and invent no test, output or citation.
Tool Usage by Phase
| Phase | Primary Tools | When to Use Agents |
| 1. OBSERVE | Read, Grep, Bash (git log) | — |
| 2. REPRODUCE | Bash (test runner), Playwright MCP | — |
| 3. TRACE | Read, Grep, Glob, Bash (git blame) | Explore agent for broad searches (un-forked only) |
| 4. HYPOTHESIZE | sequential-thinking MCP | deep-analysis skill |
| 5. PROVE | Read, Grep, Bash, WebSearch, context7 MCP | library-docs skill, GitHub MCP |
| 6. ROOT CAUSE | Read, Grep | Explore agent for blast radius (un-forked only) |
| 7. FIX | Read, Edit, Write, Bash | code-quality agent for review |
| 8. PREVENT | Write, Edit, Bash | test-automation agent for tests |
Fork note:
/investigateruns forked (context: fork) for context isolation — the deep trace/evidence stays out of the main conversation and only the root-cause report returns. Forked subagents cannot use theAgentlauncher orAskUserQuestion, so the "When to Use Agents" column (Explore / code-quality / test-automation) and any user clarification apply only when this protocol is run un-forked. When forked (the default), perform those steps inline with the Primary Tools and surface any needed user input in the final report. Because consent cannot be collected mid-run, Phase 6 is a hard halt when forked — the run ends with the root-cause report, and Phases 7-8 wait for a subsequent, approval-carrying invocation (see the Phase 6 gate, which is authoritative). (Core RCA runs on Primary Tools — Read/Grep/Bash/sequential-thinking/Playwright/context7/GitHub/LSP — all available to subagents, so fork costs nothing for the core.)
Anti-Patterns — What This Skill Prevents
| Bad Habit | What /investigate Does Instead |
| Jump straight to fixing | Forces Phases 1-6 before any code change |
| Fix the symptom | 5 Whys drills to root cause |
| Single theory tunnel vision | Requires 2+ competing hypotheses |
| "It works now" without understanding | Demands evidence-based proof |
| Fix one instance, miss others | Blast radius analysis in Phase 6 |
| No regression test | Phase 8 mandates a test |
| Knowledge lost | Memory update in Phase 8 |
When to Use /investigate vs Other Tools
| Situation | Use |
| Bug, crash, error, unexpected behavior | /investigate |
| Live production outage — service down, users impacted, active incident | incident-commander FIRST — mitigate and restore, then /investigate for the RCA |
| Build a new feature | /execute |
| Quick "what does this code do?" | Explore agent directly (main session only) |
| Performance slow but unclear why | /investigate (treat slowness as symptom) |
| Known fix, just need to apply it | Direct Edit — no investigation needed |
| Security vulnerability found | /investigate + security-scan |
References
See references/investigation-frameworks.md for detailed methodology guides.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

