The Agentic Power User's Playbook

This presentation is a collection of the workflows, shortcuts, and habits I use every day to manage swarms of agents without getting buried in context. Over time I've found that the biggest gains don't come from any one model or tool—they come from reducing friction, keeping conversations focused, and making it easy to move between different threads of work.

We'll go hands-on with the practical side of that process: creating aliases and keyboard shortcuts, resuming and forking conversations, compacting long threads, and spinning up dedicated sessions for research, notes, or experiments. We'll explore how custom instructions and lightweight automation can help agents take on different roles without polluting your main context, and how small workflow improvements compound over time.

We'll also look at how scriptable tools, open ecosystems, and a little bit of customization make it possible to shape your environment around the way you work instead of adapting yourself to the limitations of a particular app. The exact tools don't matter nearly as much as the patterns behind them.

The goal isn't to memorize commands or copy my setup. It's to develop the habits and muscle memory that let you move quickly between conversations, supervise multiple threads of work, and build systems that make agents feel less like a single chat window and more like a collaborative control surface.

Share with a coworker

Transcript

[00:00] Now we all know that typing out every single letter of your harness just takes way way too long. So the first thing that we need to do is change that to a single character, hit enter, and we are working with our agents. And this is immediately going to make us about 2, 000% more productive every single day. Now if you're wondering what x is, I have a function which shows where it is, so it's in my configuration files for zsh, and then I can look at the contents of it and you can see it's bound to codex in YOLO mode and that it passes the rest of the arguments, which means I can type X and then type a prompt right after it. So we'll do say hi, hit enter, and it will immediately invoke our harness with that prompt and start running.

[00:52] And this brings us to the scenario where I just exited out of that extremely important conversation I was just having and what's the quickest way to get back to it. You could try typing codex resume, but that is just so hard. Why not just do xr, hit enter, it'll show you your past sessions and allow you to select from them. So I can pick either the say hi I did just a second ago or the say hi I did in a bad take about four minutes ago. I'll hit the one from a second ago, hit enter, and I'm back into that conversation.

[01:29] Now you might be thinking opening the resume list and picking the most recent one seems like a lot of work and you're right. Why not just have an xResumeLatest, hit enter, and it takes you right back to the latest conversation. So if we look at the definition of these functions we know that X is YOLO mode and now we'll see that XR is resume and we can see that XRL is now resume last. And regardless of which harness you use, I strongly recommend opening your harness. Most of them if you hit the exclamation point it'll put you into shell mode.

[02:12] And if you type the name of your harness, dash dash help, hit enter, it will load everything that it can do into context, and then you can ask simple questions like, please come up with 10 interesting ZSH functions I could use to wrap around these CLI options. Then drop that into your agent and explore and have the time of your life. So you can see I didn't make it aware of my current ZSH functions and it's recommending CXInline, CXSearch. So this is a web search and then this would be Codex with terminal scroll back and spend some time familiarizing yourself with all of these possibilities. Now if you want to work like a caveman and actually edit files by hand You can create something like a FuncEd function, pass in the function that you want to edit, like x, and then for me this popped open the Zed Editor focused on the exact line where you can go and edit that function manually.

[03:16] But that's just ridiculous, Why type a couple characters when you could dictate to an agent and wait for a few minutes for it to do it for you. And if you're curious what the funcad function looks like, I definitely don't know what it looks like because I had an agent write it. You can see it's a bunch of variables and arguments and conditions. I never understood Bash before and I'm definitely not going to start now. So now that we can resume from our really important latest conversation, we'll often find ourselves in this scenario where we want to create a skill, but we don't want to do it in this conversation because this conversation is already on one track.

[03:52] And so we might think well should I fork the conversation in the current chat and then I have a copy of this conversation I can go resume later on, or should I just open a new pane and say XForkLatest. And now I have two separate conversations, each with different IDs, so they'll have their own conversation histories, where one can focus on being a skill creator, so Skill Convo, and the other one can focus on being just the Main Convo. Now at any time if you had started another conversation and the main conversation is no longer the latest, you can always XF the main convo and pass in the name that we named our conversation earlier. They'll go back and find it. Or if you set up a convention like you name your main conversation something like the letter M.

[04:50] You could simply set up an alias where you XForkM and that way you always have the main thread to go back to in just three keystrokes. Now what will often happen is you'll be in a main conversation or a conversation that's taking up a lot of tokens and you'll think, okay now it's time to compact because I just want to do something else in this fork. And you could definitely type out all of those characters if you wanted to because maybe your life is so easy and carefree you have enough extra time to type seven more characters. But that's not me, so we can type x fork main compact and then give it a prompt to compact with. What are the most important flags?

[05:31] And you'll see once we hit enter here, it's going to find the main conversation, resume it, and automatically begin compacting it, and respond with the result to our prompt up here. So you'll see that the context is compacted, and it's looking for the important flags. So if you want to actually learn stuff rather than asking your agent to do everything for you, you can scroll back up and read it. Or if you don't like reading you could just keep on dictating until things work like most people do. Then we can go ahead and compare the status of this conversation.

