A React task management app used to demonstrate GitHub Copilot's four customisation primitives.
npm install
npm run dev # Dev server on :5173
npm test # Unit tests (Vitest)
npm run test:e2e # E2E tests (Playwright)Where: .github/copilot-instructions.md
- Open the file — it's short and focused (project context, stack, structure, commands)
- Point out the progressive disclosure pattern: instead of cramming everything in, it links to
docs/files that Copilot reads only when needed - Open
docs/component-patterns.mdas an example of a linked deep-dive doc
Key point: Instructions are injected into every chat automatically. Keep them concise and universally applicable — like onboarding a new team member.
Targeted instructions: .github/instructions/
react-components.instructions.md— hasapplyTo: "src/components/**/*.tsx", only activates when editing componentstesting.instructions.md— activates only for test filese2e.instructions.md— activates only for Playwright specs
Key point: Targeted instructions scope rules to where they matter without bloating the global file.
Where: .github/prompts/
| Command | What it does |
|---|---|
/new-component |
Scaffolds component + styles + test (asks for name) |
/unit-test |
Generates unit tests for any component |
/e2e-test |
Generates a Playwright spec for a user flow |
/story-map |
Generates a prioritised user story map |
Demo flow:
- Open chat, type
/new-component, enter a name likeSearchBar - Show how it creates three files following project conventions
- Type
/story-map, enter "task filtering" — show the structured output
Key point: Prompt files are named, on-demand tasks with variable inputs. Use for recurring work that always follows the same structure.
Where: .github/agents/
| Agent | Role | Tools |
|---|---|---|
@reviewer |
Code review — reads code, never edits | codebase, fetch |
@planner |
Implementation planning — designs approach, never codes | codebase, fetch |
@tester |
Testing specialist — writes and runs tests only | codebase, terminal |
Demo flow:
- Switch to
@planner, ask "Plan adding a search/filter feature to the dashboard" - Show the structured plan output (summary, files, steps, testing plan)
- Switch to
@reviewer, ask "Review the Button component" - Show how it flags issues without touching code
Key point: Agents enforce role boundaries. A reviewer that can't edit. A planner that can't code. Maps well to approval gates and separation of concerns.
Where: .github/skills/
| Skill | What it packages |
|---|---|
story-map |
SKILL.md + template.md — generates story maps from a standard template |
component-suite |
SKILL.md + component template + test template — full component scaffolding |
Demo flow:
- Open
.github/skills/component-suite/— show the folder structure - Point out how SKILL.md references templates and docs
- Explain progressive loading: Copilot reads description first, loads full instructions only when relevant
Key point: Skills bundle instructions, templates, and scripts into a portable package. Same skill works in VS Code, CLI, and the coding agent.
| Need | Use |
|---|---|
| "Always follow this rule" | Custom Instructions |
| "Do this specific task on demand" | Prompt File |
| "Act as this specialist role" | Custom Agent |
| "Run this reusable workflow with templates" | Skill |
.github/
copilot-instructions.md ← Global instructions (always-on)
instructions/
react-components.instructions.md ← Component file rules (applyTo glob)
testing.instructions.md ← Test file rules
e2e.instructions.md ← E2E file rules
prompts/
new-component.prompt.md ← /new-component slash command
unit-test.prompt.md ← /unit-test slash command
e2e-test.prompt.md ← /e2e-test slash command
story-map.prompt.md ← /story-map slash command
agents/
reviewer.agent.md ← Read-only code reviewer
planner.agent.md ← Implementation planner
tester.agent.md ← Testing specialist
skills/
story-map/ ← Story map generator + template
component-suite/ ← Component scaffolder + templates
docs/ ← Progressive disclosure docs
src/ ← React app source
e2e/ ← Playwright specs