Up & Running with GitHub Spec Kit #8 - Implementing Tasks

Net Ninja · Beginner ·💻 AI-Assisted Coding ·8mo ago

Key Takeaways

The video demonstrates how to use GitHub Spec Kit to implement tasks with AI coding agents like Copilot, and how to manage goals and tasks using TypeScript and local storage. It covers the implementation of a spec-driven workflow and the use of various tools like Claude Sonic 4.5 and Dev Server.

Full Transcript

So then my friends, we have run every command so far except the final one which is the implement command. And this is the command that actually takes that task list, runs through each one and implements them. So this is the first time we'll be instructing the model to actually generate working code for the project. And I know this has been a fairly long and drawn out process to get here, but keep in mind that we've also run two optional commands along the way, the clarify and analyze ones. And we've run the constitution command as well, which typically we won't need to do every time we have a new feature. Plus, I've been recording this whole process and explaining certain things along the way. So, in reality, it would be much quicker to implement new features. Anyway, let's go ahead now and use this final implement command. All right, so before we ask the model to go ahead and implement all those tasks, I just want to switch to a brand new chat session. And the reason I'm doing that is because in this other one, we have done everything so far. We've done the constitution. We've done the spec, the planning, the clarifying, the analyzing, building the task list, and we've built up one hell of a chat history. And all that is in the context window. Now, I found that when the chat history gets bloated and you've got a lot of context in the window, then it becomes harder for the AI to stay on track later on to implement these tasks. That's just my experience. It might not be for you, but I want to create a new chat for implementing the tasks. So, I'm going to make sure agent is selected. I'm also going to choose Claude Sonic 4.5, which is a fairly fe uh recent release. And I'm just going to give this a whirl. And then we're going to use the implement command like this. Now, if you wanted to, you could add some user input. I think pretty much all of these accept user input. If we open this, we can see the user input is the arguments. But again, I've seen no reason to really give it any input when I've been using it so far. If you've come up with a reason to do this, please let me know in the comments. Anyway, down here, basically, it's a prompt to tell the coding agent to go through all of the tasks and execute each one. So, let's press enter over here and see if it does it correctly. And I'm just going to click on enable for this new model right now. So, right now, you can see that it's created these 22 to-dos. So, we have 22 tasks, right? And it's created a to-do, I think, for each one of those to keep track of them. The first one was to install Shard CNN, which it's just asked me to do, and I've just said, "Yeah, you can go ahead and do that." [Music] All right, then. So, it's all done now. And if we scroll up here to where it finished, it says, "Implementation complete. Tick. I've successfully executed all 22 tasks from the implementation plan from the uh for the do it goal tracking app. So this is what we accomplished the setup phase. We've done all these tasks, all these ones as well. It's just letting us know it's done everything basically. So if we scroll right down, we get big checks next to all of these different features as well. It's also started the dev server for me as well, which is nice. So I can go ahead and check this out in a browser. Before we do that though, I'm going to take a very quick look at the different files it's added. So let me close all these. Open up the explorer and let's have a look inside source. So in app, well, it's changed these two files. The globals.css. So we've got all these different theme colors. And then in the page, we have the goals list hopefully somewhere. Do we have that? Yeah. Okay. So the goals are down here. This is the goals list component. And we've got another goal list component as well. These are for the completed goals, I guess, and these are for the active goals. All right. Cool. So, it's using the same component for both lists, even though some are going to be displaying differently on the right. That's uh that's nice. Let's have a look at that. So, the goal list is right here. So, we're taking these props, the goals, uh the title, and these functions as well. And then we output each goal in a goal card. All right. We also add this text if there's no goals in the list as well, which is good. Let's have a look at the goal card. These are the props the goal itself. Um, okay. Days remaining. So, we are going to show when the end date is is urgent. Okay. Yeah. So, I think I said that when it reaches the end date or within 3 days of the end date or something like that, then we should highlight it. So, I guess that's what this is doing. If we scroll down here, yep, we conditionally apply a different class if it is urgent to highlight it. Good. All right. So, we've got these different bits of template down here. We've got a button for completing, for deleting, for cancelling. All right. Yes. So we have a checkbox which if we check unchecked. So handle checkbox change. Let's see what this does. Show uh set show choice. And then down here. Ah I see. Yeah. So next to each goal then there should be a check box. And when we tick that checkbox, it then shows these options. So what we want to do with that particular goal. So we can either complete it, we can delete it, or cancel the action. All right. Yeah, that's good. Okay. So that is the goal component. We've got a form to add a new goal. So yeah, we're inputting a title, an end date. These are form errors, I presume. All right. Dialogue. Yeah. I mean, I'm not going to go through every line of code. It seems to look okay. There's the goal list which we've seen UI components. So the button and we have the checkbox, the dialogue, the input. Okay, so it's made a custom input as well. All right, what else have we got? Have we got any hooks? Yes, we have hooks down here. We should have one for use goals and we have some goal state is loading. Um, clean up overdue goals. What's it doing? All right. So, we're creating a goal. Do we have anything to do with local storage here? Let's have a look. Delete goal. Set goals. Was deleted. Was deleted. I mean, I'm not seeing it. However, it might be elsewhere. Let's have a look in the lib folder. Storage. Okay. So, these functions load goals. Ah, these were being used in this file, weren't they? If we go up here. Yeah. So load goals and save goals we used inside this file to load and save goals and they are coming from this file the storage one which is using local storage. Awesome. So we are persisting the goals in local storage and then we have this final one which is just a utility function for TWIN merge. All right. Cool. Yeah. So this looks all pretty good. Again I've not gone through this thoroughly. I would do if I was working on not a throwaway project. But now what I'd like to do is view this in the browser. All right. So, moment of truth. Does it all work? Now, first impressions, it does look basic, but I've not really given it any specific design instructions, so I can't blame it for that. I'm going to click on this to see if this works because we have no goals in either column yet. So, add goal. Um, okay, that's nice. It's given us a little hint right there as well. Learn TypeScript. I'm going to say finish this series. And then let's give an end date of I don't know in like 3 days time. Add the goal. And yeah, it says right here 3 days left. Cool. We've got this little check box right here as well. So I think this is going to be the urgent goal because it's red. Let's add another goal with a date further in the future. We'll just be like buy milk or something. And then not much of a life goal, is it? 25th. Add goal. Okay. Yeah. So when we are within 3 days or it could be 5 days, I don't know, we get the goal styled a little differently. That shows that this is an urgent goal. Let's try and complete something. All right, cool. So when we check this or click on it, we don't see a check icon, by the way, do we? We just click it and we don't see it. That might be to do with the styling. Is it checked? Um data slot. All right. So, no, we don't see one. I would have to look at that. I'm not going to do that in this series. The functionality is working, but we can either delete that, cancel it, or mark as complete. Let's do that. All right. Cool. Yeah. So, it goes over to the right. Now, what I'm going to do is refresh the page because now these should be stored in local storage, right? So, we should see these when we load it again. Yeah. Awesome. We do. Okay. So, if I click on this again, we don't see the tick, but we can delete these as well. And that works. Awesome. Now, I just want to try one more thing because I noticed in the globals.css file, it created a load of dark theme colors, but we don't see any dark theme over here. And that's good because I didn't ask it to do that, but it created the colors. I want to see what happens if we come to the body tag. I'm going to edit this and just give it a class of dark. Now, I'm not expecting this to work, but we shall see. Oh, it does. Okay, cool. So, that looks pretty nice. We have a dark theme as well. Everything's dark. Let's say finish this series again. And we'll give this an end date, which is pretty soon, to see what that highlighted goal looks like. Add goal. Okay, it's still red. Yeah, I mean, I'm pretty happy with this. We've got a dark theme, we've got a light theme. Uh, we can delete this. Awesome. Okay. So, I don't know what you think, but I think using SpecKit and those different stages to spec out the new feature, plan it, create the tasks, and all those other things, I think that's kept the AI model on track a lot more. If I tried to do something like this without Spec Kit, even though it's quite simple, I would still find myself going back to the AI quite frequently, saying, can you change this? Can you do this? Can you do this? And then maybe reverting some changes as well, sometimes scrapping it and starting it again. And I think using those different stages with SpecKit has definitely kept it on track to create this feature. Next up, then we'll try and do all of this again, but we're going to condense this into a much smaller video to add another feature.