[06:03] Shrink this down a little bit so we can actually read it. And you'll see that this conversation is compacted. It's only used 23, 000 tokens so far with all the system instructions and skills and compacted conversation loaded in. And the super-duper long conversation that we ran before that we compacted, this one is all the way at 24, 000 tokens. So this will obviously make a much bigger difference as this main conversation goes into the hundreds of thousands of tokens.

[06:31] Now if you're super-duper into learning, you can set up an alias like xask, and if we look at this ahead of time, you'll see this function defined as a codec session with custom instructions. So the C flag is for config, and you can pass in instructions essentially as your system prompt. And so the instructions for xask are to keep notes in a .notes directory. I personally have .notes get ignored globally, and it's something I use in every single project. So if I type xask and I say what are flags, once I hit enter it'll start a new session with the prompt what are flags, but now the role of codecs has changed from the role it originally had.

[07:16] And you'll see that scrolling back it actually decided to create a file, what are flags, in my notes directory. And if I go ahead and background this conversation with Ctrl-Z, I can cat my notes directory, check for my what are flags file, hit enter, and read the note that it gave me. And this way as I'm going along I'm not polluting the main conversation with questions or even ideas or research or exploration. You can set up essentially what are custom agents with custom instructions and custom roles, and feed them really terse prompts and they'll still go through and take all of those actions. And so now that our codec session is in the background I'm going to type FG to foreground codecs again.

[08:01] It will unpause and now we can continue with the session we were in. And if I need to get rid of the content above it, or if I just want to keep that around for reference, that's your choice, but Ctrl-L will clear out everything above it. But you'll see we're still in the same session. If I press up it has those instructions, and if I ask another question it'll write more notes to my notes directory. And now because we're getting into the power of forking conversations and asking questions, we can actually take it a step further where if you're a giant nerd and you leave loops running for a very long time and you come back to your computer you have no idea what's going on you can ask it to explain.

[08:39] So I have this bound to XP and this is actually going to go and export the conversation based on where they're kept on the hard drive, feed that prompt back into a new session of Codex, and generate a nice visual for me to look at. Now this does take a bit more time since it's running an entire session and building out an MDX page to render, but once it's done it actually opens up a nice visual HTML page that I can read through and catch up on all the wildly complicated changes that may or may not have happened. So you can see we have a flag literacy pass and a nice little explainer talking about the steps we took throughout the conversation, how it ranked the flags for us when we asked about that, a nice little table of the flags and their behaviors, and then a how-to section and some suggestions if we're going to continue this conversation even further. So this entire workflow is built on the fact that you have all of your past conversations in a .codex directory inside of your home directory. And if you look through your sessions directory you could find all those files of previous conversations.

[09:44] So if we look at this export function which Xplain is built on top of, you'll see it uses an export markdown function, and if we look at that export markdown you'll see a whole bunch of node code that just parses through all the JSON and it's looking through the .codex directory somewhere up right here. And I have been meaning to extract this into a script but I've been super duper busy and I haven't had the time to dictate to an agent to do that for me. But the end result here is that I have a way to say export and once I run this it copies the latest conversation as plain markdown to my clipboard. So if I ever want to get a second opinion from a tool like Cloud Code I could just paste that in and ask it something like, please list the top 10 concerns with this conversation. I'm probably missing a whole bunch of stuff.

[10:39] Let that run and get a second opinion from a different model. All the while I can just continue on in my main conversation being productive. Now this is the part of the presentation where I would love to go on a rant about how important it is to own your tools and to use open source tools. Because if I show you that Cmux, the terminal that I use, has a CLI, so we'll run its help flag, and from the CLI you can do things like create new panes or close tabs or open browsers or have full control of your terminal and then you say to me, well my terminal doesn't do that, then I could say back to you, well find a terminal that does, or find something open source and ask an agent to add that feature. Because if I want to set up a keyboard shortcut which is mapped to my terminal and it finds the active pane, it finds the current working directory, and runs the export script.

[11:34] And all I have to do is press a single keyboard shortcut, and then I could view that anywhere. I'll just paste it here for no good reason. Then I get to brag about how I have a full set of custom keyboard shortcuts, which I can tweak at any time just by asking an agent to update them, which allow me to completely manipulate my terminal and do whatever I want with it. Now I do use software called Karabiner which allows me to remap my keyboard because I have this concept where in my active application if I'm holding down Escape, which is mapped to my Caps Lock key, so if I'm holding down Caps Lock and I tap X it's going to open a new pane and spin up Codex. And if I do Shift-Escape-X it's going to open a new Codex underneath it.

