LongCut logo

From Slack to Shipped - How I Build Features with AI Agents

By _jakeCodes

Summary

## Key takeaways - **Slack Idea Spawns Linear Issue**: Go to Slack to explore adding local storage as a way to save tasks without a database, then the agent reviews the code for the React router starter and adds a Linear issue to implement this work. [01:47], [02:22] - **Four-Stage Agent Workflow**: The flow is task creation, context gathering, execution, and then a review stage, which is a lot better than just having a casual conversation with AI. [03:54], [04:04] - **Subagents Auto-Fix Test Failures**: When tests fail, codegen spins up a sub agent that looks at the failures and runs its own process to go and fix those. [06:16], [06:39] - **PR Reviews Become Linear Subtasks**: After Copilot reviews the PR, a Slack snippet extracts the reviews and turns each comment into sub issues underneath the parent Linear issue with acceptance criteria. [07:27], [09:38] - **Provide Branch Context to Codegen**: Always provide codegen with the target repo and base branch for the PR to ensure pull requests go to the right feature branch instead of main. [12:22], [12:44] - **Watch AI for Test-Driven Hacks**: AI might add things like allow client submit for tests that you don't want in production code if it's just focusing on passing tests. [14:47], [15:17]

Topics Covered

  • Slack Sparks Linear Issues
  • Codegen Auto-Fixes Test Failures
  • Linear Centralizes AI Workflows
  • Context Prevents Wrong Branches
  • Execute Toward User Outcomes

Full Transcript

It is the end of my work week and I am running on caffeine fumes. So, what a better way to end the week with a video.

I wanted to show off what I'm working on, the workflows that I am using today as the developer in this modern AI

world. And I'm working on a React router

world. And I'm working on a React router starter that's runs off of bun. I'm

trying to get everything to work really quickly so I can do live deploys just on Verscell or whatever you want to deploy to so that you can just deploy

and test and do TS code type checking all that super fast and also have good cursor rules for building on top of things also working with lambda concuri form

library something that we've built on top of shad cn and react router 7 for super simple form implementations And so hopefully that'll make some of

this development go quickly. But right

now I've just got a very basic to-do app. They have an advanced form. I

app. They have an advanced form. I

haven't dug too much into all this. It's

been like vibe coding. I've been focused more on the fundamentals of like how tests will work, how GitHub actions will work, cursor rules structure. So I

haven't focused too much on what this app does yet.

And then also like the motto repo setup.

And currently you can add a to-do. You

refresh goes away. I'm not going to add a database to this. That's a little overkill for the starter, but I do want to be able to at least save it within my

my browser local storage. So, I'm going to go over to Slack and I'm going to say

let's explore adding local storage as a way to save our tasks because I don't want to use a database,

but I do want to be able to see my tasks and statuses get updated between page refreshes. Let's keep it simple. Maybe

refreshes. Let's keep it simple. Maybe

some small utility functions, but not too much scope. review the code for React router starter and add a linear

issue to implement this work into our starter team.

So what this is going to do is it's going to go and review the code that we have and think about the idea that I've

created and set up a linear issue for me. So,

some of this is a little overkill because I probably would just work in Slack or even create it directly in linear, but I wanted to showcase how these all work together because it it

can create some pretty cool workloads.

You can do expiration in Slack, get your ideas down, and then once you have your idea down, you can work within linear and I'll showcase that. I'm going to

pause this for now and let this work for a while and I'll come back. It took a few minutes, not terribly long. Like I

said, if I was just like vibe coding on this, I'd probably write out a little more structure and just have it code it directly, but I wanted to show this whole process. So, what this is doing is

whole process. So, what this is doing is it brings in the environment, sets up our cursor rules, give it some context.

It went through and looked through my codebase and structure as it's was wanting to create a context helpful linear issue. And so here it's done

linear issue. And so here it's done that. It's created a linear issue. And

that. It's created a linear issue. And

if I go to my linear, I can see that my triage here and it included my Y summary, some data flow, which is cool.

If I was actually caring about this and working on it, I'd probably want to review this and determine if it was good or not. But the flow that I want to

or not. But the flow that I want to showcase is task creation, context, gathering, execution, and then a review

stage. And I think if you start with

stage. And I think if you start with those kind of processes, that's a lot better than just having a conversation with casually with AI. up your like

research and planning phase, your execution phase, and then finally a review phase. We'll go through each of

