Problem: bad decisions and short sighted solutions due to the LLM not having enough context before acting. They'd read one file, or a few segments of a set of files using a super conservative offset and limit, guess about the rest, apply a patch, run a unit test and then tell you with its entire chest that the code is production-ready.
Those bandaids over time became debt, drift, complexity. Unnecessary LOC in a codebase where I find myself wondering is this thing even making me more efficient or should I be in VIM more often and just save myself the API costs (I use OpenCode + OpenRouter and have been known to blast through hundreds of dollars a day in spend using Frontier models).
I found that, for whatever reason, LLMs respond to role-play strongly vs just repeating rules using increasingly alarming markdown context decorators. And so I created a persona for it that is pretty funny when I explain it to someone else but has been really effective.
`monkdev` gives the LLM tools to get enough context before writing any code, it helps you to front-load the context window. This is a more expensive approach, on paper, but the money saved through efficient workflow has definitely worked out for me so I figured I would share it with others.
The main workflow after installing the MCP is just to type `meditate` in a fresh session. If you want to ingest a certain area of the code specifically, `meditate on <x>` and it will use the tooling provided to aggressively read files. It will confirm the token count and confirm with you before it starts just aggressively `cat`ing your entire project.
It's quite opinionated in terms of structure with Bun and Rust mono-repo projects so if you find it useful fork it and plug in your own preferences. I wanted to avoid making the system prompt too long since I've found that it loses significance in the behavior of the agent if it is over a certain size.
I'm also interested to know if anyone is using something similar or if it can be made to be more efficient.