[12:16] So with any of the things I've done so far, if I find that it turns into something I need to repeat a lot, such as exporting conversations or opening new sessions or resuming sessions, it's only a quick dictation away from me being able to set that up. And I just make sure to keep an escape slash to open up my shortcut cheat sheet which is generated by an agent anytime I update my shortcuts. And this is something I tweak all the time as I'm going through various workflows and figuring out how I want all of my agents to be organized and work through my project together. And it's also why no matter how good they make their desktop apps, because I don't have full control over all of the actions in the desktop apps, I just have zero interest in using them. And that's because at any time I can just open a new pane with codecs, with a keyboard shortcut, I can feed in the Cmux help, and then I can just dictate, please help me brainstorm 10 different keyboard shortcuts I could use to manipulate and control Cmux.

[13:18] And then sit there and have a conversation with the agent about different keyboard shortcuts and what your workflows are, and if you want to export conversations and say, help me derive keyboard shortcuts from this conversation. And you'll probably find some things that just blow you away. Obviously these results are very generic, such as using the Vim keys for splitting directions, or other basic Cmux things, but start discussing with it the commands that are in your project that you might want to run in a new pane. Or if you want to set up a default layout where it opens a group of panes, all of them opening to different conversations from the past. The thing is I just don't want you to be stuck in the middle of a long conversation and be thinking to yourself, I know that shorter conversations yield better results.

[14:06] I know that agents work better when you keep context focused and on topic. I know that I probably should compact this conversation and fork it and start a new conversation before I do this research. I've just seen so many people who get stuck in one conversation and it's too difficult to exit out of that conversation and to take all of those actions on it. So you end up polluting that main conversation, you end up burning more and more tokens, you can get more and more off track, and you can get more and more frustrated with where was that thing in my conversation? Where did it go?

[14:43] How far do I have to scroll back? Did I lose it somewhere? I think if more people had control to just press a single keyboard shortcut that opened a new pane that forked the most recent conversation, then that's something we would do. And it's as easy to fork the most recent conversation as just slamming keyboard shortcuts. Then you can rebalance the panes with a single shortcut and you can jump over here and close the main pane.

[15:08] And now I have three individual conversations which can go down three different paths. And if I wanted to automatically inject one with verify all of the changes so far and another with please research to make sure this is up to date as of June 2026 and then if I find if I'm forking conversations and I end up typing the same prompt each time I could set up a brand new ZSH function and a brand new Karabiner shortcut which then starts the forked conversation with a prompt like please research and make sure everything in this conversation is up-to-date as of today or analyze this conversation to make sure we're not impacting performance in any way. You can essentially just throw scripts and throw agents and throw whatever you want at the conversations in the middle of the conversation and not interrupt your workflow at all. So that's the end to my rant. Essentially use open source stuff or at least stuff with an SDK where you can have agents just build all of these things for you so that it can control your agents whether they're in the terminal or some other application it can control with scripts and keyboard shortcuts and aliases or however you want to set this up.

[16:18] I know I'm using Cmux and Karabiner and Codex, but if for whatever reason I wanted to use different software all that did the same thing, I could take all of my rules here and say please update these to support this other software. And if there's one thing that agents are amazing at, it's translating one thing to another. And so I don't feel locked into Cmux or to Codex or to Karabiner other than the fact that it's just what's comfortable right now. A pattern I've personally established when I start writing way too many zsh functions is using a prefix like imp and then I use a dash so that when I autocomplete I can see a list of all of the functions that I've made so that when I hit tab to autocomplete I can see the list of all the functions that I've made underneath that prefix or scope, whatever you want to call it. And if I don't know what some of them do, from here I can just hit enter because imp- is a function itself, which will then print out a cheat sheet for me and show me all of my imps.

[17:19] Now these imps are all little self-improving agents, which is outside of the scope of this project, but I just bring it up to show that I've done a similar thing with NX, where I have these NX custom functions and if I expand that I can see what they all do. And then inside of a monorepo I can run one of these, like checking out my NX XGR to review the project graph, which will go and preload or preflight some context into the initial prompt and tell the agent to start looking into the project graph and help me understand it and what I should do next, that sort of stuff. So you can see this went through and explains the orders and contracts and my core libraries which you'll find inside of my project. And then if you combine that sort of stuff with the most recent changes in a conversation or git history you can start putting together some really interesting deep dives into the impact and investigation and optimizations you can make inside of your monorepo. Then similar to before you can set up shortcuts to spin up dev servers, to start debugging, to go grab your latest CI logs or anything that you're interested in that you do all the time.

[18:30] Either toss those into agents or write them into files or whatever you want to do. You just have complete control to customize this and build out your tools however you want. So thanks for watching, I'm John Lindquist. If you're interested in any of the stuff I've talked about, I'm going to put up guides over on Egghead so you can toss your agents at them and your agents can build out all of this stuff for you. And then you'll have time to come to one of my Codex Power User workshops where we can dive even deeper into this stuff.