Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when reviewing mobile-first layouts, tablet experiences, fullscreen flows, forms, dashboards, or media interfaces. Check rendered behavior in both portrait and landscape and separate genuine layout constraints from unnecessary orientation assumptions.
.claude/skills/thedaviddias-orientation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 93% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-02 | ✓→✓ | = Same ✓ | -5% | 0% |
Many users mount devices to wheelchairs, use tablets on stands, or cannot easily rotate a device. If a site only works in one orientation, these users may lose access to content or critical actions entirely.
Rotate the page between portrait and landscape on mobile and tablet viewports. Verify all primary content, navigation, forms, and interactive controls remain available and usable in both orientations. Flag any use of orientation locks, rotate-device overlays that block content, or layouts that hide essential functionality in one orientation.
Remove orientation locks and redesign the layout to work in both portrait and landscape. Use responsive CSS, wrapping layouts, and adaptive spacing instead of blocking content behind a rotate-device message. Only keep an orientation requirement if the task is genuinely orientation-essential.
Explain why WCAG requires content to support both portrait and landscape unless orientation is essential to the activity, and how orientation locks can block users who cannot rotate their devices.
Review responsive layouts, viewport handling, overlays, and any JavaScript related to device rotation. Flag exact selectors, components, or route states that require one orientation, hide essential content after rotation, or show blocking rotate-device messages instead of adapting the layout.
For full implementation details, code examples, and framework-specific guidance, see references/rule.md.
Rule page: https://frontendchecklist.io/en/rules/accessibility/orientation
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 8,560 | 15,005 | +75% | 1 | 1 | 0% | 1,575 | 3,041 | +93% | 0 | 0 | — |
case-02 | pass→pass | 14,298 | 10,816 | -24% | 1 | 1 | 0% | 2,584 | 2,454 | -5% | 0 | 0 | — |
case-03 | fail→pass | 13,206 | 11,300 | -14% | 1 | 1 | 0% | 2,078 | 2,088 | +0% | 0 | 0 | — |
case-04 | fail→pass | 11,202 | 6,593 | -41% | 1 | 1 | 0% | 1,687 | 1,602 | -5% | 0 | 0 | — |
case-05 | pass→pass | 11,682 | 7,061 | -40% | 1 | 1 | 0% | 2,004 | 1,623 | -19% | 0 | 0 | — |
case-06 | fail→fail | 12,276 | 12,945 | +5% | 1 | 1 | 0% | 1,962 | 2,414 | +23% | 0 | 0 | — |
case-07 | pass→pass | 11,633 | 6,859 | -41% | 1 | 1 | 0% | 1,829 | 1,545 | -16% | 0 | 0 | — |
case-08 | pass→pass | 11,062 | 10,323 | -7% | 1 | 1 | 0% | 1,872 | 2,224 | +19% | 0 | 0 | — |
case-09 | pass→pass | 11,387 | 7,844 | -31% | 1 | 1 | 0% | 1,858 | 1,669 | -10% | 0 | 0 | — |
case-10 | pass→pass | 11,959 | 9,698 | -19% | 1 | 1 | 0% | 2,007 | 1,931 | -4% | 0 | 0 | — |
case-11 | pass→pass | 17,604 | 13,103 | -26% | 1 | 1 | 0% | 2,953 | 2,756 | -7% | 0 | 0 | — |
case-12 | pass→pass | 12,396 | 8,527 | -31% | 1 | 1 | 0% | 2,031 | 1,827 | -10% | 0 | 0 | — |
case-13 | pass→pass | 11,517 | 8,977 | -22% | 1 | 1 | 0% | 1,891 | 1,909 | +1% | 0 | 0 | — |
case-14 | fail→fail | 13,141 | 10,122 | -23% | 1 | 1 | 0% | 2,157 | 2,132 | -1% | 0 | 0 | — |
case-15 | fail→pass | 12,491 | 7,743 | -38% | 1 | 1 | 0% | 2,242 | 1,692 | -25% | 0 | 0 | — |
case-16 | pass→pass | 13,434 | 8,276 | -38% | 1 | 1 | 0% | 2,485 | 1,949 | -22% | 0 | 0 | — |
case-17 | pass→pass | 11,155 | 11,753 | +5% | 1 | 1 | 0% | 1,872 | 2,374 | +27% | 0 | 0 | — |
case-18 | pass→pass | 8,555 | 5,244 | -39% | 1 | 1 | 0% | 1,514 | 1,444 | -5% | 0 | 0 | — |
case-19 | pass→pass | 13,860 | 16,584 | +20% | 1 | 1 | 0% | 2,191 | 2,948 | +35% | 0 | 0 | — |
case-20 | pass→pass | 13,118 | 12,012 | -8% | 1 | 1 | 0% | 2,566 | 2,738 | +7% | 0 | 0 | — |
case-21 | pass→pass | 13,956 | 12,183 | -13% | 1 | 1 | 0% | 2,521 | 2,751 | +9% | 0 | 0 | — |
case-22 | pass→pass | 15,169 | 15,786 | +4% | 1 | 1 | 0% | 3,091 | 3,758 | +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. 22 cases were attempted. The headline lift of +18 percentage points is the difference between those two pass rates over the 22 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.