Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when reviewing card grid layouts with misaligned content areas, or any nested grid where child items need to align with sibling cards' corresponding sections without JavaScript intervention.
.claude/skills/thedaviddias-subgrid/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-21 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-04 | ✓→✗ | ▼ Worse | -7% | 0% |
| case-06 | ✓→✓ | = Same ✓ | -14% | 0% |
| case-03 | ✓→✓ | = Same ✓ | -10% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 4% | 0% |
Card grids are one of the most common UI patterns, but aligning content across cards — matching title heights, content areas, and footers — has historically required JavaScript height measurement or CSS hacks. Subgrid solves this at the layout engine level: nested items participate directly in the parent grid's tracks, so alignment is automatic, performant, and CSS-only.
Look for card grid layouts in this CSS where card content areas (titles, body text, footers) might not align across cards of different content lengths. These are candidates for subgrid.
Convert this card grid to use subgrid. Show how to set grid-template-rows on the parent grid, then apply grid-row: span N and grid-template-rows: subgrid on each card to inherit the parent tracks.
Explain how CSS subgrid works, how it differs from a nested grid, what problem it solves with card alignment, and when to use subgrid on columns versus rows.
Review card grid and nested grid layouts in this stylesheet. Flag any layout that uses JavaScript height matching, fixed heights, or display: contents workarounds to achieve cross-card alignment — and show the subgrid equivalent.
For full implementation details, code examples, and framework-specific guidance, see references/rule.md.
Rule page: https://frontendchecklist.io/en/rules/css/subgrid
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→pass | 13,643 | 10,125 | -26% | 1 | 1 | 0% | 2,498 | 2,148 | -14% | 0 | 0 | — |
case-05 | fail→fail | 13,011 | 11,896 | -9% | 1 | 1 | 0% | 2,359 | 2,640 | +12% | 0 | 0 | — |
case-01 | fail→fail | 15,696 | 13,480 | -14% | 1 | 1 | 0% | 3,179 | 3,021 | -5% | 0 | 0 | — |
case-02 | fail→fail | 12,925 | 13,966 | +8% | 1 | 1 | 0% | 2,343 | 3,161 | +35% | 0 | 0 | — |
case-03 | pass→pass | 23,042 | 18,325 | -20% | 1 | 1 | 0% | 3,965 | 3,575 | -10% | 0 | 0 | — |
case-04 | pass→fail | 13,911 | 10,882 | -22% | 1 | 1 | 0% | 2,589 | 2,398 | -7% | 0 | 0 | — |
case-07 | pass→pass | 16,906 | 13,525 | -20% | 1 | 1 | 0% | 2,924 | 3,040 | +4% | 0 | 0 | — |
case-08 | pass→pass | 6,937 | 2,149 | -69% | 1 | 1 | 0% | 1,219 | 756 | -38% | 0 | 0 | — |
case-09 | fail→fail | 10,586 | 7,552 | -29% | 1 | 1 | 0% | 2,041 | 1,877 | -8% | 0 | 0 | — |
case-10 | fail→fail | 7,194 | 8,362 | +16% | 1 | 1 | 0% | 1,346 | 2,072 | +54% | 0 | 0 | — |
case-11 | pass→pass | 11,085 | 9,144 | -18% | 1 | 1 | 0% | 2,259 | 2,246 | -1% | 0 | 0 | — |
case-12 | pass→pass | 8,341 | 13,422 | +61% | 1 | 1 | 0% | 1,457 | 2,741 | +88% | 0 | 0 | — |
case-13 | pass→pass | 9,914 | 8,609 | -13% | 1 | 1 | 0% | 1,993 | 2,208 | +11% | 0 | 0 | — |
case-14 | pass→pass | 13,914 | 10,922 | -22% | 1 | 1 | 0% | 2,759 | 2,667 | -3% | 0 | 0 | — |
case-15 | pass→pass | 10,034 | 8,060 | -20% | 1 | 1 | 0% | 1,914 | 1,836 | -4% | 0 | 0 | — |
case-16 | pass→pass | 7,406 | 6,728 | -9% | 1 | 1 | 0% | 1,397 | 1,684 | +21% | 0 | 0 | — |
case-17 | pass→pass | 12,950 | 8,472 | -35% | 1 | 1 | 0% | 2,481 | 1,967 | -21% | 0 | 0 | — |
case-18 | pass→pass | 14,445 | 12,403 | -14% | 1 | 1 | 0% | 2,678 | 2,881 | +8% | 0 | 0 | — |
case-19 | pass→pass | 15,423 | 10,940 | -29% | 1 | 1 | 0% | 2,824 | 2,454 | -13% | 0 | 0 | — |
case-20 | pass→pass | 6,778 | 7,176 | +6% | 1 | 1 | 0% | 1,323 | 1,649 | +25% | 0 | 0 | — |
case-21 | fail→pass | 13,538 | 10,561 | -22% | 1 | 1 | 0% | 2,391 | 2,214 | -7% | 0 | 0 | — |
case-22 | pass→pass | 9,102 | 8,826 | -3% | 1 | 1 | 0% | 1,892 | 2,181 | +15% | 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 0 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.