///// CI
Fail the deploy that breaks sign‑in.
Run it in CI. The first run writes a baseline. After that, the job fails only when a check gets worse.
$ npx backwatch your-site.com --ci --baseline .backwatch.json 1 check regressed against .backwatch.json: x oauth-protected-resource pass → fail Error: Process completed with exit code 1.
- uses: backwatch/backwatch@v0
with:
url: your-site.com
baseline: .backwatch.json///// Output
What a run prints
backwatch https://example.com/ FAIL 48FAIL 48 Readability can agents read you? 15/20 resolvedUNKNOWN – Discoverability can agents find your server? 4/9 resolvedUNKNOWN – Connectability can agents sign in and call tools? 0/12 resolvedUNKNOWN – Presence are you listed where agents look? no checks applyx markdown-url-fallback No usable /index.md with Markdown MIME and an initial H1x markdown-negotiation No usable Markdown from homepage negotiation or /index.mdx agent-ua-markdown GPTBot/1.0 requesting HTML: not Markdown, HTTP 200~ agent-friendly-404 Nonexistent path: HTML HTTP 404; explanation 0/20 charactersrun with --md for fix prompts
///// How it works
A baseline, then only regressions
- 01
First run
Backwatch checks the site and writes .backwatch.json. Commit it.
- 02
Every run after
It checks again and compares. The job fails only when a check gets worse, so existing gaps don't block you.
- 03
In the job summary
The Markdown report, with a fix prompt for each failure, lands in the run's summary.
///// GitHub Actions
A complete workflow
name: backwatch
on:
push:
branches: [main]
pull_request:
jobs:
agents:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: backwatch/backwatch@v0
with:
url: your-site.com
baseline: .backwatch.json
badge: backwatch.svgInputs
url | Site to check, for example your-site.com · default none (required) |
|---|---|
baseline | Baseline file. Written on the first run, so commit it; the job fails on any check that got worse · default .backwatch.json |
min-score | Fail below this overall score (0–100). Empty fails on a FAIL verdict · default empty |
badge | Optional badge path: .svg, or .json for a shields.io endpoint · default empty |
version | The backwatch npm version to run · default 0.1 |
Exit codes
0 | Nothing got worse |
|---|---|
1 | Below the threshold, or a check regressed |
2 | Usage error |
3 | The scan could not run |
Inputs reach the shell only through environment variables, so a crafted URL or path cannot inject commands.