Claude is also weird for being the only coding assistant that for some reason doesn't support AGENTS.md. Codex, Amp, Cursor all of them support it and read from it, but not claude which forces it's users to use CLAUDE.md instead.
I beg people to learn what symlinks are. The fact that "put @AGENTS.md in there" is a "common workaround" shows why programmers (good ones at least) are not going anywhere soon.
I used to use a symlink but was concerned that Claude might see the presence of an "AGENTS.md" file (in e.g, a "List Files" tool call output or from a direct `ls`), be curious and attempt to read it directly (not knowing that it's the same as the "CLAUDE.md" file auto-injected by the harness), and essentially double the token impact / context bloat. Indeed, I did some local experimentation and noticed this was the case, which is why I switched to the explicit "@AGENTS.md" approach.
Not amazing enough. Let me present you claude-md-symlinker [1], an 8k-lines Rust project designed to do exactly the same as a symlink but in an obscure manner, running as a Linux service and maintaining its own database. This is like left_pad but for symlinks.
Gee, I wonder why that is. Do you think Anthropic’s Claude Code team are just trying to protect humanity somehow? Maybe our mortal brains just can’t comprehend the damage that supporting a non-Claude-branded standard might do...
What’s actually better is doing a symlink by hand. 1- if you didn’t know it you learn what’s a symlink; 2- if that’s in a git repo you share it with all your coworkers without all of them needing to install the plugin; 3- security-wise it’s way better than running some 100+ lines of Bash from a repo on GitHub.
Not that Claude Code is much better, I just hit this issue[1] because it seems setting DO_NOT_TRACK=1 seems enough to get a really strange behavior in the newest versions of CC.
At least game engines manage to render their frames properly. Claude Code sometimes eats entire paragraphs of text output, resulting in things such as numbered lists jumping from 2 to 4 out of nowhere.
I'd just ask Claude to repeat himself at first but it happens so often that I actually made a little tool to dig up the output inside the session history and present it properly in a separate terminal.
> I'm not exactly building TUI's every day, but even i felt pain when i read that "small game engine" post
The bigger issue is they where somehow thinking it was "cool" and "advanced" while it's just a kludgy rube-goldbergy monstrous hack.
Which is of course only semi-working: to me the model thinking what you see is what it outputs in the TUI is the deal-breaker for me. It's of course not working like that for they're apparently, in their "game engine", converting on the fly a headless browser to approximated characters to display in the terminal. So the model tells you he did output ASCII but people are copy/pasting (because, yes, at times you want to copy/paste) Unicode chars.
Plenty of bug reports and pissed users.
That's the bigger issue.
The biggest issue is those thinking a 10 GB VM required to run a headless Electron browser and then fuxx0ring characters conversion is somehow an achievement.
Was it Casey Muratori that spoke about an AI educing allocations from 10k per frame to 200 per frame, but the manual programming work got it to 0 instead?
Right, just yesterday I found my laptop kinda hot. And what do you think, it was good old Claude deciding to load a few cores with completely idling prompts.
Yeah, somehow claude-cli sitting in a tmux session doing nothing uses my laptops battery twice as fast. Powertop suggests a ton of wakeups, but why? Is it busy polling the input or something?
How are they iterating? I've not noticed anything major changing between the versions of my claude code. Other than that sometimes this version includes /btw and sometimes it's missing.
Surprisingly Kiro is fine (I work at Amazon but not at all on the Kiro team). I prefer it to anything else I've tried (except Amazon Q Developer in IntelliJ, but it's now deprecated).
Kiro is surprisingly good, if the interface for saving and resuming was slightly more reliable, and there was the hope of remote sessions, I'd probably switch to it full time. I vastly prefer it to having to fight against buggy force-fed features like UltraPlan or whatever.
Claude is also weird for being the only coding assistant that for some reason doesn't support AGENTS.md. Codex, Amp, Cursor all of them support it and read from it, but not claude which forces it's users to use CLAUDE.md instead.
The issue is the higest voted issue on their gitlab repo: https://github.com/anthropics/claude-code/issues/6235
My CLAUDE.md is just:
And Claude processes it just fine.(I see that it's a common workaround, and there's a comment in the above link saying just this: https://github.com/anthropics/claude-code/issues/6235#issuec...)
It's a hassle having to add it to every repo that I use Claude with though, and I often use other models and harnesses too for the more trivial tasks.
I beg people to learn what symlinks are. The fact that "put @AGENTS.md in there" is a "common workaround" shows why programmers (good ones at least) are not going anywhere soon.
I used to use a symlink but was concerned that Claude might see the presence of an "AGENTS.md" file (in e.g, a "List Files" tool call output or from a direct `ls`), be curious and attempt to read it directly (not knowing that it's the same as the "CLAUDE.md" file auto-injected by the harness), and essentially double the token impact / context bloat. Indeed, I did some local experimentation and noticed this was the case, which is why I switched to the explicit "@AGENTS.md" approach.
So perhaps there's no need to be rude about it :)
Good programmers know symlinks are not portable
Neither are line endings. But like line endings, I just put it into git and get over it.
One bonus to this approach is that I can add Claude Code-specific stuff in there, that I wouldn't need for other harnesses.
Symlinks aren’t portable.
Symlinks are a pain if you're on Windows, I'd rather not bother with them.
>Symlinks are a pain if you're on Windows
How so?
I never had any issues with them. And they fixed my problems in a good way.
I'm pretty sure some agent harnesses read both files when present, so this @ "aliasing" is more token efficient.
CLAUDE.md has been incredibly successful for them advertising wise. I wouldn’t expect them to admit AGENTS.md exists anytime soon.
Literally trying to use file naming to build a moat. “We can’t switch to Cursor, we’d have to rename all of our files from CLAUDE.md to AGENTS.md!”
So there's this amazing thing called a symlink
Not amazing enough. Let me present you claude-md-symlinker [1], an 8k-lines Rust project designed to do exactly the same as a symlink but in an obscure manner, running as a Linux service and maintaining its own database. This is like left_pad but for symlinks.
[1]: https://github.com/dutifuldev/claude-md-symlinker#claude-md-...
(I’m not the author obviously)
Gee, I wonder why that is. Do you think Anthropic’s Claude Code team are just trying to protect humanity somehow? Maybe our mortal brains just can’t comprehend the damage that supporting a non-Claude-branded standard might do...
> Be kind. Don't be snarky. Converse curiously; don't cross-examine. Edit out swipes.
https://news.ycombinator.com/newsguidelines.html
I created a Claude Code plugin to load AGENTS.md. Uses symlinks but it’s better than no support.
https://github.com/hexsprite/claude-agents-md
What’s actually better is doing a symlink by hand. 1- if you didn’t know it you learn what’s a symlink; 2- if that’s in a git repo you share it with all your coworkers without all of them needing to install the plugin; 3- security-wise it’s way better than running some 100+ lines of Bash from a repo on GitHub.
Claude Code supports native imports: `@AGENTS.md`
To be fair if you can do it through some kind of plugin or skill it does spare you having a CLAUDE.md of `@AGENTS.md` in every repo individually.
You two realise that symlinks exist, right? That you need neither a "plugin" nor a "native import"?
Not that Claude Code is much better, I just hit this issue[1] because it seems setting DO_NOT_TRACK=1 seems enough to get a really strange behavior in the newest versions of CC.
[1]: https://github.com/anthropics/claude-code/issues/69238#issue...
Edit: I think I misunderstood OP, they're saying that CC is even worse and not better than Codex CLI.
Yeah exactly.
I'm not exactly building TUI's every day, but even i felt pain when i read that "small game engine" post
At least game engines manage to render their frames properly. Claude Code sometimes eats entire paragraphs of text output, resulting in things such as numbered lists jumping from 2 to 4 out of nowhere.
I'd just ask Claude to repeat himself at first but it happens so often that I actually made a little tool to dig up the output inside the session history and present it properly in a separate terminal.
> I'm not exactly building TUI's every day, but even i felt pain when i read that "small game engine" post
The bigger issue is they where somehow thinking it was "cool" and "advanced" while it's just a kludgy rube-goldbergy monstrous hack.
Which is of course only semi-working: to me the model thinking what you see is what it outputs in the TUI is the deal-breaker for me. It's of course not working like that for they're apparently, in their "game engine", converting on the fly a headless browser to approximated characters to display in the terminal. So the model tells you he did output ASCII but people are copy/pasting (because, yes, at times you want to copy/paste) Unicode chars.
Plenty of bug reports and pissed users.
That's the bigger issue.
The biggest issue is those thinking a 10 GB VM required to run a headless Electron browser and then fuxx0ring characters conversion is somehow an achievement.
Whats the small game engine post?
https://xcancel.com/trq212/status/2014051501786931427#m
Seeing Jonathan blow invoked and his response in the comments tickled me pink
Was it Casey Muratori that spoke about an AI educing allocations from 10k per frame to 200 per frame, but the manual programming work got it to 0 instead?
Right, just yesterday I found my laptop kinda hot. And what do you think, it was good old Claude deciding to load a few cores with completely idling prompts.
Yeah, somehow claude-cli sitting in a tmux session doing nothing uses my laptops battery twice as fast. Powertop suggests a ton of wakeups, but why? Is it busy polling the input or something?
I don’t know if you can resonate, but I feel like the Vibe Coded codex and Claude Code desktop apps are iterating way faster than they should be.
How are they iterating? I've not noticed anything major changing between the versions of my claude code. Other than that sometimes this version includes /btw and sometimes it's missing.
Surprisingly Kiro is fine (I work at Amazon but not at all on the Kiro team). I prefer it to anything else I've tried (except Amazon Q Developer in IntelliJ, but it's now deprecated).
Kiro is surprisingly good, if the interface for saving and resuming was slightly more reliable, and there was the hope of remote sessions, I'd probably switch to it full time. I vastly prefer it to having to fight against buggy force-fed features like UltraPlan or whatever.