CI integration and badge
Block a pull request below a threshold, and show the score in a README.
GitHub Actions
- name: cabfy audit
env:
CABFY_API_KEY: ${{ secrets.CABFY_API_KEY }}
run: npx cabfy audit https://my-store.com --fail-under 60That's all. Commit, branch and run URL are picked up from the environment automatically — no extra flags. The step fails if the score drops below 60, which fails the job.
Choosing the threshold
60 is the boundary between fail and warn: below it, a structural obstacle stops an agent from working. That's the right starting point for a blocking gate, because it only fires on a real problem. Moving to 85 (the pass boundary) means demanding excellence on every commit — workable once the store is already in good shape, brutal before that.
GitLab CI
audit:
image: node:22
script:
- npx cabfy audit https://my-store.com --fail-under 60
variables:
CABFY_API_KEY: $CABFY_API_KEYThe badge
A public SVG badge showing the latest score a store obtained, to embed in a README.
- Dashboard, "Badges" section: pick a store you've already audited, or type its URL.
- The token and badge URL are shown only once — copy the suggested Markdown snippet.
- The badge updates itself as new audits complete: nothing to regenerate.
[](https://my-store.com)The badge is cached for five minutes: allow for that delay before a new score shows up.
What the badge doesn't say
A revoked token, and a store with no completed audit, both render a gray "no data" badge rather than a broken image or an HTTP error. That's intentional: a public badge should never reveal why it has no data. If you see "no data" where you expect a score, first check that the badge's store URL matches the audited one exactly.