Server

Feeding reports to an agent

A report with a selector, the element's text, the page path and the last few console errors is usually enough context for a coding agent to find the code and propose a fix without a conversation. A pattern that works well: store reports as they arrive, and have a scheduled agent session each morning pull yesterday's, group them by application, and present them for a yes / no / how decision — then let it carry on from the ones approved. The reporter never had to describe where the button was; the payload already says.

toMarkdown from bugbottle/server renders a report for exactly that — or for a GitHub issue, a Slack message, an email:

ts
import { toMarkdown } from "bugbottle/server";

const body = toMarkdown(payload, {
  facts: { App: "checkout 1.4.2", User: user.id },
  screenshotUrl: await storeScreenshot(screenshot), // your private route
});
markdown
## Bug: The save button does nothing

The save button does nothing

| | |
|---|---|
| Type | Bug |
| Contact | [email protected] |
| Page | `/orders/42?tab=notes` |
| Viewport | 1440x900 |
| Browser | Mozilla/5.0 … |
| Last console entry | 2026-09-07T08:12:31.004Z |
| App | checkout 1.4.2 |

### Element pointed at

- `form#checkout > button:nth-of-type(2)` — "Save order" (type="submit") at 912,640 118×36

<details><summary>Console (1 entry)</summary>

```text
2026-09-07T08:12:31.004Z [error] TypeError: x is not a function
```

</details>

Edit this page on GitHub