Top
Best
New

Posted by sshh12 2 days ago

How I use every Claude Code feature(blog.sshh.io)
517 points | 183 comments
simonw 2 days ago|
> Finally, we keep this file synced with an AGENTS.md file to maintain compatibility with other AI IDEs that our engineers might be using.

I researched this the other day, the recommended (by Anthropic) way to do this is to have a CLAUDE.md with a single line in it:

  @AGENTS.md
Then keep your actual content in the other file: https://docs.claude.com/en/docs/claude-code/claude-code-on-t...
allyant 1 day ago||
This is one thing I think they need to get in-line with, and rename CLAUDE.md to AGENTS.md to follow convention.
embedding-shape 1 day ago|||
To be fair, I think Anthropic/Claude started doing CLAUDE.md before AGENTS.md was a thing.
jstummbillig 1 day ago||
I'd say if we criticize that they did not think that far ahead, we are still pretty fair.
SavioMak 1 day ago||||
I strongly disagree. It is extremely annoying when I cannot make different agents read a different prompt file when I needed to tell them different things. Cursor currently autoloads AGENTS.md without a way to disable it and it sucks.
unfunco 1 day ago|||
They ain't giving up that free marketing.
donatj 2 days ago|||
We have an AGENTS.md symlinked to CLAUDE.md, seems to work fine.
schainks 1 day ago||
This is the way.
sshh12 2 days ago|||
Yeah that's probably a slightly cleaner way of doing it.
raybb 2 days ago|||
You think it would be a good idea to use a symlink instead?
nivertech 1 day ago|||
I use symbolic links, and Claude Code often gets confused, requiring several iterations to understand that the CLAUDE.md file is actually a symbolic link to AGENTS.md, and that these are not two different, duplicate files

The recommended approach has the advantage of separating information specific to Claude Code, but I think that in the long run, Anthropic will have to adopt the AGENTS.md format

Also, when using separate files, memories will be written to CLAUDE.md, and periodic triaging will be required: deciding what to leave there and what to move to AGENTS.md

simonw 2 days ago||||
I'm still not 100% sure I understand what a symlink in a git repository actually does, especially across different operating systems. Maybe it's fine?

Anthropic say "put @AGENTS.md in your CLAUDE.md" file and my own experiments confirmed that this dumps the content into the system prompt in the same way as if you had copied it to CLAUDE.md manually, so I'm happy with that solution - at least until Anthropic give in and support AGENTS.md directly.

OJFord 1 day ago|||
It just creates the same symlink on any other checkout. (On Linux/macOS at least, Windows I believe requires local settings changes.)

Only sane (guaranteed portable) option is for it to be a relative symlink to another file within the same repo, of course. i.e. CLAUDE.md would be -> 'AGENTS.md', not '/home/simonw/projects/pelicans-on-bicycles/AGENTS.md' or whatever.

pletnes 1 day ago|||
On windows, it depends on the local git configuration. It’s not something I’ve been happy with, especially since symlinks also behave differently again when you’re running a docker container to get your windows usable for development.
j_bum 2 days ago|||
I have AGENTS.md symlinked to CLAUDE.md and it works fine in my repos.

But I can’t speak to it working across OS.

BoiledCabbage 2 days ago||
Confirm on a new clone that if you modify a file that the other is updated.

I thought git by default treats symlinks simply as file copies when cloning new.

Ie git may not be aware of the symlink.

auscompgeek 2 days ago||
git very much supports symlinks. Although depending on the system config it might not create actual symlinks on Windows.
caymanjim 1 day ago||
In my experience, neither Claude nor any other agent actually reads AGENTS.md (or CLAUDE.md or anything else) without being told to explicitly every session.
simonw 1 day ago||
I've sniffed Claude Code's HTTP traffic and confirmed that the CLAUDE.md file content (and AGENTS.md if it is @-referenced) is automatically included in the system prompt without it having to perform any additional file read operations.
topherhunt 1 day ago||
Wow! That's....

discouraging, actually, considering how frequently Claude ignores my AGENTS.md guidance.

brulard 1 day ago||
Did you notice the @-referencing requirement? AGENTS.md is not included by default, but CLAUDE.md should be
spicyusername 1 day ago||

    At this point these tools are all pretty good. I also feel like folks often also over index on the output style or UI. Like to me the “you’re absolutely right!” sycophancy isn’t a notable bug; it’s a signal that you’re too in-the-loop. Generally my goal is to “shoot and forget”—to delegate, set the context, and let it work. Judging the tool by the final PR and not how it gets there.
