agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
4-phase root cause debugging: understand bugs before fixing.
$ npx -y skills add johnson7788/multiuserclaw --skill systematic-debugging --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/systematic-debuggingContext preview
The summary Claude sees to decide when to auto-load this skill.
4-phase root cause debugging: understand bugs before fixing.
name: systematic-debugging
description: "4-phase root cause debugging: understand bugs before fixing."
version: 1.1.0
author: Hermes Agent (adapted from obra/superpowers)
license: MIT
platforms: [linux, macos, windows]
metadata:
hermes:
tags: [debugging, troubleshooting, problem-solving, root-cause, investigation]
related_skills: [test-driven-development, plan, subagent-driven-development]Random fixes waste time and create new bugs. Quick patches mask underlying issues.
**Core principle:** ALWAYS find root cause before attempting fixes. Symptom fixes are failure.
**Violating the letter of this process is violating the spirit of debugging.**
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
If you haven't completed Phase 1, you cannot propose fixes.
The feedback loop is the debugging work. Before reading code to build a theory, create or identify a **tight** command that can go red on the user's exact symptom and green when the bug is fixed. A tight loop is fast, deterministic, agent-runnable, and specific enough to catch this bug — not merely "doesn't crash".
When a clean repro is hard, spend disproportionate effort building the loop. Guessing without a red-capable loop is the failure mode this skill exists to prevent.
Use for ANY technical issue:
**Use this ESPECIALLY when:**
**Don't skip when:**
You MUST complete each phase before proceeding to the next.
---
**BEFORE attempting ANY fix:**
**Action:** Use `read_file` on the relevant source files. Use `search_files` to find the error string in the codebase.
**Ways to construct a loop — try in roughly this order:**
1. **Failing test** at the seam that reaches the bug: unit, integration, or end-to-end. 2. **HTTP script / curl** against a running dev server. 3. **CLI invocation** with fixture input, diffing stdout/stderr against expected output. 4. **Headless browser script** (Playwright/Puppeteer) asserting on DOM, console, or network. 5. **Replay a captured trace**: HAR, request payload, event log, queue message, or webhook body. 6. **Throwaway harness** that boots the smallest useful slice of the system and calls the failing path. 7. **Property / fuzz loop** when the bug is intermittent wrong output over a broad input space. 8. **Bisection harness** suitable for `git bisect run` when the bug appeared between two known states. 9. **Differential loop** comparing old vs new version, two configs, two providers, or two datasets. 10. **Human-in-the-loop script** only as a last resort: script the human steps and capture their result so the loop stays structured.
**Tighten the loop once it exists:**
For non-deterministic bugs, the immediate goal is a higher reproduction rate, not perfection. Run the trigger 100x, parallelize, add stress, narrow timing windows, or inject sleeps. A 50% flake is debuggable; a 1% flake usually is not.
**Action:** Use the `terminal` tool to run the tight loop:
# Run a specific failing test
pytest tests/test_module.py::test_name -v
# Or run a scripted repro
python scripts/repro_bug.py
# Or run a high-repetition flaky repro
for i in {1..100}; do pytest tests/test_flake.py::test_name -q || break; done**Action:**
# Recent commits git log --oneline -10 # Uncommitted changes git diff # Changes in specific file git log -p --follow src/problematic_file.py | head -100
**WHEN system has multiple components (API → service → database, CI → build → deploy):**
**BEFORE proposing fixes, add diagnostic instrumentation:**
For EACH component boundary:
Run once to gather evidence showing WHERE it breaks. THEN analyze evidence to identify the failing component. THEN investigate that specific component.
**WHEN error is deep in the call stack:**
**Action:** Use `search_files` to trace references:
# Find where the function is called
search_files("function_name(", path="src/", file_glob="*.py")
# Find where the variable is set
search_files("variable_name\\s*=", path="src/", file_glob="*.py")基于 Hermes 改造的轻量级 AI 助手框架,可以快速打造商用 SaaS 平台,支持多租户隔离部署、多平台渠道接入、工具调用、定时任务和 Web 实时通信。 在线体验地址: (直接注册即可使用) 当前默认内核后端:Hermes Agent
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks,…