I apparently use Claude differently the most people who talk about using Claude on the internet.
I’ll typically have a bunch of short sessions over the course of a day. Anytime I start a task that isn’t going to very directly benefit from the existing context I start fresh.
I don’t find a lot of benefit in explaining the project overall to Claude — I’ve deleted a lot of that explanation from my Claude.md because it didn’t seem to impact much.
I typically start a task by pointing it to 1-2 files and giving it some explanation of what I want done, and it
figures it out.
Basically never hit context window limits or compactions, and can’t remember the last time I hit a 5 hour or a weekly limit.
I do something similar. I've recently started having a few "starting point" files to re-explain common context (less than thirty lines per markdown file, usually) that I can point the agent at at the start of a new session, each tightly scoped to a certain domain and/or task type. That's been nice to avoid repeating myself, without the side-tracking or over-aggressive biasing-towards-previous-conversations that I've seen happen if I use long sessions or let it try to decide on its own what to pull in from larger files or trees of files. Sometimes I'll tell it to update that file based on new info from a current task, but I keep tight control over what gets pulled into task start context.
They aren't really "explaining the project" either, but more module- or task-specific preferences, hand reference pointers, or other things like "there are mixed examples of how to do certain things in this project, prefer X to Y"
I keep doing this because it lets me experiment with different approaches to problems without risk of it fixating on things from a previous abandoned attempt, and particularly because sometimes I'm wrong and I haven't found the agent harnesses particularly reliable at taking my word for it from a POV of "yes I know I said we need xyz earlier, but let's please entirely forget about that."
I might be missing out on something but I never had to explain my project. Just give it a task, or if you really want to, type it quickly, then you are good to go.
I can’t imagine this being worth optimizing. The issue is never that Claude can’t figure out what the projects is about…
Am I missing something or does this project not solve a problem most regular people have?
There are many other posts here which agree with you. Filling context with what you think the model needs adds nothing and possibly just inflates context which is harmful.
A good method seems to be only make a skill or memory when the LLM gets something wrong, or if you actually observe it's always doing the same step and you can get the model to the same place with less tokens.
I’ve basically never edited a skill or memory myself. I make the LLM do it as part of the /handoff skill before I clear a session. That also includes pruning existing skills/memories and resolving any drift.
It's funny because with so many different implementations of /handoff, I wonder if anyone has benchmarked handoff-and-resume to figure out what the best performance implementation looks like.
Depending on the scale of the project and the complexity of the specific thing you need to work on, it's advantageous to bring specific context into the session instead of hoping the model will connect the right dots.
My employer is counting token usage, so explaining my project between tokens isn’t necessarily a bad thing. I am clearly a more productive engineer because of it \end{sarcasm}
I think the majority here have stated the same... That CLAUDE.md or AGENTS.md effectively do this. Either that or the readme.
The only tip I can give is that your skill that builds or wraps up work. You should have it update those files if anything has changed.
Claude/Agents files shouldn't be bloated, but should imho act as a basic amount of context on the project so your agent and skills can pick up and go, with even the most basic initial prompt.
> The only tip I can give is that your skill that builds or wraps up work. You should have it update those files if anything has changed.
Depending on the scope of work you’re doing, it might be better to have this removed from the context of the work that was done.
I keep a “Last Updated Hash” in my md and every so often will have the LLM pull a diff from that hash to the current head, then determine what doesn’t match.
CLAUDE.md is already a good system for context window management for all the same reasons that version control management of code is good.
And keeping a local copy of everything you ever told Claude in your context window is bad for the same reasons keeping a local copy of your code called My_Code_v3_final.zip is bad.
I never have to because I use a ticketing system the model goes through in addition to a CLAUDE.md file with a summary, including vision, goals, non-goals etc
Any tricks to get Claude to actually use the CLAUDE.md consistently? Many times now its completely ignored it, despite being short, concise + generated by Claude itself, and I see bug reports about this that are over a year old
Check out your session logs and review what is actually in the context window. I’m willing to bet that your CLAUDE.md is sitting close to the middle of everything in there. The current gen of frontier models tends to heavily weight the start and end of the current context so heavily that anything partway through may just be ignored.
I apparently use Claude differently the most people who talk about using Claude on the internet.
I’ll typically have a bunch of short sessions over the course of a day. Anytime I start a task that isn’t going to very directly benefit from the existing context I start fresh.
I don’t find a lot of benefit in explaining the project overall to Claude — I’ve deleted a lot of that explanation from my Claude.md because it didn’t seem to impact much.
I typically start a task by pointing it to 1-2 files and giving it some explanation of what I want done, and it figures it out.
Basically never hit context window limits or compactions, and can’t remember the last time I hit a 5 hour or a weekly limit.
I do something similar. I've recently started having a few "starting point" files to re-explain common context (less than thirty lines per markdown file, usually) that I can point the agent at at the start of a new session, each tightly scoped to a certain domain and/or task type. That's been nice to avoid repeating myself, without the side-tracking or over-aggressive biasing-towards-previous-conversations that I've seen happen if I use long sessions or let it try to decide on its own what to pull in from larger files or trees of files. Sometimes I'll tell it to update that file based on new info from a current task, but I keep tight control over what gets pulled into task start context.
They aren't really "explaining the project" either, but more module- or task-specific preferences, hand reference pointers, or other things like "there are mixed examples of how to do certain things in this project, prefer X to Y"
I keep doing this because it lets me experiment with different approaches to problems without risk of it fixating on things from a previous abandoned attempt, and particularly because sometimes I'm wrong and I haven't found the agent harnesses particularly reliable at taking my word for it from a POV of "yes I know I said we need xyz earlier, but let's please entirely forget about that."
I might be missing out on something but I never had to explain my project. Just give it a task, or if you really want to, type it quickly, then you are good to go.
I can’t imagine this being worth optimizing. The issue is never that Claude can’t figure out what the projects is about…
Am I missing something or does this project not solve a problem most regular people have?
There are many other posts here which agree with you. Filling context with what you think the model needs adds nothing and possibly just inflates context which is harmful.
A good method seems to be only make a skill or memory when the LLM gets something wrong, or if you actually observe it's always doing the same step and you can get the model to the same place with less tokens.
I’ve basically never edited a skill or memory myself. I make the LLM do it as part of the /handoff skill before I clear a session. That also includes pruning existing skills/memories and resolving any drift.
Even the /handoff skill was written by the model…
It's funny because with so many different implementations of /handoff, I wonder if anyone has benchmarked handoff-and-resume to figure out what the best performance implementation looks like.
I also imagine that varies by model.
Depending on the scale of the project and the complexity of the specific thing you need to work on, it's advantageous to bring specific context into the session instead of hoping the model will connect the right dots.
I guess that depends on the kind of project, how common the intent is, how self contained, etc.
Sometimes its good to start fresh. LLMs need large context restart's sometimes so they can better identify holes that they become blind to.
Back in the human age of coding, I felt the same way sometimes
How's it different to https://github.com/angelnicolasc/graymatter ?
With all due respect, this github repo looks really like an AI-generated project.
My employer is counting token usage, so explaining my project between tokens isn’t necessarily a bad thing. I am clearly a more productive engineer because of it \end{sarcasm}
IntelliJ handles this for you. Basically it sends half your project to Claude even if you're asking some question about Star Wars.
> IntelliJ handles this for you. Basically it sends half your project to Claude
Not sure I’d call that “stopping wasting my tokens”.
Yeah but it could have sent the other half of the project too.
How does this beat a Session specific README?
Doesn't Claude have memories like Codex?
It does.
I think the majority here have stated the same... That CLAUDE.md or AGENTS.md effectively do this. Either that or the readme.
The only tip I can give is that your skill that builds or wraps up work. You should have it update those files if anything has changed.
Claude/Agents files shouldn't be bloated, but should imho act as a basic amount of context on the project so your agent and skills can pick up and go, with even the most basic initial prompt.
> The only tip I can give is that your skill that builds or wraps up work. You should have it update those files if anything has changed.
Depending on the scope of work you’re doing, it might be better to have this removed from the context of the work that was done.
I keep a “Last Updated Hash” in my md and every so often will have the LLM pull a diff from that hash to the current head, then determine what doesn’t match.
CLAUDE.md is already a good system for context window management for all the same reasons that version control management of code is good.
And keeping a local copy of everything you ever told Claude in your context window is bad for the same reasons keeping a local copy of your code called My_Code_v3_final.zip is bad.
Exciting to see hooks used for automation.
But if I may, the need to manually update the context is a huge hurdle.
Automation like this is limited unless no human has to remember it. So perhaps you can save context during the PreCompact and Stop hooks.
I never have to because I use a ticketing system the model goes through in addition to a CLAUDE.md file with a summary, including vision, goals, non-goals etc
Any tricks to get Claude to actually use the CLAUDE.md consistently? Many times now its completely ignored it, despite being short, concise + generated by Claude itself, and I see bug reports about this that are over a year old
Check out your session logs and review what is actually in the context window. I’m willing to bet that your CLAUDE.md is sitting close to the middle of everything in there. The current gen of frontier models tends to heavily weight the start and end of the current context so heavily that anything partway through may just be ignored.
If it goes through all of it all the time, then it fits the “wasting token” description.
Anything in particular? Paca? I used forgejo for a while and it was OK.
If I need context for a session then that is output from a previous session, otherwise I find any “memory” functionality cumbersome.
I saw /graphify recently which cuts down on exploration cost and seems more appealing (although I haven’t tried it yet)
Nothing wrong with a toy project.
Why would you want a simple summarizer instead of frontier AI doing the summarization for you?
Bc frontier models are expensive and summarization is basic af
Compaction already drops nuanced and salient information. I wouldn’t want any additional amnesia from overly simplistic summarization.
Are there any benchmarks/evals to back the claims? Or how do you know that it helps reducing waste?
They don’t. It’s all based on FOMO. Like superpowers, the more the better.
My advice: the best claude is the raw claude, with some custom tailored skills. That’s it, no plugins.
Willing to try this but the author missed that Claude also has memory.md
The question I find myself asking very often these days: Is this better than asking claude to do the same things the plugin/repo does?
How is this different than just using a resume?