Loading the report. A first-ever scan of a domain runs live against the site and takes about ten seconds.
Loading the report. A first-ever scan of a domain runs live against the site and takes about ten seconds.
This is how AI agents (not browsers) experience combatskirmish.net. The score weights five categories of machine-readability; the ticks on the arc are the 36 individual checks behind it.
Send this to whoever edits the site. The link shows the score and grade as a preview card, and it stays current: it re-reads the latest scan rather than freezing today’s number.
Checks tagged “emerging” are 2026 agent-protocol standards most of the web hasn’t adopted yet. Adopting early is an edge, not a defect.
No reachable sitemap.xml. Publish one and reference it in robots.txt.
Show me exactly what to doA sitemap is a machine-readable list (sitemap.xml) of every page on your site. It is how crawlers find pages that aren’t linked from your homepage.
Agents discovering your site crawl outward from the pages they know. Without a sitemap, anything not linked from a top-level page (docs, older articles, product variants) may simply never be read, so it can’t be quoted or recommended.
Get it in your inbox now, plus a heads-up whenever combatskirmish.net’s agent-readiness score changes. Free, unsubscribe anytime.
Prefer we just watch it for you? Monitor rescans weekly and emails what changed, $29/mo. Start monitoring →
Generated, ready-to-ship files for the gaps above. Copy them, or download and drop them into your repo.
This graded your homepage. Your pricing, docs, and checkout live on other pages: the ones assistants actually quote when they recommend you. A 64/100 here means agents are already missing things on the page you polish most. The $29 Deep Scan audits the whole site against all 36 checks, then emails a PDF with every failing check and its exact fix, ranked by what costs you the most visibility. One-time, delivered in minutes, no subscription.
Embed this badge on your site. It links back to this live scan and updates on every rescan.
<a href="https://agentspeed.com/scan/combatskirmish.net"><img src="https://agentspeed.com/badge/combatskirmish.net" alt="AgentSpeed agent-readiness score" height="56"></a>Get this report by email, then a heads-up when combatskirmish.net’s agent-readiness actually changes: a check regressing, or the composite dropping.
Two things never trigger an email: a score change caused by us publishing a new rubric, because that is a different instrument rather than a change to your site, and movement explained only by timing-derived checks, which shift run to run on a site nobody touched.
Want it on your own schedule, with Slack or a webhook instead of email? Score-drift monitoring is on every paid plan.
This score says whether an AI agent could read combatskirmish.net. AI traffic analytics says whether one actually came, and which pages turned it away.
Running AI agents of your own? AgentSpeed also monitors them in production: every run, its latency, cost, and failures, with alerts when something breaks. Free for 10,000 events a month, no credit card.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
No HTTP Link: response headers. Emit canonical/alternate/describedby relations so HEAD-only or stream-rendering agents get them without parsing HTML.
Show me exactly what to doHTTP responses can carry a Link header: the same canonical and alternate-language information your HTML declares, but delivered in the response envelope itself. Agents that only send a HEAD request, or that decide what to do while the page is still streaming, read the header without parsing any HTML. Yours is missing (or carries none of the relations agents use: canonical, alternate, describedby).
An agent triaging fifty URLs doesn’t want to download and parse fifty pages to learn which are duplicates of which. The Link header answers at the cheapest possible layer. Sites that provide it get correctly de-duplicated and correctly language-routed even by the most minimal fetchers.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
2 recommended-field warning(s). First: WebSite recommends "potentialAction" (improves agent comprehension). 1 block(s) skipped: type outside the set we check.
Show me exactly what to doYour page HAS structured data, but it is malformed: broken JSON syntax, or types and fields that don’t exist in the schema.org vocabulary. Machines can see the block but can’t parse it.
Invalid JSON-LD is worse than it looks. The agent spends its attention budget on the block, fails to parse it, and falls back to guessing from prose anyway. You pay the cost of structured data without getting the benefit.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
Visible text is 9.8% of HTML weight (3243/32951 bytes). 18% of the document is inline script, 60% is markup.
Show me exactly what to doOf everything your server sends for this page, very little is actual readable text. The rest is code, styling, and markup wrapper. Agents fetched a lot of bytes and found few words.
Agents work with retrieval budgets. A page that is 2% text either gets skimmed (and mis-summarised) or skipped. More signal per byte means more of your actual message survives into the agent’s summary.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
JSON-LD declares 1 price(s) (0), but the served HTML shows no price at all. An agent reading the page sees a price humans never see, or the visible price only renders via JavaScript. Either way the two channels disagree.
Show me exactly what to doYour page declares one price in its machine-readable data (JSON-LD) and shows a different price to human eyes. We extracted both from the same page load and they don’t agree.
An assistant quoting your declared price tells the customer a number that isn’t what they’ll see at checkout. That is the fastest way to lose a sale an agent sent you, and repeated mismatches teach assistants to stop quoting your structured data at all.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
No Content-Signal directives. Add e.g. `Content-Signal: ai-train=no, ai-summarize=yes` to declare granular AI usage policy beyond binary allow/disallow.
Show me exactly what to doContent-Signal is a newer robots.txt directive (pushed by Cloudflare) that lets you state a granular AI policy: for example "don’t train on my content, but summarising it in answers is fine". Classic robots.txt only offers all-or-nothing per crawler; this adds the middle ground. We looked for a Content-Signal line in your robots.txt and response headers and found none.
Without a granular signal, crawlers infer your intent from blunt allow/block rules, and sites often block more than they mean to just to avoid training use. A declared signal lets you keep answer visibility (summaries, citations) while opting out of what you object to. This is an emerging standard: honoring is voluntary and adoption is early, which is why it is flagged as emerging and weighs little.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
One prompt covering the fixes above that have a step-by-step plan, in the same priority order, with the same guardrails.
This scan shows whether an agent can read the site. One free probe asks a real assistant a real buying question and records who it cited.