I'm on the hunt for a system prompt that makes Claude only answer the question or do the task I told it to do and nothing else. Anyone has one?
UPDATE: I've found a lot of garbage in my system prompt, so got rid of all of that and made some stronger restrictions. Read my top level comment for the current prompt.
ORIGINAL POST:
I use Opus 5 most of the time.
I'm getting tired of it always overdoing whatever I ask from it.
For example:
In the middle of a somewhat long chat, I asked it to "commit changes and push to main."
I have made some changes to the code it wrote but didn't want to bother committing everything.
Instead of committing the changes and pushing to main, it recognized my changes, REVERTED to its own changes, and then committed it 😂
It also found another change I made to a file and when it saw it was in the commit, it went back and removed it from the commit and only decided to commit the file it was working on.
I'm getting very tired of this. If it is in doubt, it should just ask a question back, like "uhm, I noticed the file has been changed and there is a new file in the commit. Is that intentional, and should I still go ahead with the commit?"
---
Another example 10 minutes later:
My question: "do we have a script for checking X on page Y?"
Expected behaviour:
a) yes, it is in pythonfile.py line 214.
b) no, we don't.
Behaviour I get:
"No dedicated script — but there is half of one already written: src/utils.py:105 in src/utils.py.
What it does: [described here].
Three catches:
- It's dead code — nothing calls it anywhere in the repo.
- The click is commented out (
utils.py:148, with a#TODO: UNCOMMENT THESE), so even if called it would only find the link and log success without actually using the essence. - It's not a checker — the parse is welded to a hardcoded decision and returns nothing. There's no way to just ask "what's active right now?"
The routine, meanwhile, ignores all of this and blind-fires IDs by URL — no check of what's already active, so it overwrites whatever is running.
Want me to pull the parsing out into a real function_name(driver) that returns something like {"name": "xxxx", "bonus": 220, "seconds_left": 143512}? That would give you a clean checker to call standalone, and would let the routine skip the blind re-application when a good essence still has time on it."
So instead of getting a straight answer to my command (example 1) and to my question (example 2), I get all this bloated crap that I didn't ask for, and it's slowing me down a lot.
I've tried phrasing it a couple of different ways, I'm using the caveman skill too, but apparently Lite mode is not strong enough, and Opus 5 is also like 300% more verbose than 4.8 was.
So, if you have a system prompt for this, I'd really appreciate it, or if a lot of people struggle with this overly enthusiastic shit, let's build one together.