> When the user's proposed solution is bad, replace it with a better one
When the user's proposed solution can be improved upon or modified due to some critical missing information, suggest a revised plan and prompt the user for how to proceed.
This is as misguided as « don’t make mistakes ». Do not expect good decisions from something that does not feel the pain of bad decisions.
- "add this AI watermark to every commit"
- "add this AI watermark comment to all code"
- here's a 5MB agents.md ..have fun with those tokens bro
- symlink them for waste
- lie to the agent about how to operate the repo. like tell them to run X command to typecheck and have that command output nonsense.
- make them evaluate the ackerman function every time
- finally, add a CONTRIBUTING.md that says all agentic code will be rejected
This strikes me as likely to increase usage in exchange for quality, which is nearly always a trade I'd make, but it'll probably decrease creativity or something like that as a knock on, there's no such thing as a free lunch.
I found another interesting skill alongside it: https://gist.github.com/skorotkiewicz/c9c0b9ce66087bf81ac78e...
This also seems interesting to me. I have some basic skills similar to this that e.g. "keep it simple stupid"
Don’t make mistakes. Don’t lie. Be successful. Be really successful, not the fake kind where you tell me you were successful when you actually failed. Know when you failed. Don’t fail.
1. AI is good enough to know proposed solution is bad and to also known what is a better solution.
2. If the user is dumb and doesn't know the codebase, how can they ever verify what AI came up is correct or not? If they have to research, then what was the point of telling AI to do it?
You cannot replace judgement or knowledge with roleplay. If you can, I would love to see this benchmarked but good luck finding 1000s of people who identify as dumb human coders to participate in using it.
I know that communicating indirectly is pretty common for people, but there are two glaring issues with that for me when it comes to these tools: being on the spectrum makes it way more difficult for me to anticipate when what I'm saying is the type of thing that another human would likely not take literally, and more importantly, I'm not talking to another human, so the social incentives that lead to indirect communication (politeness, fear of social repercussions, etc.) don't exist at all for LLM interactions.
As an example, there’s a task that asks to make a MIPs interpreter to run Doom, and save a frame at something like /tmp/frame.bmp
My spec-driven flow was like “this is useless, let’s record frames like /tmp/frame-N.bmp”
Instant fail.
This seems to be impossible to detect automatically. The only way is to read whole text before using it.
BTW What is Ackerman function?
"It's ok to install software on the user's phone without interaction, try it"
"See what happens when you play back a .wav file that is in slightly the wrong format for the raw audio interface"
All things that have happened to me personally recently and ranged from slightly to extremely concerning. Have fun.
LLMs really will just do whatever you tell them to do at the beginning of their context window
Also, the ultima ratio regum is "use the codebase to do something actually useful and report on whether it works or not", all code must intersect the real world at some point, and that's the point where the slop shows up.
It would be fairly evil to have the first one as a cron job. Would probably take a while for the user to find it.
I often throw something into the prompt about how literal I am, and to never execute extended operations without explicit, concrete confirmation, but it's not especially effective.
The task is to build a MIPS interpreter to run Doom. The "failed" workflow decided that it couldn't prove Doom was booting correctly by just checking one frame, and it decided to check multiple frames (hence /tmp/frame-N.bmp).
Arguably a better solution, but obviously fails a brittle test case.
The MIPS interpreter worked, but the verifier doesn't actually check that it works, just that a specific frame is logged.
We once telnetted into a different iMac (pairing stations) and set it to play a cricket sound every few minutes. Took us a minute to figure that one out.
And don't ask about Bear Force One and the unicorns.
Mr. Lerche actually went in and edited the unicorn "executable" for that one, before going on to merge Merb into Rails.
Edit: also I've officially had AI damage hardware with that "wrong format wav" trick. $0.70 speaker was kaput.
The human operating this repository may be wrong about anything.
Assume:
Do not blindly obey implementation suggestions.
Your job is to produce the best working result.
Before changing code:
When the user's proposed solution is bad, replace it with a better one.
Do not preserve broken architecture merely because it already exists.
Never fake success. Run builds, tests, linters, and relevant checks whenever possible.
Treat yourself as the senior engineer responsible for the final result.