review phase. We'll go through each of those and I'm going to go ahead on market in progress and assign it to codegen. And that's going to have me as

codegen. And that's going to have me as an owner and then a codegen as the agent on this. And what you can see now is

on this. And what you can see now is that it's going to take in this task create a new cogen session.

And so I can actually open it here. This

is a new session and it's going to start executing and create a new pull request for me. So like I did last time, I'll

for me. So like I did last time, I'll pause let come back and showcase some of the progress it's making. And then yeah, hopefully let's get to a pull request

and see what happens. Checking on its progress so far. It's pretty cool to see how much it can do and understand from

really just small initial prompts and basically having it make its own prompt and then spinning it off to exe pause again because I don't know how much got left. I'm not really keeping track of

left. I'm not really keeping track of time here. I think about 8 minutes in

time here. I think about 8 minutes in the video, maybe 12 minutes or so into this process. It's added a bunch of code for

process. It's added a bunch of code for me. I have a new puller request I can go

me. I have a new puller request I can go check out.

Also, this is was me watching it in this UI. I could have been keeping up here

UI. I could have been keeping up here also and it's going to add a comment I think here in a second based off and summarize the work that it did for me.

But because I have it in linear, I'm doing my project management in linear, I can track progress on things. And we'll

see in a second. I like to add subtasks from code reviews under here and manage those. Let's see. Hopefully. Oh, these

those. Let's see. Hopefully. Oh, these

Oh, this is cool. Okay, so the linting did fail and some of this is from old code. One thing

that's cool about codegen is when your tests fail, it will actually go and it will spin up another agent

and they call this like a sub agent. So,

it's going to automatically come in to my PR and in case that I do get an error, say one of my test is working is broken or the code that I put up broke another

test, it can come in here, look at the failures, and then run its own process to go and fix those. So, I'm going to

let it do that so we can get to a clean state. And I'll come back. In the

state. And I'll come back. In the

meantime, I'm just going to go ahead and run what I wanted to do. And this is a co-pilot request. So, Copilot will

co-pilot request. So, Copilot will review the code. Codeilot's going to run a review here. It's going to take a few minutes, I believe. Pretty quick.

Usually, Code Rabbit sometimes takes a little bit longer. I don't know how they do those up. Um, so I'm going to keep an

eye out for a co-pilot review.

So here's my summary and it's got some reviews that it's suggesting we change. Copy my pull

request. We'll go back to Slack. So

request. We'll go back to Slack. So

going to copy in my pull request here.

And I have a snippet here for a pull request prompt. So, I'll include this in if I read a blog post about

this, I'll include pull prompt for how to extract reviews for a pull request.

And it's going to come in here and it's going to find and share with me all of the reviews for that pull request. So, I'm going let

it do that. This one won't take as long as mostly all it's doing is just looking at using the GitHub CLI and reading the comments on the PR and then it's going

to tell me what I should pay attention to. So, basically, we're done here and

to. So, basically, we're done here and I'm going to make this into some subtasks. And let's go back to

some subtasks. And let's go back to this. I'm going to copy this.

this. I'm going to copy this.

copy URL here and then let's turn each of these

issues into sub issues underneath our linear issue. So what I'm expecting to

linear issue. So what I'm expecting to be done is for each of these requests or these comments, I'm going to go over here and linear becomes kind of

your command center.

So, we have this parent issue that's in progress here. Go here. Boom. And then

progress here. Go here. Boom. And then

we have our review here. That's cool.

So, it's really neat to have this set up because they're crafting a great developer centric experience around all

this.

I'm hoping when this finishes, we'll see, I think, four subtasks pop up. So, I'll pause for a minute and skip

up. So, I'll pause for a minute and skip to that.

We see it created four sub issues, which is what I was expecting. So, error sub issues. And now I can come in here and

issues. And now I can come in here and because it had all the context, it took those comments and then it's being real smart now. Why do we want to do this?

smart now. Why do we want to do this?

what we're doing acceptance criteria for each of these.

That's pretty cool. Now, for each of these, I can basically just spin it off and have cogen work on them.

If I was really being thoughtful about my work, I would probably review all of them. I just want to show the power of

them. I just want to show the power of how you can use linear as a command center

and have visuals and keep up to date with your little team of agents following the full process of okay,

let's pick a task, let's do a first research and plan implementation and linear.

