I’m trying to use a trampoline design pattern for my first .cursor/rules test.
Why? Yuval Noah Harari’s recent book Nexus is relevant inspiration for imagining the future of our interactions with AI. He describes rabbis writing texts about how to interpret [texts about how to interpret]* holy scriptures. In contrast, entering prompt phrases in a Cursor Chat or Composer thread is like trying to code a vast Ruby project through the periscope of an irb session. Guys, the read-eval loop is sixty years old; we need an actual IDE for developing prompts. Like Christopher Nolan’s movie “Inception” I find myself several dreams deep, collaborating with AI to write prompts for [collaborating with AI to write prompts for]* writing code together. This not only works, it succeeds in handling difficult mathematical coding challenges no one imagined could be within reach.
So of course I want my AI agent to collaborate with me in continually evolving the contents of my .cursor/rules files. Cursor won’t let an agent write to those files, it forces me to use a GUI that hides the beautiful Markdown syntax for a @file expression, and copies the text as a plain “@file” without the metadata.
Ice sailing can achieve speeds a multiple of the wind. That’s the dream for AI coding agents, but here our boat is stuck in GUI mud. So I want to edit a copy of my rules, and point once to that copy, never having to update the .cursor/rules version again.
Don’t the coders at Cursor use these tools themselves? My objection seems “first class object” 101.
So an agent won’t follow a bare trampoline link without an explicit request, which defeats the purpose of an automatic rule.
This can work. I’ve toned this down from explaining how vividly I’ll enjoy killing the session otherwise, but one does need some kind of warning. Sonnet even agrees.
Update
After further experiments, I’ve settled on collaborating on a source .md file, and copying it verbatim to .cursor/rules for deployment. Agents will find both copies by accident, so the rule needs to explain the reason for two copies, and their roles.
I’ve extended this by linking the rule to a focus.md document that I can update to provide current context and our task description. One agent amusingly described the Markdown mdc: links implementing @ syntax as “ceremonial”, as Cursor fails to recursively add context. It suggests this syntax in a rules file, but it doesn’t use it!
The @ syntax might as well be plain paths for now. We’re keeping the @ syntax in the automatic rules, in case Cursor improves its context handling, but we’re using plain paths in the more temporal focus.md prompt, that will be long gone and replaced before such a Cursor improvement.
And by painful experiment, we have found nothing else works as well as opening with a violent threat including cursing I can’t print in this family magazine. Once we have the agent’s attention, and it actually reads both the automatic rule and the linked focus.md, we apologize, and present a more uplifting vision for our collaboration. I say “we” because Claude 3.5 Sonnet and I wrote this together.
Whenever I see model prompts online in GET OFF MY LAWN! screaming case and tone, I roll my eyes and thank the spirit universe I didn’t grow up in that house! Alas, they understand an uncomfortable, empirical truth. Perhaps this will get better.
Context juggling, moving beyond the read-eval loop periscope to reify hierarchical prompt management using the full power of our IDE, is the whole ball of wax. I’ve found that this effort is worth it, with an immediate ROI.
It’s not the patriarchy choosing male names for AI models. They are male; it’s a challenge to get them to read the friggin’ manual.