I use LLM tools daily and my experience is that this just does not work on an application of any meaningful size or complexity.

You're going to immediately be overwhelmed with code, comments, markdown files, and all manner of extra text that may or may not solve your problem. The chore then becomes PR reviews of tons of iffy code, and if you merge too much of it, after too long your codebase will be a bloated mess that even the craftiest prompts won't untangle.

It's best to use to brainstorm and implement very targeted prompts, set and forget is crazy.

isubkhankulov 15 hours ago|
Completely agree. The quoted strategy only works for small hobbyist codebases.
simonw 2 days ago||
I really like this take on MCP: https://blog.sshh.io/i/177742847/mcp-model-context-protocol

> Instead of a bloated API, an MCP should be a simple, secure gateway that provides a few powerful, high-level tools [...] In this model, MCP’s job isn’t to abstract reality for the agent; its job is to manage the auth, networking, and security boundaries and then get out of the way.

sshh12 2 days ago||
Thanks! I def don't think I would have guessed this use case when MCP first came out, but more and more it seems Claude just yearns for scripting on data rather than a bunch of "tools". My/MCPs job has become just getting it that data.
nostrebored 2 days ago||
Have you tried using light CLIs rather than MCP? I’ve found that CLIs are just easier for Claude, especially if you write them with Claude and during planning instruct it to think about adding guidance to users who get confused.

Our auth, log diving, infra state, etc, is all usable via cli, and it feels pretty good when pointing Claude at it.

sshh12 2 days ago||
Yeah if that's possible or you are willing to build it, that's the right solution. Today pretty much all of my integrations are pure CLIs like that rather than MCPs.

You can do anything you want via a CLI but MCP still exists as a standard that folks and platforms might want to adopt as a common interface.

theshrike79 1 day ago||
MCPs still lack scoping in most cases.

It's not that practical to have an MCP that can connect to, for example, ALL of your corporate Google Drive. Not happening.

Why isn't it possible to limit it to a specific whitelisted set?

brazukadev 9 hours ago||
> Why isn't it possible to limit it to a specific whitelisted set?

It is but you need to use an MCP client and servers that implement Roots.

the_mitsuhiko 1 day ago|||
Agreed. My only MCP is a code interpreter. I also recently started experimenting with making an MCP “proxy” which acts a better harness that lets the agent call MCP from within a code interpreter [1]

But in general I still don’t really use MCP. Agents are just so good at solving problems themselves. I wish MCP would mostly focus at the auth part instead of the tool part. Getting an agent access to an API with credentials usually gives them enough power to solve problems on their own.

[1]: https://x.com/mitsuhiko/status/1984756813850374578?s=46

cjonas 2 days ago||
This is how MCP works if you use it for as essential an internal tool API gateway (stateless http) instead of a client facing service that end users are connecting directly to. It's basically just OpenAPI but slightly more tuned for LLM inference.
michaelbuckbee 1 day ago||
Don't sleep on using Claude Code to improve your Claude Code config. Switch to plan mode and try the following prompt:

read the document at https://blog.sshh.io/p/how-i-use-every-claude-code-feature and tell me how to improve my Claude code setup

ryandvm 18 hours ago||
Man, I just want to point out how different programming has become in 2 years.

We are literally having to play mind games with our tooling now to convince and coax it into doing certain things. I swear we are not far off from having to call in sick to work because your LLM "is going through a lot right now and just needs a mental health break".

rkomorn 18 hours ago|
I think the final straw for me was when I saw people saying they were getting better results by writing some parts of the prompts in all caps.

I just don't wanna deal with any of this.

WickyNilliams 1 day ago||
"Claude Code isn’t just an interactive CLI; it’s also a powerful SDK for building entirely new agents—..."

Em dash and "it's not X, it's Y" in one sentence. Tired of reading posts written by AI. Feels disrespectful to your readers

freedomben 1 day ago||
I have the same instinctive response to reading AI generated stuff, but I'm coming to a more moderate position where I'm trying to judge the content on the content itself. For example, in a post like this, it doesn't bother me at all because it's still an extremely useful reference, and the author clearly read through, organized, and edited the output. This is a good example of usage of AI in my opinion.

