Open Source Friday with Spec-Kit
Chapters8
Host introduces the show, welcomes new viewers, and sets the stage for Open Source Friday and Maintainer Month.
Open Source Friday dives into Spec-Kit with Manfred (Mefred) showing how AI-assisted specs, presets, and extensions accelerate clean, auditable software workflows.
Summary
In this GitHub Open Source Friday edition, Andrea Griffiths welcomes Manfred (Mefred), the new maintainer of Spec-Kit, to demonstrate how Spec-Kit guides a project from high-level principles to concrete tasks using AI-assisted steps. Manfred explains the core idea: start with a constitution, then build a specification, followed by a plan and actionable tasks, all orchestrated with optional Copilot integration. He highlights how community extensions and presets layer extra behavior, enabling everything from governance checks to time-zone aware CLI apps. The live demo walks through installing Spec-Kit, generating a constitution, crafting a time-zone CLI, and planning implementation across NET 9 and C# 13 syntax, with Notepad-era memories sprinkled in for nostalgia. A key takeaway is the emphasis on context and model choice—the more precisely you define goals, the better the AI can implement them, and you can switch models at each step. Manfred also showcases how the ecosystem has grown to nearly 100 community extensions and how presets like governance or pirate-speak demonstrate the platform’s flexibility. The discussion covers brownfield vs greenfield use, token-conscious design, and the ongoing work to attach Presets, Catalogs, and CI/CD-friendly workflows into Spec-Kit’s core. If you’re curious about automating spec-driven development, this session is a practical, hands-on primer with concrete commands, templates, and real-world tradeoffs in a modern AI-assisted toolchain.
Key Takeaways
- Spec-Kit follows a clear pipeline: constitution (principles), specification (feature scope), plan (implementation approach), then tasks and code—driven by AI with optional Copilot integration.
- Extensions and presets are foundational: extensions add tooling, while presets inject project-specific guidance (e.g., data governance, accessibility) at installation time.
- The ecosystem is community-powered—nearing 100 extensions, with a read-only community catalog and hosted extensions you can vet before use.
- Brownfield and greenfield projects are both supported: you can generate specs for existing codebases or start fresh, with the ability to iterate or regenerate as specs evolve.
- Context management matters: model choice and the amount of context fed into the AI affect reliability; you may switch models per step to balance quality and cost.
- Presets and extensions enable layering: you can enforce constraints (like no-PII, testing standards) without rewriting the entire process.
- Spec-Kit emphasizes verifiable results—the demo shows auto-generated tests, a feature branch, and a runnable CLI utility built from the specs.
Who Is This For?
Software engineers, dev advocates, and open-source maintainers who want an AI-assisted, auditable approach to defining, planning, and implementing features. It’s especially helpful for teams balancing fast delivery with governance, testing, and documentation needs.
Notable Quotes
"Spec it really does uh the original concept of the pro project basically was a a stepped process wherein you define your principles it's called a constitution then you go to a spec uh specification phase where you create a specification for a feature that you want to deliver."
— illustrating the core flow from constitution to specification in Spec-Kit.
"The more you have it pivoted to what actually needs to get done, the better it will be able to do the implementation."
—emphasizes the importance of clear, goal-oriented prompts for the AI-driven implementation phase.
"We are nearing the 100 mark of different extensions that are part of the speckit ecosystem."
—highlights the vibrant, community-driven extension ecosystem surrounding Spec-Kit.
"This is open source Friday and this is a GitHub sponsor and produced show."
—hosts set the stage for the monthly livestream and its community focus.
Questions This Video Answers
- How does Spec-Kit automate software specification with AI?
- What is a constitution in Spec-Kit and why does it matter?
- Can Spec-Kit be used for brownfield projects or only greenfield ones?
- What are presets in Spec-Kit and how do they change the workflow?
- How do I install and start a time-zone CLI project with Spec-Kit in .NET 9?
Open Source FridaySpec-KitGitHubCopilotpresetsextensionstime zone CLINodaTimeC# 13NET 9","brownfield vs greenfield","AI-driven software spec"],
Full Transcript
Heat. Heat. Heat. Hello. What an abrupt ending to that intro. Welcome, welcome, welcome. Good morning, good afternoon, good evening. Renee, the music is nostalgic. I know. I got to figure out a way to rebundle that with some new graphics. So, ideas are welcome. Welcome to Open Source Friday. We made it, friends. We made it to Friday. I don't know about you all, but this week, it was a week. It was a week, but we made it. Thank you so much for being here. For those of you who are new to the show, um, this is open source Friday and this is a GitHub sponsor and produced show.
I'm Andrea Griffiths. I work with the developer advocacy team here at GitHub and it's an amazing stream. I love it. It's one of my favorites. Why? Because it gives us a chance to slow down for a little while and we get to spend some time talking to the people that are building interesting things in the open. So, we have conversations about projects, we have conversations with maintainers, with contributors, and we talk a lot about the real work of open source and what it takes to to sustain it. So the month of May for those of you who are not familiar with it I have to share it's the month of the maintainers and this is a month that we take at GitHub very seriously and we use it as basically a month-long celebration for all of you.
So if you are contributing to an open source project if you are curious about what it means to be a maintainer please take a spin by our maintainer month website so that you can see all the amazing things that we have going on this month. There is live streams, there is events. We just closed out our maintainer summit which is a private invite only event for maintainers. And if you go on the website, you actually see how you can become part of the maintainer community, which is an amazing place to be. Not only because you get to hang out with other maintainers and sort of I I think it's a giant therapy session place, but also because you get to speak closely with the product leaders and engineering leaders and the executive leadership at GitHub and help us shape the platform to better serve you.
So, it's a good place to be. Join, please. Uh quick plug for that. And then another quick plug for exactly what you're watching right now for this year's show. We are now booking for the month of June and July. So if you have a project that you think will be a good fit for open source Friday, you want to come and show off a project that either is your project or you have a contributor or maintain you are part of the core team. We do have a few points of just criteria for the projects. They have to have a license.
Um I think there is like a minimum of like age of the project and that correlates to like a 100 stars or something like that. Uh, but I would love for all of you to take a spin by the repository. And if you want to participate in this show, you'll see if you're new here, you'll see in a moment how it's very laid-back, very informational. And honestly, like the key thing that we want to have our projects that come by and to take away is more awareness of their projects, of course, and more contributors. So, it's really cool when we have projects that come by here and then suddenly they're training training on GitHub uh or all of the sudden they have new contriers and new contributions coming in because someone watched the show.
So, it's a good opportunity for you and your projects. Please share this in your networks. I would be forever grateful and appreciative if you did that. If you share that link, I'm going to make it a short link for you because right now is it's an absolute handful. But let me share it with you so that you can just kind of pass along pass along with your friends. Let them know that there is a show there that's completely dedicated to open source and to open source winning. So please share it. I will pass you a short link right now.
And if you're watching this and you decided to come and submit an issue to join the show, um, let me know as well. I'll send you a little thank you. Here is the link for you to be a part of the show. Well, to our topic today and I'm super excited because I've been actually talking about this with our who is the quack our Thursday streams uh yesterday. This week we have a deluxe guest in open source Friday. He is now the maintainer of the specit project and we are here to talk about what specit is.
So let me go ahead and bring our guest into the stage. Welcome. Welcome Mefred. Me you are principal software engineer at GitHub and you just told me something behind when we were on the backstage that blew my mind that you started your career. Was it the start of your career with Java 1.0? Yes, it was indeed. Yeah, that is that is a that is a tenure my friend. Yes, it is. It's surp it's surprising how long and you know you can be in an industry and then you're realizing what kind of things you have gone through.
I mean obviously I still remember you know the the frenzy at Y2K you know that was so funny and then afterward I love it. You're like that was so funny and it it it it ended up being really nothing right. I mean it it was it was work but you know and then obviously uh you know the the internet actually becoming a real thing. You know, and I if you talk to kids nowadays, they don't have any idea of how it really was in the back in the days. I remember. Oh my goodness. I love it.
Listen, we need to have a stream where you we just do like a throwback because for those of you who are joining and you you might not know like I mean I'm not going to eat well like date myself but but let's just say that I've also experienced a lot through life but you know there was a time that people used to legitimately think that what you're watching right now the internet was a fat and it will pass and that was it. And it's incredible to think about where we are now like living in this agentic world.
Uh, it's kind of wild. Kind of wild. Listen, here's a throwback. Hello, Notepad. I think Notepad must have been my first Yes, that was actually my editor of choice. You're there. You're absolutely there, man. I love it. I love it. Uh, listen friends in the audience who are watching and joining. You don't have to date yourself, but hit me with a throwback. Tell me what's the first technology you use on the chat. I want to know. I want to know. Um, Manfred, thank you for being here. You've become the maintainer of this project that is absolutely taken, I think, the repository trending by storm and actually helped a lot of people build a lot more effectively.
And now when we have to actually worry about token consumption and how much we're spending, we're kind of starting to come to terms with the new reality that we live in. This is more relevant than ever. Like Speckit is here to help you make sure that you're efficient. So thank you. Thank you. Um for those of you who are not familiar with the project, would you mind just giving us like an overview of what it is and then we can get started with I'll share your screen and you can show us what you come to teach us.
Uh well I mean spec it right the word specs has a obviously an overloaded connotation for some but basically what it comes down to when you're doing any agentic coding you know it it's smart to actually start with something in mind that you want to specify h specification right. So what speckit really does uh the original concept of the pro project basically was a a stepped process wherein you define your principles it's called a constitution then you go to a spec uh specification phase where you create a specification for a feature that you want to deliver.
Now if you have nothing that is obviously the beginning of your project then you create an actual plan around that and then from the plan you then create tasks that it actually goes through and then has implements. So and that that's the next stage in the process. Then all of that you can do uh you know using uh a AI uh you know obviously uh since I'm at GitHub I'm going to show it in copilot uh you know but that's basically what uh what the gist of the entire process is like. Now uh that is the original process uh since joining the project uh you know as as the lead maintainer uh you know we went through the entire repositoryries uh issues and PRs out there you know and we quickly realized uh there's so much diversity uh in in needs uh perspectives uh so uh one of the things that uh we did early on uh you know uh in in February actually of this year.
So that's that's when I actually joined it. But we early on we looked at one of the community contributions that was out there that was waiting to be uh adopted or not. Uh it was the extension system and I'm like that's exactly what I want because I realized you know in order for this project to scale we needed a community and yes you know so uh I'm happy to obviously report that we took that contribution and we iterated on it. Uh so we're now uh nearing the 100 mark of uh different extensions that uh are uh part of the speckit ecosystem.
uh you know so that's uh really a clear indication of all the things that we you know as the maintainers of the project uh wanted to see happen because you know how can you how else can you understand within an angentic uh world what does a customer really need you know exactly because you know the all of our processes you know are changing you know so so it's like wow you know but how do we change them what do we need where do we tie it in you Um obviously the original process has a very strict uh number of steps and even there we already had okay well I need to be able to do this I need to be able to do that.
So there's a lot of extra plumbing that came around of that. Um, but before I go into those details, I probably want to kick off the live demo and let's do it so we can get get it to work. Go, you know, because, uh, so, um, we're gonna we're gonna pray for the for the demo gods here real quick. Yes. And they're going to be all right. I want to quickly thank the audience real quick for sharing their look at this throwback through memory lane. Yes. Palm Pilot. Yes. Yes. Yes. Hello, Cobalt. cobalt still very much used.
So, but amazing qedit and q basic. Amazing. Amazing. And I love this call out for uh paint. You know, paint is still kicking. It's really good, actually. Um all right. So, what are we looking at, Mandre? So, well, I have a demo script, but I just copy and pasting, but basically, uh I already did the install, so I'm going to actually skip that part, but that's this is the command line to install Speckit into your own project. Um well, actually on your own machine, I should say. And then then the next step is actually installing it into your project.
And I'm going to do that here. So it's the first step is terminal based. It's going to ask some questions. Um so I'm going to just say yes. And then I am on a Mac so I need Pix aka shell. Otherwise if you're on Windows use PowerShell. So now that now it's actually installed. And you see on the left hand side that it actually created a couple of directories. You see that uh here it's copilot instruction file because I asked for the copilot integration. Then you see the specify that's the speckit directory and there's stuff in there for dealing with all uh the extensions I mentioned.
Um I I will go over the rest while we're talking but I want to kick off the process because you know it takes a little while. So okay so one part of the process that I talked about initially that is the constitution that's basically the principles under which you want to govern your project. Now since this is a new one I'm just going to let the the LLM to make some choices here. So you see that I actually have the agent integration here. I'm going to go to constitution and then I'm just going to paste in what I just copied.
And now it's going to go create that constitution file. Um if you have an existing project you are able to actually just say hey given this code base can you create me a set of principles that are focused on blah blah blah and the blah same thing as what you see here. So it works for brownfield as well. Uh okay here little explanation as part of the process um that came in through extensions there's hooks now so you can actually hook into the the process the git support is actually done as a hook that's why you see that it's now initializing the project for git uh we are in the process of that making that an opt-in because uh some customers have expressed the need to be able to not have it automatically initialize a git repository.
Oh, interesting. Which is fair, you know. So, but right now you see that uh it's basically reading through what the commands specify. And I can actually show you behind the scenes what really is happening here. So, if you look at this here, this is the for copilot the file that that specifies what uh the agent actually needs to do. And the agent needs to do a constitution. So, I'm going to go into the agent itself. So here you see this is the agent's file that describes what the agent actually must do with the text I just gave it.
So now it's basically going through the process of creating the constitution which will end up in this file here. Right now you see the placeholder still and that's because it needs to fill out those placeholders on the basis of what you actually asked it to do. Okay. So constitution is like the foundation then like this is the first first file. Well, the constitution is meant for hey, this is my overarching framework in which you need to operate. Gotcha. Not uh it's it's specifically written in this particular way and not uh in a copilot instruction file or in an agent file or because those are meant for process that the agent itself can take.
This is literally uh you and uh the LLM both would agree on what are the governing principles for the project. So as you can see the core principles here you see that it came up with this code quality. It wants testing standards. It wants a user experience consistency know that and then performance requirements. Now, I was very vague. You know, obviously, if you have uh specific needs within your organization, you probably want to be more precise, right? Because that's that's one of the things that you need to be aware of. Okay. So, now it's done with that part of the process.
And then the next step is actually building a specification. So, I'm going to go back to my cheat sheet, which is, you know, the um the actual thing. I'm going to try to create a command line utility for uh well, here it says what it does. Um basically, it's time zoneuler. I want to, you know, since we're all in different time zones, you know, both GitHub and Microsoft are global enterprises, right? So if we schedule meetings, you know, often times it's like, oh, what time zone is is the time zone that is palatable to the person that actually is doing this.
So I'm now going to click on build specification. You see that it changes here to specify. Uh so let me just copy and paste that in there. So now I'm going to go ask it to create a .NET app. It could have been a Java app. Uh I'm a Java guy actually. So but I just wanted to show that it is crossplatform and in an agent world does it really matter you know uh in that sense what the what the agent is doing it uh you know matters the results as part of the process you seen right now that it's asking for permission.
I'm not going to give it blanket permission yet because I want to make sure that it goes through the process in a good way. uh once we hit the implement stage then I'll just let it go because that's where you know it actually needs to do most of the work. So here you know we'll see that uh it's in the process of creating the feature branch. Uh as I said you know the git part is optional. Uh you can turn that off but uh you know that's basically and you see you know it gives uh background.
Now I will be very clear that you know the better model that you have access to during the planning stage like this particular specify and plan and creation of the tasks the better it will be able to do the implementation once it hits the implementation stage because the more you have it pivoted to what actually needs to get done you know the better it it can perform. Okay. So it's it's it's recommended then that you pick one of the the I guess higher level models for this step. Very interesting. Okay. Yeah. Uh oh yeah here is then obviously uh each part of the process has a template that it needs to be able to fill out.
You see that it refers to the spec template here. So if I click on it, this is the actual template behind that one. All of these um you can actually influence and that's the other uh concept that we've added uh after extensions that add additional functionality. Mhm. We also realized well there sometimes you don't want to just add additional functionality but you just want to influence it right so you don't want to really wholesale replace it but you need to be able to influence. That's then the notion what we call presets. Uh think about a preset as uh a way to inject your specific guidance that uh your project needs.
uh if you're in a say in a healthcare industry, you know, you probably want to make sure that uh uh you know, no PII is ever leaked, right? So that would be a paramount thing that uh you would require every project to adhere to. That's where that would come in because what you saw me do with the constitution, you can still put it in there too, but then it relies on you, right? versus if you deliver a companywide or a business unitwide or teamwide preset, then you install the preset at installation time and then just walks with it.
So the constitution template would then actually contain that requirement and you couldn't get around it, you know, in versus you have to specify it. So that's where presets come in. there. So it's kind of a layering system, you know, so you can layer those additional requirements that each of the process steps need to have because it could be that uh you know as part of the implement stage that you would require uh tests, right? It must always be tested or you have a certain level of code coverage that you want to hit. That that's all kind of things that you could actually layer in as requirements and you don't have to layer them in as one bulk.
You can make multiple different layers because they have priorities. Um they can be a appended, prepended, wrapped or or a total replace. Um let me continue on by the way with the technical plan because that's the next step in the process. So if I click on that, you see that it changes to the specit plan. And let me actually go back to my script because that's where plan comes in. So here is actually where I'm selling saying that I'm targeting .NET Core before beforehand. I just said it I needed a command line utility. So I haven't specified anything yet in regards to hey I want to make sure that these particular things need to be done.
That's the implementation plan. So I'm picking net. I could have picked uh Go uh or any other language for that matter. So now I'm going to click on that one and it does the same thing. Picks up the command for the agent to execute. Uh you'll notice that it skips the gith hook here. That's because by default during these steps it's not required to commit. So it just says you could and it tells you what uh command you should execute if you wanted to actually commit it. But now it's just planning. And as you can tell here, it talks about uh it seems to be picking net 9.
I know why. Uh my local machine only has net 9 installed. I don't have the latest installed. So uh so it does have context in that regards as well. Uh obviously, you know, uh if you wanted specific things to be used, you could call that out uh in any part of the the phases, but uh if it's implementation specific, you probably want to call that out in the implementation plan, unless of course it's a constitutional principle that all your projects again need to adhere to .NET 9 or not .NET 10 or whatever it is. It's a it's an interesting way of doing things.
So okay very good. Okay. So I open this up a little bit so you can see why the planning phase takes a little while. You see that uh the the core uh specit process uh you know does research. It wants to create data model uh files uh contracts uh well in this particular way for this particular app. will probably not create a contracts uh uh directory stuff in there because uh it's a command line utility. Think of contracts if you're doing you know an API like a resti you know that kind of thing. but we'll see what it actually does.
Uh and then it also shows a quick start. So you know cuz if you're a human you do want to know how do I get started with this particular project and then because I asked it to do uh you know copilot it will also update the copilot instruction file so that it the context is set correctly for this particular integration point aka copilot. Now I like to keep uh those little indicators very cool. Yeah, it's good to it's good to be able to see what what literally what steps is taking though. So, right now we're still on the we're making out the plan basically right now, right?
Like that's that's that's where we you walked us through the constitution first. So where you kind of figure out okay like this is to align everybody kind of to figure out what it is that we're going to do. Then next it was sort of like making those decisions where it turns it into that clear spec to be redundant. Um and now we're planning. Right. Right. So I I can actually show you the spec as planning takes a little while. So this is actually the specification that it came up with for the time zone aware CLI utility.
So we created a feature branch. It it created user stories behind it. So you need to be able to look up time with a location. That's a P1 priority. Then if I scroll down, you'll see that the P2 is a compare across multiple locations because I asked that in the in the initial prompt for the spec and then findable suitable meeting time is P P3. So it's going to be basically creating a plan for that. So it did research. Um let me actually show you the research because that's interesting too. So you see that it says hey what time zone library should I use?
Well, since I specified that I wanted to do it innet, it now looks for noda time, which is a time zone library. And then it also needs to do CLI parsing obviously because I need to be able to pass in what time zone I'm I want to plan it for or what time zones I want to compare the two for. So, and then terminal output formatting because is a terminal app. And then here you see that it's saying I need a data set for mapping cities to time zones which apparently uh there's a geo names uh collection with 500.
Interesting. Mhm. So that's the part of the research that it found out. Now here you see the data model that it wants to actually create. So it wants to create a location entity you know and it wants to create a time snapshot meeting window which is necessary if you want to do meetings between two people obviously no what is the zip code what is the city it's all internal and then there have a data flow that shows how the user input actually goes and then what it means and then there's also a time zone now and a time zone meet that's the data model now here is the actual plan so far.
So you see that it uh has a technical context. So it's going to do C# 13 syntax with net 9, you know, and then obviously tells you that not we're not doing a database. So that the time zone file will be included inside the binary and so forth. And then here you see, hey, I need to verify whether or not I actually adhere to the constitution that uh I previously came up with. This is how you tie that back. So the plan needs to adhere to the constitution so that you know you don't diverge away from what certain things that you specified as requirements that all projects need to adhere to.
So you see that code quality it says it passes it as the plat for the plan and so forth and so on. So there's no problems here. So we are good to go. Uh it's now creating the quick start which you know I can show but it's not that interesting. It just shows you, you know, the what you need for being able to actually uh build the project. So, and so that's impressive though. That's a lot a lot of context that is just created on its own for this. If you make a change to your constitution once you kicked off the project, then what happens?
Is it able to like update itself or how does that work? Well, there's there's two schools of thought there. And that's actually a good question because the community extensions clearly show the different schools of thought there. Uh I personally uh like to go do a feed forward model because easier so that I don't have to resolve any conflict. So if you at the end of this process the first cycle would change your constitution. I would just say create a new features pack and run through the process again with the changes that you need. Now some of the community extensions take the other approach.
They say no feed it backwards and start changing both the tasks, the plan, the the original specification and and the constitution. I prefer to do the feed forward because it's faster, right? Got it. There's less work involved for the for the LLM to figure out what kind of problems it needs to resolve. Uh and you're also quicker. Now there is a third school of thought here and that is no the spec is always the source of truth right and and always meaning at any given time. If you adhere to that model, then your plan and your tasks are effectively ephemeral because they don't matter anymore because you can just regenerate and rerun and get the implementation done and then change your spec, regenerate, implement, regenerate, implement.
So those are the three different schools of thought. um the original specket process is quiet on that and that's kind of a little bit of the thing that we're trying to address in the future because you know we want to make sure that that those three different ways of looking at things uh you know are are something that folks are aware of because you know LLMs are obviously capable in doing a lot but you also need to be aware of their limitations and let me kick off create task force sec. So because this will take by the way create the list of tasks that it actually needs to go implement.
For the people who might not be familiar with the ex who there is this whole like extensions to this kit sort of market out there right like communitydriven and community created extensions basically to to entertain the school of like you just shared because some people prefer to do things I guess different in a in a different way. Um, and thanks for sharing your personal preference, too. I think I'm of I'm of your school, I think, because I feel like it will cost you less at the end if you just run it through versus Well, I I hope so.
I I that I haven't actually measured myself. That would be an interesting uh Hey, homework for anyone out there that likes to do some of that statistical work and figure it out, do some evals on that at the end. Why ends up being the most creating the task? I'm not going to pull in the community extensions uh on the main readme yet. Um we're move we're going to be moving that to our own website. Uh but at the moment the extensions are still listed here. But you can see you know it's a very interesting. So here you see quite a big list of extensions.
Um these are all community contributed and they you know they vary from all kinds of different things. uh you know there's obviously see what if analysis or you know the the vmodel extension pack. This is actually an extension that uh changes the process completely. So this would be one that uses the vodel process and here you see yes you mentioned that in the new era coming up where we need to be worried about token consumption here's here is one token consumption analyzer uh you know then obviously you see uh some of the extensions are bridging other stuff this superpowers bridge there's a whole repository of superpowers out there that uh you know you can use those are skill-based that you can actually then marry spec it with superpowers Oo, I like that.
Um, here you see squad bridge for instance. That's a the same thing. You can use a squad agent team and marry that with speckit as well. Uh, spec cloud. That's an one fun one too. If you're on Azure, you know, you can actually go from the spec all the way to Azure using the spec to cloud uh extension. And then uh you know obviously there's a whole lot more uh red team you know if you're doing security stuff you know the red teaming it. And then uh you know there's quite a bit more. It's crazy how many of them are actually landed uh you know but this is just the extensions.
That's so impressive. So these are are these contri are there for reference there or are they contributions that are back into the project now? They are they are the okay so the community extensions the the word community already says it. These are hosted separately you see here on the right hand side. So this is the link of the community extension. you can actually see there. Um we don't maintain them. Uh we just list them here as reference for F to go to go look at them and uh make a determination of that if that's uh something that they would want to use.
Uh you know for instance you know this is actually one I did it myself for a different way of a process. So if I click on this one you know you'll see that uh it it's just another GitHub repository. It happens to be mine but you see that this one actually uh gives also a different process you know but that that's the key thing the key strength of it uh you know you're you have the ability to just you know pick your extensions that you would want to use uh they're listed in the community catalog and the CLI does actually support uh you actually u um what searching for certain extensions with by by capabilities uh and Then you know the then you would have to actually clone that repository because um you would have to host it internally yourself cuz the community catalog by design is read only.
So that you would actually have to go vet what that extension does. We only list it as a courtesy. That's a yeah like oh so folks do your homework obviously before you go install this extensions understand the binary like figure out what it is that you're putting in. Um, very very cool though. But I love that the communities embrace being able to like customize what they want this to be. Um, using the spec as the foundation. Okay. So, where are we on this process now? Um, we just finished creating the tasks. So, um, I now should just uh go and actually click implement and then um it will just kickstart the implementation.
So, back to model selection. You could have changed the model there. Yes. before you kick off the task of actually the implementing going and doing those blocks of work, right? Every single step of the process, you can uh change the change the model. Now, because I don't want to keep clicking, I'm not going to put it on bypass all approvals. So, yes, uh please bear with me and let's hope that everything goes okay, but I'm just now letting it go and uh implement everything along the way. YOLO. Well, I there there is a different thing.
I mean, I say bypass all approvals. I did not say autopilot. Okay, fair, fair, fair. Listen, that's all right. And again, I feel like one thing that sometimes we kind of, it's a mental thing we get stuck on like this is still a conversation. You can still come in and iterate like it's not, you know, it's not set on stone just because you're following this plan button there, which I won't then it stops. So yes, here these are the actual task it's going to be doing. So you see that it creates the solution and it came with a very short name TZ CLI solution as well I guess.
So uh you know beneath the covers obviously it's running uh the thing. So yeah so basically uh I said the word execute but because I pressed the button that's the equivalent of it. So got it full note uh you can run this in copilot CLI as well. Um you know then you just the only difference there you would have to use the slash agent uh notation and then obviously uh you know because we are very open um there are a lot of other integrations as well uh you know from our competitors you know uh you name it we probably integrate with it and we use we do rely on community contributions to uh maintain those because I don't have access to all all of them as well so But they are out there and we do know that customers are using uh different uh tooling as well with different hardnesses.
Oh, very interesting though. But but the compatibility is there, right? So you can use specit regardless. Um but of course use VS code and our favorite hardness copilot CLI the best. Excellent. Okay. So now we have this all these units of work and all these ideas and one thing that I I want to call out it's this is basically it follows the same way that I think I guess a person would approach developing a problem like with good with a good practice right because we don't go flailing on about a problem when we want to create a project like we you know you got to like think it through then break it apart and units of work and and it it follows sort of that same um that same process and then it goes to work.
I love that. I love that. Right. And uh I I I'm going to let it just run. So I will now actually pull in some of our documentation just to talk uh through it a little bit. There we go. So this is our it's linked from the GitHub repository. So you can click on the website there. But um what I want to call out is obviously this the presets. uh we didn't really I'm not really showing it during this project but presets are the additional layer on top of the extensions and up on top of the core process as I mentioned before but the key thing is is that you know uh it allows that layering in in and of itself as well you see that uh recently uh you know it finally starts to take off extensions took off now presets are following suits we're now up to almost 20 presets uh each governing different areas.
Uh as you can see here, the top one is the A1Y governance. Uh you know, hey, you know, your software needs to be accessible probably because it's publicly facing uh you know, if it's private probably not needed or if it's command line utility, you wouldn't wouldn't really need that particular thing, right? So then you wouldn't actually layer that in. Um you know, and that goes through all of them. Um now how I actually developed this um is I started uh the process for this and full disclosure it was funny because I realized after doing that it was kind of silly because I started with can I make my LLM speak cling on oh I like that the answer is absolutely yes but then I realized I can't read it myself so I pivoted and uh you know I would decided Well, I'll just do pirate speak.
So, um there is a preset just as an illustration of how powerful presets really can be that show you that you can both change the commands and the templates which means you can change how it interacts with you and what it produces for you. So, that particular thing obviously that preset does everything in pirate speak. So, if you talk to it, the LLM talks to you back to you as if it's a pirate and it produces documents as if they are pirates. So the plan for instance would be called uh oh sorry the spec I should say the spec would be called the voyage manifest user stories are cruise stories and so forth and so on.
So it's really funny to see but the the real fun is when you actually go through implement it did not care whatsoever that you actually addressed all the documents in pirate speak. just executed it faithfully just the same way as if you were doing it in regular English. Now what that demonstrates to me is hey I can now also do it in Chinese. I can't read Chinese but if there are no community members that need or want their own documentation that is generated in Chinese you could there's no there's no reason why you couldn't tell the LLM to do it in that particular fashion.
Now, one of the things that I never ever in my wildest dream expected to happen with speckit is the one that you see listed below the pirate speaker and that is screenwriting. Yes, somebody delivered an preset that extends the core process with screenwriting capabilities. So, that's wild. Yes. Now, I love it. I mean it's it's it's it shows the power of you know what you can actually do when you go agentic right because it just demonstrates that hey let's add a set of commands let let's add additional templates and off we go so yes the the screenwriting now the same author actually uh also uh delivered another preset that uh is for fiction book writing you know so you can do that too the one the fiction book writing actually landed earlier and and he had some subsequent updates to it.
So, if you use that particular preset, you could actually create a book and then generate the audio book from it. That's fascinating. Could we see what one of those templates look like? Like, that's just super interesting to me. Let's uh pick. So, we're going to go to his site now. So, you see the fiction bookw writing preset. It tells you how to use it. You know, the full documentation, the read me, but yes, the templates. Let's have a look. So, if you look at the command here, so this is the audiobook one. So it tells the user input and then it tells you you must consider and then see the purpose.
So there are literally just markdown files and then you see you know what each node covers and the right files integration and the pre so basically it's an in it's literally the instructions that you're going to give to the LM and this is this is the instruction for what is that the audio book part. Yes. And then that is fascinating. Can't believe what people are doing with this. This is so cool. And then uh you you see here the the templates that uh that it needs to fill in. So let's see if uh you know the character index.
So you know if you obviously when you're writing a book you pro probably want to know what list of characters you have. So that's what this one is for. So and then even a relationship map. It's it's it's very fascinating how how that all came together. And uh you know yeah I mean I'm just saying it's like it works. Uh now here you see uh you know the funny thing too uh full disclosure as well. Uh obviously because we uh have tried to keep the well not tried to keep we actually are keeping the project agnostic.
Uh our core templates could not uh actually introduce anything specific to an agent. uh so to an coding agent that is so you saw me illustrate how it works in VS code uh now that's still the core templates uh we had a contribution coming from the community that initially wanted to change the core templates and I'm I had to push back and say no no no can do uh you know we have VS code yes I realize that but even that you know VS code if you have that open you can actually have it show up you know those questions that that you need to answer with you know the the multiple choice choice you can click on them with the answers.
That's what this particular preset actually adds into the flow. So if you would add this preset the if you would go through the process of asking speckit for running the clarify task which is an additional task you can do to clarify some of the things if your specification is not correct then it will actually show it up in VS code asked style which is you know those questions and what what do you want to address give an answer and so forth. the core is actually completely conversational. So ah so so that's the so so that that's a way to you know if you if you have a specific need within your organization to formalize it a little bit more with know no these are these questions need to always be answered that's where that preset comes in now not even in the same week another community yeah I see the other one from our competitor Right, right, right from club.
So, the same thing, same porch back, you know, uh, as I said, we're we're open, but we also want to make sure that everyone has the same level playing field for the for the project itself. Um, now I'll be honest, um, there are things that, uh, you know, that we're learning from this. uh you know uh I I I loved uh seeing uh you know our uh co-pilot friends uh you know actually deliver uh what we call plan mode in in our product. Uh to me that's a smaller variety of doing specs. Uh so you know so if you would ask me you know do would I use a spec for everything?
Probably not. Uh but where do you put that line? Right. Yeah, that's a that's an excellent point. Actually, somebody earlier asked like where where were the uh the ask agent and plan modes. I guess sort of like calling out that the difference. So yes, there is a plan mode that's now a part of of VS Code and you can use that and you can also use specit right well and and how I would normally say it is like okay if you need to do a oneoff that you don't ever have to share, sure plan mode's fine.
if you need def traceability probably not that's fair point fair pay and thank you so much to um Oxid 53's Charlie 6 for bringing that up before we move on I want to make sure that we get this also this question from uh Jamie Betenor and thank you for being here can we leave a maintenance plan as an open layer um you can u you you well with presets you can basically define what you want to So if you want to do something like that, yes you can. Now uh it depends on how you want to address the problem.
Right? If you're talking about maintenance, I would be looking at it from a perspective of okay, traditionally we would have milestones or sprints or uh you know whatever you want to call them and you would kind of plan things out. So maintenance plan sounds to me like something that you already plan out. So that is probably a level higher than the spec. So you know from a maintenance plan you probably be looking at okay what kind of spec or aka features or things I need to address do I distill from that. So now I do have to say that if you're looking at it from a perspective of well where do I put what it goes in a spec and what should be a higher level plan u you can create specs of specs because there's nothing in the process uh or in any of it that the commands do that require you to go uh at at the end of the plan or at the end of the task to actually give it to the give it to the agent.
You could just say, "No, I just want to plan everything out." And then those particular tasks can be used for specs themselves, right? Because it's it's an open system. So, however you want to create your commands or however you want to use them, that's up to you. uh if you do create specs and I I would always urge you to look at it from the perspective of hey I'm asking an intern to do the Yeah. And it's a very capable intern and it's a very quick intern but it's still an intern nonetheless. So the more specific you can be for a certain task the better it will perform.
But that comes at a cost and you'll notice that here on the bottom right uh right now with the context window that I'm flowing in uh I'm at 66 yeah 66% of the context window yet. So if your specification and the subsequent planning steps lead to you running out of context window, you probably want to first try uh starting a new conversation for each of the steps if necessary. Uh but if you then still run out of context window, you probably for the models that you're using oversp specified because you want to keep that within that context window because the moment you start context window compaction, it loses context which means its reliability goes down off a cliff and that has nothing to do with speckit that has everything to do with how LLM just operates just the models.
Yeah, of course. Yeah. So uh looks like that uh we're close to that's testing right now. So as you can see you know uh even uh even a seemingly innocuous small utility you know when you spoily spec specified and with testing in place you know it it can take a while as you can see it generated 55 tests and uh it's now on to writing integration tests. So it's uh interesting how uh how that goes. So I don't think I've have built ever. Let me do Oh, I'm lying. I do have a CLI tool, but I mean saying I built it is or we me and Copilot built it together to be able to use the uh CH GPT2 image creation model from Foundry from uh the CLI so I can generate images for stuff.
But what do you think it would have taken for a developer to do this to create this this CLI tool without the help Well, the the biggest problem is the research. I think the coding aspect is not necessarily always the biggest problem. It's like where do you get all the information from? Because you know, you notice that it talked about that uh time zone data. Just getting that information already uh and how and how to then format and digest it and put it in play. I mean, I would probably take a couple of days just to get absolutely figure out what libraries to use.
I know like that's that's that's absolutely all very timeconuming. What a time we live. There you go. It see now it's to recover because it uh found some errors in the compilation. Yeah. When when you were creating the constitution, you did add like the testing requirement and the coverage was part of that, right? I just said testing. I didn't say coverage, but you didn't say what. Okay. It infered from that. Yes. So, so yes, uh if you're doing a total green field, which actually what this is, but if you do total green field and you just want to, you know, get to a working example, you can just say uh omit testing, you know, the obviously that comes with the catch that uh you know, you're not you might not end up what you need.
Yeah. It might not work. Yeah. Yeah. So, as you can see, the gate that it picked was actually 80%. So, that's pretty high. Uh that is probably where you would want to be specific. If you you know an LLM uh to get something to 80% specifically if you ever would do an brownfield app you probably don't want to do that from out of the gate. You probably then want to more like mon you know incrementally want to increase your code coverage you know because otherwise uh yeah it would crunch tokens uh just to get to that point.
We have a question from the audience about compaction and when you know that your context window has been compacted. I think it's a notice right like would you get a notice pop up? Yes. Yes. If it if you're in copilot you'll see that it actually says compacting conversation. Uh but yeah here I mean on the bottom right for me uh you know you can see where I'm at. So there it is. And I can actually click the word compact conversation here. So and you see that it actually varies because it does drop things out of the context now that the copilot integration is a lot smarter.
So it's not like it's compacting. It just doesn't need it. So there's a difference between compacting the conversation be and ha and and having the tooling intelligent enough to know no I already did this part of the process. So it really depends on how well your coding agent is as well. You know that's true you know your mileage will vary depending on which coding agent you're using. That's true. And for the copilot CLI is a slash command. So you can do a slash context. Now full disclosure uh a community member actually asked me about that uh you know and uh he was like well can you run this in skills mode because obviously a lot of other uh vendors use skills.
Uh the answer to that is yes. Uh it's just not the default you know you specify it at in in in a time that you want them to be scaffolded out as skills and then they're available as skills. That's actually mutually exclusive. you either run them at agents or you run them as skills in the copilot CLI so that you don't confuse the system of like hey this is a skill that's an agent it's I I wouldn't normally do that but okay so look at this so it's running the final final test and you're getting to this green field look at all that look at all those passing tests okay f well maybe I think so I I'm pretty sure it will recover and then we're just going to ask it to actually run the app cuz uh you know well full disclosure too I asked it to create in multiple different ways so it probably is a little bit oversp specified in that sense.
Uh yeah so it now needs to do some serialization fix. you had your script um doc that was for you for to follow sort of obviously for for the demonstration purposes but I don't know would you recommend that people have sort of like some sort of structure when they're starting like before the actual going through the process of specking like to have like a baseline uh well this is actually just me being uh extremely efficient I should say okay this is actually the script distilled from the walkthrough that you can actually get literally walk through.
There's uh on the Well, let me do I still have it here? Nope, I don't. Give me one second to pull it up. Sorry, I closed my uh my window and I'm doing that in a sec window because I need to click through. Give me a second here. No problem. While you're clicking through finding that folks, please go ahead and go to the repository and drop your star. This rep is getting close to 100K. I love to see it cross 100K this weekend. We can do it. So go ahead and start the project for me please.
So here you see what I mentioned. Uh you know the top one is the actual one that we're executing. Uh so you will just see if you click on it it's this is listed as a community walkthrough. Uh full disclosure, all of them here are done by me myself, but they're listed on my personal repositories because I wanted to make sure that the orb repository wasn't necessarily polluted with that content. And I would love other people to contribute in a similar fashion. So Oh, I love that. Man, would you would you drop me that link so I can share as well, please?
Thank you. We'll do that. Uh do can I do that now? Let me just actually Yeah. Oh, if it's going to throw off your screen, that's okay. I'll find it. No worries. Okay, we'll do it after. But anyway, so yes, here you can see, oh, that's the other question that customer has have asked. It's like, well, can you use this for a brownfield app? The answer is absolutely yes. And these walkthroughs actually illustrate the process. So, if these walkthroughs you can actually do yourself and see it in action and as you can see um uh I'm I've tried it on a ASP.NET net uh app uh with 307k lines of stuff and I say stuff and not code because for an LLM you know whether or not it's C rays or SQL or JavaScript or whatever it does need to be able to go look at that so that's uh the reason why I say lines off and then all the other ones similar to the Java one is here you know one with 400k uh then I went uh go react which uh is based on uh the NASA open source hermas project was really fun to do that one to add some additional features to it and then uh as we talked before you know the the the preset that I used for the battle plans aka pirate speak is listed here as well how do you use a preset and then here the custom extension that's the aid extension that I also previously clicked on know if you want to do a different follow process here you can see this one does vision road map progress tracking work Q work item and then execution and the feedback loops which is different than the core specket process, but they're all, you know, part of the specket family.
Very cool. I dropped that link in the chat, France, so you can go and and take a look through the walkthroughs. And that's a great way to contribute as well. If you contribute with a walkthrough like that, that would be awesome. And it says that it's done. So, let's execute. We're going to be completely lazy and let the LLM actually do that. There we go. And let me open that up in Oh, come on. Let's see what you build. Let's see what it build. Right. Too quick. I was trying to actually Yes, there we go.
So now let's scroll that out a bit. So this is the actual binary that it called. You can see that here. So it started with give me the help and then it shows you the help that it built. It has structured JSON if you want it or human readable text. It can force a 24-hour clock. It obviously shows version. Then you have a commands now that displays the current local time for one or more locations. Meet you know if you you can meet between different locations and then convert one time the time in to one time zone.
And then you see it here calling with several different ways. So here you see how then actually comes out. So this is a time zone now. So apparently you know in New York it's uh according to it it's uh 2 p.m. That would be correct. It's accurate. Yes. Yes it is. Imagine. Imagine it was I mean that's that's so mey though. That is very beefy of a of a CLI tool. Yep. So cool. you know, and and that was all just done, you know, in in a matter of what is it? 45 minutes. In Yeah, about 45 minutes.
That's terrific, right? And uh and you have the spec, you have all the tasks that I did, you know, you even have the test results, you know, uh everything ready to commit. Obviously, you know, I uh I already did the commit in the actual walkthrough, so you can see the results there, too. You could actually do a fun contrast and compare if you would run it yourself to see hey this is what was the result when I ran it and this is the result that you have because obviously it's an LLM so uh that's doing the work.
So there will be always you know some differences here and there. It might make different decisions based on you know what model you use and when you're actually uh doing the process. So this has been very cool though very very cool. So I mean listen you still had plenty of context plenty. You you had you had significant context left. Um let me take a look at the chat and see if there is any other questions. There's a question from Mr. Kumar and thanks for the question about managing logic regressions when using copilot. Uh let's see.
I think it's not necessarily related to the uh to the project that we're on but it's about existing logic breaking from elsewhere and the codebase. I mean I think generally speaking if you start your projects using spec kit I would I mean this is obviously not don't quote me but I would think that the chances of having those regressions would be lessen because you are documenting things in a more broad manner. So maybe considering that uh could be a point. Um and then we have a question about what we've been talking about. Brian, this is such a good question because we Thank you for Yeah, we assume.
We assume. Yes, we really do assume. Green field means you have nothing. You start from scratch. You know, the grass is greener on the other side, right? Brownfield is, oh boy, I have an existing application and there is you inherited something from literally turning brown, you know, because I I can barely get time to maintain it. Excellent. Excellent. And so again to the point that because we're thinking spec kit you're specking from beginning and you're doing spectra development and you're starting from zero like we saw in this project here but the question for customers is well can I use this also for existing things like for what I'm not working from zero um so for those brownfield projects and thank you so much that is such a good question um on the note of you know obviously it's an open source project uh feedback is always welcome.
Uh you know feature requests are good. Best thing obviously are PRs cuz that's what the ones that I love the most because uh you know that actually means that you want to contribute something. Having that said you know if you can do it as an extension you don't need me. If you can do it as a preset again same thing right? So that's the whole reason why we went this route you know to be able to see what you want to do. Uh now do uh ask for listing in the community catalog you know. So we can share it all you know across uh the entire ecosystem.
Um and coming back to that question about uh kind of like uh drift um there are extensions that actually address that as well that look at okay well I went through the process it didn't do exactly what I needed to do. So there are extensions that deal with that. Um we are thinking of uh doing some more work there as well to uh adopt that into the core uh original. Oh that'd be great. Um haven't decided yet uh you know uh because obviously we have to weigh that against all the other stuff that uh is happening and keeping uh you know the rest moving forward.
Um I do want to call out that you know I hope that the workflows uh part uh gets enough traction as well because that would make it so that you can integrate it into your CI/CD pipeline uh or you could even formalize your own workflow. I would love to see for instance the the person that did the screenwriting extension to see if they know if they can do some automation in their workflow as well because you know obviously uh you know if you're producing it's like a minieries uh you know you're probably looking at multiple step that need to get done as well.
Uh again there also it's completely open. Um the workflow uh has cataloges as well. Uh then on top of that workflows obviously involve steps. So uh we made that uh pluggable as well. I still need to finish the catalog support there so that you can actually list those in the community catalog as well because I can you know I I came up with 10 primitives for that. I'm not sure if they match all of what you need but if it does then fantastic if it doesn't please contribute a stamp. Amazing. Amazing. And thank you for addressing Mr.
Kumar's uh question as well. And then I want to just bring up quickly Jamie's comment about specs for specs from specs. Okay, that's an interesting point. Yeah, saving the original definitions allow them all to keep the contest. So it would be cool to see some of the additional work that you have planned. Um we have learned a ton today. Thank you so much for this was like delightful. Come back. I I would love to I mean I would love to see you know in in in three four five months depending on how Yes. Please come back.
Please come back and listen if if you found any of this interesting um there is a ton of work that can be can be done uh in the projects. This is an open source project. Like yes we're lucky that we have the backing of a company that's actually putting out resources and and amazing people like you. But we need the community. We need the community. We need all of you and that's one way to make sure that you know again the project is moving forward and that and that we're addressing like a broad use case not just what what we need.
So this has been delightful. Thank you so much Manfred. Please go for it. Yeah. You you mentioned just dropping us a star but because there are all community extensions and presets and so on and they are hosted on their own repositories. If you use theirs drop them a star too. Yes. Yes please. Yes please. So start us and go to the website, go through the walkthroughs. If you end up clicking and going and using, please start those as well. Um, and this has been delightful. I I'm excited. I think I'm going to this is a a good call action for me to get more organized about the way that I've been just kind of white knuckling some projects.
Like I I could have saved a ton. And honestly, now that we we need to care about that a lot more, um, this is one sure way to make sure that we're being a lot more efficient. So this has been super informative. Manfred, I shared your um ex account. I know you're also on LinkedIn. Uh thank you so very much. I mean I think this is a great way for us to work like walking through this flow of moving from that sharing tent into actually executing these blocks of work. And for me clarity like having everything specified in a way that it's it's understandable to me and to the LMS to the agents.
great way of working. So, thank you so much. This has been delightful. Okay. Appreciate it. All right. Well, friends, don't forget to go by the repository uh and drop a star. Thank you, Manfred. Make sure that you follow uh Manfred as well on X. I'm going to put up on the screen one more time. Give him a follow. Um and if you end up contributing to this project, please let me know. DM me. I'll put my X as well. Um I can't believe I'm calling it X. I've been brainwashed. It's Twitter. Twitter forever. So I'm gonna drop my Twitter here as well, please.
Um just pop it in there. Uh if not, find me on LinkedIn, man. Find me on LinkedIn. I I want you to be where you are. Be where makes you happy. Also, we are on GitHub. So I think there is other points of contact there. So thank you all so much for joining us this open source Friday. You are awesome. Have a great weekend. just leave, don't work anymore. And if they ask why, just say like some lady at open source Friday said. So before we go, I'm so sorry and I do have to go because I have a meeting that I'm late for.
Uh please, please, please, please, please don't forget to share with your friends, with your neighbors, and for yourself as well. Uh the way that we help open source win right here. Bring your projects to open source Friday. Please read the criteria. It's a good time. I promise we'll make it fun here. Thank you all so much for being here. We'll catch you next week.
More from GitHub
Get daily recaps from
GitHub
AI-powered summaries delivered to your inbox. Save hours every week while staying fully informed.