Original Description

In this Spec Kit tutorial series / crash course, we'll see how it can be used to implement a spec-driven workflow with various AI coding agents like Claude Code and Copilot (we'll be using Copilot). 🍿🥷🏼 Get early access to this entire course: https://netninja.dev/p/up-running-with-spec-kit 🧠🥷🏼 Get the Git and GitHub Masterclass Course: https://netninja.dev/p/git-github-masterclass 🔥🥷🏼 Get instant access to ALL premium courses on NetNinja.dev: https://netninja.dev/ Other Course Links: 🔗👇 Get Spec Kit: https://github.com/github/spec-kit 🔗👇 Spec Kit docs: https://github.github.io/spec-kit/
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Uploads from Net Ninja · Net Ninja · 0 of 60

← Previous Next →
1 Regular Expressions (RegEx) Tutorial #14 - Matching a Username
Regular Expressions (RegEx) Tutorial #14 - Matching a Username
Net Ninja
2 Regular Expressions (RegEx) Tutorial #15 - Email RegEx Pattern
Regular Expressions (RegEx) Tutorial #15 - Email RegEx Pattern
Net Ninja
3 Regular Expressions (RegEx) Tutorial #16 - Finishing Touches
Regular Expressions (RegEx) Tutorial #16 - Finishing Touches
Net Ninja
4 GraphQL Tutorial #1 - Introduction to GraphQL
GraphQL Tutorial #1 - Introduction to GraphQL
Net Ninja
5 GraphQL Tutorial #2 - A Birdseye View of GraphQL
GraphQL Tutorial #2 - A Birdseye View of GraphQL
Net Ninja
6 GraphQL Tutorial #3 - Project (stack) Overview
GraphQL Tutorial #3 - Project (stack) Overview
Net Ninja
7 GraphQL Tutorial #4 - Making Queries (front-end preview)
GraphQL Tutorial #4 - Making Queries (front-end preview)
Net Ninja
8 GraphQL Tutorial #5 - Express App Setup
GraphQL Tutorial #5 - Express App Setup
Net Ninja
9 GraphQL Tutorial #6 - Setting up GraphQL
GraphQL Tutorial #6 - Setting up GraphQL
Net Ninja
10 GraphQL Tutorial #7 - GraphQL Schema
GraphQL Tutorial #7 - GraphQL Schema
Net Ninja
11 GraphQL Tutorial #8 - Root Query
GraphQL Tutorial #8 - Root Query
Net Ninja
12 GraphQL Tutorial #9 - The Resolve Function
GraphQL Tutorial #9 - The Resolve Function
Net Ninja
13 GraphQL Tutorial #10 - Testing Queries in Graphiql
GraphQL Tutorial #10 - Testing Queries in Graphiql
Net Ninja
14 GraphQL Tutorial #11 - GraphQL ID Type
GraphQL Tutorial #11 - GraphQL ID Type
Net Ninja
15 GraphQL Tutorial #12 - Author Type
GraphQL Tutorial #12 - Author Type
Net Ninja
16 GraphQL Tutorial #13 - Type Relations
GraphQL Tutorial #13 - Type Relations
Net Ninja
17 GraphQL Tutorial #14 - GraphQL Lists
GraphQL Tutorial #14 - GraphQL Lists
Net Ninja
18 GraphQL Tutorial #15 - More on Root Queries
GraphQL Tutorial #15 - More on Root Queries
Net Ninja
19 GraphQL Tutorial #16 - Connecting to mLab
GraphQL Tutorial #16 - Connecting to mLab
Net Ninja
20 GraphQL Tutorial #17 - Mongoose Models
GraphQL Tutorial #17 - Mongoose Models
Net Ninja
21 GraphQL Tutorial #18 - Mutations
GraphQL Tutorial #18 - Mutations
Net Ninja
22 GraphQL Tutorial #19 - More on Mutations
GraphQL Tutorial #19 - More on Mutations
Net Ninja
23 GraphQL Tutorial #20 - Updating the Resolve Functions
GraphQL Tutorial #20 - Updating the Resolve Functions
Net Ninja
24 GraphQL Tutorial #21 - GraphQL NonNull
GraphQL Tutorial #21 - GraphQL NonNull
Net Ninja
25 GraphQL Tutorial #22 - Adding a Front-end
GraphQL Tutorial #22 - Adding a Front-end
Net Ninja
26 GraphQL Tutorial #23 - Create React App
GraphQL Tutorial #23 - Create React App
Net Ninja
27 GraphQL Tutorial #24 - Book List Component
GraphQL Tutorial #24 - Book List Component
Net Ninja
28 GraphQL Tutorial #25 - Apollo Client Setup
GraphQL Tutorial #25 - Apollo Client Setup
Net Ninja
29 GraphQL Tutorial #26 - Making Queries from React
GraphQL Tutorial #26 - Making Queries from React
Net Ninja
30 GraphQL Tutorial #27 - Rendering Data in a Component
GraphQL Tutorial #27 - Rendering Data in a Component
Net Ninja
31 GraphQL Tutorial #28 - Add Book Component
GraphQL Tutorial #28 - Add Book Component
Net Ninja
32 GraphQL Tutorial #29 - External Query File
GraphQL Tutorial #29 - External Query File
Net Ninja
33 GraphQL Tutorial #30 - Updating Component State
GraphQL Tutorial #30 - Updating Component State
Net Ninja
34 GraphQL Tutorial #31 - Composing Queries
GraphQL Tutorial #31 - Composing Queries
Net Ninja
35 GraphQL Tutorial #32 - query variables
GraphQL Tutorial #32 - query variables
Net Ninja
36 GraphQL Tutorial #33 - Re-fetching Queries
GraphQL Tutorial #33 - Re-fetching Queries
Net Ninja
37 GraphQL Tutorial #34 - Book Details Component
GraphQL Tutorial #34 - Book Details Component
Net Ninja
38 GraphQL Tutorial #36 - Styling the App
GraphQL Tutorial #36 - Styling the App
Net Ninja
39 GraphQL Tutorial #35 - Making a Single Query
GraphQL Tutorial #35 - Making a Single Query
Net Ninja
40 Build Apps with Vue & Firebase - Udemy Course
Build Apps with Vue & Firebase - Udemy Course
Net Ninja
41 Updated Vue & Firebase Course (Udemy)
Updated Vue & Firebase Course (Udemy)
Net Ninja
42 Vue & Firebase Real-time Chat (Preview) #1 - Intro
Vue & Firebase Real-time Chat (Preview) #1 - Intro
Net Ninja
43 Vue & Firebase Real-time Chat (Preview) #2 - Project Structure
Vue & Firebase Real-time Chat (Preview) #2 - Project Structure
Net Ninja
44 Vue & Firebase Real-time Chat (Preview) #3 - Firestore Setup
Vue & Firebase Real-time Chat (Preview) #3 - Firestore Setup
Net Ninja
45 Vue & Firebase Real-time Chat (Preview) #4 - Welcome Screen
Vue & Firebase Real-time Chat (Preview) #4 - Welcome Screen
Net Ninja
46 Vue & Firebase Real-time Chat (Preview) #5 - Props in Routes
Vue & Firebase Real-time Chat (Preview) #5 - Props in Routes
Net Ninja
47 Vue & Firebase Real-time Chat (Preview) #6 - Route Guards
Vue & Firebase Real-time Chat (Preview) #6 - Route Guards
Net Ninja
48 Vue & Firebase Real-time Chat (Preview) #7 - Chat Window
Vue & Firebase Real-time Chat (Preview) #7 - Chat Window
Net Ninja
49 Vue & Firebase Real-time Chat (Preview) #8 - New Message Component
Vue & Firebase Real-time Chat (Preview) #8 - New Message Component
Net Ninja
50 Object Oriented JavaScript Tutorial #1 - Introduction
Object Oriented JavaScript Tutorial #1 - Introduction
Net Ninja
51 Object Oriented JavaScript Tutorial #2 - Object Literals
Object Oriented JavaScript Tutorial #2 - Object Literals
Net Ninja
52 Object Oriented JavaScript Tutorial #3 - Updating Properties
Object Oriented JavaScript Tutorial #3 - Updating Properties
Net Ninja
53 Object Oriented JavaScript Tutorial #4 - Classes
Object Oriented JavaScript Tutorial #4 - Classes
Net Ninja
54 Object Oriented JavaScript Tutorial #5  - Class Constructors
Object Oriented JavaScript Tutorial #5 - Class Constructors
Net Ninja
55 Object Oriented JavaScript Tutorial #6 - Class Methods
Object Oriented JavaScript Tutorial #6 - Class Methods
Net Ninja
56 Object Oriented JavaScript Tutorial #7 - Method Chaining
Object Oriented JavaScript Tutorial #7 - Method Chaining
Net Ninja
57 Object Oriented JavaScript Tutorial #8 - Class Inheritance
Object Oriented JavaScript Tutorial #8 - Class Inheritance
Net Ninja
58 Object Oriented JavaScript Tutorial #9 - Constructors (under the hood)
Object Oriented JavaScript Tutorial #9 - Constructors (under the hood)
Net Ninja
59 Object Oriented JavaScript Tutorial #10 - Prototype
Object Oriented JavaScript Tutorial #10 - Prototype
Net Ninja
60 Object Oriented JavaScript Tutorial #11 - Prototype Inheritance
Object Oriented JavaScript Tutorial #11 - Prototype Inheritance
Net Ninja

This video teaches how to use GitHub Spec Kit to implement tasks with AI coding agents and manage goals and tasks using TypeScript and local storage. It covers the implementation of a spec-driven workflow and the use of various tools. By following this tutorial, you can learn how to use AI coding agents to implement tasks and manage goals and tasks effectively.

Key Takeaways
  1. Implement tasks using the implement command
  2. Create a new chat session for implementing tasks
  3. Select the Claude Sonic 4.5 model
  4. Execute tasks from the implementation plan
  5. Install Shard CNN
  6. Load goals from local storage
  7. Save goals to local storage
  8. Add a new goal with title and end date
  9. Conditionally apply a different class if a goal is urgent
💡 Using AI coding agents like Copilot can significantly speed up the implementation of tasks and features, and using local storage can help persist data and manage goals and tasks effectively.

Related AI Lessons

Up next
Azure Security Priorities for 2026: Identity, Governance, AI Security & Zero Trust
Valto Microsoft Specialists
Watch →