Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when auditing HTML document structure. Applies to any page where meta tags (noindex, canonical-url, description, viewport, OG tags) may have been injected into the body by CMS plugins, widgets, or JavaScript rendering.
.claude/skills/thedaviddias-meta-in-body/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 9% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 2% | 0% |
| case-03 | ✓→✓ | = Same ✓ | -23% | 0% |
Meta tags placed in the document body are ignored by search engines and most browsers—directives like noindex or canonical-url are silently ineffective, causing pages to be indexed or de-indexed unexpectedly.
Parse the HTML and check whether any <meta> elements appear outside <head>—i.e., inside <body> or after the </head> closing tag. Flag each misplaced tag by name/property.
Move all <meta> tags into the <head> section before </head>. If they are injected by a script after the DOM is built, refactor the injection to target document.head instead of document.body.
Meta tags are document-level metadata and must live in <head>. When placed in <body>, they fall outside the metadata model of the document—search engines and browsers do not honour them, so directives like noindex or canonical-url will have no effect.
Parse the rendered HTML and check the DOM structure. Find all <meta> elements. For each one, traverse up the parent chain — if any ancestor is <body> or if the element appears after </head> in the source, flag it. Pay special attention to: meta name='robots', meta name='description', meta property='og:', and link rel='canonical' placed in body.
For full implementation details, code examples, and framework-specific guidance, see references/rule.md.
Rule page: https://frontendchecklist.io/en/rules/seo/meta-in-body
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 7,977 | 6,263 | -21% | 1 | 1 | 0% | 1,477 | 1,615 | +9% | 0 | 0 | — |
case-02 | pass→pass | 8,737 | 6,619 | -24% | 1 | 1 | 0% | 1,494 | 1,528 | +2% | 0 | 0 | — |
case-03 | pass→pass | 9,602 | 5,358 | -44% | 1 | 1 | 0% | 1,718 | 1,320 | -23% | 0 | 0 | — |
case-04 | fail→pass | 11,359 | 7,468 | -34% | 1 | 1 | 0% | 2,005 | 1,792 | -11% | 0 | 0 | — |
case-05 | pass→pass | 10,433 | 4,996 | -52% | 1 | 1 | 0% | 1,778 | 1,285 | -28% | 0 | 0 | — |
case-06 | pass→pass | 2,970 | 1,967 | -34% | 1 | 1 | 0% | 523 | 757 | +45% | 0 | 0 | — |
case-07 | fail→pass | 9,933 | 5,122 | -48% | 1 | 1 | 0% | 1,663 | 1,289 | -22% | 0 | 0 | — |
case-08 | pass→pass | 13,665 | 8,362 | -39% | 1 | 1 | 0% | 2,647 | 2,062 | -22% | 0 | 0 | — |
case-09 | pass→pass | 10,439 | 10,591 | +1% | 1 | 1 | 0% | 1,777 | 2,189 | +23% | 0 | 0 | — |
case-10 | pass→pass | 5,754 | 3,370 | -41% | 1 | 1 | 0% | 1,010 | 959 | -5% | 0 | 0 | — |
case-11 | pass→pass | 5,967 | 3,658 | -39% | 1 | 1 | 0% | 1,041 | 995 | -4% | 0 | 0 | — |
case-12 | pass→pass | 13,033 | 11,856 | -9% | 1 | 1 | 0% | 2,342 | 2,408 | +3% | 0 | 0 | — |
case-13 | pass→pass | 5,947 | 2,659 | -55% | 1 | 1 | 0% | 1,187 | 871 | -27% | 0 | 0 | — |
case-14 | pass→pass | 11,489 | 5,954 | -48% | 1 | 1 | 0% | 1,848 | 1,450 | -22% | 0 | 0 | — |
case-15 | pass→pass | 7,709 | 3,384 | -56% | 1 | 1 | 0% | 1,269 | 1,037 | -18% | 0 | 0 | — |
case-16 | pass→pass | 6,965 | 5,333 | -23% | 1 | 1 | 0% | 1,232 | 1,387 | +13% | 0 | 0 | — |
case-17 | pass→pass | 10,259 | 6,534 | -36% | 1 | 1 | 0% | 1,678 | 1,596 | -5% | 0 | 0 | — |
case-18 | pass→pass | 12,726 | 8,905 | -30% | 1 | 1 | 0% | 2,248 | 2,052 | -9% | 0 | 0 | — |
case-19 | pass→pass | 5,293 | 4,978 | -6% | 1 | 1 | 0% | 964 | 1,221 | +27% | 0 | 0 | — |
case-20 | pass→pass | 2,699 | 2,560 | -5% | 1 | 1 | 0% | 443 | 834 | +88% | 0 | 0 | — |
case-21 | pass→pass | 7,210 | 5,734 | -20% | 1 | 1 | 0% | 1,292 | 1,444 | +12% | 0 | 0 | — |
case-22 | fail→fail | 11,055 | 10,346 | -6% | 1 | 1 | 0% | 1,781 | 2,212 | +24% | 0 | 0 | — |
case-23 | pass→pass | 11,354 | 4,136 | -64% | 1 | 1 | 0% | 1,822 | 1,123 | -38% | 0 | 0 | — |
case-24 | pass→pass | 10,018 | 9,817 | -2% | 1 | 1 | 0% | 1,798 | 2,133 | +19% | 0 | 0 | — |
case-25 | pass→pass | 13,560 | 11,297 | -17% | 1 | 1 | 0% | 2,150 | 2,134 | -1% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +8 percentage points is the difference between those two pass rates over the 25 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.