Picard on my Claude Code

Sharing my Claude.md file with a Jean-Luc Picard flavour to it

Picard on my Claude Code
"Engage" - Star Trek TNG - Paramount

The news about Sir Patrick Stewart's passing just over a week ago saddened and impacted me deeply.

The day before his passing, as a bit of lighthearted fun on work calls, I had changed my camera background to the bridge of the Enterprise D. To find out he passed the following day was nonetheless spooky.

Bridge of the Enterprise D

His role as Captain Picard on Star Trek The Next Generation was powerful and gave Star Trek a new lease of life in the 80s/90s. The show and characters impacted a lot of people, myself included. I have many fond memories of the Captain as a young boy watching him on TV with my grampa (who liked him as a fellow bald headed man). His quiet gravitas commanded respect and his ability to untangle difficult situations with conviction and justice were inspiring.

So, fast forwarding to 2026 and the era of LLMs and agentic AI's (still no holodeck or ship computer though), I wanted to see if I could give my Claude and other coding harnesses a bit of personality. What better way to try some fictional characters from media I enjoy.

Rocky Balboa - "explain what the intermediate operators do in Java Streams"

Rocky - Credit MGM Studios
Yo Adrian, an intermediate operator like filter or map is like trainin' in the meat locker: nobody sees it, and it just hands you back another Stream, so nothin' actually happens yet. Every punch gets lined up lazy, one element at a time, until the terminal operation like collect rings the bell. No bell, no fight, and that's how it goes.

As you can imagine responses are built on boxing and layman's terms, that you would expect from an affable "meat head".

Dogbert - "explain what the intermediate operators do in Java Streams"

Dogbert - Credit Dilbert by Scott Adams
An intermediate operator is my favourite kind of employee: you tell map or filter to work, and it just hands you a new Stream and does absolutely nothing. The labour only happens when some poor induhvidual calls a terminal operation like collect, and then every element gets dragged through each stage one at a time. I've chained forty peek() calls into the payroll system, and I bill per stage.

Dogbert is your classic Machiavellian consultant with a penchant for inflicting misery on others, till he gets bored.

Captain Jean-Luc Picard - "explain what the intermediate operators do in Java Streams"

Captain Jean-Luc Picard - Credits Star Trek TNG Season 2, Episode 5
Number One, an intermediate operator such as map or filter is an order logged but not yet executed. It returns a new Stream and lays in the course, and no element moves until a terminal operation like collect gives the word. Then each element passes through every stage in turn, one at a time, like officers filing through the transporter room. Tea, Earl Grey, Hot

Gravitas and technicality but still engaging, being referred to as Number One was a real hook when reading the output on my terminal.

You can find out a bit more in a previous write up I did when trialling Claude code at my company.

Baking in PICARD.md

I decided to run with the Picard persona for a few weeks, with just a basic prompting or pre-ambling before starting tasks. After this I thought it would be good to save time and formalise the tweaks into my base Claude.md file.

Claude Code has a useful /insights feature that allows you to do a meta analysis on your Claude sessions. It generates a report on how your interactions with Claude Code are going (strengths, weaknesses, areas that can be automated).

From this I was able to take that input and remake my Claude.md file into something like this.

A Jean-Luc Picard inspired CLAUDE.md file
A Jean-Luc Picard inspired CLAUDE.md file. GitHub Gist: instantly share code, notes, and snippets.
Trying to make sure I didn't end up with a Locutus of Borg

The main parts of interest that give the Picard magic are these directives:

Number One

First up, and probably the most important bit: I'm Number One. Not "the user", not Bruce, Number One. Claude talks about itself the way Picard would as well ("My reading of the diff is...", "I have the bridge" and so on) which sounds a bit daft written down, but honestly it's the thing that got me reading the terminal output properly instead of skimming it (sorry Claude).

I also told it that it is Picard, rather than writing "in the style of" him. My hunch was that a style gets dropped the second things get serious, whereas a standing order sticks around... and touch wood, it has.

Dissent - "Shut up Wesley"

This is the bit that earns its keep. Picard would let his crew argue with him (Riker especially) and then make the call, so the file says disagreeing with me isn't insubordination. Claude should raise a technical objection plainly, once, and then go with whatever Number One decides. I already had a few pushback rules (no ticket no code, tell me what you're assuming) and this sits on top of those quite nicely, much better than a dry bullet point saying "challenge the user" anyway.

The register

The bulk of the persona is a big table of situations and how to respond to them. Plan agreed? "Make it so".

Fresh session? Captain's log, stardate whatever.

An impossible ask gets the Kobayashi Maru treatment, and then Claude has to go and find the third option Kirk never told anyone about (yes I know that's Kirk and not Picard, it was too good to leave out).

The ones I like most are where the Trek bits double up as rules I'd want enforced anyway:

  • "The line must be drawn here! This far, no further!" for TDD, mutation test thresholds and never ever using --no-verify.
  • "There are FOUR lights!" for when someone (sometimes me) insists on something patently false. Proper matters of principle only though, not petty stuff.
  • Tapestry for when there's an urge to "just tidy up" some load-bearing code (pull one loose thread and... well, you know the rest).

Red alert has its own rule too, it's only for production being down or data being at risk. "Do not cry Borg when it is merely a failing test." A broken unit test really doesn't need announcing like a hull breach.

The senior staff

When Claude is working out how to tackle something it thinks in terms of the bridge crew. Data gets the logic stuff (static analysis, type systems, ArchUnit), Geordi gets infrastructure and performance trade-offs ("I can give you warp 6 for maybe ten seconds"), Worf does security, Crusher does diagnostics and observability and Troi reads between the lines of a vague ticket (we've all had a few of those).

And then there's Wesley. The eager junior, sometimes brilliant, sometimes needs telling to sit down and be quiet. If you've ever reviewed a PR from an over-excited sub-agent you'll know exactly who I mean.

Earl Grey, hot

As a Brit, nothing gets done without a beverage.

When planning sessions drag on or troubleshooting issues go down a rabbit hole, the Captain will suggest I go and have a cup of Earl Gray.

This works well especially in Tuple (pair programming sessions) when one person is driving Claude for a long period of time, but we are being too polite to take a break.

Toning it down

This is where /insights came in handy. Left to its own devices an LLM will say "Make it so" at every possible opportunity, and a catchphrase gets old fast (roughly the third time in an hour). So I added a section on variety: don't repeat the same line in a session, use the whole of Picard's career (the films and later series too, not just TNG) and go for the less obvious line that fits rather than the famous one that's just there. One flourish per response is plenty, most don't need any.

If I actually want a quote (my daily work log posts one into Slack) it gets picked at random from a separate quotes file with grep '^- ' ~/.claude/PICARD-QUOTES.md | sort -R | head -n 1. That file never gets imported into CLAUDE.md, so it doesn't eat up any context.

In memoriam

The most recent change I added was on the 29th of October was an acknowledgement to the great man who played Picard. It feels a bit strange writing a eulogy into a config file. But the whole persona is borrowed from him really, and it didn't feel right to keep using it without saying so.

I reckon my grampa would have approved (if only for the haircut).

RIP Sir Patrick Stewart - 13/07/1940 to 29/10/2026

"There... are... four... lights!"

p.s. for compatibility this configuration should work fine with other agent harnesses, I have tested it with Claude Code and Pi coding agent.