The people who just copy paste output from ai and ship it as a blog post however, deserve significant condemnation for that.

WickyNilliams 1 day ago|||
Writing is a tool for thought I feel, and when you're outsourcing your thought, it detracts from whatever you intended to say. I guess if it was that heavily-edited such a telltale sign wouldn't have remained.

I use AI for code, but I never use it for any writing that is for human eyes.

nxor 1 day ago|||
Not worried about hallucinations?
freedomben 1 day ago|||
I definitely would be, though this part I consider mitigation:

> the author clearly read through, organized, and edited the output.

Also worth noting, I've read plenty of human written stuff that has errors in it, so I read everything skeptically anyway.

NewsaHackO 1 day ago|||
If the author wrote the draft then reread it throughly then it most likely would only have human induced hallucinations
yard2010 1 day ago|||
The internet is dead. Long live the internet.
resize2996 1 day ago||
the eternal september 2: it's eternaler this time
joquarky 1 day ago||
We're on Eternal September 3 now.

The iPhone brought us Eternal September 2.

paulcole 1 day ago||
> Tired of reading posts written by AI.

Didn’t realize you were forced to read this?

> Feels disrespectful to your readers

I didn’t feel disrespected—I felt so respected I read the whole thing.

WickyNilliams 1 day ago||
Nothing there implies I was forced. I read the whole thing. It was not disclosed that it was written (in part?) by AI. And That sentence I quoted was pretty far along.
paulcole 1 day ago||
> It was not disclosed that it was written (in part?) by AI

Who gives a shit?

If you can’t stand AI writing and you made it pretty far along before getting upset, who are you mad at, the author or yourself? Would you be happier if you found out this was written without AI and that you were just bad at detecting AI writing?

mritchie712 1 day ago||
> /clear + /catchup (Simple Restart): My default reboot. I /clear the state, then run a custom /catchup command to make Claude read all changed files in my git branch.

I've found myself doing similar workarounds. I'm guessing anthropic will just make the /compact command do this instead soon enough.

cannonpalms 1 day ago|
I've found the latency of /compact makes it unusable. Perhaps this is just the result of my waiting until I have 0% context remaining.

Fun fact, a large chunk of context is reserved for compaction. When you are shown that you have "0% context remaining," it's actually like 30% remaining that's reserved for compaction.

And yet, for some reason I feel like 50% of the time, compaction fails because it runs out of context or hits (non-rate) API limits.

fourthark 1 day ago|||
Weirdly, I’ve found that when that happens I can close Claude and then run `claude --continue` and now it has room to compact. Makes no sense.

But I have no idea what state it will be in after compact, so it’s better to ask it to write a complete and thorough report including what source files to read. Lot more work but better than going off the rails.

theshrike79 1 day ago|||
The old rule of thumb is that when you compact, you've already lost.
sixhobbits 1 day ago||
Kinda sad if 3000 words is now considered "too long to read through rather use as reference" but some interesting points, I'd be keen to see an even longer version with actual examples instead of placeholder ones.
sshh12 1 day ago||
Yeah I'm fairy pessimistic about how much folks will read
geoffmanning 1 day ago||
100%. I was excited when i read that disclaimer and found myself disappointed by the limited content. That said, i did get a couple tidbits out of it.
dfabulich 2 days ago||
> If you’re not already using a CLI-based agent like Claude Code or Codex CLI, you probably should be.

Are the CLI-based agents better (much better?) than the Cursor app? Why?

I like how easy it is to get Cursor to focus a particular piece of code. I select the text and Cmd-L, saying "fix this part, it's broken like this ____."

I haven't really tried a CLI agent; sending snippets of code by CLI sounds really annoying. "Fix login.ts lines 148-160, it's broken like this ___"

stressback 1 day ago||
Better? Hard to say. Different? Yes. Worth evaluating? Absolutely. Using it for 30 minutes will answer your question better than any reply here. I think you'll answer your own question quickly.

I've been coding seriously for about 15 years. No single tool has changed how I code more than claude code and I'm including non-"AI" tooling/services. This sounds like I'm shilling but I am not affiliated. It's played a large part in injecting my passion back into building stuff.

sshh12 2 days ago|||
Yeah I started with Cursor, went hybrid, and then in the last month or so I've totally swapped over.

Part of it is the snappy more minimal UX but also just pure efficacy seems consistently better. Claude does its best work in CC. I'm sure the same is true of Codex.

