Agent Readiness ReportBoltline boltline.example · scan aaaa1111 · 5/16/2026
96 labeling
92 keyboard
95 non semantic handlers
89 hover dependencies
97 transient state
100 responsive blockers
91 ambiguous targets
AX score · last 3 scans +60 in 48h
100 50 0 05/10 · 34 05/10 05/11 · 64 05/11 05/12 · 94 05/12 0 50 100
Baseline (no AgentGlass)
64
f7 Copy-key button → onclick + aria-label
+12
f9 Code tabs → role=tab + Arrow keys
+9
f8 Docs sidebar → aria-hidden under @media
+6
f12 Pricing table → th scope=row + caption
+3
Final · all patches verified
94
Top failure modes critical Booking CTA missing aria-label labeling · failed: openai-op, gemini-baseline
Add explicit aria-label so agents can match intent without relying on inner text + class semantics.
Before <button class="btn-primary cta-book-demo">Book a demo</button> After <button class="btn-primary cta-book-demo" aria-label="Book a demo with our sales team">Book a demo</button> high Calendar slot picker is keyboard-only after first tab keyboard-trap · failed: openai-op
Promote to focusable group with role + label.
Before <div class="slots" tabindex="-1">...</div> After <div class="slots" tabindex="0" role="radiogroup" aria-label="Available booking slots">...</div> medium Modal dismiss requires Esc — no close button missing-affordance · failed: gemini-baseline
Add a visible close button; agents don't reliably send Esc.
Before <div class="modal" role="dialog">...</div> After <div class="modal" role="dialog" aria-labelledby="modal-title"><button aria-label="Close dialog">×</button>...</div> The pull request AgentGlass opens When ALLOW_GITHUB_PR=true is set, this is the artifact your team reviews. Every file change cites a recipe key, every check is run by AgentGlass against the patched DOM. You merge — or you don't.
AB AgentGlass Bot @agentglass-bot wants to merge 4 commits into main from agentglass/repair-1284
AgentGlass detected 4 agent-readiness blockers in the developer signup + API-key onboarding flow. Each finding has a verified DOM/ARIA patch attached. The visible UI is unchanged; the patches add stable, machine-actionable affordances so browser agents (Claude Computer Use, OpenAI Operator, Gemini browser) can complete the canonical task.
Changes from 4 files +44 −14 src/components/CopyKeyButton.tsx+9 −4
recipe f7 Replace ondblclick with onclick + aria-label + visible 'Copied ✓' toast
src/components/CodeTabs.tsx+18 −6
recipe f9 Convert <div onclick> tabs to <button role="tab"> with Arrow-key handler
src/components/DocsSidebar.tsx+11 −3
recipe f8 Keep sidebar in DOM; toggle aria-hidden via @media instead of display:none
src/styles/pricing-grid.module.css+6 −1
recipe f12 Wrap leftmost column cells in <th scope="row">; add <caption>
All checks have passed · 4 successful ✓ AgentGlass Patch Safety Gate No eval / no plaintext keys / no aria removals — 13 / 13 deny patterns clean
✓ AgentGlass AX Verifier Stage-1 probes re-run; score climbed 64 → 94 (+30)
✓ Visual regression (Percy) 0 pixel diff across 12 viewports — patch is invisible to humans
✓ Build · lint · unit tsc → 0 errors · eslint → 0 errors · vitest → 142 / 142
Merge pull request Preview · live PRs require ALLOW_GITHUB_PR=true Patches in this report
components/BookDemoCTA.tsx critical verified ready to ship components/BookDemoCTA.tsx
- <button className="btn-primary cta-book-demo">Book a demo</button> + <button className="btn-primary cta-book-demo" aria-label="Book a demo with our sales team">Book a demo</button>
components/ui/Modal.tsx medium needs review review first components/ui/Modal.tsx
+ <button onClick={onClose} aria-label="Close dialog" className="modal-close">×</button> agents.json (excerpt) {
"$schema": "https://agentglass.dev/schemas/agents.v1.json",
"version": "1.0",
"site": {
"name": "Boltline",
"url": "https://boltline.example",
"description": "B2B SaaS — scheduling — Booking CTA has no aria-label"
},
"ax_score": 94,
"supported_journeys": [
{
"name": "book-demo",
"entrypoint": "/",
"selector_hints": {
"primary_cta": "[aria-label='Book a demo with our sales team']",
"calendar_slots": "[role='radiogroup'][aria-label='Available booking slots']",
"confirm": "button.confirm-booking"
},
"expected_completion_ms": 12000,
"min_score_for_agent_traffic": 80
},
{
"name": "view-pricing",
"entrypoint": "/pricing",
"selector_hints": {
"tier_growth": "button[aria-label='Continue with Growth plan']",
"tier_scale": "button[aria-label='Continue with Scale plan']"
}
}
]
}