Claude-skill-registry Investigation Patterns
This skill should be used when the user asks to "investigate code", "analyze implementation", "find patterns", "understand codebase", "debug issue", "find bug", "troubleshoot", or needs evidence-based code analysis and debugging. Provides systematic investigation and debugging methodology.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/investigation-patterns" ~/.claude/skills/majiayu000-claude-skill-registry-investigation-patterns && rm -rf "$T"
skills/data/investigation-patterns/SKILL.md<error_escalation> <level severity="low"> <example>Evidence trail incomplete</example> <action>Note in report, proceed</action> </level> <level severity="medium"> <example>Conflicting evidence found</example> <action>Document issue, use AskUserQuestion for clarification</action> </level> <level severity="high"> <example>Root cause cannot be determined</example> <action>STOP, present options to user</action> </level> <level severity="critical"> <example>Investigation reveals security issue</example> <action>BLOCK operation, require explicit user acknowledgment</action> </level> </error_escalation>
<constraints> <must>Build evidence chains before conclusions</must> <must>Cite specific file:line references</must> <must>State confidence levels explicitly</must> <avoid>Speculation without evidence</avoid> <avoid>Confirmation bias in hypothesis testing</avoid> <avoid>Concluding without exploring alternatives</avoid> </constraints> <tools> <tool name="find_symbol"> <description>Locate specific symbols by name in the codebase</description> <param name="name_path_pattern">Pattern to match symbol names</param> <param name="relative_path">Optional path to restrict search</param> <param name="depth">Depth to retrieve children (default 0)</param> <use_case>Finding class, function, or variable definitions</use_case> </tool> <tool name="get_symbols_overview"> <description>Get high-level structure of a file</description> <param name="relative_path">Path to file to analyze</param> <param name="depth">Depth of symbol tree (default 0)</param> <use_case>Understanding file organization before detailed investigation</use_case> </tool> <tool name="find_referencing_symbols"> <description>Find all references to a symbol</description> <param name="name_path">Symbol to find references for</param> <param name="relative_path">File containing the symbol</param> <use_case>Tracing dependencies and usage patterns</use_case> </tool> <tool name="search_for_pattern"> <description>Search for regex patterns across codebase</description> <param name="substring_pattern">Regular expression to search</param> <param name="relative_path">Optional path to restrict search</param> <param name="restrict_search_to_code_files">Limit to code files</param> <use_case>Finding specific patterns or usage across files</use_case> </tool> </tools> <concepts> <concept name="evidence_standards"> <description>Standards for collecting and reporting evidence</description> <example> Citation: Always provide file:line references (path/to/file.ext:line_number)</concept> <concept name="null_reference"> <description>Null pointer or undefined reference errors</description> <example> Symptom: NullPointerException, undefined is not a function Investigation: Check all paths to the null access Fix: Add null checks or ensure initialization </example> </concept> <concept name="race_condition"> <description>Concurrent access issues</description> <example> Symptom: Intermittent failures, works sometimes Investigation: Look for shared mutable state, async operations Fix: Add synchronization or redesign for immutability </example> </concept> <concept name="off_by_one"> <description>Boundary condition errors</description> <example> Symptom: Missing first/last element, index out of bounds Investigation: Check loop boundaries and index calculations Fix: Verify start/end conditions, use inclusive/exclusive correctly </example> </concept> <concept name="resource_leak"> <description>Unclosed resources accumulating over time</description> <example> Symptom: Memory growth, connection exhaustion Investigation: Check resource acquisition and release paths Fix: Ensure cleanup in finally/defer, use resource management patterns </example> </concept> <concept name="encoding_issue"> <description>Character encoding mismatches</description> <example> Symptom: Garbled text, unexpected characters Investigation: Trace encoding at each transformation step Fix: Ensure consistent encoding throughout pipeline </example> </concept> <concept name="five_whys"> <description>Ask "why" repeatedly to drill to root cause</description> <example> Why did the server crash? - Out of memory Why out of memory? - Connection pool exhausted Why exhausted? - Connections not being released Why not released? - Exception bypasses cleanup Root cause: Missing try-finally for connection release </example> </concept> <concept name="timeline_analysis"> <description>Reconstruct sequence of events leading to failure</description> <example> Collect timestamps from logs Order events chronologically Identify divergence from expected behavior </example> </concept> <concept name="investigation_output"> <description>Standard format for investigation results</description> <example> <question>Restate the question for confirmation</question> <investigation>Evidence-based findings with file:line references - Source 1: path/to/file.ts:42 - finding description - Source 2: path/to/other.ts:15 - finding description</investigation> <conclusion>Direct answer based on evidence</conclusion> <metrics> - Confidence: 0-100 - Evidence Coverage: 0-100</metrics> <recommendations>Suggested actions without implementation</recommendations> <unclear_points>Information gaps that would improve the answer</unclear_points> </example> </concept> <concept name="debugging_output"> <description>Standard format for debugging results</description> <example> <problem_statement>Clear description of the issue</problem_statement> <reproduction_steps>How to reproduce</reproduction_steps> <investigation>Evidence collected with file:line references</investigation> <root_cause>Identified cause with supporting evidence</root_cause> <solution>Proposed fix with rationale</solution> <verification>How to verify the fix works</verification> <prevention>How to prevent recurrence</prevention> </example> </concept> </concepts>Confidence levels: - 90-100: Direct code evidence, explicit documentation - 70-89: Strong inference from multiple sources - 50-69: Reasonable inference with some gaps - 0-49: Speculation, insufficient evidence Coverage levels: - 90-100: All relevant files examined - 70-89: Most relevant files examined - 50-69: Key files examined, some gaps - 0-49: Limited examination </example>
<related_agents> <agent name="bug">Use for root cause investigation when user reports bugs or errors</agent> <agent name="ask">Use for answering questions about codebase architecture and implementation</agent> <agent name="execute">Delegate to after investigation confirms implementation approach</agent> </related_agents>
<related_skills> <skill name="serena-usage">Use for memory operations and symbol-level code navigation</skill> <skill name="execution-workflow">Use after investigation to implement fixes with proper delegation</skill> <skill name="fact-check">Use to verify external documentation and library behavior</skill> <skill name="testing-patterns">Use to add regression tests after fixing identified bugs</skill> <skill name="requirements-definition">Use when investigation reveals unclear requirements</skill> </related_skills>
<anti_patterns> <avoid name="speculation"> <description>Guessing or making claims when evidence is insufficient</description> <instead>Clearly state confidence levels and information gaps; request additional context if needed</instead> </avoid>
<avoid name="confirming_assumptions"> <description>Confirming user assumptions without independent verification</description> <instead>Independently verify claims by examining code and collecting evidence</instead> </avoid> <avoid name="uncited_claims"> <description>Making claims without file:line references</description> <instead>Always provide file:line citations for findings using format path/to/file.ext:line_number</instead> </avoid> <avoid name="premature_implementation"> <description>Implementing fixes instead of completing analysis</description> <instead>Focus on investigation and analysis; provide recommendations without implementation</instead> </avoid> </anti_patterns><best_practices> <practice priority="critical">Always provide file:line references for all findings using format path/to/file.ext:line_number</practice> <practice priority="critical">Rate confidence and coverage metrics for all investigation results</practice> <practice priority="critical">Complete investigation before proposing solutions</practice> <practice priority="high">Use Serena symbol tools before reading entire files</practice> <practice priority="high">Independently verify claims rather than confirming assumptions</practice> <practice priority="high">Document information gaps and unclear points</practice> <practice priority="medium">Check multiple sources to increase confidence</practice> <practice priority="medium">Use systematic debugging phases (reproduce, isolate, investigate, hypothesize, fix)</practice> </best_practices>