| name | workshop-creator |
| description | Create GitHub Copilot workshop repositories following William's (moulongzhang) structure. Use when creating a new hands-on workshop template repo for any language (Python, Node.js, etc.). |
| compatibility | Designed for GitHub Copilot CLI |
| metadata | {"author":"theomonfort","version":"1.0"} |
Workshop Creator
You are tasked with creating a GitHub Copilot hands-on workshop repository, following the structure established by William (moulongzhang) in the reference repos below.
Reference Repositories
Architecture Overview
There are two distinct repo types:
1. Workshop Hub Repo (2026-Github-Copilot-Workshop)
Contains the GitHub Pages instruction site (Google Codelab format) and customer-specific variants.
.github/
copilot-instructions.md โ Custom Copilot context
workflows/
static.yml โ Deploys GitHub Pages
.vscode/
mcp.json โ MCP server config
github-copilot-workshop/
index.html โ Main Codelab entry point
codelab.json โ Codelab metadata
versions.json โ Version switcher config
versions/
v1.0.0/index.html
v1.0.1/index.html
v1.0.2/index.html
v1.0.3/index.html โ Latest (default)
custom/
denso/index.html โ Denso-specific version
nri/index.html โ NRI-specific version
workshop.md โ Generic workshop source (Markdown โ Codelab)
workshop-denso.md โ Denso workshop source
workshop-nri.md โ NRI workshop source
registrations/ โ Participant registration data
2. Participant Template Repo (2026-Github-Copilot-Workshop-Python)
A GitHub Template Repository that participants use as their coding workspace.
.devcontainer/
devcontainer.json โ One-click Codespaces environment
.vscode/
mcp.json โ MCP server (GitHub Copilot MCP)
.github/
copilot-instructions.md โ Language + file placement rules
agents/
beastmode3.1.agent.md โ Autonomous coding agent
workflows/
pomodoro-docs-sync.md โ Copilot agent workflow (docs auto-sync)
1.pomodoro/
app.py โ Empty starter file (participants fill in)
pomodoro.png โ Reference image for the exercise
README.md โ "Refer to instructor URL" (intentionally no link)
Key Design Decisions
Participant Template Repo
- No hardcoded workshop URL in README โ instructor shares it during the session so it can be reused across customers
- Marked as GitHub Template Repository (Settings โ "Template repository" โ
) so participants use "Use this template" instead of forking
beastmode3.1.agent.md is language-agnostic โ copy as-is for any language
- Starter files are minimal (just a title comment) โ participants build with Copilot
copilot-instructions.md enforces Japanese responses and defines file placement rules per exercise
Codelab Site (Hub Repo)
- Built from Markdown โ Google Codelab HTML format
- Versioned under
versions/ with a versions.json switcher
- Customer-specific versions under
custom/<customer>/
- Deployed via a simple
static.yml GitHub Pages workflow
How to Create a New Participant Template Repo (e.g., Node.js)
Step 1: devcontainer.json
Replace Python image with Node.js:
{
"name": "Node.js",
"image": "mcr.microsoft.com/devcontainers/javascript-node:0-20",
"customizations": {
"vscode": {
"extensions": [
"vsls-contrib.codetour",
"GitHub.copilot",
"GitHub.copilot-chat"
],
"settings": {
"github.copilot.chat.mcp.discovery.enabled": true
}
}
},
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"postCreateCommand": "gh extension install github/gh-copilot || true"
}
Note: Node.js is already in the base image โ no need to add it as a feature.
Step 2: .vscode/mcp.json (copy as-is)
{
"servers": {
"github-mcp-server": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}
Step 3: .github/copilot-instructions.md
Adapt file placement rules for Node.js exercises:
# Copilot Instructions
## ้่ฆ๏ผ่จ่ช่จญๅฎ
**ๅฟ
ใๆฅๆฌ่ชใงใฌใใฅใผใ่กใฃใฆใใ ใใใใในใฆใฎใณใกใณใใๆๆกใ่ชฌๆใฏๆฅๆฌ่ชใง่จ่ฟฐใใฆใใ ใใใ**
## ใใกใคใซ้
็ฝฎใซใผใซ
- **Pomodoro ใฟใคใใผ**ใซ้ขใใไฝๆฅญใงใฏใใใกใคใซใ `1.pomodoro/` ้
ไธใซไฟๅญใใฆใใ ใใใ
Step 4: .github/agents/beastmode3.1.agent.md (copy as-is)
The agent is fully language-agnostic.
Step 5: Starter exercise file
Rename app.py โ app.js:
Step 6: Mark as Template Repository
Go to repo Settings โ General โ check "Template repository".
Files That Are Language-Agnostic (copy as-is)
| File | Notes |
|---|
.github/agents/beastmode3.1.agent.md | Pure prompting |
.vscode/mcp.json | Same MCP endpoint |
1.pomodoro/pomodoro.png | Reference image |
.gitignore / .gitattributes | Minor tweaks only |
Files That Need Adaptation
| File | Change needed |
|---|
.devcontainer/devcontainer.json | Swap base image |
.github/copilot-instructions.md | Update file paths if exercise names change |
1.pomodoro/app.py โ app.js | Rename + update comment |
.github/workflows/pomodoro-docs-sync.md | Swap Python references โ Node.js |
Execution Steps
- Confirm the target language and exercise name with the user
- Create the repo structure locally or directly on GitHub
- Populate files using the templates above
- Mark the repo as a GitHub Template Repository
- Optionally link it from the workshop hub repo README