skills/xdebug/SKILL.md
PHP debugging and analysis tools using Xdebug. Use when asked to trace, debug, profile, or analyze coverage of PHP code. Trigger phrases include "trace this function", "profile this code", "check coverage", "debug PHP", "set breakpoint", "find the bottleneck", "why is this slow", "トレース", "プロファイル", "カバレッジ".
npx skillsauth add koriym/xdebug-mcp xdebugInstall 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.
Non-invasive PHP debugging and analysis tools. No var_dump() or code modification needed.
Tools are installed globally via composer. Use absolute paths:
| Tool | Path |
|------|------|
| xtrace | ~/.composer/vendor/bin/xtrace |
| xstep | ~/.composer/vendor/bin/xstep |
| xprofile | ~/.composer/vendor/bin/xprofile |
| xcoverage | ~/.composer/vendor/bin/xcoverage |
| xback | ~/.composer/vendor/bin/xback |
| User Request | Tool | |--------------|------| | Trace, execution flow, show function calls | xtrace | | Step debugging, breakpoints, inspect variables, track variable changes | xstep | | Profile, performance, bottlenecks, slow code | xprofile | | Coverage, test coverage, which lines tested | xcoverage | | Backtrace, call stack, how did we get here | xback |
The word "trace" can mean different things:
xtrace (records execution from start to finish)xback (shows call stack at a point)xstep (interactive with breakpoints)Trace execution forward from start to finish. Captures complete execution flow, function calls, parameters, and timing data.
Output: JSON with $schema URL for semantic details and AI analysis strategies.
Key fields: {lines, functions, max_depth, db_queries}
~/.composer/vendor/bin/xtrace [--json] [--context=TEXT] [--include-vendor=PATTERNS] -- command
~/.composer/vendor/bin/xtrace --context="Debug login" -- php login.php
~/.composer/vendor/bin/xtrace --context="Test analysis" -- vendor/bin/phpunit tests/UserTest.php
~/.composer/vendor/bin/xtrace --include-vendor="bear/*" -- php app.php
Stop at breakpoint, step forward N times, record variable changes at each step. See how variable values affect branching ("this variable was X, so it went into this branch").
Output: JSON with $schema URL for semantic details.
Key fields: {breaks: [{step, location, variables}]} - Variables show diff only (changed values).
~/.composer/vendor/bin/xstep --break=file.php:line --steps=N [--context=TEXT] [--include-vendor=PATTERNS] -- command
--break=file.php:line - Single breakpoint location--break=file.php:line:condition - Conditional (e.g., $user==null)--steps=N - Step forward N times from breakpoint--watch=EXPR - Only record steps when expression value changes (can specify multiple times)# Step 20 times from line 42
~/.composer/vendor/bin/xstep --break="user.php:42" --steps=20 --context="Track auth" -- php user.php
# Conditional breakpoint
~/.composer/vendor/bin/xstep --break="user.php:15:\$id==null" --steps=10 -- php user.php
# Watch variable changes in loop
~/.composer/vendor/bin/xstep --break="loop.php:10" --watch="\$i" --steps=100 -- php loop.php
# Multiple watches
~/.composer/vendor/bin/xstep --break="app.php:25" --watch="\$user->getStatus()" --watch="count(\$items)" --steps=50 -- php app.php
Identify performance bottlenecks with precision data.
Output: JSON with $schema URL for semantic details and AI analysis strategies.
Key fields: {time_ms, memory_mb, bottlenecks} - Bottlenecks auto-identified.
~/.composer/vendor/bin/xprofile [--json] [--context=TEXT] [--include-vendor=PATTERNS] -- command
~/.composer/vendor/bin/xprofile --context="Optimize processing" -- php process.php
~/.composer/vendor/bin/xprofile --json -- php script.php
~/.composer/vendor/bin/xprofile --include-vendor="doctrine/*" -- php app.php
Collect code coverage data for PHPUnit or any PHP script. Shows only uncovered lines (compact output).
Output: JSON with $schema URL for semantic details.
Key fields: {summary: {coverage_percent, covered_lines, uncovered_lines}, uncovered: {file: [lines]}}
~/.composer/vendor/bin/xcoverage [--include-vendor=PATTERNS] -- command
~/.composer/vendor/bin/xcoverage -- vendor/bin/phpunit # PHPUnit
~/.composer/vendor/bin/xcoverage -- php script.php # Any PHP script
~/.composer/vendor/bin/xcoverage -- vendor/bin/phpunit
~/.composer/vendor/bin/xcoverage --include-vendor="bear/*,ray/di" -- vendor/bin/phpunit
~/.composer/vendor/bin/xcoverage -- vendor/bin/phpunit --filter testMethod
Get call stack (backtrace) at a specific line. Shows "who called this?" - the chain of function calls that led to this point.
Output: JSON with $schema URL for semantic details.
Key fields: {backtrace: [{file, line, function, args}]}
~/.composer/vendor/bin/xback [--break=SPEC] [--depth=N] [--context=TEXT] -- command
~/.composer/vendor/bin/xback -- php script.php # First line
~/.composer/vendor/bin/xback --break=app.php:50 -- php app.php # At breakpoint
~/.composer/vendor/bin/xback --depth=20 -- php main.php # Deep trace
| Option | Description |
|--------|-------------|
| --json | AI-optimized JSON output |
| --context=TEXT | Add description for AI analysis |
| --include-vendor=PATTERNS | Include vendor packages |
By default, vendor code is excluded to focus on your code. Use --include-vendor when needed:
--include-vendor="bear/*" # Include specific framework
--include-vendor="bear/*,ray/di" # Multiple packages
--include-vendor="*/*" # Include all vendor (framework debugging)
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.