v1.0.0 · 2026-10-19
First release (written, not yet tested on a model): audits a pasted crawl export of a site — one row per page with its status, its robots setting and the links in its body, the sitemap list and the navigation and footer links — and reports internal-link problems with a fixed code, the address, the reason and a fix, worst first, or exactly `No findings.`. Codes: `CRAWL-INCOMPLETE` (pages that answered 5xx or timed out; first; withholds the orphan, weak and depth verdicts), `ORPHAN`, `LINK-TO-ERROR`, `LINK-TO-REDIRECT`, `NOINDEX-IN-SITEMAP`, `TOO-DEEP`, `WEAK-INBOUND`. Facts are ours (owner-measured 18 October 2026, not re-checked; see notes/facts-2026-10-18.md); no vendor facts, so no dated line. Test: 30 cases (17 planted, 3 hard, 10 controls), 15 of the 20 defect cases from the real starting point; expected answers computed by script and re-computed from the pasted text by a second implementation (`test/control.mjs`); `test/no-leak.mjs` clean. No model was run by the writer.
Decisions while writing (one line each): - `LINK-TO-ERROR` is 404 and 410 only; a 5xx or timeout is `CRAWL-INCOMPLETE` (the brief listed 5xx; a failed fetch is not a verdict on the link, and the same page would be both an unfetched source and a broken target). - Inbound links that all land on a redirect produce `LINK-TO-REDIRECT` alone, never `ORPHAN` or `WEAK-INBOUND` on top: fixing the link is the fix. - A redirect costs no extra click in the depth count; this is stated in the shared request of the tests, not hidden in the skill alone. - While any page is unfetched, `ORPHAN`, `WEAK-INBOUND` and `TOO-DEEP` are withheld for every page (each could vanish when the unfetched page's links become known); the three codes read straight from fetched rows stay. - An orphan is reported alone, not also as `TOO-DEEP` (unreachable); a cluster that links only to itself is `TOO-DEEP`, because each of its pages has inbound links. - Thresholds (two contextual sources, three clicks) and the exempt list are stated in the shared request of the tests, so the bare side is judged on the same rules; the skill's gain is the counting rules, the order and the refusal path. - No inbound verdict for the home page; addresses missing from the sitemap get no inbound or depth code, though their links still count. - Checks accept the code at the start of the line with a bullet or backticks, and the address as a path or a full address; they measure the page right after the code, so a page named in the reason of another line is not a false finding. - The bare side is measured on substance only (the address and a word of the finding on one line, never the code); rows of the export are excluded from matching so the input never passes by itself. - `CRAWL-INCOMPLETE` cases also fail on the bare side if a possibly-linked page is declared an orphan as a certain fact. - Price: $0.05 start; class A only if Sonnet gains at least two content cases once the test has run.
Measured 18 October 2026 (one run per model and case, 60 with the skill and 60 without; every failure read by hand): - Content, both sides scored on the plain-words checks: Claude Sonnet 30/30 with the skill, 28/30 without; Claude Haiku 30/30 with, 29/30 without. By the skill's own format: 30/30 and 30/30 after the widening below. - Real misses without the skill: Sonnet left a noindex tag page in the sitemap unreported (it noticed the noindex and set the page aside) and named only the three unfetched pages that mattered to its verdict, not the other three that answered 5xx or timed out; Haiku called two pages orphans as a certain fact while several pages that might link to them had not been fetched. - Check widened after the run, both sides: an orphan said as "0 contextual inbound links" or "no crawled page links to it" now counts (two right bare answers had failed on wording). - Check widened after the run, both sides: in the redirect-and-depth case, the series page with one direct link plus links through a redirect may also be reported as weak; both models with the skill did so, which the skill's redirect rule supports. Every other code on that page still fails. - Price: Sonnet gained 2 content cases → $0.03 by the price table.