TL;DR: Every code change that touches your frontend, checkout, or product data can break AI agent compliance. Add an AI readiness scan to your CI/CD pipeline and gate deploys on a minimum compliance score. This guide shows GitHub Actions and GitLab CI configs that fail the build if your score drops.
The Problem: Compliance Regresses Silently
You fix your JSON-LD, add llms.txt, and configure your robots.txt. Your AI Readiness Score jumps from 34 to 78. Three weeks later, a developer merges a refactor that strips offers from your product schema. The score drops to 52. No one notices until an agent fails to complete a purchase.
According to our internal data from the AI Readiness Scanner, 62% of sites that score above 70 on first scan drop below 60 within 90 days without monitoring.
The Solution: CI/CD Gating
Treat AI readiness like test coverage or accessibility. Block deploys that fall below your threshold.
GitHub Actions Example
# .github/workflows/ai-readiness.yml
name: AI Readiness Check
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Run AI Readiness Scan
run: |
curl -s -X POST https://aireadinesscanner.com/api/scan \
-H "Content-Type: application/json" \
-d "{\"url\": \"https://staging.yoursite.com\"}" \
-o scan-result.json
SCORE=$(cat scan-result.json | jq -r '.score')
echo "AI Readiness Score: $SCORE"
if [ "$SCORE" -lt 70 ]; then
echo "::error::AI Readiness Score $SCORE is below threshold 70"
exit 1
fi
GitLab CI Example
# .gitlab-ci.yml
stages:
- test
- ai-readiness
- deploy
ai_readiness_scan:
stage: ai-readiness
image: curlimages/curl:latest
script:
- |
curl -s -X POST https://aireadinesscanner.com/api/scan \
-H "Content-Type: application/json" \
-d '{"url": "https://staging.yoursite.com"}' \
-o scan-result.json
- SCORE=$(cat scan-result.json | jq -r '.score')
- echo "AI Readiness Score: $SCORE"
- |
if [ "$SCORE" -lt 70 ]; then
echo "AI Readiness Score $SCORE is below threshold 70"
exit 1
fi
rules:
- if: $CI_COMMIT_BRANCH == "main"
- if: $CI_MERGE_REQUEST_ID
What to Scan at Each Stage
| Stage | What to Scan | Minimum Score |
|---|---|---|
| PR / Branch | Staging URL | 65 |
| Pre-production | Production mirror | 70 |
| Post-deploy | Live URL | 70 |
| Weekly monitor | Live URL | 75 |
Advanced: Score Delta Checks
Fail the build if the score drops by more than 5 points compared to the last scan:
# Get previous score from cache or artifact
PREV_SCORE=$(cat .ai-readiness-last-score || echo "0")
CURRENT_SCORE=$(cat scan-result.json | jq -r '.score')
DELTA=$((CURRENT_SCORE - PREV_SCORE))
if [ "$DELTA" -lt -5 ]; then
echo "::error::Score dropped by $DELTA points. Check what changed."
exit 1
fi
echo "$CURRENT_SCORE" > .ai-readiness-last-score
What the Scanner Checks in CI/CD
A full AI Readiness Scan covers:
- Discovery:
llms.txt,robots.txt, sitemap presence - Structured Data: JSON-LD depth, Schema.org coverage
- Protocol Support: UCP, ACP, MCP endpoint detection
- Payment Readiness: Checkout flow signals, Stripe Link support
- Crawler Accessibility: GPTBot, ClaudeBot, Perplexity permissions
- Technical Performance: Core Web Vitals, mobile readiness
The scan returns a single score (0-100) and a per-dimension breakdown. Your CI/CD job can check the total score, or gate on specific dimensions (e.g. "Payment Readiness must be >= 60").
Integration with Monitoring Plans
If you are on the Monitor or Agency plan, you get:
- Weekly automated scans
- Email alerts when score drops
- PDF reports for stakeholders
- API access for CI/CD integration
Set your CI/CD to use the same API key as your monitoring dashboard. That way your pipeline scores and your weekly reports use the same baseline.
Recommended Next Step
Add an AI Readiness Scan to your next PR. Start with a threshold of 60 if your current score is below that, and raise it by 5 points each sprint. In four sprints, you will have a hardened, agent-ready deployment pipeline.
Find this useful?
Share it with your team or scan your own site.
