Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when auditing URL structure or configuring search engine handling of filtered, sorted, or tracked URLs. Applies to e-commerce sites, filtered content directories, and any site appending tracking or session parameters.
.claude/skills/thedaviddias-parameters/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | -37% | 0% |
| case-14 | ✓→✗ | ▼ Worse | -36% | 0% |
| case-01 | ✓→✓ | = Same ✓ | -12% | 0% |
| case-02 | ✓→✓ | = Same ✓ | -1% | 0% |
| case-03 | ✓→✓ | = Same ✓ | -21% | 0% |
Uncontrolled URL parameters generate duplicate content that wastes crawl budget and splits PageRank across URL variants, reducing the ranking potential of the canonical-url page.
Identify URL parameters in use across the site (filter, sort, color, size, utm_, page, etc.). For each parameter type, check whether the page has a canonical tag. Verify that tracking-only parameters (utm_source, fbclid, gclid) are excluded from canonical URLs. Identify URLs with 3+ parameters and review for potential crawl budget waste.
Add canonical tags to parameter-based URLs pointing to the parameter-free or preferred URL. Remove tracking parameters from canonical tags. For sorting/filtering parameters that change content meaningfully (page=2, sort=price), either canonicalize to the base URL or self-canonicalize consistently.
URL parameters like ?color=red&size=large&sort=price&utm_source=google can generate thousands of unique URLs for the same underlying content. Without canonical tags, Googlebot crawls all variants, treating each as a separate page. This wastes crawl budget, creates duplicate content, and dilutes PageRank.
Enumerate all URL parameter patterns used across the site. For each parameter type, check if pages with those parameters have canonical tags. Verify tracking parameters (utm_, fbclid, gclid) are stripped from canonical URLs. Check that filter/sort parameter URLs either self-canonicalize or canonical-url to the base URL. Report the total number of unique parameter combinations crawlable.
For full implementation details, code examples, and framework-specific guidance, see references/rule.md.
Rule page: https://frontendchecklist.io/en/rules/seo/parameters
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 10,007 | 5,428 | -46% | 1 | 1 | 0% | 1,760 | 1,556 | -12% | 0 | 0 | — |
case-02 | pass→pass | 8,449 | 5,699 | -33% | 1 | 1 | 0% | 1,541 | 1,530 | -1% | 0 | 0 | — |
case-03 | pass→pass | 10,151 | 4,725 | -53% | 1 | 1 | 0% | 1,735 | 1,376 | -21% | 0 | 0 | — |
case-04 | pass→pass | 10,430 | 9,196 | -12% | 1 | 1 | 0% | 1,995 | 2,102 | +5% | 0 | 0 | — |
case-05 | pass→pass | 10,925 | 7,103 | -35% | 1 | 1 | 0% | 1,799 | 1,735 | -4% | 0 | 0 | — |
case-06 | pass→pass | 10,666 | 4,365 | -59% | 1 | 1 | 0% | 1,772 | 1,163 | -34% | 0 | 0 | — |
case-07 | pass→pass | 14,217 | 11,720 | -18% | 1 | 1 | 0% | 2,221 | 2,376 | +7% | 0 | 0 | — |
case-08 | pass→pass | 11,841 | 10,801 | -9% | 1 | 1 | 0% | 2,256 | 2,391 | +6% | 0 | 0 | — |
case-09 | fail→pass | 14,818 | 5,815 | -61% | 1 | 1 | 0% | 2,481 | 1,574 | -37% | 0 | 0 | — |
case-10 | pass→pass | 7,748 | 5,975 | -23% | 1 | 1 | 0% | 1,412 | 1,439 | +2% | 0 | 0 | — |
case-11 | pass→pass | 14,330 | 12,976 | -9% | 1 | 1 | 0% | 2,475 | 2,770 | +12% | 0 | 0 | — |
case-12 | pass→pass | 3,498 | 2,791 | -20% | 1 | 1 | 0% | 619 | 947 | +53% | 0 | 0 | — |
case-21 | pass→pass | 4,196 | 4,643 | +11% | 1 | 1 | 0% | 854 | 1,378 | +61% | 0 | 0 | — |
case-13 | pass→pass | 2,818 | 2,127 | -25% | 1 | 1 | 0% | 574 | 856 | +49% | 0 | 0 | — |
case-14 | pass→fail | 7,989 | 2,713 | -66% | 1 | 1 | 0% | 1,405 | 893 | -36% | 0 | 0 | — |
case-15 | pass→pass | 7,907 | 2,736 | -65% | 1 | 1 | 0% | 1,307 | 849 | -35% | 0 | 0 | — |
case-16 | pass→pass | 13,456 | 8,112 | -40% | 1 | 1 | 0% | 2,524 | 2,026 | -20% | 0 | 0 | — |
case-17 | pass→pass | 12,471 | 10,603 | -15% | 1 | 1 | 0% | 2,194 | 2,345 | +7% | 0 | 0 | — |
case-18 | pass→pass | 14,909 | 12,879 | -14% | 1 | 1 | 0% | 2,595 | 2,716 | +5% | 0 | 0 | — |
case-19 | pass→pass | 6,540 | 2,942 | -55% | 1 | 1 | 0% | 1,150 | 987 | -14% | 0 | 0 | — |
case-20 | pass→pass | 2,027 | 2,954 | +46% | 1 | 1 | 0% | 406 | 953 | +135% | 0 | 0 | — |
case-22 | pass→pass | 4,543 | 4,639 | +2% | 1 | 1 | 0% | 891 | 1,400 | +57% | 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. 22 cases were attempted. The headline lift of -100 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
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.