- Lab
-
Libraries: If you want this lab, consider one of these libraries.
GitHub Copilot Across the SDLC
In this hands-on lab, you will use AI-assisted workflows in Copilot to improve documentation, requirements planning, and testing throughout the SDLC (Software Development Life Cycle). Using custom instructions and isolated review sessions, you will refine documentation, structure user stories, evaluate requirement changes, and generate test cases.
Lab Info
Table of Contents
-
Challenge
Establish project level custom instructions
When integrating AI models into your software development life cycle, it's best to start by establishing the domain knowledge, content, current goals, and any other information that may be needed to assist in proper development of your codebase. After navigating to the lab using
cd sdlc_lab, launch GitHub Copilot CLI using the command:copilotAt the interactive Copilot prompt, enter:
Read .github/copilot-instructions.md and summarize the project constraints you will follow. Do not edit files or execute code.Permissions: Copilot may request approval to read, edit, or run commands. Inspect each proposed action; do not approve modifications to
cart.pyin this lab. -
Challenge
Reconcile outdated documentation
Once
README_updated.mdis created, you can go through both and see what the AI model chose to update. Also compare the features explained inREADME_updated.mdto the actual current features of thecart.pycode. -
Challenge
Expand an ambiguous enhancement
Prompting Copilot to transform an enhancement request into a structured epic helps bridge the gap between high-level business requirements and actionable development tasks. By reviewing existing code, documentation, and project instructions, Copilot can ground its recommendations in the application's current functionality rather than making unsupported assumptions.
This approach provides several benefits:
- Identify ambiguity: Surface missing requirements and questions that need product-owner clarification before development begins.
- Improve planning: Break broad enhancement requests into prioritized user stories with testable acceptance criteria.
- Maintain consistency: Use existing documentation and custom instructions to align proposed changes with project constraints.
- Reduce rework: Identify dependencies, edge cases, and out-of-scope functionality before implementation.
- Preserve human oversight: Keep assumptions provisional and require human approval for unresolved business decisions.
The goal is to use Copilot as a planning assistant rather than an autonomous decision-maker, producing a structured foundation for development while keeping requirement ownership with the appropriate stakeholders. In the already open
copilotsession, enter the following:Read planning/enhancement_request.md, cart.py, docs/README.md, and .github/copilot-instructions.md. Create planning/epic.md containing: problem and goal; confirmed behavior; ambiguities and product-owner questions; explicitly provisional assumptions; 3–5 prioritized user stories with Given/When/Then acceptance criteria; dependencies; and out-of-scope items. Do not modify production code or treat unanswered questions as approved decisions.Are the following key criteria addressed: discount stacking, precedence, rounding, invalid/expired promotions, and acceptance? Issues that'll block the implementation should be addressed by the AI model during this step.
-
Challenge
Writer/reviewer pattern with isolated CLI sessions
Using separate Copilot CLI sessions creates cognitive isolation between writing and reviewing. A fresh reviewer session evaluates the work without inheriting the writer's reasoning, assumptions, or conversational context, reducing confirmation bias and increasing the likelihood of identifying overlooked requirements, contradictions, and risks. This writer/reviewer pattern provides a more independent evaluation while allowing the writer to incorporate feedback into an improved final deliverable. The first open Terminal will be designated the writer session. You'll open a second Terminal, which'll be the reviewer session. (This isn't required for functionality, but better separates the two sessions.)
-
Enter
exitto quit the current Copilot session (the writer session). -
Open a new terminal session, which'll be the reviewer session: to the right of the current Terminal, click + > New tab > Terminal.
-
In the reviewer session, run
cd sdlc_lab. -
Start Copilot:
copilot -
In this fresh session, enter the following:
Act as an independent requirements reviewer. Read .github/copilot-instructions.md, cart.py, planning/enhancement_request.md, and planning/epic.md. Do not edit the epic. Create reviews/epic_review.md identifying contradictions, unsupported assumptions, omitted edge cases, untestable acceptance criteria, and risks. Rank findings Critical, Major, or Minor and propose specific revisions. Base the review only on project files. -
Once done,
exitthis session. -
Switch to the writer session (the first Terminal), and start
copilot. -
Enter the following prompt:
Act as the requirements writer. Read planning/epic.md and reviews/epic_review.md. Revise planning/epic.md to address justified findings while keeping unresolved product decisions explicit. Create planning/review_response.md recording accepted and rejected findings and reasons. Do not modify cart.py.
(You can use the first Terminal for the remainder of the lab.)
-
-
Challenge
Assess a disruptive mid-planning change
Assessing disruptive mid-planning changes is important when using AI in the SDLC because AI-generated plans can quickly become outdated as requirements evolve. Evaluating how new requirements affect existing user stories, dependencies, priorities, and scope helps teams identify risks, compare alternatives, and avoid unnecessary rework. AI can accelerate impact analysis and recommend adjustments, while human oversight ensures changes remain aligned with business objectives. The product owner proposes multi-currency checkout instead of discount expansion. The existing function assumes USD and two-decimal-place rounding.
In a new blank
copilotsession (exitand restart), enter the following prompt:The product owner proposes replacing discount expansion with multi-currency checkout. Create planning/change_impact.md. Compare A) continue discount expansion, B) pivot entirely to multi-currency, and C) phase a small discount milestone followed by multi-currency. For each option, assess scope, API/data model impact, currency precision, FX-rate sourcing, testing, dependencies, risks, and relative effort. Score each 1–5 on business alignment, feasibility, risk control, and time to value. State assumptions, rank the options, and give a conditional recommendation. Do not implement changes. -
Challenge
Generate test cases with cognitive isolation
Finally, enter the following:
Review tests/test_plan.md for duplicates, missing negative paths, weak expected outcomes, and acceptance criteria without coverage. Append a coverage-gap summary to tests/test_plan.md. Keep unresolved product decisions explicit.
About the author
Real skill practice before real-world application
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Learn by doing
Engage hands-on with the tools and technologies you’re learning. You pick the skill, we provide the credentials and environment.
Follow your guide
All labs have detailed instructions and objectives, guiding you through the learning process and ensuring you understand every step.
Turn time into mastery
On average, you retain 75% more of your learning if you take time to practice. Hands-on labs set you up for success to make those skills stick.