Back to Index

AI in Action Sep 26: Eliminating Agent-Generated Slop with Mise-en-Place & Trunk


Chapters

0:0 Introduction to AI in Action and community sharing
0:32 Discussion on auto-caching by model providers (OpenAI, Anthropic, Gemini) and its impact on token costs
0:47 Introduction to long-horizon agents and their use in generating documentation
0:54 Discussion on code quality checks, linters, formatters, and GitHub actions
1:10 The goal of uniform LSP feedback and consistent formatters across a codebase
1:32 Overview of Trunk and Mison as primary tools for enforcing uniformity
1:54 Deep dive into Mison: managing dev tools, environments, and tasks
2:22 Integrating Mison with Trunk for consistent code quality and environment wrapping
2:47 The concept of a "ticket-to-repo compiler" and custom linter rules for features
3:0 Strategies for managing AI agent-generated code and preventing "slop"
3:15 Leveraging Trunk and Mison for consistent CI/CD and ephemeral environments
3:30 Onboarding new team members with a standardized mis command set
3:55 Benefits of a uniform toolchain for experimentation and collaboration
4:6 Addressing potential frustrations with automated code audits
4:19 Using CI output to inform agents and automate issue creation
4:29 The challenge of managing "slop" from multiple AI agents
4:40 Hot-swapping agent configurations for collaborative development
4:54 The importance of ephemeral environments for experimentation without ruining local configs
5:14 Final thoughts and community plugs

Transcript