Let's kick it off. Let's fix the tests that were failing even though that was a wild side journey that we went on.

Then let's review the code. Let's fix

the code. And then by the end of all this, I'm not going to wait for this whole thing to be done. But by the end of all this, we should have a working

preview. And maybe I can postpended that

preview. And maybe I can postpended that on the end of this video later. But I'm

going to sign off and go enjoy my Friday evening. And I just wanted to showcase

evening. And I just wanted to showcase this full workflow because I think it's really cool and I think it's a powerful way to utilize new coding agents code gen

5 linear all together to follow this process and yeah I hope you found it useful.

This was not the video I was expecting it to be but thanks for going on this journey with me and hopefully I can share working to do with local storage

here tonight. Okay. I had to come back

here tonight. Okay. I had to come back and clean up a few things because and I'll talk about what I had to do. I was

last at the coffee shop. I was wanting to get home so I could have a fun evening with my family and I forgot to

add the context of where I wanted these pull requests to go. Actually, on my drive home, it worked and it created some pull requests and it was just all into the main branch, which sometimes is

what you want if you're working from main. But we have a feature branch open.

main. But we have a feature branch open.

So we have this feature branch here that's open. And we want all of these to

that's open. And we want all of these to work and make a new PR into our feature

branch. So I want to always provide code

branch. So I want to always provide code gen two contexts. One, the target repo and two I guess that matters if you're

in an organization that has a bunch of repositories like we do. and then do the base branch for the PR. And that will help give it the context of where it

should go. Okay, so I cleaned that up,

should go. Okay, so I cleaned that up, picked these four off again, and I'm going to pause and we'll come back and I'll merge it all together. I'm

going to try to get it working and show a demo of what we have at the end. Okay,

now we're going to GitHub. Trying to get all of these to be green checks here.

So, this one's still not green.

See why?

So, it's running into an issue with use href within a router component. So,

I'm going to pull that down and I'm going to have it look at how we can test with React Router and hopefully that will fix that.

And everything merged in.

Took longer than I wanted to. We can now add a task. Oh no.

Be right back.

I was a little surprised that it failed because earlier when I was testing before I merged some things in, it wasn't and it was working and I was able to refresh.

So there's two things I'm looking at. I'm

wanting to see why I can't add a task obviously, but also there's like this slight.

So, if I go back to this state, there's no difference in what it looks like when I refresh. But if I refresh here, you can

refresh. But if I refresh here, you can see it goes to the original state. And I

don't like that. Might have something to do with hydration errors.

But we can look at the application and the state here with the values and you can see it it does update in

real time or almost near real time with our local storage. So that was the goal.

It would be much better if it added a to-do. I'm going to try to fix that real quick.

So this is why you have to pay attention to what it's doing under the hood. Uh we had allow client submit

the hood. Uh we had allow client submit for tests, unit tests, and you don't want to change your components for doing

that within unit tests. So

it's tricky. If AI really cares and is focusing on getting the test to pass, then it might sometimes add things that you don't want in your code.

So, you have to watch out for that.

And just like that was the problem.

I can refresh now and it keeps the state. That's great.

Can add new tasks. Can delete tasks.

Mark them as checked. All right. I'm

going to call that a night. Merge these

videos and write a blog post. And I hope you enjoyed this journey. I thought this would be like a 20-minute video and then I went on way too many rabbit trails.

But I hope you learned a thing or two. I

think in closing, what I want to get at is start with the exploration and the research. go to a game plan and

have a solid understanding of what your expected outcome is going to be. Then go

to execution and make sure that your execution is well pointed towards a solid understanding of what you want to do not towards like I mentioned if you

are executing towards just passing tests and you might be missing some code quality and some other things that you're wanting to execute towards. And

ideally the product and how the user is going to be using the product is what you should be executing towards. and

also how you can maintain and scale and and work with other people. There's a

lot of things to consider when working on a big project at least. And then

finally, the review step, using the tools to make sure that you're catching bugs, you're writing your tests

thoughtfully, your linting and type checking is solid, and that you're not adding any security gaps. Okay, that's

the full process. I don't think it matters what tools you use. Codegen's

great.

In the last video, I used repo prompt and I used 03 Pro. Now, I could use GPT5 and cursor is obviously great. Warp I

love. So, I like them all. Let me know if you have any tools that you like that I should try out. And yeah, just hope you learned something. Thanks.

Loading...

Loading video analysis...