skills/33-Galaxy-Dawn-claude-scholar/skills/bug-detective/SKILL.md
This skill should be used when the user asks to "debug this", "fix this error", "investigate this bug", "troubleshoot this issue", "find the problem", "something is broken", "this isn't working", "why is this failing", or reports errors/exceptions/bugs. Provides systematic debugging workflow and common error patterns.
npx skillsauth add brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research bug-detectiveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A systematic debugging workflow for investigating and resolving code errors, exceptions, and failures. Provides structured debugging methods and common error pattern recognition.
Debugging is a scientific problem-solving process that requires:
Before starting to debug, clarify the following information:
Required information to collect:
Question template:
1. What is the exact error message?
2. Which file and line does the error occur at?
3. How can this issue be reproduced? Provide detailed steps.
4. What was the expected result? What actually happened?
5. What recent changes might have introduced this issue?
Choose a debugging strategy based on error type:
| Error Type | Characteristics | Debugging Method | |-----------|----------------|-----------------| | Syntax Error | Code cannot be parsed | Check syntax, bracket matching, quotes | | Import Error | ModuleNotFoundError | Check module installation, path config | | Type Error | TypeError | Check data types, type conversions | | Attribute Error | AttributeError | Check if object attribute exists | | Key Error | KeyError | Check if dictionary key exists | | Index Error | IndexError | Check list/array index range | | Null Reference | NoneType/NullPointerException | Check if variable is None | | Network Error | ConnectionError/Timeout | Check network connection, URL, timeout settings | | Permission Error | PermissionError | Check file permissions, user permissions | | Resource Error | FileNotFoundError | Check if file path exists |
Use the following methods to locate the issue:
1. Binary Search Method
2. Log Tracing
3. Breakpoint Debugging
4. Stack Trace Analysis
Hypothesis framework:
Hypothesis: [problem description] causes [error phenomenon]
Verification steps:
1. [verification method 1]
2. [verification method 2]
Expected results:
- If hypothesis is correct: [expected phenomenon]
- If hypothesis is wrong: [expected phenomenon]
After fixing, verify:
is for String Comparisonsuper().__init__()this Binding Issues# ❌ No spaces allowed in assignment
name = "John" # Error: tries to run 'name' command
# ✅ Correct assignment
name="John"
# ❌ Missing spaces in conditional test
if[$name -eq 1]; then # Error
# ✅ Correct
if [ $name -eq 1 ]; then
# ❌ Variables not expanded inside single quotes
echo 'The value is $var' # Output: The value is $var
# ✅ Use double quotes
echo "The value is $var" # Output: The value is actual_value
# ❌ Using backticks for command substitution (confusing)
result=`command`
# ✅ Use $()
result=$(command)
# ❌ Unquoted variable, empty value causes errors
rm -rf $dir/* # If dir is empty, deletes all files in current directory
# ✅ Always quote variables
[ -n "$dir" ] && rm -rf "$dir"/*
# Or use set -u to prevent undefined variables
set -u # or set -o nounset
# ❌ Pipe creates subshell, outer variable unchanged
cat file.txt | while read line; do
count=$((count + 1)) # Outer count won't change
done
echo "Total: $count" # Outputs 0
# ✅ Use process substitution or redirection
while read line; do
count=$((count + 1))
done < file.txt
echo "Total: $count" # Correct output
# ❌ Incorrect array access
arr=(1 2 3)
echo $arr[1] # Outputs 1[1]
# ✅ Correct array access
echo ${arr[1]} # Outputs 2
echo ${arr[@]} # Outputs all elements
echo ${#arr[@]} # Outputs array length
# ✅ Use `=` inside POSIX `[` tests and `==` inside Bash `[[ ]]` tests
if [ "$name" = "John" ]; then
if [[ "$name" == "John" ]]; then
# ❌ Using -eq for numeric comparison instead of =
if [ $age = 18 ]; then # Wrong
# ✅ Use arithmetic operators for numeric comparison
if [ $age -eq 18 ]; then
if (( age == 18 )); then
# ❌ Execution continues after command failure
cd /nonexistent
rm file.txt # Deletes file.txt in current directory
# ✅ Use set -e to exit on error
set -e # or set -o errexit
cd /nonexistent # Script exits here
rm file.txt
# Or check if command succeeded
cd /nonexistent || exit 1
python -m pdb script.py
pytest -x -vv tests/test_target.py
node --inspect-brk app.js
node --trace-warnings app.js
git bisect start
git bisect bad
git bisect good <known-good-commit>
# Run script in debug mode
bash -x script.sh # Print each command
bash -v script.sh # Print command source
bash -n script.sh # Syntax check, no execution
# Enable debugging within a script
set -x # Enable command tracing
set -v # Enable verbose mode
set -e # Exit on error
set -u # Error on undefined variables
set -o pipefail # Fail if any command in pipe fails
For detailed debugging techniques and patterns:
references/python-errors.md - Python error detailsreferences/javascript-errors.md - JavaScript/TypeScript error detailsreferences/shell-errors.md - Bash/Zsh script error detailsreferences/debugging-tools.md - Debugging tools usage guidereferences/common-patterns.md - Common error patternsWorking debugging examples:
examples/debugging-workflow.py - Complete debugging workflow exampleexamples/error-handling-patterns.py - Error handling patternsexamples/debugging-workflow.sh - Shell script debugging exampletools
Show mcp-stata identity, connected tools, and status. Use when the user asks if mcp-stata is available, asks about access to the toolkit, or asks what Stata tools are connected.
tools
Activate when users mention Stata commands, .do files, regressions, econometrics, stored results, graphs, dataset inspection, replication, or Stata errors. Route the task through mcp-stata tools and the specialized research skills instead of treating it as plain text coding.
development
Build and review paper-ready regression, balance, and summary tables from Stata outputs. Use when the user needs a clean table for a draft, appendix, or coauthor share-out.
tools
Install, configure, update, or verify mcp-stata across Claude Code, Codex, Gemini CLI, Cursor, Windsurf, and VS Code. Activate when users ask to set up the Stata toolkit or troubleshoot the installation.