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>