Camp Coffee, Claude Skills, and Structured Output
Chris Gmyr (00:00)
Welcome back to the Slightly Caffeinated Podcast. I'm Chris Gmyr Yo TJ, so what's new in your world? been a few weeks.
TJ (00:03)
I'm TJ Miller.
Yeah, it's been a few weeks, man. honestly, like nothing crazy. We had, we had Halloween. We did some trick or treating. Uh, I stole some candy from my kid. Uh, also got some on sale candy for myself. That's my, that's my trick or treating. As I go out after, yeah, I go after Halloween and I get all this stuff at like 50 % off and like, that's, that's how I trick or treat these days.
Chris Gmyr (00:23)
going to the store the next day.
Nice, much less work.
TJ (00:32)
Yeah. So, just that in, you know, heads down on, on Prism trying to get, caught up on issues and PRs and get some features squeezed in there. So this, the, big one from this past week was, I got tool calling with structured output working. so that was something that we actually supported.
initially and then pulled it out because things were getting so complex. but it was actually not so bad to add back in. So now that the code base is like matured a little bit, it's evolved a lot since the last time I tried to do structured output with tool calling, that it really wasn't so bad, but it was just getting really gnarly previously. So that's why I had, had it, but ripped it back out, but we got it again now. So we have, ⁓
tool calling, structured output for OpenAI, Anthropic, and Gemini. So got the three major players out of the way. Other than that, Yeah, other than that, not a whole lot. Housework, lots of like, I have this big basement waterproofing project I've been working on. I have to do like a bunch of demo work and got most of the way through it. I've got like a little sliver of it left, but.
Chris Gmyr (01:26)
Awesome.
Very cool. That's big one too.
TJ (01:46)
Just, yeah, taking life on, man.
Chris Gmyr (01:49)
Yep, totally.
TJ (01:51)
Yeah, how about you dude?
Chris Gmyr (01:53)
Uh, yeah, we went camping. Um, that went well. It was pretty chilly in the mornings. I think it got down to like 35. Um, so everyone was a little bit chilly getting out of their sleeping bags, but made some like fires and had a good time. Did like a big long hike with some of the older kids and, um, yeah, it was beautiful. It didn't rain, which was nice. So was just like sunny and just a little chilly in the morning. Um, but it was perfectly fine.
TJ (02:15)
Mm.
Chris Gmyr (02:19)
Yeah, it was great. Everyone had a good time. I ate a lot of food, made some good desserts. My den learned how to make fires, which was pretty fun for them. So it was pretty cool. It was good. was a busy camping trip. It was jam-packed with activities and stuff. But it was good. It was good. And then got back from that. one of my sister-in-laws came in for the week Monday to Monday. So.
TJ (02:26)
Yeah!
Cool, yeah.
Chris Gmyr (02:41)
It was nice seeing her, and she does really well with the kids. So they were happy to play with someone else besides just us all the time. And yeah, just trying to kill it at work and have a bunch of different random projects going on, a lot of AI stuff. So I'm trying to get back into some API workflows and a few other things like that. So once I get that.
TJ (02:49)
Yep.
Chris Gmyr (03:05)
kind of narrowed down. I'm sure we'll be talking about it soon. So now you know a lot about APIs, so I want to bend your ear on a couple of things.
TJ (03:08)
Yeah.
Yeah, I've been into the API game for a little bit, but like, I'm definitely down to get my ear bent to a smidge on it, you know?
Chris Gmyr (03:19)
Yeah,
totally. So lots of future topics with that. But yeah, going well in general. yeah, that's about it for me.
TJ (03:31)
Yeah, nice, man. Yeah, that's cool, dude. I've been I didn't go camping at all this summer and that was kind of a bummer. I wanted to just like never got around to it. Hopefully I do a bit next summer. I know that the kiddo really wants to go and. ⁓
Chris Gmyr (03:44)
you go now
even though it's a little chillier like you guys have space to go?
TJ (03:49)
I don't know if I've got space to go before it gets too chilly. It's already been getting pretty rough. It was like 30 out this morning. so we're, we're getting into the, pretty cold weather and I don't know. I don't have, I have summer camping gear. I do not have, chilly camping gear. So I have like, you know, summer camping, you can get away with like a blanket.
And, you know, in this stuff, you need a sleeping bag and I don't have sleeping bags. So it would be, it would be quite, it would be a bit of a, yeah, it'd be a bit of a gear up in order to do it and a smidge of a deal breaker.
Chris Gmyr (04:14)
Gotcha. Yeah, that's probably a deal breaker.
Yeah, totally. Before we had kids, wife and I got mummy sleeping bags. I'm pretty sure they go down to like zero. So they're the ones that I take with us when it gets or has potential to get chilly in the morning. But otherwise, like he has like a 40 or 45 degree bag for like summer when it's a little bit warmer. And typically, like I'll just bring like a sheet and like an old blanket or something like that. We have like old camping bags.
TJ (04:37)
Yeah.
Chris Gmyr (04:52)
bedding, stuff like that. So I'll just bring that and put that on an air mattress. But yeah, if you don't have the warm gear, then probably, probably shouldn't venture out.
TJ (04:53)
Yeah.
Yep.
Yeah, we're out for the season, but we'll, we'll get back to it. Maybe, maybe I'll throw up the tent and we'll do like a backyard camp or something. You know, I've got, yeah, just go inside, whatever. Like, or can just like haul out blankets and it's not that big of a deal, you know.
Chris Gmyr (05:07)
Yeah, there you go. If you get too cold, just come inside. It's fine.
Yeah, totally. Bring a little space eater in there.
TJ (05:17)
Yeah, I could totally do that, right? That's
not cheating. Yeah, yeah. Cool, man. So you want to talk a little bit of coffee?
Chris Gmyr (05:21)
Nope, it's fine. It's fine.
Yeah, I mean, I don't have too much this week. I did grab a new bag of the Purity Secret Cups Beans. They pushed out a new release a week or two ago. I just added it to my subscription order, and it just came in yesterday or the day before. So I've got a little bit of time to break into that bag, but maybe for next week I'll have something to say.
TJ (05:52)
Yeah, I've got, I'm real low on the coffee stuff too this week. I still sipping on the, the hologram, loving the counterculture. Yeah. It's just like loving the counterculture stuff right now. So sticking with that. And then, I picked up a bottle of my, know, like a couple of weeks ago, I had like awful cold brew, ⁓ picked up with the bottle of the correct cold brew this time. So I've been.
Chris Gmyr (06:00)
Can't go wrong with that.
Yeah.
Nice.
TJ (06:16)
I've been enjoying that as my, like my second cup instead of making a, you know, a second French press, I can be a little lazy and just grab a nice coffee for my second cup. So now that it's getting a little chilly though, I don't know what I'm going to do.
Chris Gmyr (06:30)
Yeah, yeah, cold brew is still OK once in a while. I guess I can bring up coffee at camping because that's a drip. Our grubmasters who do like the food and drinks and coffee and grocery shopping and stuff like that, like they're really great. But we only have like the older like percolator ⁓ coffee pots where if you don't know.
TJ (06:37)
Yeah!
Yep.
Chris Gmyr (06:53)
You put a bunch of water in the bottom. There's like a basket on the top for the grounds. And as the water boils, it goes up through like basically like a stem or a straw in the middle. It spurts out all over the grounds on top. There's like a ⁓ cap to the percolator. It goes through the grounds and then back into the bottom water. So you like do that for a while, maybe like 10, 15, 20 minutes, and then you pull it off the stovetop and you have coffee. but it's. Can't fire coffee.
So there's going to be a bunch of grounds in it. It's not super always enjoyable to drink, depending on if you're a first in line or a last in line. So you could get a lot of the chunky grounds if you're last in line. But when you're cold and whatever, tired in the morning, basically anything goes. And it tastes good regardless. But for the way back home on Sunday, I did grab some
TJ (07:21)
Yeah.
Chris Gmyr (07:46)
Starbucks like mocha, like iced coffee, like energy drink type of thing. So those are pretty good. I don't drink on them like too often because it's like a bunch of sugar and stuff like that. But for like traveling and then like camping, like I'll just throw one in the cooler and have it on the way home. Trying to reset a little bit, get a little bit more energy back for all the cleanup and unpacking and cleaning and stuff like that. So yeah, camp coffee would not recommend unless you're actually going camping.
TJ (07:52)
Yeah.
Yeah, yeah, and desperate. Yeah, cool, man. You want to move on some coffee and dig into some cloud code?
Chris Gmyr (08:17)
Yep, yep. But it counts. It counts.
Yeah, lots of of Claude stuff ⁓ going on. So yeah, I know we talked a little while on the side and you brought up like Claude asking like clarifying questions when you were working through problems or code or issues or whatever. What's been going on with that?
TJ (08:29)
Yeah.
Yeah, yeah. So I've been leveraging that a lot. It's a feature that Cloud Code released a little while ago for it to be able to ask you questions. clarifying questions or directional questions, or just like it's a way to prompt you with multiple choice, with questions and answers. So multiple choice answers, multi-select answers. So it now has a structured
prompt for it to be able to ask you things. And it just started doing that. And I've been loving it. I've actually been now asking for it in my initial plan prompt. So it's like, hey, we're going to be working on this feature. So inside of that prompt, where I'm asking it to come up with a plan for how to tackle it, I'm like, ask clarifying questions, please. And it's something I've done before. But now that there's actual like,
Structured UI to be able to do that. I found it to be incredibly powerful So whether asking or you know, it'll oftentimes ask on its own if my prompt is vague, which I've been phoning it in I've been really lazy with my prompting lately and So it's been asking me a lot of clear clarifying questions But it's also asked some like very insightful questions where I was kind of had to take a step back and like
go pace around the house a little bit and think about how I wanted to answer it. I'm just like, no, that is actually kind of a profound question about this problem. And I really don't know how I want to handle it right now. ⁓ So I did that with the structured output and the structured output with tool calling. I had Claude do a fair bit of work on that, especially like I implemented one provider and then for the other two, I had Claude do the work and ask them like,
Chris Gmyr (10:10)
Yeah, that's awesome.
TJ (10:24)
very big architectural questions. And I was like, oh, wow, you're finger quoting, thinking about this pretty deeply to be asking these kind of insightful questions. So that's been an absolute banger of a feature.
Chris Gmyr (10:40)
Yeah, that's really cool. I haven't seen it too much, so I don't know if I have enough contacts built into my plans or prompts. I have seen it on occasion, but maybe not as much as if you have seen it. Yeah, when it comes up, it's been really good. And I've seen it probably more in the chat interface compared to Cloud Code.
I don't know that's because I've changed my prompting and settings in there to kind of question everything. Don't just accept what I'm saying. So that has been helping to, which I've moved that into not only the chat, but also like clock code. So I feel like that's been beneficial for sure.
TJ (11:16)
Yeah. Yeah. I stole your independent thought block. and you've been using that as well to just kind of like try and guide Claude to be a little less of a yes, man about everything. Cause that is like, that's super annoying. I want you to challenge me. want you to answer ask questions and, I want you to just like not assume like, yeah, you're absolutely right. Like, right. That's the running joke, right? You talk to Claude. Yeah, you're absolutely right. Like no.
Chris Gmyr (11:39)
You're absolutely right.
TJ (11:42)
challenge me a little bit, like push back a little. And it has done that of like, yeah, I want to like push back against your assumptions on this a little bit and then like ask me some questions. Like, oh wow, this is great. So yeah, I've seen it a bit. I've actually like spent a bit of time asking it to like ask questions. So to like utilize that feature a little bit more. But it's been, I really enjoy it. It's been super strong.
Chris Gmyr (11:44)
Yeah.
Mm-hmm.
Yeah, totally. Yeah, it's been great for like research tests too, which I've been doing a bunch of, not necessarily just like code. Well, like here's the problem. Here's what I've discovered. Like which way would you like to go? And then sometimes I asked like what it would prefer or recommend or suggest or are there other things that we need to like look into? So yeah, it's been helpful when it's come up so.
Probably need to prompt it more to do that more often.
TJ (12:38)
Yeah. Yeah. Yeah. The question stuff is great. I recommend like adding that to your prompt, have it ask you, ask you like clarifying questions or like ask it to ask you stuff. And it's, helpful for sure.
Chris Gmyr (12:51)
Nice.
TJ (12:53)
Cool. So moving on from like this clarifying questions, I think the next two topics that we've kind of queued up ⁓ go together. So there was this Reddit post about someone basically like brain dumping after six months of like heavy cloud code usage. And like, here's their like top tips. Right. And I'm sure we can link to this in the show notes, but this goes over
tons of stuff like background problem statements. It's like this huge post with like tons of tips and there's a repo that goes along with it that like has all of this stuff in there too. And I thought this was great. Like this is like such a great post and I think it aligned so well with the way that I've thought about Claude code and the way that I've been starting to use Claude code that it was.
a lot of validation for me about the direction that I'm heading with, like my usage and the things that I'm trying out. I definitely stole a couple of things from this post to use. but I don't know. Did you, do you have a chance to dig through this a bit?
Chris Gmyr (14:00)
Yep,
I dug through it. I also asked Claude to kind of summarize like high levels of it and then pull out specific asks. like definitely around skills, the hooks, the skills rules, configuration, and a few other things. So I want to, I think that's about as far as I got. And so I want to actually bring that down into Claude code and have it.
rework the skills that I have, maybe move some agents that haven't been as useful into skills, or break up some workflows a little bit more, especially with the skills rules like JSON and some of the hooks. It seems like a much better workflow than just hoping that Claude picks out the skills that you need when you need it.
TJ (14:46)
Yeah, so over the last few weeks, I've been experimenting with skills. So I experimented with agents. It was like, so I had set up a, like, Laravel PHP coding agent. So like, my goal was that it would, like, the main Clawed loop would handle planning and delegation. And then the Laravel PHP coding agent would, like, handle all the coding. So it would, like, the main loop would handle delegating out to the agent, and then the agent would do its work.
Now it was fairly effective, but the biggest problem was that like Claude started getting really weird about like, it was just like really sloppy execution.
It was like really sloppy execution. it would like invent CLI commands that didn't exist in order to invoke the agent. So it'd be like, try to, kept on trying to call it Claude hyphen code agent. And then like, like agent as an argument and just like doing stuff that like doesn't exist. And so I couldn't figure out why it was doing that, but then it was also creating like temp files and all sorts of crazy stuff to like pass context off to the agent.
Chris Gmyr (15:42)
That's weird. Yeah.
TJ (15:54)
And that was getting really annoying too, because I kept on having to like approve this stuff. It would interrupt the loop. It just like, but as long as I kept on like approving these things, it would eventually figure itself out and like get the job done. But it just would go about it in this like really weird way. So they launched skills and I was like, well, maybe let's try redoing this all under skills. So inside of Prism, what I have is I have a PHP skill.
a Laravel skill, a pest testing skill, and a planning skill. So these are like, I've put all those together. Like it's all my coding standards, architecture stuff. It's like each of those skills has everything that it needs. And so from this post, they talk about this like skill activation hook. So he wrote some type script, which compiles the shell command.
And what these hooks do is like post user input. So I type into my Claude code input, I hit enter, it triggers this hook and this hook goes through this skills JSON file. And it looks at like skill descriptions, keywords that it should use. And then it suggests skills to Claude to invoke. So instead of having to have in your Claude code, like your Claude.md file or in your prompt, like telling it to use skills or something.
There's now this like hook that's automatically going to inject into the prompt, these suggested skills to use based on the user prompt. And as part of this post, they said that like, that was one of the most like, that was basically like an essential thing to have as part of his workflow was this like automatic skill activation hook loop.
So I implemented that with my skills and I've been getting pretty consistent skill usage based on the ask, which has been fantastic. And like these skills don't have any like CLIs. They're super simple, straightforward. I'm not even using like progressive disclosure, which is something that they talk about in skills. Like they're just like big long markdown files with all the PHP stuff, like all my PHP rules, all my planning rules, like all this stuff.
⁓ so I've even noticed it invoking the plan skill before using the plan tool in plan mode. So like now plan mode is getting hacked with this, planning activation, like this planning activation loop and my planning skill, which is like, tries to guide it to do planning similarly to like what myself or like, you know, another human would try to, you know, go through. So,
Chris Gmyr (18:31)
Mm-hmm.
TJ (18:32)
I was super stoked that it even picked it up inside of plan mode and is using my planning skills inside of that. So that's been a huge unlock. And I've been using that for the past like two weeks or so. I've like, I think the last two weeks or so, it's definitely the last week. I don't know. This post is only eight days old. So, I guess I've been using this for the past week and it's been very effective.
So yeah, I think that's definitely like a big takeaway from this is using that skill activation hook and getting that configured. And I just even like, I cloned the repo into the Prism repo. So this like this Claude code usage repo, I cloned that into my Prism repo and then told Claude code does like set up the skill activation hook and
and configure the skill JSON file with all of my existing skills and Cloud Code set everything up for me. So I said, here's my skills, like create the skills JSON file based on my existing skills. And it configured the hook and took care of everything for me. So it's very easy. Like it was, easy to set up anyways, but it's easy to just have like ask Cloud Code to set it up for you.
Chris Gmyr (19:26)
You're cool.
Yeah, totally. Yeah, I got to go through this and have it set up some more skills and break apart some of the things that I have set up. Because I'd also like to cut down on just the general crufter, like over documenting things in the CloudMD file too. And I think skills is really nice because when we talked before,
All the skills are in a directory, so it has like the main skill file, but you can add more in there too. So you can add even more context or if you want to like bump your specific like formatting rules or like architecture stuff to like a separate doc, then that is not loaded immediately when the skill is invoked or scanned. So yeah, I think there's a lot more even potential in skills.
Maybe even compared to agents, I don't know. I just have to tinker with it more. But just getting them to be activated more often is a huge lift in improvement. Because there's been tons of times it's like, why didn't you use this skill? I have the front matter and the metadata and the keywords and stuff. It's like, oh, well, I don't know. I didn't see that.
TJ (20:48)
Yeah.
Yeah, I was able
to remove like a bunch of rules from my Claw.md file because like I had extensive text in there trying to get it to use the right skills at the right times. And so I was able to remove a bunch of that. So I got like a whole heap of like token savings because I just I don't need it anymore. There's now this like reminder flow in there. So that's been I think.
an essential piece of my new workflow. Like I feel like I maybe still want to revisit agents again, but this skills flow has been great. The biggest thing that I've been trying to figure out is like.
I will, guess like a couple of things like I've been trying to think about skills as like reusable packages, right? Like I want to take my PHP skill and I want to take it out of my Prism code workflow. And I want to put that into my Geocodeo repo workflow. You know, I want to just be able to like drag and drop these skills around to different places and be able to like keep them like modular. So like in that theory, then.
Do I just have one PHP skill and then let my Laravel and Pest stuff be progressive disclosure inside of that PHP skill? Or is it better having them as separate self-contained skills as a PHP skill, a Laravel skill, and a Pest skill, and then it like compose these skills together based on the task at hand? So far, every time I've asked Claude to act as a prompt context engineer and like,
figure out of like which way is better. It has consistently told me to like keep the modular approach and like let them all be separate skills. But there's something in me that's like maybe the more like proper finger quotey, you know, anthropic way would be to do it like as progressive disclosure. Cause they're all like kind of subsets of PHP. You're not going to typically be loading the Laravel one without the PHP skill. So
Maybe the PHP skill is really the root of it. And then you can like opt into, I'm also working with Laravel. Let me go look at these Laravel rules. I'm also working with pest testing. Let me take a look at the pest testing rules, you know, and then be able to like bundle that up and say, yeah, here's my do everything with PHP skill, you know? And so we use PHP unit still at Geocodeo. So like, maybe I add in a PHP unit skill to that path.
And now I've just got this like PHP skill pack that has all the stuff in it. It has all the Laravel, all the pest, all the PHP unit, like, you know, anything else that I want to squeeze in there.
Chris Gmyr (23:25)
Yeah, I think that makes sense because it almost seems like you're building up your own agent, right? Like your backend agent as this skill. And you'll probably have to have a default entry point. And because you're in Laravel and I don't know how much actual, more like vanilla.
PHP that you guys have in the code base, but I would probably have like the entry point as the Laravel skill. But if you need like follow up for PHP, PHP unit past whatever else, you know, after that, then those can be just sub docs like in there. Yeah, I could see that working out really well.
TJ (24:14)
Yeah, because the PHP skill has like all sorts of stuff in it about like making sure you're adding like declare strict types at the top of the file. And it's just got like a bunch of rules that I have around like coding and writing doc blocks and like what belongs in doc blocks, what doesn't belong in doc blocks.
So there's like a significant amount of like generic PHP rules that like apply whenever you're writing PHP. And then the Laravel stuff talks about like Laravel best practices, ⁓ know, service providers, container stuff, like how controllers should be written and things like that. So it feels like that's almost like enhanced on top of the PHP one. So like you're always going to want the PHP rules no matter what.
Chris Gmyr (24:47)
Hmm.
TJ (25:03)
because those are like the language level rules. And then the Laravel stuff is like Laravel specific things only. It doesn't touch on any of the language specific stuff. So I think like, I think the root has to be PHP because PHP is the root of Laravel, right? So if we're like thinking about that kind of structure, it's like, well, PHP is the foundation. And then on top of that, we have Laravel and on top of that, we have Pest and PHP unit and these other things.
Because I could also see myself having a JavaScript skill and then maybe progressive disclosure underneath that is how to work with view and how to work with React.
So I don't know, like I've gone back and forth on it, but like I've asked Claude to think through this exact scenario a few times and it always comes back to keep them separate. If your goal is to make them modular and keep them separate and then inside of those, you could use better progressive disclosure. So it did say that to that, like, well, based on Claude's docs on skills, you should be using
progressive disclosure already for what you have, you know, maybe go that route instead of like having your PHP or generic PHP one. But
but then have like more progressive disclosure about like PHP, like your generic PHP stuff. Then you're a Laravel one with progressive disclosure on the Laravel stuff, which I could see a big token savings by doing that. But then you're still getting back to relying on Claude to like invoke all of that stuff on top of it. And which is, it's not, I don't feel like it's super consistent about doing, which is where we have.
this Claude code skill activation hook trying to get it to use these things. So like, feel like progressive disclosure is back in that same bucket of like, you're hoping that it goes on to like, consume the things you're trying to progressively, you know, disclose to it. So
Chris Gmyr (26:55)
I would
hope like once the skill is loaded so like via the hooks it loads your you know PHP stack skill right then once it's loaded I would hope that it would then know what all the progressive disclosure like sub docs are and like kind of sub skills of that would be but I haven't done like any of that yet
TJ (27:15)
Yeah. So what it would do is like,
so what it would do is it would load the PHP skill and then see that there are things that are progressively disclosed, but like it's still, it's, it's still Claude's choice to like then go on and like consume the rest of the progressive disclosure. And I don't know how much I trust it to actually go on and do that.
Chris Gmyr (27:36)
Yeah, it is.
TJ (27:37)
But maybe
there, maybe there is a world where that does that, that, that makes sense. But there have been times where I asked it to do something and I watched it load the Laravel skill without the PHP skill. And I'm like, well, shit, you're going to be missing out on like a bunch of rules now, which is where I come back to. Maybe the Laravel stuff should be progressive disclosure because I need it.
If it's going to be loading the Laravel skill nine times out of 10, it probably should also be loading the PHP skill. And it's like, it's not consistently doing that. Like there, if I asked it to like do something with a service provider, I could see it maybe just loading the Laravel skill and not the PHP one. But if it's going to be writing a service provider, I want it loading all of my PHP rules too. So I keep coming back to like.
I need it to almost always load the PHP one, but then like, you know, if it's a Laravel thing, pull in the Laravel stuff. um, I don't know, maybe, maybe my hack Friday project for Geocodeo next week will be, uh, progressively disclosing all the skills under like a master PHP skill and just see how that feels for a week.
Chris Gmyr (28:46)
Yeah, yeah, totally. And it is, I don't know, pretty annoying that Claude has these things built into it. Like, that's why we have the front matter and the metadata on the skills, but then it doesn't use it, and we got to hack it with hooks to make it work a little bit better. Like, it just.
TJ (29:05)
Well, something that happens
later in context, right? You like, you fill up the context window of this chat. It's going to, it like loses attention the longer the context gets. So even though it like, it knows initially that it has these skills later in the conversation, it's going to forget that it has these skills, which is where the skill activation hook is really nice because later in the conversation, it's going to still be reminded to use these skills.
Chris Gmyr (29:17)
Mm-hmm.
TJ (29:35)
And so it's going to like, reflag the attention for like skill usage over and over again. which is good, but like it is, it is really annoying. I mean, this is like annoying about tool use inside of Prism too. At the end of the day, if you're not building deterministic workflows with Prism, then you're just relying on, you know, the language model to choose to invoke a tool, which
Who knows how good it's gonna be at doing that?
Chris Gmyr (30:01)
Yeah, yeah, totally. And I feel like I didn't save it, but I saw another Reddit thread about other hacks or tips that you could have within Clug Code. And I'll try and find the link, but one of them was to clear context more often. I know I mentioned to you on the side ⁓ that I turned off auto compact, which allows me to do it.
TJ (30:20)
Mmm, yeah.
Chris Gmyr (30:27)
when I need to do it. And I feel like I've gotten down to like 1 % or less and it's still going strong. And then I just like writ my compact message and save what I need to save and then continue on. But this other post mentioned doing it like earlier or more often, almost like you're committing code, right? To like clear up the context so it doesn't hopefully lose as much or get confused like towards the end of the
the context limit and kind of message thread. So I don't know. I'll have to tinker around with that too. But I feel like with all the changes going on, which it's great to see updates basically every day with Cloud Code and these new features coming out. But it seems like it takes so long and so much code and iteration to get to the point of deciding if something works well or not.
TJ (30:56)
Mm-hmm.
Chris Gmyr (31:21)
that something new comes along, and it changes the feature or the workflow or whatever. So it's been kind of hard to keep up on and tinker with it in an iterative way that makes sense and not just kind of throwing your hands up and be like, well, didn't work so well today, or maybe it'll work better tomorrow. So I don't know if you've felt that at all.
TJ (31:42)
Yeah.
Yeah, for sure. I think I'm like clearing context. Like I'm definitely big on clearing context. Like what I'll do is I'll have it do like a plan session and like maybe a big feature. So let's do a plan session on doing a tool use with structured output. Right. So I do the plan session after we're done planning. I have it like generate these like context plan files. Right.
And then I clear the context. like we're done planning. Now we're going to go into like implementing discrete pieces of functionality in here. And so I'm like, yeah, we're going to go in and we're going to do this piece of the plan, then clear context. Now we're going to do this piece of the plan. And so I do find myself like running clear context and like starting new cloud agents pretty frequently. Um, I very rarely get to a compact, um, but something else that came out of this Reddit post was the use of, um,
these like context files. And so in the post, they talk about it of inside this like dev directory. Basically what it does is it will create a plan file, a context file and a tasks file, like all markdown. And so it creates these three files. And then the goal is to like keep them up to date as you're as it's doing work. And so if you need to like cheat a compact,
Then before you compact, just make sure it updates these context files. And then you just start a new cloud session, mention the task at hand, and it should go in and go reread those three context files and then pick up where it left off. So that's something I was sort of doing before, but this kind of formalized that process into a little bit more
of like a formal process for handling these context files. So that's been also something that's been super popular for like bigger, longer running tasks is like, yep, here I can get, I can get around these compacts or I can get around, you know, clearing context more frequently because I know it has these context files. So, you know, Claude will know when to pick up.
and like when and where to like pick up and rerun on these like tasks and stuff. So that's been ⁓ very powerful.
Chris Gmyr (34:09)
Yep, that's another thing that I want to look at too, because that's very similar to. Agent OS and builder methods, because he has a bunch of commands and. Template files set up to basically do something similar like you make your plan, you make your ⁓ tasks, you keep those up to date. ⁓ There's a few other things built in there too, so it seems like a lot of it is, you know.
building up these like plans and contacts and like spec first development and things like that. So I wonder how much the two systems differ and how that performance is between all of them.
TJ (34:45)
Yeah, so out of this Reddit post, the two things that I took away were the context files. Like I said, that was something I was sort of already doing before, at least with plan files. But I like the way that it split out the plan, the context, and the tasks into separate directories. And then the other thing I took away from this was that skill activation hook.
So those are two things that I've integrated into my cloud workflow and I've really enjoyed them.
Chris Gmyr (35:12)
Yeah, I got to definitely add the hooks in. Like I said, I was starting out the other day and then got sidetracked with other things. So I have to get back to it. I feel like I don't have enough time to do all the fun things that I want to do.
TJ (35:23)
Yeah. Yeah, for sure. That's like, that's what I'm struggling with too, which is where I'm like, I'm so thankful we have hack Fridays, uh, every two weeks at Geocodeo because being that my title is like AI, like I get to spend time, you know, playing with this stuff and experimenting. And then all of that comes back out to, you know, uh,
the Claude workflows that we're using at Geocodeo too, so everyone gets to profit from that stuff.
Chris Gmyr (35:53)
Yeah, yeah, 100%. Well, while on skills, I know I sent you this on the side before, but I wanted to tinker with a skill. This is probably like a ⁓ couple weeks ago now, but basically to take a podcast and a transcript and convert it into something that I can put into Readwise. So Readwise is...
like a highlight like safer later it emails me every day and through the app and I can like revisit highlights and things that I've saved ⁓ over time. It also goes into my notion account and obsidian vaults for all these highlights. So what I wanted to do is like I was listening to a podcast that like a bunch of things like resonated with me, but I didn't want to like type it out or.
I don't know, process it like that. So I just grabbed the transcript and tried to build a skill around converting the high level takeaways and some supporting documentation and pushing it into basically a CSV that I could easily import into Readwise online. They have a CSV drag and drop upload thing. So yeah, I was tinkering around with that. then
through some more like iteration. I said like number the high level, you know, output of the transcript and let me choose like which ones that I want to keep versus like remove. So I could say like, you know, remove like three, five and nine because like, I don't really care to keep those. And then it'll spit out the CSV and then I can put that right into read wise. And then it syncs with all my other applications and stuff like that. Just.
cool because you can have the skill locally like with the cloud code, but you can also put it into cloud chat online. So basically I can take a transcript from anywhere, even like my phone or like when I don't have cloud code set up and push it into a new chat. And because I said like podcast and like read wise or something like that in the text chat, along with the transcript and a few other references, it just picks it up and
dumps it into a CSV with some options and choices and stuff like that. So it's like, oh, pretty cool.
TJ (38:06)
Mmm. Yeah, dude, that is so cool.
Chris Gmyr (38:08)
Yeah, so I think I still got to use it a little bit more. It worked pretty well for a couple of them. But yeah, just need to utilize it more and maybe do some tweaks and changes. it's, I don't know. That's what's really neat about skills too, because you can have it locally in Cloud Code. And if it's something that's either more generic or useful to put in chat, you can just upload them to the settings in Cloud Chat, which is cool.
But unfortunately, you can't really edit them very well in the Cloud Chat. You have to delete it and re-upload a zip file with all the files and stuff like that. So it's a little annoying to update it. And so what I did was pull it down into a new Cloud Code Skills project. And then I'll just iterate locally when I need to make some changes and then swap it out when it's done. But yeah.
TJ (38:42)
Mm-hmm.
Chris Gmyr (38:59)
variable skills.
TJ (38:59)
Yeah. Yeah,
man. Yeah. I bundled up my ghost writing skill for like writing blog posts or whatever. I bundled that up and shipped it into Claude desktop. And that's been, it's been super nice. Yeah. Yeah. Skills have been great. What what a, what a banger release. That's been cool.
Chris Gmyr (39:20)
Yeah, and I'm sure
it'll just continue to get better as people tinker with it and like people submit feedback and you know, it'll just get better over time like anything else. So yeah, looking forward to seeing what new changes are coming down.
TJ (39:34)
Yeah, man. Well, on that note, do you want to wrap up?
Chris Gmyr (39:38)
Yeah, let's wrap up. So thank you for listening to the Slightly Caffeinated podcast. Show notes and all the links and social channels are down below and also available at slightlycaffeinated.fm. And also if you have a question or a content suggestion, please go to the website and there's a link for that in nice form. So we'd love to hear from you. Thanks again for listening and we'll catch you all next week.
TJ (40:02)
Yeah, we'll see you.
Creators and Guests
