Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when applies to product pages, local business pages, recipes, apps, books, and any page that aggregates user reviews. Use when auditing rich result eligibility for e-commerce or review sites.
.claude/skills/thedaviddias-review/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 12 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-02 | ✓→✓ | = Same ✓ | -23% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 7% | 0% |
| case-05 | ✓→✓ | = Same ✓ | -8% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 3% | 0% |
Star ratings in search results increase click-through rates by up to 35%; incorrect or missing schema means competitors with valid markup capture that visibility advantage.
Review schema on individual review pages and AggregateRating on product/service pages to earn star-rating rich resultsAggregateRating requires ratingValue, ratingCount or reviewCount, and valid bestRating / worstRating valuesInspect the page source or rendered DOM for JSON-LD blocks containing "@type": "Review" or "@type": "AggregateRating". Verify required properties are present: ratingValue, ratingCount/reviewCount, bestRating. Run the URL through Google's Rich Results Test.
Add a JSON-LD <script> block with AggregateRating nested inside the main entity (Product, LocalBusiness, etc.). Populate ratingValue and ratingCount from real review data. Remove any schema on pages with no genuine user reviews.
Explain how Review and AggregateRating schema work, which page types are eligible for star-rating rich results in Google Search, and why fabricated ratings violate Google's structured data guidelines.
Review metadata generation, rendered HTML, structured data, and response headers related to Add Review schema markup. Flag exact routes or templates where search-facing output violates the rule, and describe how to verify the final page output.
For full implementation details, code examples, and framework-specific guidance, see references/rule.md.
Rule page: https://frontendchecklist.io/en/rules/seo/review
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 19,944 | 13,684 | -31% | 1 | 1 | 0% | 3,768 | 3,268 | -13% | 0 | 0 | — |
case-02 | pass→pass | 14,354 | 8,748 | -39% | 1 | 1 | 0% | 2,788 | 2,147 | -23% | 0 | 0 | — |
case-03 | pass→pass | 7,185 | 6,417 | -11% | 1 | 1 | 0% | 1,471 | 1,573 | +7% | 0 | 0 | — |
case-04 | fail→fail | 9,313 | 7,075 | -24% | 1 | 1 | 0% | 1,767 | 1,772 | +0% | 0 | 0 | — |
case-05 | pass→pass | 12,082 | 9,368 | -22% | 1 | 1 | 0% | 2,367 | 2,188 | -8% | 0 | 0 | — |
case-06 | pass→pass | 10,821 | 8,746 | -19% | 1 | 1 | 0% | 2,015 | 2,074 | +3% | 0 | 0 | — |
case-12 | pass→pass | 20,283 | 13,024 | -36% | 1 | 1 | 0% | 3,502 | 2,540 | -27% | 0 | 0 | — |
case-07 | pass→pass | 11,993 | 8,021 | -33% | 1 | 1 | 0% | 1,971 | 1,673 | -15% | 0 | 0 | — |
case-08 | pass→pass | 13,372 | 7,154 | -47% | 1 | 1 | 0% | 2,301 | 1,522 | -34% | 0 | 0 | — |
case-09 | pass→pass | 7,706 | 3,354 | -56% | 1 | 1 | 0% | 1,316 | 937 | -29% | 0 | 0 | — |
case-10 | pass→pass | 7,294 | 4,902 | -33% | 1 | 1 | 0% | 1,446 | 1,351 | -7% | 0 | 0 | — |
case-11 | pass→pass | 13,732 | 12,274 | -11% | 1 | 1 | 0% | 2,564 | 2,666 | +4% | 0 | 0 | — |
case-13 | pass→pass | 12,378 | 10,561 | -15% | 1 | 1 | 0% | 2,472 | 2,451 | -1% | 0 | 0 | — |
case-14 | pass→pass | 5,375 | 3,646 | -32% | 1 | 1 | 0% | 1,066 | 1,059 | -1% | 0 | 0 | — |
case-15 | pass→pass | 11,535 | 6,229 | -46% | 1 | 1 | 0% | 1,935 | 1,481 | -23% | 0 | 0 | — |
case-16 | pass→pass | 15,796 | 10,010 | -37% | 1 | 1 | 0% | 2,659 | 2,205 | -17% | 0 | 0 | — |
case-21 | pass→pass | 10,079 | 6,787 | -33% | 1 | 1 | 0% | 1,945 | 1,782 | -8% | 0 | 0 | — |
case-17 | pass→pass | 5,995 | 5,725 | -5% | 1 | 1 | 0% | 1,200 | 1,440 | +20% | 0 | 0 | — |
case-18 | pass→pass | 11,982 | 8,261 | -31% | 1 | 1 | 0% | 2,129 | 1,975 | -7% | 0 | 0 | — |
case-19 | pass→pass | 12,206 | 6,501 | -47% | 1 | 1 | 0% | 2,231 | 1,585 | -29% | 0 | 0 | — |
case-20 | fail→pass | 10,786 | 9,403 | -13% | 1 | 1 | 0% | 2,054 | 2,194 | +7% | 0 | 0 | — |
case-22 | pass→pass | 9,251 | 6,445 | -30% | 1 | 1 | 0% | 1,780 | 1,733 | -3% | 0 | 0 | — |
case-23 | pass→pass | 12,141 | 14,072 | +16% | 1 | 1 | 0% | 2,628 | 3,198 | +22% | 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. 23 cases were attempted. The headline lift of +4 percentage points is the difference between those two pass rates over the 23 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.