I have found enabling the codebase itself to be the “Claude.md” to be most effective. In other words, set up effective automated checks for linting, type checking, unit tests etc and tell Claude to always run these before completing a task. If the agent keeps doing something you don’t like, then a linting update or an additional test often is more effective than trying to tinker with the Claude.md file. Also, ensure docs on the codebase are up to date and tell Claude to read relevant parts when working on a task and of course update the docs for each new task. YMMV but this has worked for me.
> Also, ensure docs on the codebase are up to date and tell Claude to read relevant parts when working on a task
Yeah, if you do this every time it works fine. If you add what you tell it every time to CLAUDE.md, it also works fine, but you don’t have to tell it any more ;)
For this to truly be funny, it needs to be installed on on an unsuspecting user’s laptop, preferably some C-level type about to join an in-person board meeting.
We had a classmate would would wander off with his laptop unlocked so one day we set all his system sounds to fart noises and cranked up the volume. He came back to class minimized a window and the whole class heard the noise and cracked up. We also got good mileage out of adding a wireless mouse on another occasion and zipping his cursor around the screen for probably a good ten minutes.