You've written it a hundred times. In your CLAUDE.md, in your system prompt, in ALL CAPS:

NEVER put "use client" at the page level. NEVER commit @ts-ignore without a reason.

And your agent does it anyway. Not always — that would almost be easier to deal with. It follows the rule for the first 50k tokens, then quietly stops. Or Sonnet follows it and Haiku doesn't. Or it follows nine rules and forgets the tenth.

Here's the thing I finally accepted: a rule in a prompt is a request. The model can decline it. So I stopped asking, and started enforcing.

TL;DR