The two ways it silently fails
The target is empty. If the main content is streamed in after hydration, the landmark exists but holds a loading state at the moment the skip link fires. The user jumps to a spinner. This is invisible in testing unless you actually press the link on a cold load.
It is hidden the wrong way. A skip link is normally visually hidden until focused. Hiding it with display: none or visibility: hidden removes it from the focus order entirely, so it can never be reached — it exists in the markup and does nothing. Use a clipping technique that keeps it focusable, and make it visible on :focus.