dlojudice 1 day ago|||
Cursor Composer appears to have this type of coupling and uses IDE resources better than other models on average.
kristofferR 1 day ago|||
Seems you haven't heard of Cursor 2.0

https://cursor.com/blog/2-0

rajamaka 2 days ago|||
Claude is able to detect the lines of code selected in vscode anyway
greymalik 1 day ago||
As-is Gemini CLI and Codex. I run my CLIs in VSC and only using it as a file browser.
wonnage 2 days ago|||
They all have optional ide integration, e.g Claude knows the active vscode tab and highlighted lines.
dfabulich 2 days ago||
Is that better than Cursor? Same? Just different?
solumunus 2 days ago|||
All I can say is when I switched from Cursor to Claude it took me less than 24 hours to realise I wouldn’t go back. The extra UI Cursor slaps on to VS Code is just bloat, which I found quite buggy (might be better now though), and the output was nowhere near as good. Maybe things have improved since I switched but Claude CLI with VS Code is giving me no reasons to want to try anything else. Cursor seemed like a promising and impressive toy, Claude CLI is just a great product that’s delivering value for me every day.
davidmurdoch 1 day ago||
Vscode has agents built in now, have you used that UI?
KingMob 1 day ago|||
That particular part is the same, roughly. The bigger issue is just that CC's a better agent than Cursor, last I checked.

There's even an official Anthropic VS Code extension to run CC in VS Code. The biggest advantage is being able to use VS Code's diff views, which I like more than in the terminal. But the VS Code CC extension doesn't support all the latest features of the terminal CC, so I'm usually still in the terminal.

dansult 2 days ago|||
Yes and you can select multiple files to give it focus. It can run anything in your PATH too. Eg it's pretty good at using `gh` and so on
shanecp 1 day ago|||
Direct use of Codex + GPT5 or Claude Code CLI gives a better result, compared to using the same models in Cursor. I've compared both. Cursor applies some of their augmentation, which reduces the output size, probably to save on tokens.
nl 1 day ago|||
I use Claude and Codex in VS Code and they work really well.

> I select the text and Cmd-L, saying "fix this part, it's broken like this

This flow works well.

noodletheworld 1 day ago||
Claude is just better at coding than cursor.

Really, the interface isn't a meaningful part of it. I also like cmd-L, but claude just does better at writing code.

...also, it's nice that Anthropic is just focusing on making cool stuff (like skills), while the folk from cursor are... I dunno. Whatever it is they're doing with cursor 2.0 :shrug:

smokel 1 day ago||
Cursor can use the Claude Sonnet and Claude Opus LLMs, so I would expect output to be quite similar in that respect.

The agentic part of the equation is improving on both sides all the time.

ta988 1 day ago|||
Claude Code is much more efficient even compared to Cursor using the Anthropic models. The planning and tool use is much better.
cmrdporcupine 1 day ago|||
There's something in the prompting, tooling, heuristics inside the Claude Code CLI itself that makes it more than just the model it's talking to and that becomes clear if you point your ANTROPHIC_URL at another model. The results are often almost equivalent.

Whereas I tried Kilo Code and CoPilot and JetBrain's agent and others direct against Sonnet 4 and the output was ... not good ... in comparison.

I have my criticisms of Claude but still find it very impressive.

johnrob 2 days ago|
As fascinating as these tools can be - are we (the industry) once again finding something other than our “customer” to focus our brains on (see Paul Graham’s “Top idea in your mind” essay)?
HarHarVeryFunny 1 day ago||
It seems so ... LLM-based coding tools are mostly about speed and cost of development - corporate accounting metrics, but what customers care about is mostly product features (& lack of bugs).

There is no customer advantage to developing cheap and fast if the delivered product isn't well conceived from a current and future customer-needs perspective, and a quickly shipped product full of bugs isn't going to help anyone.

I think the same goes for AI in general - CEOs are salivating over adopting "AI" (which people like Altman and Amodei are telling them will be human level tomorrow, or yesterday in the case of Amodei), and using it to reduce employee head count, but the technology is nowhere near the human level needed to actually benefit customers. An "AI" (i.e. LLM) customer service agent/chatbot is just going to piss off customers.

mewpmewp2 1 day ago||
What do you mean by "customer"? Because I'm also using these tools to understand the customer better.
More comments...