A hands-on workshop run with multiple parallel teams of 5 or more — each team made up of a PM, Architect, Database Dev, Backend Dev, UI Dev, and QA Engineer — that uses a sequence of specialised GitHub Copilot agents to take a single business requirement all the way to tested, working code: BRD, design, work items (Epics → Features → Stories → Tasks), scaffold, implementation, and Playwright E2E tests — all generated as local files in the repo. Every team works the same requirement independently, then compares approaches and outcomes at the end.
If you are new to this framework, read the documents in this order:
| Step | File | What it gives you |
|---|---|---|
| 1 | README.md (this file) |
Overview, folder structure, setup, and quick-start commands |
| 2 | docs/PRE-SETUP-CHECKLIST.md |
Checklist of everything to prepare before the workshop begins |
| 3 | workshop-stack.md |
Fill this in before Phase 2. Your tech stack config — language, framework, database, frontend, paths. See docs/STACK-SETUP-GUIDE.md for step-by-step help and ready-to-copy examples. |
| 4 | docs/COMPLETE-WORKSHOP-FLOW.md |
Full step-by-step guide to running the workshop with all agents |
| 5 | docs/FACILITATOR-GUIDE.md |
Narration scripts and talking points (facilitator only) |
Just running the workshop? Read steps 1 → 2 → 3 → 4.
Facilitating for an audience? Read all five in order.
Takes a single business requirement as input and produces:
- A complete Business Requirements Document
- A technical design document with architecture, data model, API contracts, and component structure
- A full Agile work breakdown: Epics → Features → User Stories → Tasks (as local Markdown files)
- Effort estimates for every work item with reasoning
- A capacity-driven sprint plan
- A working application scaffolded and implemented for your chosen tech stack
- Playwright end-to-end tests covering the implemented features
- Optional: the full work-item hierarchy synced to Azure DevOps Boards
| Requirement | Notes |
|---|---|
| VS Code | Latest |
| GitHub Copilot extension | Latest (signed in) |
| Git | Any recent version |
| Azure DevOps account | Optional — only required if using the ADO sync phase |
| ADO MCP server | Optional — only required if syncing work items to ADO Boards |
.github/
agents/ Copilot agent definitions
brd-agent.agent.md
design-agent.agent.md
epic-agent.agent.md
feature-agent.agent.md
user-story-agent.agent.md
task-agent.agent.md
scaffold-agent.agent.md
implement-agent.agent.md
unit-test-agent.agent.md
estimate-agent.agent.md
sprint-planning-agent.agent.md
playwright-agent.agent.md
ado-sync-agent.agent.md
review-agent.agent.md (on-demand — use at any time after implementation)
skills/ Detailed skill instructions per agent
create-brd/SKILL.md
create-design-doc/SKILL.md
create-epics/SKILL.md
create-features/SKILL.md
create-user-stories/SKILL.md
create-tasks/SKILL.md
create-scaffold/SKILL.md
implement-task/SKILL.md
create-unit-tests/SKILL.md
create-estimates/SKILL.md
create-sprintplan/SKILL.md
create-playwright-tests/SKILL.md
create-ado-sync/SKILL.md
review-task/SKILL.md
docs/
requirements/
BRD.md Generated by brd-agent
design/
design-doc.md Generated by design-agent
work-items/
epics/ Generated by epic-agent
features/ Generated by feature-agent
stories/ Generated by user-story-agent
reports/
effort-estimate-report.html Generated by estimate-agent
sprint-plan-report.html Generated by sprint-planning-agent
test-reports/ Generated by playwright-agent (HTML)
ado-sync-config.json ADO connection settings
ado-sync-state.json Created by ado-sync-agent (idempotency)
playwright-mcp-setup.md Playwright MCP configuration guide
issues/ Task files generated by task-agent
src/ Project scaffold and implementation code
e2e/ Playwright test files generated by playwright-agent
workshop-stack.md Tech stack configuration (fill in before Phase 2)
init-workspace.sh Workspace initialisation (Mac/Linux)
init-workspace.ps1 Workspace initialisation (Windows)
git clone {your-repo-url}
cd {your-repo}
# Mac/Linux
bash init-workspace.sh
# Windows
.\init-workspace.ps1Edit docs/ado-sync-config.json:
{
"organization": "https://dev.azure.com/{your-org}",
"project": "{your-project-name}",
"areaPath": "{your-project-name}\\{optional-area}",
"iterationRootPath": "{your-project-name}\\Sprint"
}If you are not using Azure DevOps, skip this step. The framework produces all work item files locally and the optional ADO sync phases (Phase 4 and Phase 7) can be omitted entirely.
Ensure the ADO MCP server is connected in VS Code and can list
your ADO projects before running the workshop. Full setup instructions —
.vscode/mcp.json, authentication via az login or PAT, and verification —
are in docs/ado-mcp-setup.md.
Local-only or non-ADO users: Skip this step. The ADO MCP server is not required for any phase except
ado-sync-agent.
Open VS Code with this repository loaded and open the GitHub Copilot Chat panel. For each phase below: select the named agent from the Agent dropdown in the chat panel, type the prompt shown, and press Enter. Phases must run in order — every agent reads the output of the previous one.
Who: PM
Agent: brd-agent
Prompt: paste the customer requirement text directly into the chat,
or reference a file in the repo, e.g.:
create the BRD from requirement.txt
Output: docs/requirements/BRD.md — a structured Business Requirements
Document listing actors, functional requirements (FR-XXX), non-functional
requirements, business rules, and out-of-scope items. Review it with the
team before Phase 2 — every later artifact traces back to it.
Who: Architect
Prerequisite: workshop-stack.md is filled in (no {placeholder} values left).
Agent: design-agent
Prompt:
create the design document from the BRD
Output: docs/design/design-doc.md — the technical design: architecture
overview, data model, API contracts, component structure, and data-testid
values. This is the single source of truth that every work-breakdown and
implementation agent reads from.
Who: PM (with input from Architect) Run the four agents below in order. Each one reads the output of the previous.
3a — epic-agent
create epics from the design document
Output: docs/work-items/epics/ — one Markdown file per Epic, each
covering a major business capability traced to BRD requirements.
3b — feature-agent
create features for all epics
Output: docs/work-items/features/ — one file per Feature, each an
independently demonstrable slice of an Epic.
3c — user-story-agent
create user stories for all features
Output: docs/work-items/stories/ — user stories written from the
role's perspective with acceptance criteria.
3d — task-agent
create tasks for all user stories
Output: issues/ — typed implementation tasks (DATABASE, BACKEND,
UNIT-TEST, FRONTEND, E2E-TEST) ready for the team to pick up.
Skip this phase if you are not using Azure DevOps. Run it now to push the freshly-created backlog (Epics → Features → Stories → Tasks with parent-child links) to Azure DevOps Boards so PMs and stakeholders can review the hierarchy in ADO before any estimation work begins. No estimates or iteration assignments are pushed yet — those come in the 2nd pass (Phase 7).
Who: PM
Prerequisites: ADO MCP server connected; docs/ado-sync-config.json filled in.
Agent: ado-sync-agent
Prompt:
push the backlog to Azure DevOps
Output:
- Full Epic → Feature → Story → Task hierarchy created in ADO Boards with parent-child links
docs/ado-sync-state.json— records each work item ID for the 2nd pass
Who: PM or Architect
Agent: estimate-agent
Prompt:
analyse all work and produce the estimate report
Output:
- Effort estimates written into every Task, Story, Feature, and Epic file
docs/reports/effort-estimate-report.html— a self-contained HTML summary you can open in any browser to review totals, breakdowns by task type, and the reasoning behind each estimate.
Who: PM
Agent: sprint-planning-agent
Prompt:
create the sprint plan
The agent will ask three questions about team capacity (developers per role, sprint length, hours per developer per sprint). Answer them in chat.
Output: docs/reports/sprint-plan-report.html — a capacity-driven
sprint plan showing which stories land in which sprint, utilisation per
role, dependencies, and sprint goals. Open in a browser to review.
Re-run the same agent. It detects the existing
docs/ado-sync-state.jsonand switches to update mode — sets Remaining Work from estimates and Iteration from the sprint plan on already-synced items. Never creates duplicates. Any new work items found locally since the 1st pass are created and linked.
Who: PM
Agent: ado-sync-agent
Prompt:
update ADO with estimates and sprint assignments
Output:
- Remaining Work and Iteration fields populated on existing ADO work items
docs/ado-sync-state.jsonupdated withlastUpdatedtimestamp
Who: Architect or any developer
Prerequisite: workshop-stack.md has no unfilled {placeholder} values.
Agent: scaffold-agent
Prompt:
generate the project scaffold
Output: src/ populated with the folder structure, entry-point stubs,
dependency manifest (e.g. package.json / requirements.txt / pom.xml),
and playwright.config.ts for the chosen stack. Additive only — no
existing files are overwritten.
Who: Database Dev → Backend Dev → UI Dev (in dependency order)
Implement each task file in issues/ in this order:
DATABASE → BACKEND → UNIT-TEST → FRONTEND → E2E-TEST.
implement-agenthandles DATABASE, BACKEND, and FRONTEND tasksunit-test-agenthandles UNIT-TEST tasks (run after each BACKEND task)playwright-agenthandles E2E-TEST tasks (Phase 10, after all FRONTEND tasks)
Agent: implement-agent
Prompt (one task at a time):
implement issues/01-DATABASE-{name}.md
Output: production code written to the folders defined in
workshop-stack.md (e.g. routes_folder, controllers_folder,
components_folder). The agent updates the task file's status to done.
Optional — unit tests after each BACKEND task:
Agent: unit-test-agent
Prompt:
implement issues/{UNIT-TEST-task-file}.md
Output: unit test files written to unit_tests_folder from
workshop-stack.md, with one test case per acceptance criterion.
On-demand review: After implementing any task, invoke
review-agentwith the task file path. It posts a structured review directly in chat — pass/fail per acceptance criterion plus a recommendation to APPROVE or REQUEST CHANGES. Nothing is written to disk; fix any issues and re-invoke on the same task to re-review.
Skip this phase if the application has not been implemented yet.
playwright-agentgenerates test files from E2E-TEST task acceptance criteria and the design document, then optionally runs them against the running application using the Playwright MCP server.Requirements:
- Application running locally at the
baseURLfromplaywright.config.ts(if present — created byscaffold-agent); otherwise the fallback URL isdev_server_urlfromworkshop-stack.md- Playwright installed (
npm install,pip install pytest-playwright, etc.)- Playwright MCP server configured (see
docs/playwright-mcp-setup.md)
Who: QA Engineer
Agent: playwright-agent
Prompt:
create tests for all E2E-TEST tasks
Output:
e2e/*.spec.ts— one TypeScript spec file per feature area, using onlydata-testidselectors from the design documentdocs/test-reports/— HTML test report (when tests are executed)
To run the tests and view the report:
npx playwright test
npx playwright show-report docs/test-reports| Agent | Purpose | Reads | Writes |
|---|---|---|---|
brd-agent |
Business Requirements Document | Requirement text | docs/requirements/BRD.md |
design-agent |
Technical design | BRD | docs/design/design-doc.md |
epic-agent |
Epic work items | Design doc, BRD | docs/work-items/epics/ |
feature-agent |
Feature work items | Epics, design doc | docs/work-items/features/ |
user-story-agent |
User story work items | Features, BRD, design doc | docs/work-items/stories/ |
task-agent |
Implementation tasks | Stories, design doc | issues/ |
scaffold-agent |
Project scaffold | workshop-stack.md |
src/ folder structure + entry points |
implement-agent |
Feature implementation | Task files, design doc, workshop-stack.md |
src/ |
unit-test-agent (on-demand) |
Unit tests for BACKEND tasks | BACKEND task files, workshop-stack.md |
Unit test files in unit_tests_folder |
estimate-agent |
Effort estimates + report | All work items | Work item files + HTML report |
sprint-planning-agent |
Sprint plan + report | Estimates, stories | HTML report |
playwright-agent |
E2E tests + test report | E2E-TEST tasks, design doc | e2e/*.spec.ts + HTML report |
ado-sync-agent (optional, two-pass) |
ADO Boards sync — 1st pass after task breakdown creates the hierarchy; 2nd pass after sprint planning updates Remaining Work and Iteration | All work items, estimates, sprint plan | ADO work items + docs/ado-sync-state.json |
review-agent (on-demand) |
Code review vs acceptance criteria | Task file, implemented code, design doc | Structured review reply in chat (no files written) |
Domain fidelity Every agent preserves the exact entity names, role names, and lifecycle states from the original requirement. Nothing is renamed or generalised without explicit instruction.
Traceability Every work item traces back to a BRD functional requirement (FR-XXX). Every design decision traces to a requirement. Every task traces to a user story. The chain is never broken.
No estimates during work breakdown Estimation is a separate phase. Work breakdown agents never assign effort. This prevents scope being constrained by premature estimates.
Dependency ordering Tasks are always ordered DATABASE → BACKEND → UNIT-TEST → FRONTEND → E2E-TEST. Sprint planning always respects this dependency chain.
Idempotency Every agent handles re-runs gracefully. Files are overwritten, not duplicated. The ADO sync state file prevents duplicate work items.
Tech-stack agnostic The framework describes patterns and contracts, not specific frameworks, ORMs, or libraries. It works for any technology stack.
To add a new agent:
- Create
.github/agents/{name}.agent.md - Create
.github/skills/{skill-name}/SKILL.md - Add the agent to the workshop flow at the appropriate phase
- Update the handoff message of the preceding agent
To customise estimation heuristics:
Edit .github/skills/create-estimates/SKILL.md
Adjust the t-shirt size to hours table and complexity signals.
To customise sprint planning capacity:
Fill in team size and sprint length in workshop-stack.md (Universal Optional Fields section).
The sprint-planning-agent reads capacity inputs interactively.
To add a new task type:
Edit .github/skills/create-tasks/SKILL.md
Add the new type to the type table and define its scope rules.
| Issue | Resolution |
|---|---|
| Agent renames domain entities | Re-invoke with explicit entity names listed |
| Mermaid diagrams not rendering | Open file in VS Code Markdown Preview |
| HTML reports not opening | Open directly in a browser — no server needed |
| ADO sync fails with 401 | Refresh your PAT token |
| ADO sync fails with 404 | Check organisation and project name in config |
| Duplicate work items in ADO | Check docs/ado-sync-state.json — re-runs are idempotent (the 2nd pass updates rather than re-creates); only delete stale entries if the ADO item itself was deleted |
| Sprint plan overcommits capacity | Re-invoke sprint-planning-agent with lower hours per developer |
PRE-SETUP-CHECKLIST.md— complete before every workshopFACILITATOR-GUIDE.md— talking points, timing, and recovery stepsinit-workspace.sh/init-workspace.ps1— workspace initialisation
Built for the Agentic SDLC Workshop. Extend it, adapt it, make it yours.