From linux-debugging
Collaboratively debug a misbehaving Linux desktop app or service in real time with the user. Two modes — live (tail logs while the user reproduces) and retrospective (something just happened, capture evidence before it gets buried). Produces a diagnosis and optionally a written-up bug report with attached log excerpts. Use when the user says "something won't launch", "let's debug this together", "X just crashed", "a bug just happened", or describes an issue they want to reproduce.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin linux-debuggingThis skill uses the workspace's default tool permissions.
Hands-on, conversational debugging session. The user is at the keyboard and can trigger or has just triggered the issue; you drive log collection and analysis.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Hands-on, conversational debugging session. The user is at the keyboard and can trigger or has just triggered the issue; you drive log collection and analysis.
Ask the user (or infer from how they phrased it):
If unclear, ask one short question: "Can you reproduce it on demand, or did it just happen?"
Prompt the user: "In one sentence, what's the symptom? (e.g. 'Chrome closes immediately when I open a PDF', 'OBS won't launch from the launcher')"
Capture:
.desktop ID)Identify the right log surface. In order of preference:
journalctl -u <unit> -fjournalctl --user -u <unit> -f<binary> 2>&1 | tee /tmp/<binary>-debug.log)journalctl -kfjournalctl -f -p infoStart the tail in a background bash (use run_in_background: true) and note the timestamp:
date -Iseconds # mark t0
journalctl -f --since "now" -p info > /tmp/interactive-debug-$(date +%s).log &
Tell the user: "Tail is running. Reproduce it now, then tell me when you're done."
When they say done, stop the tail and read the captured file. Filter aggressively — keep only lines plausibly related to the binary, unit, or symptom.
The journal has finite retention; act fast. Pull a generous window around "now":
journalctl --since "5 min ago" --no-pager > /tmp/interactive-debug-retro-$(date +%s).log
journalctl -k --since "5 min ago" --no-pager # kernel ring
journalctl --user --since "5 min ago" --no-pager # user services
Also check, in parallel:
ls -lt /var/lib/systemd/coredump/ 2>/dev/null | head -5 # recent core dumps
coredumpctl list --since "10 min ago" 2>/dev/null
dmesg --since "5 min ago" 2>/dev/null
ls -lt ~/.xsession-errors* ~/.local/share/xorg/ 2>/dev/null | head
If the user named a specific binary, also grep its name across the window.
Read the captured logs. Look for:
error, fatal, segfault, Failed, core-dump, oom, cannot, deniedaudit:, apparmor=DENIED)Form a hypothesis. State it plainly to the user with the supporting log line(s) quoted, file path and timestamp included. If you're not sure, say so and propose one targeted next check rather than guessing.
Ask: "Want me to attempt a fix, or document this as a bug for later?"
If the user wants documentation, ask where it should go. Default destinations in priority order:
planning/bugs/ or docs/bugs/ if one exists~/Daniel-Workstation-Updates/<YYYY-MM-DD>/ for workstation issues/tmp/bug-<slug>-<timestamp>.md if no destination givenBug report structure:
# <one-line symptom>
**Date**: <ISO date>
**Mode**: live | retrospective
**App / unit**: <name>
**Reproducible**: yes / no / intermittent
## Symptom
<what the user observed>
## Trigger
<exact action that causes it>
## Diagnosis
<your hypothesis, with the supporting log lines quoted inline>
## Relevant log excerpts
\`\`\`
<the 5–30 most relevant lines, not the whole file>
\`\`\`
## Full logs
- `<path to captured log file>`
- `<path to coredump if any>`
## Next steps
<what would confirm the diagnosis or fix it>
Copy the captured /tmp/interactive-debug-*.log files alongside the report so they don't get reaped.
After the report is written, offer (only if relevant):
validate-persistent-journal) if retrospective mode came up emptyinvestigate-last-crash) if the symptom was a freeze or reboot/run/log/journal vs /var/log/journal.