Build your AI toolchain IP session - Accurate as of March 2026

Build your AI toolchain

Introduction to GitHub Copilot & Claude Code concepts

Press or Space to begin

JBT Marel IP session March 10th
by Hermann Haraldsson

What's the diff?

The feature parity between Claude and Copilot is fairly comparable with my personal preference being Claude Code.

GitHub Copilot

AI agent extension to VS Code from GitHub, runs in a UI integrated in your IDE.

Claude Code

Anthropic's AI agent available as a CLI tool and also as a VS Code extension.

What do I need?

Choose your AI-dventure...

Follow the official getting started guide:

code.visualstudio.com/docs/copilot/getting-started →

Follow the official quickstart guide:

code.claude.com/docs/en/quickstart →

Assignment 1

Talk Like a Pirate

Verify your agent understands instruction files in the most extreme way possible

Step 1: Create an instruction file

Create a file called CLAUDE.md in your project root:

Always respond speaking like a pirate. Use pirate slang,
say "Arrr!" frequently, and refer to the user as "matey".

your-project/CLAUDE.md

Create a file at .github/copilot-instructions.md:

Always respond speaking like a pirate. Use pirate slang,
say "Arrr!" frequently, and refer to the user as "matey".

your-project/.github/copilot-instructions.md

Assignment 1

Talk Like a Pirate

Step 2: Test it!

Ask Copilot a simple question:

"Explain what a variable is in programming"

You should see a pirate-themed response. Something like:

Arrr, matey! A variable be like a treasure chest
where ye stash yer values for later use, savvy?
Takeaway: Instruction files (CLAUDE.md / copilot-instructions.md) customize AI behavior per-project. They're read automatically at the start of every session.
Assignment 2

Instructions vs Rules

Understand project-wide instructions vs path-scoped rules

Step 1: Add project-wide instructions

Write your own based on your project — these are just examples.

Remove the pirate line and add real conventions to CLAUDE.md:

## Build & Test
- Always run `npm test` before committing

## Project Layout
- API handlers live in src/api/handlers/
- Shared types go in src/types/

## Conventions
- Error responses must use the format in src/api/errors.ts

Remove the pirate line and add real conventions to .github/copilot-instructions.md:

## Build & Test
- Always run `npm test` before committing

## Project Layout
- API handlers live in src/api/handlers/
- Shared types go in src/types/

## Conventions
- Error responses must use the format in src/api/errors.ts
Assignment 2

Instructions vs Rules

Step 2: Create a scoped rule

Rules apply only to specific file paths — they're more targeted than instructions.

Create .claude/rules/api.md:

---
paths: "src/api/**/*.ts"
---
All API endpoints must include input validation.
Use the standard error response format from src/api/errors.ts.
Always log request duration using the logger in src/lib/logger.ts.

Create .github/instructions/api.instructions.md:

---
applyTo: "src/api/**/*.ts"
---
All API endpoints must include input validation.
Use the standard error response format from src/api/errors.ts.
Always log request duration using the logger in src/lib/logger.ts.
Assignment 2

Instructions vs Rules

Step 3: Test both together

Ask Copilot to do something for you in your project, for example:

"Create a new GET endpoint in src/api/handlers/users.ts
that returns a list of users"

Verify the output follows your instructions and rules.

Takeaway: Instructions set project-wide standards. Rules add targeted guidance for specific paths. Both tools support this pattern with different file locations.
Assignment 3

Allow Copilot to use the browser

Connect Copilot to the Microsoft Playwright MCP server to control and automate the browser via your agent.

Step 1: Install the Playwright MCP server

claude mcp add playwright -- npx @playwright/mcp@latest

This registers the server in your Claude Code config. Restart your session to load it.

Add to .vscode/mcp.json in your project:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}
Assignment 3

Allow Copilot to use the browser

Step 2: Understanding the MCP connection

Playwright MCP launches a browser automatically (headed mode by default).

What is MCP?

Model Context Protocol is an open standard for connecting AI agents to external services. Both Claude Code and GitHub Copilot support MCP — the same server works in both tools.

Optional flags:

Assignment 3

Allow Copilot to use the browser

Step 3: Automate something!

Ask Copilot:

"Navigate to https://example.com, take a screenshot,
and describe what you see on the page"

Try something more interactive:

"Go to https://en.wikipedia.org, search for 'Model Context Protocol',
and summarize the first paragraph"
Takeaway: MCP servers extend your AI agent with new capabilities. The same @playwright/mcp server works in both Claude Code and Copilot — MCP is a shared, open protocol.
Assignment 4

Sprint Board Sub-Agent

Create a custom agent that handles your Azure DevOps work items for you

Step 1: Create a custom agent

Create .claude/agents/sprint-manager.md:

---
name: sprint-manager
description: Manages Azure DevOps work items on the sprint board
---
You are a sprint board manager. You help the user:
- List work items in the current sprint
- Move items between states (New, Active, Resolved, Closed)
- Update assignments and priorities
- Summarize sprint progress

Always confirm before changing work item states.

Create .github/agents/sprint-manager.agent.md:

---
name: Sprint Manager
description: Manages Azure DevOps work items on the sprint board
---
You are a sprint board manager. You help the user:
- List work items in the current sprint
- Move items between states (New, Active, Resolved, Closed)
- Update assignments and priorities
- Summarize sprint progress

Always confirm before changing work item states.
Assignment 4

Sprint Board Sub-Agent

Step 2: Add the Azure DevOps MCP server

claude mcp add azure-devops -- npx -y @azure-devops/mcp YOUR_ORG

Replace YOUR_ORG with your Azure DevOps organization name. On first use, a browser window opens for Microsoft login.

Add to .vscode/mcp.json:

{
  "mcpServers": {
    "azure-devops": {
      "command": "npx",
      "args": ["-y", "@azure-devops/mcp", "YOUR_ORG"]
    }
  }
}

Replace YOUR_ORG with your Azure DevOps organization name.

Assignment 4

Sprint Board Sub-Agent

Step 3: Connect the agent to the MCP server

Add the tools field to your agent file — this tells Copilot which MCP tools the sub-agent can use:

Add the tools line to the YAML front matter in .claude/agents/sprint-manager.md:

---
name: sprint-manager
description: Manages Azure DevOps work items on the sprint board
tools: Read, Grep, Glob, Bash, mcp__azure-devops__*
---

Add the tools field to the YAML front matter in .github/agents/sprint-manager.agent.md:

---
name: Sprint Manager
description: Manages Azure DevOps work items on the sprint board
tools:
  - ado/*
---
Assignment 4

Sprint Board Sub-Agent

Step 4: Use the agent!

Ask the sprint manager:

"Ask the sprint manager to show me my current
sprint items and move task #1234 to Active"
Takeaway: Custom agents combine MCP tools with focused instructions. They can automate complex workflows like sprint management autonomously.

Side-by-Side Comparison

Concept Claude Code GitHub Copilot
Instructions CLAUDE.md .github/copilot-instructions.md
Scoped rules .claude/rules/*.md .github/instructions/*.instructions.md
Custom agents .claude/agents/*.md .github/agents/*.agent.md
MCP servers .mcp.json .vscode/mcp.json
Skills .claude/skills/ .claude/skills/

Resources

GitHub Copilot Docs

docs.github.com/copilot

Claude Code Docs

code.claude.com/docs/en/

Thanks for attending!