it's not today maybe it's next week but that you have been working on that you think would be interesting to this group that you want to bring forward or if you're not sure maybe unmute and just say like hey i've been working on something in this space is there something interesting there to anyone well you know what i could do um hey i have um more of a question and maybe i can throw my hand up for it next week if it's of interest um did anybody listen to the uh the lance martin podcast with swix i haven't yet elaborate what was cool was about it yeah i'm just i mean i'm really interested they kind of they covered a lot of stuff in there but one of the things that they they talked about briefly was caching and so i've built an application for myself it's like a a knowledge management system just something very basic kind of replaces no rome or obsidian or notion and i i migrated everything over to sql lite so that when people download the application it kind of seeds an sql lite database as the back end of the knowledge management system but i've been trying to i'm i'm a pretty entry-level engineer so i've been trying to custom build caching into the system so that somebody's interacting with the chat agent um it caches any of the their nodes for example if they're asking questions about a podcast that they've imported into the system it'll cache any of the relevant chunks but i didn't realize until lance and swix spoke that the model providers have been auto caching and is anybody familiar with that uh what do you mean by yeah oh i was going to say my understanding is this is related to so i haven't listened to the podcast so straight up but i know this is an area of active sort of investigation started with um starting with the sort of uh anthropic apis gave us tools for caching on their side but didn't to my understanding were not auto caching and then my sense is the reason if i understood correctly that uh openai built the responses api was to enable auto caching and so correct i don't know if that was the subject of the podcast in this particular case or what but that's my guess is they're trying to figure that out because that is a huge benefit yeah so it turns out like this is from my surface level research so if you're interacting with an llm or you're using sorry you're using the api um the new responses api it does auto cache but it only saves you 50 percent um anthropic only caches if you specify in the header and then gemini have a different caching system but it's it's massive like if in my the application that i built um the caching is like a 10 10 nearly 10x price reduction in tokens um so it's it's massive and then it's also quite like um what they actually catch to cache is quite sporadic so i i just i i'm interested if anybody else has tried to build that into a system or if they've played around with it if not it's probably worth somebody i'm happy to try to do it this week to spin up a notebook just to see what's actually happening with the providers now and the new models and the yeah i think that that would be fascinating so can i sign you up for next week um what's your what's your discord handle just to make sure let me double check i think i'll check and i'll drop it in the chat perfect thank you brad appreciate it yikes are you you set figure out a thing to go i'm not set set but i will i guess share something i do i do i've been doing a um a little uh over in my server we've been doing a little um uh uh uh uh thing uh uh that's very similar to ai in action on wednesdays um and last week uh i just had a friend come through who's working on a new like kind of cloud code ish um but it's for like long horizon stuff so i just told it like hey can you look through the repo and the github and all that stuff and then give me a markdown document of what cicd is like uh here and then um i will i'm gonna move that document over uh and then put it in my in my little demo thing here so give me like two seconds let me move that over and then i can do that but um the long horizon agent i guess i'll leave a link to uh which is at random labs dot ai um let's see sweet okay cool uh let me back up there back up there and put out of this probably it's nice if you set up okay box so you set up and then we're gonna take that to where did this go okay this is gonna go uh let's see um so yeah i guess like a decent prompt starting point for uh like a discussion of sorts could be um in terms of like code quality checks like automated kind of pipeline level stuff um to help keep your agents and your team all on the same reels what do you guys what do you guys use if anything would be my my inquiry to start us off here like linters formatters github actions you find useful etc etc so a thing that we've been we've been sort of using very limited amounts of formatters but one of the things we've been talking about doing is doing much more extensive uh linting on our side so using uh like biome on the typescript side i think is one of the things manuel was digging into and um you know the the go ci lint approach just creating useful lints to enforce our guidelines for the lm to use exactly uh what about anybody else do you guys like use anything that like helps keep your team in sync that's that is the goal of everything i've put together on this repo which i will go over um but i'm i'm curious if if or does anybody else do use something to try and like um uh make a uniform surface for uh the uh for the rest for like so the team will be on the same page about these things kind of thing or do we just like yolo all our own unique tool chains and there is no at all yolo at all um i mean i think there's formatting stuff there's also just like we push much more towards typing now so type checks of different sorts i don't know if that's uh a part of this but like making sure that you know for example we have a bunch of code that's still in ruby and the stuff that we're actively developing with the lm we've added sorbet it's a pain in the ass i don't like it it's not a great uh type check system like ghost types are much better and they're built in but like if there are places where you have that optional making you know we use typescript instead of javascript things like that i think that's also very important for providing those sort of feedback loops to lm code gen absolutely no i uh yeah i um i probably should more go towards types but i kind of want uh uh the at least for my goal so like one of the things a way that i i think in the id in the ideal world um especially if we're all like driving agents and they're all pushing to the same um like ideally all of those prs that are good would like to get filtered for goodness and end up in maine eventually um and typing is part of that in my opinion but um what would be really or what what seems really cool to me would be if um in terms of the the uh like if all of if every formatter that was used on this code base was always the same formatter no matter who was using it um and if everybody that was getting feedback from their lsp was getting repo specific team uniform lsp feedback that kind of thing and so typing is part of that i.e if there is an lsp yelling at you because you're using the wrong type both you and me will get the identical message at the identical line that is uh showing the the identical error um and and uh code convention so to that end i have a setup that relies primarily on two tools that i'm setting up in the team repo and then my plan for like this next uh week or so while we're onboarding the new person is to kind of um uh like uh uh sit next to them in spirit uh and see if this is uh something that works or something that doesn't because the thing that i want to do is i want to kind of enforce this sort of uniform uniformity across conventions but i don't know if anybody's works in a repo with like really extensive and tight ci cd checks and it's kind of annoying uh because like you'll try to push something or whatever um but uh you will not uh you will not end up with uh like you'll try to push something and it'll reject and then you have all these like errors that you don't recognize they like try and look at uh and it's super annoying um so let me uh see if i can go here and we can go up and we can go up and we'll run slates can you read ci cd setup uh and get this repo configured with the same kind of pipeline let's do we're gonna do actually i need to change modes real quick um this i'm still experimenting with this i don't know if or how much i like it better than quad code or anything but uh the my friend who built it i know is really good at doing um code search uh among other things and so uh he was like yes this is this is a cli agent but it's specifically for like long horizon tasks with like a general yellow prompt so it's just going to like keep working until it figures this out or it needs to call me and it gets because it's confused um so while that thing works we can go through the document that it is going through um and so the two things that i'm primarily relying on to do this are trunk uh which is a trunk.io and then mise en place which is at mise.jdx.dev has anybody heard of either of those two tools wait i just got a little bit lost why don't we jump over to this different coding agent what's the what are we using here on the left oh yeah the so the this coding agent uh i just um this repo is uh is not set up with this pipeline because i have that pipeline set up on the on the on the company repo so i can't like go through that in detail so i had this guy hey can you pull the cicd from the company repo and then i dropped that into a doc in this repo and i said hey look at this doc and then set this repo up like the other one um just to so we have actual actual code rather than me like just yapping about what we're doing um so if it can figure that out which it might it might not we'll see um in the meantime we can go through what it's going through which is configuring this repo in this way which is not currently configured in this way um so uh if we don't have trunk or me's users in chat uh the quick uh do they have like a quick pitch on what this is yeah in front of it okay so yeah so me's handles three things primarily dev tools environments and tasks so if we um or yeah i guess i should stop before i get get too going to going too far um uh is there uh did you guys want me to tell you anything more about this repo or about this agent let's see uh okay ensure pre-committed uh let's see what i'll configure uh let's see if i need still often um sounds like a no just another cli cli agent but i encourage you to go uh check it out since then i left a link in chat um so what it's going to do is it's going to set up my configuration for meson plus and what that's going to do is give us a an advantage where an environment manager or a tool chain manager that is like nvm or rvm or uv or pyenv or whatever you use for python um i don't know if there's one for go is there one for go i'm not a go person um but uh yeah if you've used asdf before um it this is a lot like that in fact it uses the same backend um and what asdf and me's try to do is they're like you don't need nvm or rvm or pyenv or any of that stuff like we will do your dev tool version management we do it for all the dev tools and you can configure the backend however you like um these will also handle environments so um if i want node my command is going to be me's used node at latest and if i want an environment variable my command is going to be me's and variable name change and then tasks uh it is also a task runner um so if i want to run test scripts it's going to be me's run tests um the and having that it seemed to me that having all of those configured identically um across the team would be very helpful especially if part of the team is agents um because i don't want um i don't want a bunch of agent code that has your formatters um pushing up to the repo um at like agent velocity um and then i'm have a different config tool chain set up um and i'm also pushing at that velocity because cicd is going to be a nightmare and nobody's going to want to look at those brs um so dev tools environments tasks all going to be the same and then trunk is sort of the addition here uh which i primarily am using code quality uh so this is the is like a meta linter so your linters and your formatters and your error message uh indicators um are defined in your um in your dot trunk uh let's see let me make sure trunk.yam let me see do i need to use this back up here um oh yeah okay i'll probably have what i'll configure blah blah blah blah let's see created trunk dot trunk trunk.yaml oh is it h maybe okay so i don't have okay so it's still working on actually setting that up um but uh okay so let's see trunk why metal linters uh the um yeah so we don't want to the idea is like i want you to be able to go into this repo and know nothing about it and then uh the i want your prs that are coming in with uh that are at the same level of general code quality as mine who's been working on it for a couple months or whatever um so uh in order to do that let me see let me see if this will actually just work here let's still let me grab another terminal let's do trunk units if it's at the root of the git repo in from minutes let's double check i think it's because it's also working on the okay uh let's do trunk check all six trunk upgrade we'll get all of our link lynchers on the same let's see oh he didn't fix it rip sad times we need to fix that so yeah so this is like uh we have our our linter kind of thing here and then this so this will mean everybody who's in this repo will always use this um my main concern when i was like looking into implementing this was because was i want you to i want you to i want to have some level of uniformity enforced but i don't want to be annoying and i don't want you to prevent you from using the tool chain that you like um so if i do just trunk with that it can be kind of um uh uh it can get in the way because you might have something in your local tool chain that you like to use but for the requirements to get these linters up and running trunk might like insist on a different version of something was kind of my concern so i was like okay well if i'm using trunk then if i use that in combination with mise en place one of the things that means will do um let me see if there's like a configuration environments yeah um so one of the things we'll do is it means we'll do is it will if you want to use like normal stuff like european pm or or um uh you know your your whatever ruby version you're like or whatever you can um but what this repo will have in it is it will have like an environment that when you're in this directory it'll wrap over your environment and it'll give you the um uh like all of these linters etc that are in this configuration and then it will give you uh like a vend that has all of the dev tools uh scripts and uh um uh uh uh uh the the other thing that does i keep forgetting uh dev tools environments and tasks uh and so you can use your tool chain if you want but this repo comes with a cool tool chain comes with a formatter comes with linters etc um and when you're in here those are always available to you and then uh let me see if there is a let me see if our friend here still working okay cool uh setting up kit hub hooks works for me um let me pull this a little bit so i can see okay uh let's see uh i wonder if i can i do me's install yet we have a me's trauma we do okay so this is a config file um i i use me's on my local this is like my tool chain manager so this works for me um and like so in this repo uh what it's going to do is it's going to make sure the environment has um uh uh pnpm at the latest version um the and then the other kind of uh reason i like this combination of things is that so we have the we have the the the venv that is wrapping your tool chain right and you can use that if you want but if you have your own tools like you don't you don't have to but when um when you are pushing a pr back up to main uh trunk is going to like if your toolchain config uh has resulted in the formatting of your code um that is not the same formatting as everyone else it'll either try to it'll try to fix that for you or it'll say like hey you can't push this unless this is the same as everyone else which is uh probably something we're gonna have to dial in because i don't want that to that to get super annoying but the advantage that you get out of that is um two things one of the things that trunk does is it'll run all these can we i wish i mean i don't want to like introduce some errors check and just do it fix maybe i'll just throw an agent and yeah there we go there we go so this is an auto fixes it's just for the md file right but yeah let's go and apply that formatting so if you are adding um uh uh may i where we go okay and then i'll get like a little report that is in a nice format it's all pretty colors or whatever and then i can use so i can do something like trump check fix auto fix everything i'll get a nice little report of like any warnings or whatever i'll dump that to an md file throw it at claude and be like hey this is what's wrong like are you expecting these to be wrong why is this adhering to your spec etc etc um so with that you can kind of get into a loop where you can mostly trust that the that everybody's agents if they're pushing slop to the repo it's all going to be the same kind of slop and that's going to be an indication that you need to change your repo rails and not that like you need to try and wrangle an agent by saying more like non-deterministic human words at it um so the um uh yeah so between trunk and me's uh on the the nice thing is that this works on any machine so it'll also work on any of the ci cd machines um to where i am running the tests etc um let me check uh take a look at chat here real quick um because so like me's will wrap that environment right and then uh let me see if i can have him okay cool excellent blueprint okay can you put that in place then can you update the readme say that me is is our tool chain and tasks and and manager we only use me's commands for everything and then also make that true um so uh uh yeah so like between the two of these these sort of like enviro uniform environments uh uh uh uh the uniform environments um will also wrap any of the stuff that we're building on uh during cicd to do like checks to main or whatever um and the other one of the other things that trunk will do nicely which i will we'll check it out let's do another trunk check and see and you will hopefully notice that it didn't go back and do and hit this again right so if it is already um that will happen if it's fixed but also if i chose no and chose not to fix it it won't it it it will cache its results and only like modify things that you've actually changed um so between the end wrapper and the like uh uniform uh uh uh code quality enforcement um what you end up with and then like also the the caching um if you set up your cicd to also cache as much as it can which you can also use trunk and me's to kind of help you do that um then uh like the only kind of command i ever need to teach anyone to use this repo it starts with me's and there are three verbs me's use me's end and me's run and that's all you ever use in this result um if you want to you can do something else that will that is like one of the scripts that me's is running which is like a you know a tsc or something like that or like a pnpm build whatever um but uh if you would like to opt in to our uniform uh uh uh uh conformity scheme here which eventually you will want to because it'll get kind of annoying if you are using your own tools and it's just reformatting every single time i is my hunch um but the uh uh but yeah so between those two things the goal is to be able to always run all of the same commands have everything that agents are making be formatted in the same way cache everything you possibly can so you only need to rebuild things that have actually changed and then um uh then the other i guess like the the the the other bit of this is kind of like a personal workflow i think actually manuel you made a really good post on uh x.com the everything app uh this morning about uh uh uh the the the ticket to ticket to repo compiler um you wanna you wanna give us your your theory on what on what that is yeah i just gave like a recap like the same talk i gave pretty much a year ago on asts and dsls and like i was pointing out that basically these techniques are nothing new uh in terms of um you know like uh in terms of software engineering but because they're so cheap now you can kind of like instead of doing it was like a little quip instead of doing like just in time compilation you can do like justin ticket compilers uh so that you have like basically if you're working on a certain feature you could create linter rules for just that feature and then just delete them once you're done right so that you have like a custom prompt that's really just for the task at hand and then once the task is done you just delete them which kind of would have been unheard of before so that was my little my little jet compiler yeah the um the uh at least like where i i guess i'm trying to make a uh uh jit or no jit the thing that i want is i want ticket to repo compilers so what i the way that i'm setting things up is this is just like an uh open issue this is one of uh like this will have the context then this will be uh how we add a feature and then here's our our acceptance criteria and then um all our cicd and our tool chain will adhere to that because the way that i'm deriving that i wonder if i have this i actually this is this repo is something that slate built entirely by itself so i'm not sure if it has a spec yeah it looks like it didn't use my usual workflow um but the uh normally um i use a kind of uh uh i use a kind of like spec to um uh uh spec to code kind of flow um and i build my cicd around that so the the yeah i was like i wish i my rebel yeah that's actually kind of what motivated me to do this because we so we have we have my repo which is just like one component of our services architecture um and uh i do a lot of like thinking and strategizing about how i can get agents to to dump code into the repo whereas uh al is the counterpart of i want to drive as many agents as possible to dump as much code into this repo as possible as quickly as possible and make sure it works because we need to get this thing shipped um so the hopefully this will coalesce into the rails that i have built um not tolerating any of the potential slot that might be over there so as we um so like if we need to just get something out right now we can yolo it out over there and just bash clawed into it until it works but if it's gonna uh end up getting merged into uh like the the counterpart repo which hopefully at some point will be able to kind of take over as the prod repo and the rails that are built on it will be such that you can throw as much slop at it as you want and all the slop will go away when you try to pr it in um is kind of the the eventual goal uh behind this and the the primary tools behind this where our our mees and trunk uh because the thing the the sort of thing that i'm trying to do is set up those those rails or buckets in such a way um that will um result in enforcing that without being annoying is kind of the goal here um so yeah i guess i'll i'll pause my my yammering if there's any questions or anything anybody wants to like see or try or i don't know any thoughts comments questions concerns which sounds like a no i suppose let's see so we've got uh yeah so as you this is kind of this is the thing that i want for anybody that's like joining the coming on and trying to onboard it's like hey everything starts with me's run nothing doesn't start with me's run if you add something it'll convert over into a me's kind of format um and then uh the other nice thing about that is like if you're trying or i have a tendency to like play with all of the cool new toys and if i find a cool new toy that's like very much working for me it's really easy for you to try it because you already have me's but only when you're in this directory so you need you only the like um how you so you actually don't i need to fix that part because you actually don't need to install trunk because i just package i stick the binary in version control so you just have trunk to start so the only thing you need to do is run one script to install me's and it won't um it won't mess up the rest of your computer to just have it installed you can start using it if you want i'm a big fan but um but you will you'll you'll run that one install and then you'll go you'll do a trunk in it and then you'll go on me's install and then you will have uh only in this directory you'll have the same environment as everybody else and if we all kind of if we're testing out tools then i can a like test them ephemerally by just like uh uh adding to uh me's.toml for myself and then um uh enforcing enforcing uh approvals on changes to the repo me's.toml and then as we all kind of experiment with the tool chain that's working for us we can sort of get on the same page of like okay like let's add that tool to this repo so all of the agents and all the rest of the team had you can like try it out and then if it's annoying you just uh um you can uh uh my it's occurring to me that my enthusiasm for new dev tools is perhaps uh a bit um uh over enthusiastic because i don't remember off the top of my head how to uh get rid of a tool that i've added to me is but i presume that there is a a command for that in here somewhere if you experiment with something and like either you don't like it or somebody else on the team does like it etc etc um but yeah i'm i i am pretty hopeful that between the two um we should have uh uh a pretty solid um way where like as many um people whether they are humans or not humans can do whatever they want in this repo and only the stuff that um is actually good will make it all the way in and all the way to prod basically so if you want a vibe code and prod you can and the goal is to like let make sure the repo will tell you when you need to stop vibe coding and actually read the stuff basically uh it's kind of kind of the goal can you see if there's a i'm trying to think if there if he has like a little like a cookbook maybe um you said you said you're on ruby right k i presume yes so like if you've got rails then you can you know uh you got ruby with the right version um then you have all of the you know you got all of these start with me's run and then you got test lint server install um and then like for mine this uh this will have uh you know all of these tests if you want to build a run you just set it up and clean it if you want to manage the server like here's uh the other repo has like me's run start db me's run uh uh like me's run start front end uh oh yeah here we go like so i think this is actually for the other repo so like there are three different types of services if you just want one if you just want one run of one or if you just want um uh you know all three then you will or if you want to run one of the things continuously then you'll be um you'll be in pretty good shape um let's see if there is this latest finished up here yet what is this this okay here we go you can see he's right yeah so well yeah so as you can see here um now that he if he can get it configured correctly uh then um between trunk and me's if he's messing up package installations etc then it's going to like lock him out etc okay so quick start commands uh let's do it let's see uh we're gonna gonna do we need to run setup oh no okay uh let's see trunk installation uh trunk check and trunk format okay well let's see if trunk can fix this by itself uh trunk checks all that's with fix actually i don't need to run all actually i should probably just for fun um now i technically here i don't think i need okay and so we have all of these kind of warning vulnerable to denial of service thank you trunk good find um and then um needs run setup maybe okay um needs trust me's install me's run setup let's double check please trust me's install we're going to set up okay um you try uh those commands i'm seeing npm errors is that expected so leave the note in space is about why uh let's see let's try a me's run dev and see if that'll work i mean run devs oh yeah i know this one uh me's use uh ipm trunk trunk io launcher at the latest means install uh back let's see is this the same field to install uh oh yeah so i gotta try this is the trunk bit so let me see if there is a uh like a quick start here because i think there's like a little trick to get this going yeah i don't want that though yeah i don't want that though i want load quality yeah there we go initialize drunk i'm trying to uh let's see uh let's see uh uh this is going off front 1.25.0 okay um let's see if the me.toml is going to just get rid of that for now okay uh needs to stop cool okay uh so now there's a bot that is in my uh in my other discord server which is the second iteration option on my uh bot so cool i've got a dev let's see what else i might uh i might be i might do here read me for this guy is what i want cool me's trust me's install me's run setup uh dev uh okay sure let's try a build to start and a clean need run build cool these run starts we got this one coming up knees run clean and just get rid of that on the coverage okay so we have a coverage we have like a me's run test maybe uh i don't so i don't want this one anymore i want this guy okay and we can get rid of the me's tunnel uh let's see okay so me's run test unit integration and coverage run test uh these uh the tss uh news uh yes yes so i presume it'll take like a little bit of getting used to for people to like oh i'm used to having to remember all this stuff uh but you don't have to uh in this one we just uh need your own tests if i may but i am using it uh knees let's see um let's see if that'll work actually i think it will okay for me anyway um still some stuff to dial in and it's hard to just drop this into a secondary repo unfortunately um but let's try let's see what else we got um uh and then yeah the other like a handy thing can be knees release tasks it's this and then yeah so this is this has like all of my globals and then it also has um like what i've got in here if i go that these tasks these tasks so now i have all of these so it's not interfering with my other one um i need to like i would like to get it to a point where i can just drop it into a repo and it can insta work but we will see um yeah me is end check we have here there we go cool um me is let's see format cool thanks uh me is integration uh okay now um use unit uh means vet let's check the types so that like id yeah so did perhaps that's like maybe a little bit of a of a decent idea of where this setting where it's like just run me's tasks this is everything you could possibly do in the repo it all works the same across all of us it all works the same in cicd um and then we all get the same like linting formatting etc etc which is the standard that like we all agreed on before we started working on the repo kind of thing um and i have successfully yapped for 50 minutes straight so i guess if anybody i'll pause it again for uh any i don't know thoughts comments questions concerns no nothing is it a good idea or a bad idea what do you guys think dead silence yeah i'm quite curious if you guys have ever ran into like because my my my usual issue with these tools is that um they can be kind of wonky and if they're behaving wonkily it doesn't make people want to use them and it just makes them annoyed um so if you guys have you guys ever tried to have something that's doing like code quality audits and ever like gotten annoyed at it or had like a good experience with it just checked out huh yeah that's fair well yeah i'm quite interested to see if this um uh let's see successfully build trunk versions interesting so these are working i've never been a fan of like automated code audits but i think from playing around a little bit um we're like just running codex with custom prompts that like make much more sense in the context of your own code base those results were pretty interesting um because because they're like much more about what is important to the code base and like generic linting things um which yeah i don't know i think there's like a lot to explore there especially if you're like able to have the agent run um you know run interact with your system for real the same way it does while you're developing i think that for code review could be pretty interesting well yeah so not only that but but they're uh uh for cloud code and codex you can use those in ci um so i could or i plan to set this up such that like so the annoying part was like uh you know if my if something's weird about my environment i can't actually get anything merged because it always rejects because these code you know the code quality checks are dumb and they don't know when they need to make make an exception but so instead of fully rejecting the pr what i can do is just like dump the the the failure the failed ci check as output and then at claude and be like hey what's wrong with this make us a new issue if we need one then um like ping the person that just tried to push this on slack and then get started working on a skeleton of a pr that's going to resolve this new issue um to hopefully like get the whole thing into uh uh uh as close to full auto as i can get it um if i can just if i can just me's build feature uh that's kind of idea the the ideal state that i'd like to get this to i'm not sure i can get it all the way there but i think i can get it close um uh which is also nice because like uh or like manuel and and kay you guys are you guys are both working on the same repo and you both are are competent agent developers do you guys ever like run into the the problem of like too much slop is getting pushed or like my agent is not doing the same thing manuel's is kind of thing all the time too much is getting pushed exactly no i think that's actually one of the the key things that has manuel working on this type of cicd issue is like can we get in the loop and fix that yeah to me that seems like the like getting the agent to generate code is not a problem um getting that code to eventually be not slop and good is something you can do on your machine with enough like wrangling sure um but once you get that wrangled to where you can push good code consistently how can i trust any of that because i can't no way no shot i'm reading every line of code that these agents are going to put in this repo so how do i kind of get around that well the step one is like your agent and my agent have to be the same um and one of the cool things about me is is because it's just running scripts i can do something like me's agent yikes or me's agent manuel or me's agent kevin um and what that can do is just uh uh it can if there's like a dot claude md here or if there's an agent's md or like you have something that's got repo specific stuff um if there's one that's in version control that has the ones that we all think are good for this repo and then there's ones that you're experimenting with right now today um then you can be like me's agent sync and then you can ping kevin on slack and be like yo check out the check out this new like command that i'm playing with here this little workflow i'm using and then kevin you can go like me's agent config manuel um and that will like temporarily overwrite your config um provided that yours is like synced in the last state that you liked it um and you guys can just sort of like hot swap between each other's um uh agent configs until you arrive at like okay this is the one that we should both be using when we're working on the we should both be using when we're working on this part of the code base today um and then you can you can sync that to version control um it's kind of the general thought that i have but the the yeah the sort of the linchpin is like i need this ephemeral environment because i don't want to ruin your config in your tool chain um but i also want us to not have to like go at human speed to try and figure out oh like what is the prompt we should send to this agent that we typed with our meat fingers that worked for this one thing like i'd see which that's that's very 2024 ancient history uh so i'd like to get away from that if i can and i think this this is the direction i'm currently exploring to try and get get to that direction essentially um but yeah i guess uh muse and trunk and uh uh slate ad as uh while i'm while i'm at it uh just configuration uh by npm was already available in your system okay it's annoying and when i run the stuff it's still like yells at me is that fine i e these mans are running anyway is there a way you can that up or dude there's a point i also have available in use in there fighting um yeah i guess we'll we'll do a we'll do a quick slate plug there and then uh i'll do a quick plug for i'm doing a thing on wednesdays over in my server that's very reminiscent of this in which yeah like uh i'm trying to like run around and find people that are like building like cool tools or um uh you know doing something interesting related to uh the optimization of the use of agents to get to be working in code bases and trying to go like hassle them and do little little meetup things so if you did not get enough ai in action in your life um i will i'll drop uh i'll forward the the one of the luma events into the ai in action channel so people can can come through next week i think i thought i had a plan for next week for who i was going to grab i'm not entirely sure but uh yeah yeah if you have something and you don't uh if there is too many people signed up to run ai in action and you also need a wednesday feel free to to let me know and i can see if there's uh something we can set up for you um but yeah you know if you're if you're interested in more meetups like this then there's a second one available for you yeah we've got one minute anything i'm good i wonder if uh is cable still here usual host i think he's gone right because otherwise you would have said sorry i'm here i got i got slack sniped somebody sent me some requests for things that i'm trying to deal with um awesome thank you yikes for jumping in last minute and uh thank you to our we do have a volunteer for next week so we've got that figured out uh i do want to once again encourage you all to sign up with topics you're interested in request speakers do do whatever we can to get some of this lined up ahead of time because uh you know i appreciate yikes and manuel just jumping in when they jump in but it's nice to know ahead of time if you're going to be on uh sharing something and often we can get uh it's it spares us that like first 15 minutes of setup time cool thanks everybody happy friday gg uh yeah check out uh all the