copilot-dev-camp-lab-author
Skill677 starsChanged 4 months agoMITView on GitHub
Creates new Copilot Dev Camp lab markdown files under docs/pages/<subfolder>/ with a consistent structure, concise exercises, and required custom components. Use when asked to author a new lab, scaffold a lab file, or draft a Copilot Dev Camp lab page.
In this repository8 other files it gives its agents.
- src/extend-m365-copilot/path-e-lab01-declarative-copilot/RepairServiceAgent/AGENTS.mdAGENTS.md
- archive/src/agent-framework/complete/.github/copilot-instructions.mdCopilot instructions
- .github/copilot-instructions.mdCopilot instructions
- dev-camp-deckSkill
- dev-camp-documentSkill
- foundry-researchSkill
- weekly-status-mailSkill
- zava-claims-exportSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
31 rules. About 0 are common, 26 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈26
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 29
If the target subfolder is missing, ask for it.
- Distinctive: line 30
If the lab number is missing, ask for it.
- Distinctive: line 31
If knowledge-base URLs are missing, ask for them before drafting content.
- Very specific: line 35
Create the file only under docs/pages/<subfolder>/.
- Very specific: line 36
Use markdown file extension .md.
- Distinctive: line 38
If file already exists, ask whether to pick a new number/slug or update existing content.
- Distinctive: line 42
Every lab markdown file must begin with YAML frontmatter containing the following fields:
- Distinctive: line 74
Every lab must have a unique code and title.
- Distinctive: line 75
Every lab file must include YAML frontmatter with all required fields.
- Distinctive: line 76
Use no more than 4-5 exercises total.
- Distinctive: line 78
Keep steps concise; fewer is preferred when pedagogically valid.
- Very specific: line 79
All links to external sites must include the {target=_blank} attribute so they open in a new tab.
- Distinctive: line 83
Use this style in all generated labs:
- Distinctive: line 91
Use this baseline structure:
- Distinctive: line 119
Always add this placeholder block near the top of the lab, after the title:
- Distinctive: line 155
Always include, before awards:
- Distinctive: line 163
Always include one or more awards and ask the developer for suitable badges if missing:
- Distinctive: line 171
When a step needs a screenshot, add placeholders:
- Distinctive: line 177
Use the alternate text of the image to suggest to the lab author the image content to capture.
- Distinctive: line 181
When this skill is triggered:
- Distinctive: line 183
Ask for any missing required inputs.
- Distinctive: line 186
Ask for knowledge-base URL list.
- Distinctive: line 187
Ask which badges to add.
- Distinctive: line 190
Ask for tags (comma-separated) and convert to YAML list.
- Distinctive: line 191
Ask for difficulty level (100–500).
- Distinctive: line 192
Ask for estimated time to completion (in minutes).
- Distinctive: line 193
Ask for badge code.
- Distinctive: line 194
Ask for products (comma-separated) and convert to YAML list.
- Distinctive: line 198
Do not skip questions when required inputs are missing.
- Very specific: line 211
Every step ends with cc-end-step.
- Very specific: line 216
All links to external sites use the {target=_blank} attribute.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Copilot Dev Camp Lab Author
Purpose
Author a new lab file for Copilot Dev Camp, with the right structure and writing style, and place it in the correct docs path.
Required Inputs
Collect all required values before creating the lab:
- Target subfolder under
docs/pages. - Lab number.
- Lab unique code.
- Lab title.
- Knowledge-base URLs (web sites/pages to use for grounded content).
- Badge suggestions (
badgeId,badgeName) forcc-award.
If the target subfolder is missing, ask for it. If the lab number is missing, ask for it. If knowledge-base URLs are missing, ask for them before drafting content.
File Placement Rules
- Create the file only under
docs/pages/<subfolder>/. - Use markdown file extension
.md. - Suggested naming pattern:
<lab-number>-<slug>.md. - If file already exists, ask whether to pick a new number/slug or update existing content.
Frontmatter Requirements
Every lab markdown file must begin with YAML frontmatter containing the following fields:
---
code: <lab-unique-code>
title: <lab-title>
description: <brief-description-of-lab>
tags: [tag1, tag2, tag3]
level: <100|200|300|400|500>
time: <time-to-complete-in-minutes>
badge: <badge-code>
products: [product1, product2]
created-date: <YYYY-MM-DD>
last-edited-date: <YYYY-MM-DD>
---Frontmatter Field Definitions
- code: Unique identifier for the lab (e.g.,
WIQ01). - title: Lab title matching the lab title in content.
- description: 1-2 sentence summary of what students will learn (infer the value from the lab content, once created).
- tags: Comma-separated list (ask user) converted to YAML list. Examples:
agents,copilot,m365. - level: Difficulty level:
100(beginner),200(intermediate),300(advanced),400(expert),500(professional). - time: Estimated time in minutes to complete the lab (infer the value based on the length of the content, once created).
- badge: The badge code issued upon lab completion (e.g.,
WorkIQ-Expert). - products: Comma-separated list (ask user) converted to YAML list. Examples:
Teams,Copilot,SharePoint,Work IQ. - created-date: Lab creation date in
YYYY-MM-DDformat. - last-edited-date: Most recent edit date in
YYYY-MM-DDformat.
Authoring Constraints
- Every lab must have a unique code and title.
- Every lab file must include YAML frontmatter with all required fields.
- Use no more than 4-5 exercises total.
- Each exercise must have no more than 5-6 steps.
- Keep steps concise; fewer is preferred when pedagogically valid.
- All links to external sites must include the
{target=_blank}attribute so they open in a new tab. Example:[Link text](https://example.com){target=_blank}.
Writing Style And Structure
Use this style in all generated labs:
- Instructional and practical, focused on outcomes.
- Clear progression from context to hands-on steps.
- Short paragraphs and concrete actions.
- Enterprise-aware language: prerequisites, validation, and expected outcomes.
- Each exercise should end with a visible checkpoint step component.
Use this baseline structure:
- Lab title and short intro.
- Scenario.
- Lab objectives.
- Exercises with numbered steps.
- Completion section.
- Visitor stats image.
cc-nextcomponent.- One or more
cc-awardcomponents.
Mandatory Markup
A) Lab Title Heading
Immediately after the YAML frontmatter (first line of markdown content), always add a level-1 heading with the lab code and title in this format:
# Lab <code> - <title>Example:
# Lab WIQ02 - Work IQ A2A ProtocolB) Video placeholder near top (commented out)
Always add this placeholder block near the top of the lab, after the title:
<!--
<div class="lab-intro-video">
<div style="flex: 1; min-width: 0;">
<iframe src="//www.youtube.com/embed/<VIDEO_ID>" frameborder="0" allowfullscreen style="width: 100%; aspect-ratio: 16/9;">
</iframe>
<div>Get a quick overview of the lab in this video.</div>
</div>
</div>
-->C) End each step with cc-end-step
C) End each step with cc-end-step
At the end of every step, add:
<cc-end-step lab="<lab-code>" exercise="<exercise-number>" step="<step-number>" />Values must match the current lab code, exercise index, and step index.
D) Add cc-next at lab end
Always include:
<cc-next />E) Visitor stats image before awards
Always include, before awards:
<img src="https://m365-visitor-stats.azurewebsites.net/copilot-camp/<section>/<lab-id>" />F) One or more awards
Always include one or more awards and ask the developer for suitable badges if missing:
<cc-award badgeId="<BadgeId>" badgeName="<Badge Name>" />G) Image placeholders where useful
When a step needs a screenshot, add placeholders:
Use the alternate text of the image to suggest to the lab author the image content to capture. The image path should be relative to the lab file.
Behavior Contract
When this skill is triggered:
- Ask for any missing required inputs.
- Confirm target file path under
docs/pages/<subfolder>/. - Confirm lab number and lab code.
- Ask for knowledge-base URL list.
- Ask which badges to add.
- Collect frontmatter information:
- Prompt for lab title and description.
- Ask for tags (comma-separated) and convert to YAML list.
- Ask for difficulty level (100–500).
- Ask for estimated time to completion (in minutes).
- Ask for badge code.
- Ask for products (comma-separated) and convert to YAML list.
- Record created-date and last-edited-date (use current date if not provided).
- Generate the complete lab markdown with YAML frontmatter and required components.
Do not skip questions when required inputs are missing.
Generation Checklist
Before finalizing:
- YAML frontmatter is present at the top of the file with all required fields.
- Lab title heading (format:
# Lab <code> - <title>) is present immediately after frontmatter. - Frontmatter values match the collected user inputs (code, title, description, tags, level, time, badge, products).
- created-date and last-edited-date are in
YYYY-MM-DDformat. - File path is under
docs/pages/<subfolder>/. - Exercise count is within limits.
- Step count per exercise is within limits.
- Every step ends with
cc-end-step. cc-nextis present.- Visitor stats image is present before awards.
- At least one
cc-awardexists. - Knowledge-base URLs were requested from developer.
- All links to external sites use the
{target=_blank}attribute.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

