[00:00] So FileForge is a tool I made that packs up an entire project into a single text file. There's a very similar project called RepoMix if you prefer that one, so shout out to them. I had no idea this existed. I built mine based off a project called Git Ingest, and I'm adding a bunch of features around templating it stuff. And I get to have full control over it this way so it matches exactly with my workflows.
[00:21] And after I install it, if I type ffg, this will pack up my entire project into this single file. And you can see all of the files that were bundled into it. And this is a relatively small project. It's only around 27, 000 tokens. So if you look at the file, I'll just command click there, you can see project and some info about the project, and then all the files are listed, and then you can see all of the files are bundled.
[00:43] As XML tags, It's just what AIs prefer. And so I'm going to bundle this up. I'll just use FFG. You can exclude things if your project's too big. Just as an example, I'll exclude the github folder.
[00:55] It excludes everything in gitignore by default and binaries and some other common defaults. And then I'm going to copy this to the clipboard with "-y". So there's a few less tokens and it's copied to the clipboard. And I'm going to switch over to AI Studio. And if you want this as a desktop app you can just go to ai.dev and then click a button right here which will create the desktop version.
[01:19] Mine says open an app since I already did that. And I'm going to paste in my entire project, scroll all the way to the bottom with command down, and I'm going to dictate please suggest five new features I can add to this project to enhance the user experience. And then I'm also going to hook this into another tool I built, which is a WorkTree CLI. So I'm going to ask it to, after the suggestions, please generate a bash loop I can copy and paste into my terminal that wraps around the following command. And make sure each of the suggestion names for that loop are lowercased and dashed because they're going to represent directory names and branch names.
[01:55] And then I'm going to show the command here which will be wt and then new and then like suggestion and then dash I because I want to install with pnpm after each project is set up. So I'll run this and then after 20 seconds we have our suggestions and we have our command and shout out to Gemini 2.5 Pro which is an absolutely incredible model I use for this. And I just realized I made a mistake here. I said bash. I do want this to be zsh.
[02:24] Mac defaults to zsh. So that's on me. Please rewrite the command as a zsh for loop. And I'll let that run because if you run this in ZSH it's just gonna go through the loop one time. The for in is not gonna split this with the spaces.
[02:40] All right, so scroll down and I guess that's a nuanced enough difference the AI didn't pick up on that. So I'll say please use an array instead of space separated strings to support zsh. And then one more time. All right that looks better. So let's copy this and we'll paste it into our terminal here.
[02:59] And focusing on this part, this WT tool which you can install under my name and work tree is going to set up a new get work tree. It's going to set up a branch based on that name. It's going to install all the dependencies and then it's going to open it in cursor. So once I hit enter here a lot of magic is just going to start happening. So we'll smash the enter key and you'll see it created the new work tree with the branch, install the dependencies, open cursor.
[03:28] It's creating the next work tree, installing dependencies, opens cursor. Next work tree, dependencies, cursor. Work tree, dependencies, cursor. And then one last one since we did five. And I'm going to pull each of these into their own space.
[03:43] I like to think of these spaces on on OSX as like their individual thought, individual context, individual plan. So as I go back and forth through each of them I can kind of check on what's going on. So if I list the parent directory and then I grep for cursor history, You'll see this project and then all the work trees that we just created based on this project. And then this is a completely different project I'm working on. So I'll go into AI Studio, just kind of scroll up, grab each of these ideas.
[04:14] So date range filtering. We'll copy and then go find our date range filtering. We'll just paste that in the agent, send that, we'll go to multiple output formats, copy, find multiple output formats, paste that, send. We'll go here, select number three for manage Extracted Files. Go to Manage Extracted Files.
[04:40] Hit send. And go back. Conversation Statistics. Find Conversation. Hit send.
[04:48] And then go here, Direct File Opening, and Direct File Opening, and hit Send. So now we have five different instances of Cursor all working in different branches on the same project. And they're just kind of crushing away in their own context, kind of isolated into their own branch, so it's not going to impact anything on the main branch, none of these files will be changed, and you can go in and check on each of these as they make progress. One tip here is that Ctrl-R will allow you to quickly switch between projects. So you can Ctrl-R through each of these.
[05:25] Then you can just jump around and check on the status of everything that's going on. And the branch names and work tree names are visible up here. Now you will want to command comma and search for sound so that in cursor you can play a sound when a chat response is completed so you can get notifications of what's happening. And then once one of these is done I'll just command period to fix all auto fixable problems just to clean those up and then command period here to quick fix that. I'm hoping someday that agents once they're done with stuff will run the fix all auto fixable problems for us rather than sending that out to AI models.
[06:02] But anyway, once this feature is done, so like manage extracted files, I'm going to open the terminal. I'll command K and say copy the current branch name to the clipboard. Hit enter, hit run, or you can just like use your mouse if you want to and copy there. Either way. And we'll ctrl r to hop back over to our main project.
[06:25] I'll say wt merge and paste that in, and that will bring everything in that branch over into our main. Please make sure everything is working as you expect it to. And if you check your git status you'll see you have this one commit which is that one branch merged back in. If you're using git lens you can check on this here. It added this message of auto commit changes of manage extracting files.
[06:49] You can check on it see what it did. It updated the readme, updated the package.json, added some features in the index. Otherwise the other standard workflows is In one of these branches just tell the agent to commit and push in this branch and create a PR. So since we already merged this one in let's try commit, push, and PR. And I'll say with the GitHub CLI, and if you don't have the GitHub CLI installed, I strongly recommend grabbing that for creating and managing PRs from the cursor ID.
[07:19] Then this will just go ahead and add all the files and create a commit with a nice message and then push it. And I do have a rule set up for when it creates a PR to create a temporary file with a description. This way you can get a nice markdown description. So it says the PR is ready here so let's go ahead and open a window and we'll paste this in and open the PR and you can see that this has a description, Implementation, Benefits. Looks like my tests are failing on this though so I'll have to go in and look into that.
[07:51] But this represents a much more standard way of working where you're working with teams and your teams are submitting PRs and reviewing PRs. So the cursor rule I have if you look in here under rules I do have a section that talks about using the body file pointing to a temporary file and body files allow you to do like full markdown well formatted PR descriptions.