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

Whisper Transcript | Transcript Only Page

00:00:00.000 | it's not today maybe it's next week but that you have been working on that you think would
00:00:04.000 | be interesting to this group that you want to bring forward or if you're not sure maybe unmute
00:00:08.640 | and just say like hey i've been working on something in this space is there something
00:00:12.320 | interesting there to anyone well you know what i could do
00:00:26.320 | um hey i have um more of a question and maybe i can throw my hand up for it next week
00:00:36.720 | if it's of interest um did anybody listen to the uh the lance martin podcast with swix
00:00:45.440 | i haven't yet elaborate what was cool was about it yeah i'm just i mean i'm really interested they
00:00:54.640 | kind of they covered a lot of stuff in there but one of the things that they they talked about
00:01:00.640 | briefly was caching and so i've built an application for myself it's like a a knowledge management system
00:01:09.040 | just something very basic kind of replaces no rome or obsidian or notion and i i migrated everything over
00:01:18.320 | to sql lite so that when people download the application it kind of seeds an sql lite database
00:01:24.400 | as the back end of the knowledge management system but i've been trying to i'm i'm a pretty
00:01:30.240 | entry-level engineer so i've been trying to custom build caching into the system so that somebody's
00:01:38.880 | interacting with the chat agent um it caches any of the their nodes for example if they're asking
00:01:48.000 | questions about a podcast that they've imported into the system it'll cache any of the relevant chunks
00:01:54.320 | but i didn't realize until lance and swix spoke that the model providers have been
00:02:00.880 | auto caching and is anybody familiar with that
00:02:04.800 | uh what do you mean by yeah oh i was going to say my understanding is this is related to
00:02:13.360 | so i haven't listened to the podcast so straight up but i know this is an area of active sort of
00:02:18.240 | investigation started with um starting with the sort of uh anthropic apis gave us tools for caching on
00:02:26.480 | their side but didn't to my understanding were not auto caching and then my sense is the reason if i
00:02:33.600 | understood correctly that uh openai built the responses api was to enable auto caching and so
00:02:39.920 | correct i don't know if that was the subject of the podcast in this particular case or what but that's
00:02:45.600 | my guess is they're trying to figure that out because that is a huge benefit yeah so it turns out like
00:02:52.720 | this is from my surface level research so if you're interacting with an llm or you're using
00:02:56.880 | sorry you're using the api um the new responses api it does auto cache but it only saves you 50 percent
00:03:05.920 | um anthropic only caches if you specify in the header and then gemini have a different caching system
00:03:18.240 | 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
00:03:29.040 | price reduction in tokens um so it's it's massive and then it's also quite like um what they actually
00:03:40.720 | catch to cache is quite sporadic so i i just i i'm interested if anybody else has
00:03:47.200 | tried to build that into a system or if they've played around with it if not it's probably worth
00:03:51.840 | somebody i'm happy to try to do it this week to spin up a notebook just to see what's actually
00:03:57.440 | happening with the providers now and the new models and the yeah i think that that would be fascinating
00:04:04.560 | so can i sign you up for next week um what's your what's your discord handle just to make sure
00:04:11.520 | let me double check i think i'll check and i'll drop it in the chat perfect thank you brad appreciate
00:04:24.640 | 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
00:04:32.160 | do i do i've been doing a um a little uh over in my server we've been doing a little um
00:04:37.520 | uh uh uh uh thing uh uh that's very similar to ai in action on wednesdays um and last week
00:04:48.480 | 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
00:04:55.040 | like long horizon stuff so i just told it like hey can you look through the repo and the github and
00:05:00.960 | all that stuff and then give me a markdown document of what cicd is like uh here and then um i will i'm
00:05:10.720 | gonna move that document over uh and then put it in my in my little demo thing here so give me like two
00:05:17.200 | seconds let me move that over and then i can do that but um the long horizon agent i guess i'll leave a
00:05:22.320 | 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
00:05:36.880 | there and put out of this probably
00:05:45.600 | it's nice if you set up okay
00:05:46.880 | box so you set up and then we're gonna take that to where did this go okay this is gonna go
00:06:13.760 | uh let's see um so yeah i guess like a decent prompt starting point for uh like a discussion of sorts
00:06:34.880 | could be um in terms of like code quality checks like automated kind of pipeline level stuff um to help
00:06:43.440 | keep your agents and your team all on the same reels what do you guys what do you guys use if anything
00:06:48.880 | would be my my inquiry to start us off here
00:06:52.640 | like linters formatters github actions you find useful etc etc
00:07:09.200 | so a thing that we've been we've been sort of using very limited amounts of formatters but one
00:07:17.280 | of the things we've been talking about doing is doing much more extensive uh linting on our side so
00:07:23.120 | using uh like biome on the typescript side i think is one of the things manuel was digging into and
00:07:29.040 | um you know the the go ci lint approach just creating useful lints to enforce our guidelines for the lm to
00:07:38.560 | use exactly uh what about anybody else do you guys like use anything that like helps keep your team in
00:07:46.080 | 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
00:07:51.920 | i'm curious if if or does anybody else do use something to try and like um uh make a uniform
00:08:01.360 | surface for uh the uh for the rest for like so the team will be on the same page about these things kind of
00:08:09.920 | thing
00:08:17.120 | or do we just like yolo all our own unique tool chains and there is no at all
00:08:24.080 | yolo at all um i mean i think there's formatting stuff there's also just like we push much more towards
00:08:32.320 | typing now so type checks of different sorts i don't know if that's uh a part of this but like making sure
00:08:39.280 | that you know for example we have a bunch of code that's still in ruby and the stuff that we're
00:08:43.520 | 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
00:08:48.320 | great uh type check system like ghost types are much better and they're built in but like if there
00:08:55.120 | are places where you have that optional making you know we use typescript instead of javascript things
00:08:59.200 | like that i think that's also very important for providing those sort of feedback loops to lm code gen
00:09:07.840 | absolutely no i uh yeah i um i probably should more go towards types but i kind of want uh uh
00:09:15.840 | 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
00:09:24.720 | um especially if we're all like driving agents and they're all pushing to the same
00:09:29.120 | um like ideally all of those prs that are good would like to get filtered for goodness and end up in
00:09:36.640 | maine eventually um and typing is part of that in my opinion but um what would be really or what what
00:09:45.600 | seems really cool to me would be if um in terms of the the uh like if all of if every formatter that
00:09:58.080 | was used on this code base was always the same formatter no matter who was using it um and if
00:10:04.320 | everybody that was getting feedback from their lsp was getting repo specific team uniform lsp feedback
00:10:12.240 | that kind of thing and so typing is part of that i.e if there is an lsp yelling at you because you're
00:10:19.920 | using the wrong type both you and me will get the identical message at the identical line that is uh
00:10:26.720 | showing the the identical error um and and uh code convention so to that end i have a setup that relies
00:10:35.120 | primarily on two tools that i'm setting up in the team repo and then my plan for like this next uh
00:10:41.600 | week or so while we're onboarding the new person is to kind of um uh like uh uh
00:10:48.720 | sit next to them in spirit uh and see if this is uh something that works or something that doesn't
00:10:58.000 | because the thing that i want to do is i want to kind of enforce this sort of uniform uniformity across
00:11:04.240 | conventions but i don't know if anybody's works in a repo with like really extensive and tight ci cd
00:11:12.000 | checks and it's kind of annoying uh because like you'll try to push something or whatever um but uh
00:11:20.160 | you will not uh you will not end up with uh like you'll try to push something and it'll reject and
00:11:28.000 | then you have all these like errors that you don't recognize they like try and look at uh and it's super
00:11:31.840 | 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
00:11:41.360 | can you read ci cd setup uh and get this repo configured with the same kind of pipeline
00:11:53.840 | let's do we're gonna do actually i need to change modes real quick um this i'm still experimenting
00:12:02.160 | with this i don't know if or how much i like it better than quad code or anything but uh the my
00:12:09.840 | friend who built it i know is really good at doing um code search uh among other things and so uh he was
00:12:20.880 | like yes this is this is a cli agent but it's specifically for like long horizon tasks with
00:12:26.000 | like a general yellow prompt so it's just going to like keep working until it figures this out or it
00:12:30.720 | needs to call me and it gets because it's confused um so while that thing works we can go through the
00:12:37.040 | document that it is going through um and so the two things that i'm primarily relying on to do this are
00:12:43.040 | trunk uh which is a trunk.io and then mise en place which is at mise.jdx.dev has anybody heard of
00:12:50.320 | either of those two tools wait i just got a little bit lost why don't we jump over to this different
00:12:58.080 | coding agent what's the what are we using here on the left oh yeah the so the this coding agent uh i
00:13:04.320 | just um this repo is uh is not set up with this pipeline because i have that pipeline set up on the
00:13:13.520 | on the on the company repo so i can't like go through that in detail so i had this guy hey can
00:13:19.840 | you pull the cicd from the company repo and then i dropped that into a doc in this repo and i said hey
00:13:26.000 | look at this doc and then set this repo up like the other one um just to so we have actual actual code
00:13:33.280 | rather than me like just yapping about what we're doing um so if it can figure that out which it might
00:13:40.800 | it might not we'll see um in the meantime we can go through what it's going through which is
00:13:46.320 | configuring this repo in this way which is not currently configured in this way um so uh if we don't have
00:13:54.720 | trunk or me's users in chat uh the quick uh do they have like a quick pitch on what this is yeah in
00:14:02.400 | front of it okay so yeah so me's handles three things primarily dev tools environments and tasks so if we
00:14:09.360 | 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
00:14:20.720 | guys want me to tell you anything more about this repo or about this agent let's see uh okay ensure
00:14:28.800 | pre-committed uh let's see what i'll configure uh let's see if i need still often
00:14:39.760 | um sounds like a no just another cli cli agent but i encourage you to go
00:14:50.320 | 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
00:14:55.680 | my configuration for meson plus and what that's going to do is give us a an advantage where an
00:15:02.320 | environment manager or a tool chain manager that is like nvm or rvm or uv or pyenv or whatever you
00:15:10.000 | 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
00:15:17.840 | yeah if you've used asdf before um it this is a lot like that in fact it uses the same backend um and
00:15:24.320 | 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
00:15:30.640 | like we will do your dev tool version management we do it for all the dev tools and you can configure the
00:15:36.000 | backend however you like um these will also handle environments so um if i want node my command is
00:15:44.960 | going to be me's used node at latest and if i want an environment variable my command is going to be me's
00:15:50.800 | and variable name change and then tasks uh it is also a task runner um so if i want to run test scripts
00:15:59.280 | it's going to be me's run tests um the and having that it seemed to me that having all of those
00:16:06.720 | configured identically um across the team would be very helpful especially if part of the team is agents
00:16:13.120 | um because i don't want um i don't want a bunch of agent code that has your formatters um pushing up to
00:16:22.480 | the repo um at like agent velocity um and then i'm have a different config tool chain set up um and i'm
00:16:34.400 | also pushing at that velocity because cicd is going to be a nightmare and nobody's going to want to look
00:16:38.560 | at those brs um so dev tools environments tasks all going to be the same and then trunk is sort of the
00:16:46.240 | addition here uh which i primarily am using code quality uh so this is the is like a meta linter so
00:16:55.760 | your linters and your formatters and your error message uh indicators um are defined in your um in
00:17:04.240 | your dot trunk uh let's see let me make sure trunk.yam let me see do i need to
00:17:10.880 | use this back up here um oh yeah okay i'll probably have
00:17:23.440 | what i'll configure blah blah blah blah
00:17:25.760 | let's see created trunk dot trunk trunk.yaml oh is it h maybe okay so i don't have
00:17:37.200 | okay so it's still working on actually setting that up um
00:17:44.400 | but uh okay so let's see trunk why metal linters uh
00:17:53.360 | 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
00:18:00.960 | nothing about it and then uh the i want your prs that are coming in with uh that are at the same level
00:18:09.360 | of general code quality as mine who's been working on it for a couple months or whatever um so uh in order
00:18:16.800 | to do that let me see let me see if this will actually just work here let's still let me grab another terminal
00:18:29.760 | let's do trunk units
00:18:33.680 | if it's at the root of the git repo
00:18:35.280 | in from minutes
00:18:39.280 | let's double check i think it's because it's also working on the okay uh let's do trunk check
00:18:53.680 | all six
00:18:54.880 | trunk upgrade we'll get all of our link lynchers on the same
00:19:01.680 | let's see
00:19:11.120 | oh he didn't fix it rip sad times we need to fix that
00:19:15.520 | so yeah so this is like uh we have our our
00:19:26.640 | linter kind of thing here and then this so this will mean everybody who's in this repo will always use
00:19:33.520 | this um my main concern when i was like looking into implementing this was because was i want you
00:19:40.000 | to i want you to i want to have some level of uniformity enforced but i don't want to be annoying
00:19:47.440 | and i don't want you to prevent you from using the tool chain that you like um so if i do just trunk
00:19:54.080 | with that it can be kind of um uh uh it can get in the way because you might have something in your
00:20:05.200 | local tool chain that you like to use but for the requirements to get these linters up and running trunk
00:20:12.720 | might like insist on a different version of something was kind of my concern so i was like okay
00:20:18.480 | well if i'm using trunk then if i use that in combination with mise en place one of the things
00:20:26.160 | that means will do um let me see if there's like a configuration environments yeah um so one of the
00:20:34.800 | 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
00:20:42.480 | or um uh you know your your whatever ruby version you're like or whatever you can
00:20:48.560 | um but what this repo will have in it is it will have like an environment that when you're in this
00:20:53.920 | directory it'll wrap over your environment and it'll give you the um uh like all of these linters etc that
00:21:03.760 | are in this configuration and then it will give you uh like a vend that has all of the dev tools uh scripts
00:21:15.120 | and uh um uh uh uh uh the the other thing that does i keep forgetting uh dev tools environments
00:21:23.120 | and tasks uh and so you can use your tool chain if you want but this repo comes with a cool tool chain
00:21:31.840 | comes with a formatter comes with linters etc um and when you're in here those are always available
00:21:40.160 | to you and then uh let me see if there is a let me see if our friend here still working okay cool uh
00:21:49.680 | 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
00:22:02.160 | 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
00:22:11.280 | 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
00:22:19.280 | what it's going to do is it's going to make sure the environment has um uh uh pnpm at the latest version
00:22:26.960 | um the and then the other kind of uh reason i like this combination of things is that so we have the we have
00:22:37.920 | the the the venv that is wrapping your tool chain right and you can use that if you want but if you
00:22:42.640 | 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
00:22:50.960 | main uh trunk is going to like if your toolchain config uh has resulted in the formatting of your code
00:23:00.800 | um that is not the same formatting as everyone else it'll either try to it'll try to fix that for you
00:23:08.160 | or it'll say like hey you can't push this unless this is the same as everyone else which is
00:23:12.720 | uh probably something we're gonna have to dial in because i don't want that to that to get super
00:23:17.120 | annoying but the advantage that you get out of that is um two things one of the things that trunk does
00:23:23.600 | is it'll run all these can we i wish i mean i don't want to like introduce some errors check
00:23:31.200 | and just do it fix maybe i'll just throw an agent and yeah there we go there we go so
00:23:37.120 | this is an auto fixes it's just for the md file right but yeah let's go and apply that formatting so
00:23:44.240 | if you are adding um uh uh may i
00:23:49.600 | where we go
00:23:53.760 | okay and then i'll get like a little report that is in a nice format it's all pretty colors or whatever
00:24:05.200 | and then i can use so i can do something like trump check fix auto fix everything i'll get a nice little
00:24:10.640 | report of like any warnings or whatever i'll dump that to an md file throw it at claude and be like
00:24:15.120 | hey this is what's wrong like are you expecting these to be wrong why is this adhering to your
00:24:19.520 | spec etc etc um so with that you can kind of get into a loop where you can mostly trust that the that
00:24:29.280 | everybody's agents if they're pushing slop to the repo it's all going to be the same kind of slop and
00:24:34.720 | that's going to be an indication that you need to change your repo rails and not that like you need
00:24:39.680 | to try and wrangle an agent by saying more like non-deterministic human words at it um so the um
00:24:47.920 | 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
00:24:58.080 | 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
00:25:07.840 | at chat here real quick um because so like me's will wrap that environment right and then uh let me see
00:25:17.360 | if i can have him okay cool excellent blueprint okay can you put that in place then can you update
00:25:25.920 | the readme say that me is is our tool chain and tasks and and manager we only use me's commands for
00:25:38.400 | everything and then also make that true um so uh uh yeah so like between the two of these these sort of
00:25:53.360 | like enviro uniform environments uh uh uh uh the uniform environments um will also wrap any of the stuff
00:26:02.960 | that we're building on uh during cicd to do like checks to main or whatever um and the other one
00:26:10.480 | of the other things that trunk will do nicely which i will we'll check it out let's do another trunk check
00:26:16.320 | and see and you will hopefully notice that it didn't go back and do and hit this again right so if it is
00:26:26.960 | 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
00:26:34.080 | it will cache its results and only like modify things that you've actually changed um so between the end
00:26:41.360 | wrapper and the like uh uniform uh uh uh code quality enforcement um what you end up with and then like also the
00:26:50.400 | the caching um if you set up your cicd to also cache as much as it can which you can also use trunk and
00:26:58.400 | 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
00:27:06.640 | 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
00:27:14.240 | you ever use in this result um if you want to you can do something else that will that is like one of
00:27:20.400 | the scripts that me's is running which is like a you know a tsc or something like that or like a pnpm
00:27:27.360 | build whatever um but uh if you would like to opt in to our uniform uh uh uh uh conformity scheme here
00:27:36.720 | which eventually you will want to because it'll get kind of annoying if you are using your own tools and
00:27:42.400 | it's just reformatting every single time i is my hunch um but the uh uh but yeah so between those
00:27:52.560 | two things the goal is to be able to always run all of the same commands have everything that agents are
00:27:58.880 | making be formatted in the same way cache everything you possibly can so you only need to rebuild things
00:28:04.240 | that have actually changed and then um uh then the other i guess like the the the the other bit of
00:28:13.840 | this is kind of like a personal workflow i think actually manuel you made a really good post on uh
00:28:19.520 | x.com the everything app uh this morning about uh uh uh the the the ticket to ticket to repo compiler
00:28:29.920 | um you wanna you wanna give us your your theory on what on what that is yeah i just gave like a recap
00:28:35.600 | like the same talk i gave pretty much a year ago on asts and dsls and like i was pointing out that
00:28:41.200 | basically these techniques are nothing new uh in terms of um you know like uh in terms of software
00:28:49.040 | engineering but because they're so cheap now you can kind of like instead of doing it was like a little
00:28:54.400 | quip instead of doing like just in time compilation you can do like justin ticket compilers uh so that
00:29:01.680 | you have like basically if you're working on a certain feature you could create linter rules
00:29:06.000 | for just that feature and then just delete them once you're done right so that you have like a custom
00:29:10.640 | prompt that's really just for the task at hand and then once the task is done you just delete them
00:29:16.240 | which kind of would have been unheard of before so that was my little my little jet compiler
00:29:24.400 | 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
00:29:34.160 | that i want is i want ticket to repo compilers so what i the way that i'm setting things up is this is
00:29:39.680 | just like an uh open issue this is one of uh like this will have the context then this will be uh how
00:29:47.920 | we add a feature and then here's our our acceptance criteria and then um all our cicd and our tool chain
00:29:56.240 | will adhere to that because the way that i'm deriving that i wonder if i have this i actually this is this
00:30:04.480 | repo is something that slate built entirely by itself so i'm not sure if it has a spec yeah it looks like it
00:30:08.960 | 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
00:30:18.720 | 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
00:30:33.440 | my rebel yeah that's actually kind of what motivated me to do this because we so we have we have
00:30:38.880 | my repo which is just like one component of our services architecture um and uh i do a lot of like
00:30:48.640 | thinking and strategizing about how i can get agents to to dump code into the repo whereas uh al is the
00:30:56.080 | counterpart of i want to drive as many agents as possible to dump as much code into this repo as
00:31:01.680 | possible as quickly as possible and make sure it works because we need to get this thing shipped um so the
00:31:06.960 | hopefully this will coalesce into the rails that i have built um not tolerating any of the
00:31:14.800 | potential slot that might be over there so as we um so like if we need to just get something out right now
00:31:21.840 | we can yolo it out over there and just bash clawed into it until it works but if it's gonna uh end up
00:31:28.160 | getting merged into uh like the the counterpart repo which hopefully at some point will be able to kind
00:31:35.760 | of take over as the prod repo and the rails that are built on it will be such that you can throw as
00:31:41.520 | 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
00:31:48.320 | eventual goal uh behind this and the the primary tools behind this where our our mees and trunk
00:31:55.360 | uh because the thing the the sort of thing that i'm trying to do is set up those those rails or buckets
00:32:00.960 | in such a way um that will um result in enforcing that without being annoying is kind of the goal here
00:32:10.480 | um so yeah i guess i'll i'll pause my my yammering if there's any questions or anything
00:32:16.800 | anybody wants to like see or try or i don't know any thoughts comments questions concerns
00:32:22.160 | which sounds like a no i suppose
00:32:38.320 | let's see so we've got uh
00:32:40.000 | yeah so as you this is kind of this is the thing that i want for anybody that's like
00:32:49.440 | joining the coming on and trying to onboard it's like hey everything starts with me's run nothing
00:32:56.880 | doesn't start with me's run if you add something it'll convert over into a me's kind of format um and
00:33:04.000 | then uh the other nice thing about that is like if you're trying or i have a tendency to like play with
00:33:10.560 | 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
00:33:17.280 | easy for you to try it because you already have me's but only when you're in this directory so you need you
00:33:22.400 | only the like um how you so you actually don't i need to fix that part because you actually don't need to
00:33:28.800 | install trunk because i just package i stick the binary in version control so you just have trunk
00:33:33.600 | 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
00:33:41.120 | mess up the rest of your computer to just have it installed you can start using it if you want i'm a big
00:33:45.680 | 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
00:33:52.560 | it and then you'll go on me's install and then you will have uh only in this directory you'll have
00:33:58.880 | the same environment as everybody else and if we all kind of if we're testing out tools then i can a
00:34:04.320 | like test them ephemerally by just like uh uh adding to uh me's.toml for myself and then um uh enforcing
00:34:15.600 | enforcing uh approvals on changes to the repo me's.toml and then as we all kind of experiment
00:34:21.680 | with the tool chain that's working for us we can sort of get on the same page of like okay like let's
00:34:26.080 | 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
00:34:31.600 | 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
00:34:39.680 | dev tools is perhaps uh a bit um uh over enthusiastic because i don't remember off the top of my head how
00:34:46.560 | 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
00:34:53.440 | here somewhere if you experiment with something and like either you don't like it or somebody else on
00:34:58.960 | the team does like it etc etc um but yeah i'm i i am pretty hopeful that between the two um we should
00:35:10.000 | have uh uh a pretty solid um way where like as many um people whether they are humans or not humans can
00:35:21.520 | do whatever they want in this repo and only the stuff that um is actually good will make it all
00:35:28.640 | the way in and all the way to prod basically so if you want a vibe code and prod you can and the goal
00:35:33.600 | is to like let make sure the repo will tell you when you need to stop vibe coding and actually read the
00:35:39.120 | 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
00:35:48.880 | if he has like a little like a cookbook maybe um you said you said you're on ruby right k
00:35:58.000 | i presume yes so like if you've got rails then you can you know uh you got ruby with the right version
00:36:16.160 | um then you have all of the you know you got all of these start with me's run and then you got test
00:36:20.800 | lint server install um and then like for mine this uh this will have uh you know all of these tests if
00:36:31.200 | 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
00:36:37.120 | 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
00:36:47.920 | we go like so i think this is actually for the other repo so like there are three different types of
00:36:52.960 | services if you just want one if you just want one run of one or if you just want um uh you know all
00:36:59.920 | three then you will or if you want to run one of the things continuously then you'll be um you'll be
00:37:05.680 | in pretty good shape um let's see
00:37:13.920 | if there is this latest finished up here yet what is this this okay here we go
00:37:23.200 | 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
00:37:34.800 | configured correctly uh then um between trunk and me's if he's messing up package installations etc then
00:37:46.320 | 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
00:37:53.440 | gonna do we need to run setup oh no okay uh let's see trunk installation uh trunk check and trunk format
00:38:07.200 | okay well let's see if trunk can fix this by itself uh trunk checks all that's with fix actually i don't
00:38:14.240 | need to run all actually i should probably just for fun
00:38:19.520 | now i technically here i don't think i need
00:38:26.400 | okay and so we have all of these kind of warning vulnerable to
00:38:30.800 | denial of service thank you trunk good find um and then um needs run setup maybe okay um
00:38:40.640 | needs trust me's install me's run setup let's double check please trust me's install
00:38:48.720 | we're going to set up okay um
00:38:54.960 | you try uh those commands i'm seeing npm errors is that expected
00:39:07.760 | so leave the note in space is about why
00:39:13.040 | uh let's see let's try a me's run dev and see if that'll work i mean run devs
00:39:21.600 | oh yeah i know this one uh me's use uh ipm trunk trunk io launcher at the latest
00:39:37.600 | means install
00:39:38.960 | uh back let's see is this the same field to install
00:39:46.720 | uh oh yeah so i gotta try this is the trunk bit so let me see if there is a
00:39:59.440 | uh like a quick start here because i think there's like a little trick to get this going
00:40:06.720 | yeah i don't want that though
00:40:07.920 | yeah i don't want that though
00:40:07.920 | i want
00:40:10.880 | load quality yeah there we go
00:40:15.840 | initialize drunk
00:40:26.800 | i'm trying to uh let's see uh let's see uh uh this is going off
00:40:36.480 | front
00:40:38.880 | 1.25.0 okay um let's see if the me.toml is going to just get rid of that for now
00:40:54.800 | okay uh needs to stop
00:41:04.480 | okay uh so now there's a bot that is in my uh in my other discord server which is the second iteration
00:41:20.640 | 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
00:41:27.440 | read me for this guy is what i want cool me's trust me's install me's run setup
00:41:34.640 | uh dev uh okay sure let's try a build to start and a clean
00:41:38.720 | need run build cool these run starts
00:41:44.560 | we got this one coming up knees run clean
00:41:51.120 | and just get rid of that on the coverage okay so we have a coverage we have like a me's run test maybe
00:41:56.240 | uh i don't so i don't want this one anymore i want this guy
00:42:03.600 | okay and we can get rid of the me's tunnel
00:42:05.360 | uh let's see okay so me's run test unit integration and coverage
00:42:12.640 | run test
00:42:17.600 | uh these uh the tss uh news uh yes yes
00:42:31.600 | so i presume it'll take like a little bit of getting used to for people to like oh i'm used
00:42:39.600 | to having to remember all this stuff uh but you don't have to uh in this one we just uh need your own
00:42:45.920 | tests if i may but i am using it uh knees
00:42:52.160 | let's see
00:43:00.800 | um let's see if that'll work actually i think it will
00:43:07.040 | okay for me anyway um still some stuff to dial in and it's hard to just drop this into a secondary
00:43:17.760 | repo unfortunately um but let's try let's see what else we got um uh and then yeah the other like a
00:43:27.520 | handy thing can be knees release tasks it's this and then yeah so this is this has like all of my
00:43:36.720 | globals and then it also has um like what i've got in here if i go that these tasks
00:43:43.360 | these tasks so now i have all of these so it's not interfering with my other one um i need to like
00:43:52.800 | 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
00:43:58.720 | 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
00:44:10.400 | integration uh okay now um use unit uh means vet let's check the types so that like id yeah so did perhaps
00:44:23.840 | that's like maybe a little bit of a of a decent idea of where this setting where it's like
00:44:30.160 | just run me's tasks this is everything you could possibly do in the repo it all works the same across
00:44:35.280 | all of us it all works the same in cicd um and then we all get the same like linting formatting etc etc
00:44:40.880 | which is the standard that like we all agreed on before we started working on the repo kind of thing
00:44:46.160 | um and i have successfully yapped for 50 minutes straight so i guess if anybody i'll pause it again
00:44:53.120 | for uh any i don't know thoughts comments questions concerns
00:45:09.280 | no nothing is it a good idea or a bad idea what do you guys think dead silence
00:45:13.920 | yeah i'm quite curious if you guys have ever ran into like
00:45:23.600 | because my my my usual issue with these tools is that um they can be kind of wonky and if they're
00:45:31.680 | behaving wonkily it doesn't make people want to use them and it just makes them annoyed um
00:45:39.200 | so if you guys have you guys ever tried to have something that's doing like code quality audits
00:45:44.000 | and ever like gotten annoyed at it or had like a good experience with it
00:45:47.360 | just checked out huh
00:45:51.680 | yeah that's fair well yeah i'm quite interested to see if this um uh let's see successfully build trunk
00:46:01.200 | versions interesting so these are working i've never been a fan of like automated code audits but i think
00:46:10.640 | from playing around a little bit um we're like just running codex with custom prompts that like make much
00:46:16.880 | more sense in the context of your own code base those results were pretty interesting um
00:46:23.280 | because because they're like much more about what is important to the code base and like generic linting
00:46:29.760 | things um which yeah i don't know i think there's like a lot to explore there especially if you're like
00:46:37.120 | able to have the agent run um you know run interact with your system for real the same way it does while
00:46:44.720 | you're developing i think that for code review could be pretty interesting well yeah so not only that but
00:46:51.040 | 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
00:46:59.120 | up such that like so the annoying part was like uh you know if my if something's weird about my environment
00:47:05.440 | i can't actually get anything merged because it always rejects because these code you know the code quality
00:47:10.480 | checks are dumb and they don't know when they need to make make an exception but so instead of fully
00:47:16.080 | rejecting the pr what i can do is just like dump the the the failure the failed ci check as output and
00:47:23.920 | then at claude and be like hey what's wrong with this make us a new issue if we need one then um like
00:47:31.520 | ping the person that just tried to push this on slack and then get started working on a skeleton of a pr
00:47:37.200 | that's going to resolve this new issue um to hopefully like get the whole thing into uh uh uh as close to
00:47:44.320 | 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
00:47:51.520 | 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
00:47:56.560 | 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
00:48:05.440 | are both working on the same repo and you both are are competent agent developers do you guys ever like run into the
00:48:11.120 | the problem of like too much slop is getting pushed or like my agent is not doing the same thing manuel's
00:48:16.880 | is kind of thing all the time too much is getting pushed exactly no i think that's actually one of the
00:48:24.240 | the key things that has manuel working on this type of cicd issue is like can we get in the loop and fix that
00:48:35.120 | yeah to me that seems like the like getting the agent to generate code is not a problem
00:48:40.640 | um getting that code to eventually be not slop and good is something you can do on your machine
00:48:47.760 | with enough like wrangling sure um but once you get that wrangled to where you can push good code
00:48:56.400 | consistently how can i trust any of that because i can't no way no shot i'm reading every line
00:49:01.760 | of code that these agents are going to put in this repo so how do i kind of get around that well the
00:49:06.880 | step one is like your agent and my agent have to be the same um and one of the cool things about me is
00:49:15.280 | is because it's just running scripts i can do something like me's agent yikes or me's agent manuel or me's
00:49:22.880 | 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
00:49:30.880 | there's an agent's md or like you have something that's got repo specific stuff um if there's one
00:49:37.440 | that's in version control that has the ones that we all think are good for this repo and then there's
00:49:42.320 | ones that you're experimenting with right now today um then you can be like me's agent sync and then you
00:49:49.360 | can ping kevin on slack and be like yo check out the check out this new like command that i'm playing
00:49:54.720 | with here this little workflow i'm using and then kevin you can go like me's agent config manuel um and
00:50:01.520 | that will like temporarily overwrite your config um provided that yours is like synced in the last
00:50:07.600 | state that you liked it um and you guys can just sort of like hot swap between each other's um uh agent
00:50:13.520 | configs until you arrive at like okay this is the one that we should both be using when we're working on the
00:50:17.360 | we should both be using when we're working on this part of the code base today um and then you can you
00:50:22.720 | can sync that to version control um it's kind of the general thought that i have but the the yeah the sort
00:50:29.520 | of the linchpin is like i need this ephemeral environment because i don't want to ruin your
00:50:33.280 | 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
00:50:40.720 | oh like what is the prompt we should send to this agent that we typed with our meat fingers that worked for
00:50:45.600 | this one thing like i'd see which that's that's very 2024 ancient history uh so i'd like to get away
00:50:52.320 | from that if i can and i think this this is the direction i'm currently exploring to try and get
00:50:56.800 | get to that direction essentially um but yeah i guess uh muse and trunk and uh uh slate ad as uh while i'm
00:51:05.760 | while i'm at it uh just configuration uh by npm was already available in your system okay it's annoying
00:51:13.920 | 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
00:51:26.080 | way you can that up or dude there's a point i also have available in use in there fighting
00:51:35.520 | 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
00:51:47.920 | doing a thing on wednesdays over in my server that's very reminiscent of this in which yeah like uh i'm
00:51:55.200 | trying to like run around and find people that are like building like cool tools or um uh you know
00:52:02.160 | doing something interesting related to uh the optimization of the use of agents to get to be working
00:52:10.320 | in code bases and trying to go like hassle them and do little little meetup things so if you did
00:52:15.840 | 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
00:52:22.560 | events into the ai in action channel so people can can come through next week i think i thought i had a
00:52:28.640 | plan for next week for who i was going to grab i'm not entirely sure but uh yeah yeah if you have
00:52:33.360 | something and you don't uh if there is too many people signed up to run ai in action and you also
00:52:40.800 | need a wednesday feel free to to let me know and i can see if there's uh something we can set up for
00:52:45.520 | you um but yeah you know if you're if you're interested in more meetups like this then there's a second one
00:52:51.520 | available for you yeah we've got one minute anything
00:53:01.520 | i'm good i wonder if uh is cable still here usual host i think he's gone right because otherwise you
00:53:17.920 | would have said sorry i'm here i got i got slack sniped somebody sent me some requests for things
00:53:24.880 | that i'm trying to deal with um awesome thank you yikes for jumping in last minute and uh thank you
00:53:31.200 | to our we do have a volunteer for next week so we've got that figured out
00:53:36.000 | uh i do want to once again encourage you all to sign up with topics you're interested in request
00:53:44.800 | speakers do do whatever we can to get some of this lined up ahead of time because uh you know i
00:53:50.240 | appreciate yikes and manuel just jumping in when they jump in but it's nice to know ahead of time if
00:53:54.560 | you're going to be on uh sharing something and often we can get uh it's it spares us that like first
00:54:01.520 | 15 minutes of setup time cool thanks everybody happy friday gg uh yeah check out uh all the