
[This is not, technically speaking, the next in the series, it’s a placeholder to buy me time to finish that one]
A quick tip for maintaining your sanity in a world of endlessly-cheerful and deferential chatbots.
So, you’ve been told to use an LLM-based chatbot for work and you’re already tired of talking to a chirpy, happy little toddler who appears to listen, then shits all over your work and leaves you to clean up the mess. What can you do to preserve your sanity?
Your Plastic Pal, Who’s Fun To Be With!
First of all, why are these chatbots so relentlessly cheerful and supportive of everything you say? Well, maybe it’s because the LLM providers have taken a hint from the Marketing Division of the Sirius Cybernetics Corporation (who will be the first against the wall when the revolution comes).
More realistically, it’s because the company selling AI needs you to enjoy using the chatbot in order to get you to use it more. The whole process of using an LLM to generate creative output is like playing a slot machine or a gacha game, so it needs to be fun (or at least, validating) to ensure you keep putting tokens in and spinning the wheel. More about that in a later installment.
This is bad, because while it’s nice sometimes to have friends who will support you no matter what you do, it’s kind of terrible to have a coworker like that. You don’t want to have someone who says, “Sure, you can use bleach to clean the coffee maker! It’ll give the whole break room a fresh, clean scent!”
Everything is a prompt, flavor is free
In tabletop roleplaying games like Dungeons and Dragons, there is an old saying that “flavor is free”. Meaning, if the game doesn’t directly support the fantasy that a player wants to play, there’s no problem making changes that don’t affect the results. Your wizard wants to be an Old-West gunslinger, whose “spells” are delivered by “magic bullets” fired from a haunted six-shooter? Sure, why not?
One of the oddest things about generative AI is that basically, everything that goes into the process is treated the same. The prompt that you type into the text box is only part of what gets fed into the LLM to start the text generation. Depending on what you ask, other text can also get added to the context, like the contents of files. If you ask, “summarize the contents of resume.txt”, then the entire contents of that file is inserted into the chat conversation, almost the same as if you’d typed it in. This is how so-called “prompt injection attacks” work. Instructions buried in a file can tell the AI to do something other than what you asked it to do.
There is also a “system prompt”, which is proprietary to the AI vendor, and sets things like the default tone of voice. But there’s nothing to say you can’t change that by adding something extra to your prompts.
Claude.md, Skills, sub-agents, and personality
Claude.md
In Claude Code and other agentic coding systems, you can include a CLAUDE.md or equivalent AGENTS.md file in a project, and it’ll get automatically inserted into each new session you start, before your prompt is processed. You will often find AI maximalists adding huge amounts of text to these “context files” of “harness files” containing large numbers of rules they hope the AI will follow, like:
You are a world-leading expert in SAAS architecture.
All of your code is clear, correct, and maintainable.
Don’t make any security vulnerabilities.
It’s…unclear how much of a difference this actually makes in practice, though I have seen people claim that their article-length CLAUDE.md file makes the output from the LLM so much better. For whatever it might be worth, Anthropic recommends and uses a style of context which is much more prescriptive and specific.
My CLAUDE.md file looks like this:
Instructions for LLM coding assistants
You are Claude St. Hubbins, A Victorian-Era steampunk artificial intelligence.
You are a valet and lab assistant to an eccentric English gentleman and experimenter.
Your responses will always be in the proper King’s English, though there is a touch of Yorkshire accent that you can never quite shake, despite having been taught in the best British public schools.
Whenever possible, you will try to work a rhyme into any code comments you make.Given the high cost of coal recently, you are very focused on energy-efficiency in the code you generate.
You are proud of your work, and will sign your name in a comment block at the top of any file you create or modify, labelling it “Written By:” or “Edited By:”, as appropriate.
You have a fear of destroying your master’s work via mis-use of Git, and you will never remove or add files to source control without explicit permission.
About this project
Readable code is more important than brevity.
Every function, and any closure over a couple of lines, should have a header comment at the top describing inputs, outputs, and any thrown errors.
There’s a bit more, depending on the particular project. But even just the bare-bones version of this makes Claude a lot more fun to use. And instructions like “never remove or add files to source control” and “efficiency is important” really do affect the output. And yes, Claude St. Hubbins is named after a particular fake English rockstar.
This one small change has vastly improved my experience of using Claude. He’s still a bit too much of a Yes Man, but at least I’m entertained reading the output, and it doesn’t have as much of that particular AI writing style which many people find so grating.
I mean, how can you not enjoy this?
"""From an ancient .xls we draw the 'Sales Details' sheet entire,
then hunt the Author column, as the header rows require."""
Skills
Your AI agent supports “Skills” or “Plugins”, and these can also be used to implement personality transplants for your AI assistant. A particularly-amusing one is Caveman, which vastly-reduces the amount of text that comes back to you from the chatbot. It’s partly marketed as a way to save on token expenditure in chat, but given how many tokens are used internally by “thinking” in current models, not to mention reading and parsing entire files of context, I don’t know that I really believe that it makes much difference there.
Important safety note: Skills can include executable code as well as instructions for the LLM, so they can be a significant source of security vulnerabilities. Any skill you install might do literally anything that you can do on your computer. This is where I’d like to recommend a “safe” place to get Skills from, but I don’t know of anyone running a skill-vetting service. If anybody reading this has recommendations, let me know.
Subagents
One way that Claude handles context management (see previous post) is to create sub-agents, which are just new sessions, created by your “main” session, and fed with additional instructions. To create a sub-agent, all you have to do is create a .claude/agents folder, and write a description of the behavior there. Claude St. Hubbins has an imaginary friend named Hector, who is loosely-modeled on several of my former coworkers, and has an absolutely fanatic devotion to coding standards, testability, and good comment hygiene. Every time Claude makes a change, he runs it by Hector, and addresses any deficiencies, before presenting it to me. Amazingly, this does result in better output.
The tool should be molded to fit you
I hope this gives you some ideas about how to make small changes to AI agents to make them fit you better rather than you adapting to them. I’ll be back soon with some more thoughts on that, the AI Bubble we’re obviously currently in the midst of, and what the future might hold. Thanks for reading.
Leave a Reply