This is the repository for the LinkedIn Learning course Spec-Driven Development with GitHub Spec Kit. The full course is available from LinkedIn Learning.
AI coding agents are only as good as the instructions and context they are given. This can be a challenge when you start on a greenfield project, have to work within tight specifications, or are refactoring or updating old code to new specs.
In spec-driven development you start by defining the specifications for your project, then formulate a plan, identify tasks to be performed, and finally implement the whole thing.
Spec Kit is an open source toolkit from GitHub, which streamlines AI-powered spec-driven development. It works with GitHub Copilot, Claude Code, Gemini CLI, and other AI coding tools. Spec Kit gives you tools to define and refine your project's spec, generate plans and tasks, implement everything in code, and review the results to ensure your project stays on spec.
This repo does not have traditional exercise files. Instead it has a baseline Codespaces and project setup for you to experiment with Spec Kit in a safe environment.
When you spin up this repo in GitHub Codespaces, UV is already installed and you can jump right to the step-by-step process.
If you are running this repo on your own computer, you need to install UV manually:
On MacOS and Linux:
curl -LsSf https://astral.sh/uv/install.sh | shOn Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"To start a greenfield project using Spec Kit:
In the current folder:
uvx --from git+https://github.com/github/spec-kit.git specify init --hereIn a new folder:
uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>NOTE: If you install Spec Kit in the root folder, the CLI will ask you if you really want to do this and warn of potential files being affected. You can safely say yes if you want to work in the root folder. If you want to start with a clean slate, create a new folder (described above) and re-open VS Code into that folder.
Navigate to /memory/constitution.md and update the Constitution to fit your project needs and requirements.
Note: If you use AI to build out part of or all of your Constitution, read through it from top to bottom to ensure it makes sense for your project.
- Open GitHub Copilot
- Type in
/specifyto invoke the prompt template - Describe your project including purpose, goals, user interactions, etc. Keep it high level, as if you're describing an idea to someone. No technical details yet.
- Run the prompt and allow any requests for Copilot to use
chmodto change the execution context for script files (this just allows Copilot to execute the files)
- Open
/specs/[subfolder]/spec.mdand review all the contents in the file. - Answer any items under `### Edge Cases```
- Run the following command in Copilot:
Go through all [NEEDS CLARIFICATION] items one by one and let's answer them together.- Prompt Copilot to go through the checklist to ensure all steps are addressed properly:
Read the review and acceptance checklist, and check off each item in the checklist if the feature spec meets the criteria. Leave it empty if it does not.In Copilot, invoke the /plan template and provide more detailed instructions about your project. This can include what tools, frameworks, or other features you want to add. This is where you start adding technical details.
Go to the /specs/ folder and review the files now generated, specifically plan.md, data-model.md, and research.md. Make changes as necessary and have Copilot review those changes.
In copilot, invoke the /tasks template and prompt the system to generate tasks.
Go to the /specs/ folder and review tasks.md and other relevant folders.
In Copilot, instruct the system to implement the tasks for tasks.md. Prompt the system on how you want to proceed here: Whether you want the AI to run through every task, or stop at each to ask you questions, or a combination.
Let Copilot do its job. Answer questions, perform actions, and intervene when necessary. Remember: You are using a tool, and you steer the direction the tool is going and what it does. Human-in-the-Loop is the whole point here!
Once the first set of tasks is complete, start working on your project to test and refine it. This is the beginning - what's next is up to you!
Morten Rand-Hendriksen
Principal Staff Instructor, Speaker, Web Designer, and Software Developer
Check out my other courses on LinkedIn Learning.