{"slug": "show-hn-debugbrief-turn-debugging-sessions-into-reports-no-ai", "title": "Show HN: DebugBrief – turn debugging sessions into reports, no AI", "summary": "DebugBrief, a new open-source tool, captures debugging sessions and generates evidence-backed Markdown reports for pull requests, handoffs, or incident notes without using AI. The tool records commands run and notes taken, then builds a report from actual events, avoiding inferred root causes or unverified test results.", "body_md": "Record what you do while debugging and turn it into an evidence-backed Markdown report for a pull request, a handoff, or an incident note.\n\nDebugBrief captures the notes you write and the commands you run, then builds a report from what actually happened: what you tried, what failed, what passed, and which files changed in between. It does not use AI and does not infer a root cause or report a test result you did not get.\n\n```\npipx install debugbrief\n# or\nuv tool install debugbrief\n```\n\nPlain `pip install debugbrief`\n\nworks too. DebugBrief needs Python 3.9 or newer. Native Git is used when available to capture repository metadata and changed files. The project you debug does not need to be Python; only DebugBrief runs on Python.\n\n```\ndebugbrief start \"Fix add() returning wrong result\"\ndebugbrief note \"add() subtracts instead of adds; the test expects 5.\"\ndebugbrief run -- python -m pytest -q test_calc.py   # fails\n# make your fix\ndebugbrief redo                                      # same test, now passes\ndebugbrief end                                       # writes the PR report\n```\n\nEverything after `--`\n\nruns exactly as you typed it, with its output streaming live to your terminal. DebugBrief flags (`--timeout`\n\n, `--shell`\n\n, `--no-redact`\n\n, `--verify`\n\n) go before the `--`\n\n. `redo`\n\nre-runs the last captured command, and `end`\n\ndefaults to the `pr`\n\nreport mode.\n\nTip: a one-line alias makes the capture prefix disappear in daily use.\n\n```\nalias db=\"debugbrief run --\"\ndb pytest -q\n```\n\nA report built only from recorded evidence. A short excerpt from a real run:\n\n```\n## Summary\n\nFailing check `python -m pytest -q test_calc.py` passed after 2 attempts over 2s, changes touched calc.py.\n\n## Red to green\n\nA check failed at 12:02:09 and `python -m pytest -q test_calc.py` passed at 12:02:10 (window 1s).\n\nBetween the failing and passing checks, these files changed (correlation, not proven cause):\n- `calc.py`\n```\n\nFull samples: [PR](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-pr.md), [handoff](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-handoff.md), [incident](https://github.com/harihkk/Debug-Brief/blob/main/examples/sample-incident.md).\n\n`run`\n\nexecutes a command under a pseudo-terminal so its output streams live, then records the real exit code, a bounded output preview, the duration, and a per-command`git`\n\nsnapshot.- Pass or fail comes only from the exit code. A command counts as verified only when a recognized test, build, lint, or typecheck runner actually exits 0.\n- It works with any language. A recognized runner (pytest, jest, vitest, go test, cargo test, dotnet test, make check, and more) is classified automatically. Any other command is still captured, and you mark it a check with\n`--verify`\n\n. `end`\n\nderives the report from those events: the red-to-green window, the reproduce and verify commands, a timeline, the observed error, and the failed attempts. Empty sections are omitted.- Secrets are redacted before anything is written to disk. Redaction is best effort;\n`--no-redact`\n\nopts out for a single command.\n\nFull command reference and the complete recognized-runner list: [docs/COMMANDS.md](https://github.com/harihkk/Debug-Brief/blob/main/docs/COMMANDS.md). Security model and redaction details: [SECURITY.md](https://github.com/harihkk/Debug-Brief/blob/main/SECURITY.md).\n\nPost a report straight to a pull request (GitHub CLI optional):\n\n```\ndebugbrief end --stdout | gh pr comment --body-file -\n```\n\nThe five you use most:\n\n| Command | What it does |\n|---|---|\n`start \"<title>\"` |\nStart a session |\n`note <text>` |\nRecord an observation |\n`run -- <command>` |\nRun and capture a command |\n`redo` |\nRe-run the last captured command |\n`end [--mode pr|handoff|incident]` |\nFinalize and write a report (default `pr` ) |\n\nThe rest:\n\n| Command | What it does |\n|---|---|\n`init` |\nSet up the project and show the workflow |\n`status` |\nShow the active session |\n`preview [--mode ...]` |\nPrint the report without ending the session |\n`cancel [--yes]` |\nDiscard the active session, no report |\n`doctor [--fix]` |\nHealth-check the project and state |\n`recover` |\nRepair a broken session pointer after a crash |\n`last` |\nShow the most recent report path |\n`open` |\nOpen the most recent report |\n`list` |\nList recorded sessions |\n`show <id>` |\nShow a recorded session |\n\nFull flags and behavior for each: [docs/COMMANDS.md](https://github.com/harihkk/Debug-Brief/blob/main/docs/COMMANDS.md).\n\nDebugBrief uses the Python standard library and native `git`\n\n. On Python 3.11 and newer it needs nothing else. On Python 3.9 and 3.10 it uses the small `tomli`\n\npackage to read an optional `.debugbrief.toml`\n\n. DebugBrief itself makes no network requests, uses no AI, and collects no telemetry.\n\nLinux and macOS are tested in CI across Python 3.9 through 3.14. Other Unix-like systems may work but are not currently tested. Native Windows and PowerShell are not supported.\n\n- Capture is explicit through\n`debugbrief run`\n\n. Output streams live while a bounded preview is stored for the report, so there is no full transcript. - Full-screen TUIs (a\n`vim`\n\nsession,`htop`\n\n) are not meaningfully captured. Run those directly and record the outcome with`note`\n\n. - Redaction is conservative and best effort; it does not catch every secret.\n- Git sections need native\n`git`\n\n; outside a repository they are omitted.\n\n```\npip install -e \".[dev]\"\npytest\n```\n\nSee [CONTRIBUTING.md](https://github.com/harihkk/Debug-Brief/blob/main/CONTRIBUTING.md) for the full setup and contribution guidelines.\n\nMIT. See [LICENSE](https://github.com/harihkk/Debug-Brief/blob/main/LICENSE).", "url": "https://wpnews.pro/news/show-hn-debugbrief-turn-debugging-sessions-into-reports-no-ai", "canonical_source": "https://github.com/harihkk/Debug-Brief", "published_at": "2026-06-21 19:57:54+00:00", "updated_at": "2026-06-21 20:04:57.428930+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["DebugBrief", "Git", "GitHub", "pytest", "jest", "vitest", "go test", "cargo test"], "alternates": {"html": "https://wpnews.pro/news/show-hn-debugbrief-turn-debugging-sessions-into-reports-no-ai", "markdown": "https://wpnews.pro/news/show-hn-debugbrief-turn-debugging-sessions-into-reports-no-ai.md", "text": "https://wpnews.pro/news/show-hn-debugbrief-turn-debugging-sessions-into-reports-no-ai.txt", "jsonld": "https://wpnews.pro/news/show-hn-debugbrief-turn-debugging-sessions-into-reports-no-ai.jsonld"}}