home / skills / 0xdarkmatter / claude-mods / claude-code-debug
This skill helps you troubleshoot Claude Code extensions and hooks, diagnose failures, and restore proper agent and hook operation.
npx playbooks add skill 0xdarkmatter/claude-mods --skill claude-code-debugReview the files below or copy the command above to add this skill to your agents.
---
name: claude-code-debug
description: "Troubleshoot Claude Code extensions and behavior. Triggers on: debug, troubleshoot, not working, skill not loading, hook not running, agent not found."
compatibility: "Claude Code CLI"
allowed-tools: "Bash Read"
depends-on: []
related-skills: [claude-code-hooks, claude-code-headless, claude-code-templates]
---
# Claude Code Debug
Troubleshoot extensions, hooks, and unexpected behavior.
## Quick Diagnostics
```bash
# Enable debug mode
claude --debug
# Check loaded extensions
/hooks # View registered hooks
/agents # View available agents
/memory # View loaded memory files
/config # View current configuration
```
## Common Issues
| Symptom | Quick Check |
|---------|-------------|
| Skill not activating | Verify description has trigger keywords |
| Hook not running | Check `chmod +x`, run `/hooks` |
| Agent not delegating | Add "Use proactively" to description |
| MCP connection fails | Test server manually with `npx` |
| Permission denied | Check settings.json allow rules |
## Debug Mode Output
```bash
claude --debug
# Shows:
# - Hook execution and errors
# - Skill loading status
# - Subagent invocations
# - Tool permission decisions
# - MCP server connections
```
## Quick Fixes
### Skill Not Loading
```bash
# Check structure
ls -la .claude/skills/my-skill/
# Must have: SKILL.md
# Verify YAML frontmatter
head -10 .claude/skills/my-skill/SKILL.md
# Must start/end with ---
# Check name matches directory
grep "^name:" .claude/skills/my-skill/SKILL.md
```
### Hook Not Executing
```bash
# Make executable
chmod +x .claude/hooks/my-hook.sh
# Test manually
echo '{"tool_name":"Bash"}' | .claude/hooks/my-hook.sh
echo $? # Check exit code
# Verify JSON syntax
jq '.' ~/.claude/settings.json
```
### Agent Not Being Used
```bash
# Check file location
ls ~/.claude/agents/
ls .claude/agents/
# Verify description includes "Use for:" or "Use proactively"
grep -i "use" agents/my-agent.md | head -5
# Explicitly request
# "Use the my-agent agent to analyze this"
```
## Validation
```bash
# Run all validations
just test
# YAML validation only
just validate-yaml
# Name matching only
just validate-names
```
## Official Documentation
- https://code.claude.com/docs/en/hooks - Hooks reference
- https://code.claude.com/docs/en/skills - Skills reference
- https://code.claude.com/docs/en/sub-agents - Custom subagents
- https://code.claude.com/docs/en/settings - Settings configuration
## Additional Resources
- `./references/common-issues.md` - Issue → Solution lookup table
- `./references/debug-commands.md` - All inspection commands
- `./references/troubleshooting-flow.md` - Decision tree
---
**See Also:** `claude-code-hooks` for hook debugging, `claude-code-templates` for correct structure
This skill helps troubleshoot Claude Code extensions, hooks, agents, and runtime behavior to restore expected operation quickly. It provides targeted diagnostics, checks common failure points, and suggests concrete commands and fixes for configuration, permissions, and delegation issues. Use it to pinpoint why a hook or agent is not running and to validate your setup.
The skill inspects runtime debug output, registered hooks, available agents, memory files, and current configuration. It runs quick diagnostic commands to reveal permission problems, JSON/YAML syntax errors, missing executables, and agent description issues that prevent delegation. It also guides manual tests for hook execution and server connectivity.
What should I enable first when debugging?
Turn on debug mode to capture detailed logs of skill loading, hook execution, and tool permission decisions.
How do I test a hook script manually?
Make the script executable and pipe a representative JSON payload into it, then check the exit code and output.