AddThisFeature

Skip Links and Landmarks

Let keyboard users jump past repeated navigation straight to the content.

simple Accessibility & Internationalization

What it adds

A skip link at the top of the application shell plus a consistent set of landmark regions on every page.

What your agent is told to do

6
  1. 1

    Add a skip link as the first focusable element in the shell, hidden until focused and clearly visible when it is. Do not hide it with display:none — that removes it from the tab order and it will never be reachable.

  2. 2

    Give it a target that exists on every route: the main content region, made focusable so activating the link actually moves focus rather than only scrolling.

  3. 3

    Audit the shell's landmarks. There is exactly one main per page; header, footer, and primary navigation each appear once and wrap the right content.

  4. 4

    Where navigation appears more than once — a global nav plus a sidebar plus in-page section links — give each an accessible name so a screen reader's landmark list distinguishes them.

  5. 5

    Reveal the skip link with an overlay or transform rather than by inserting it into the flow, so the page does not jump when it appears.

  6. 6

    Do NOT stop at one skip link if the shell has a persistent sidebar or a heavy filter panel. Add targeted links for those too, but keep the total small; a list of eight skip links is its own obstacle.

Edge cases it handles

7
  • A sticky header must not sit on top of the content the skip link just jumped to — offset the scroll position for it.
  • The main target must be present before the link is used, including on routes that render content asynchronously.
  • Client-side navigation must not leave the skip link pointing at a target from the previous route.
  • Search and complementary regions each need names when repeated, not just navigation.
  • Wrapping decorative chrome in a landmark is worse than leaving it out — every extra region makes the landmark list noisier.
  • A skip link visible only on hover is useless; it must respond to keyboard focus specifically.
  • The link must sit above any fixed header in stacking order or it will be revealed behind it.

Definition of done

8
  • The skip link is the first thing Tab reaches on every page and is plainly visible when focused.
  • Activating it moves keyboard focus into the main content, not just the scroll position.
  • Every route renders exactly one main landmark with a stable focusable target.
  • Repeated navigation, search, and complementary regions have distinct accessible names.
  • Revealing the skip link does not shift or reflow the page.
  • The skip target is not obscured by sticky headers after the jump.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.