How skill checks work

How MCP for Copilot checks Agent Skills against Microsoft's documented load rules. Rules version 2026-10-22. 2,257 skills checked; skills data built 2026-10-23.

Compatible isn't the same as safe. These verdicts only say whether a skill's files follow Microsoft's documented load rules. The checker reads files and never runs them, and it doesn't review what a skill or its scripts actually do. Read a skill's instructions and scripts before you add it to an agent.

What we do

Copilot Studio rules

Copilot Studio agents built with the GitHub Copilot harness accept a SKILL.md file or a ZIP with one. Copilot Studio skips a skill that fails a load-time check.

RuleEffectWhat we check (and the doc wording)Source
CS-ENCODINGFailSKILL.md is UTF-8 without a byte-order mark
“Unreadable SKILL.md … Save SKILL.md as UTF-8 without a byte-order mark”
Copilot Studio: Troubleshoot skills that don't load
CS-FRONTMATTERFailFrontmatter is a valid YAML mapping
“Invalid YAML frontmatter: The --- block at the top of SKILL.md isn't valid YAML … Verify the frontmatter is a mapping of key: value pairs.”
Copilot Studio: Troubleshoot skills that don't load
CS-NAMEFailFrontmatter has a non-empty name
“Missing name: The frontmatter doesn't have a non-empty name: value.”
Copilot Studio: Troubleshoot skills that don't load
CS-DESCRIPTIONFailFrontmatter has a non-empty description
“Missing description: The frontmatter doesn't have a non-empty description: value.”
Copilot Studio: Troubleshoot skills that don't load
CS-DESC-LENGTHFailDescription is at most 1,024 characters
“Description too long: The effective description is longer than the model-facing catalog can accept. Microsoft doesn't publish the number; we use the Agent Skills spec maximum of 1,024 characters.”
Copilot Studio: Troubleshoot skills that don't load (limit value from the Agent Skills specification)
CS-DESC-ONELINEWarningDescription is a single line
“Shorten the description to a single line that summarizes the skill's purpose.”
Copilot Studio: Troubleshoot skills that don't load
CS-NAME-FORMATFailName uses only lowercase letters, numbers and hyphens, and doesn't start or end with a hyphen
“Use only lowercase letters, numbers, and hyphens. Don't start or end the name with a hyphen.”
Copilot Studio: Create a skill
CS-DUPLICATEWarningName is unique among the skills in this repo
“Duplicate skill name: Two skills in the same agent use the same folder name.”
Copilot Studio: Troubleshoot skills that don't load

Not checkable from files: “Resource file wasn't written” and “Skill package rejected” happen while Copilot Studio installs the package.

Microsoft 365 Copilot rules Preview, Frontier tenants only

Custom skills in declarative agents (Agent Builder and Microsoft 365 Agents Toolkit). Limits like 350 files and 25 MB apply per package across all of an agent's skills, so we check one skill on its own. An agent can have at most 8 skills. Skills aren't available in tenants that use Microsoft Purview Information Barriers, and can't be combined with embedded files yet.

RuleEffectWhat we check (and the doc wording)Source
M365-FRONTMATTERFailSKILL.md has a name and description in YAML front matter
“A required SKILL.md file that contains: A skill name and description in the YAML front matter.”
Microsoft 365 Copilot: What is a skill
M365-INSTRUCTIONSFailInstructions are under 20,000 characters
“Skill instructions, which must be under 20,000 characters.”
Microsoft 365 Copilot: What is a skill
M365-FILE-COUNTFailAt most 350 files
“Maximum files per package: 350 files across all skills”
Microsoft 365 Copilot: Support matrix
M365-DEPTHFailDirectory depth is at most 3
“Directory hierarchy: Maximum directory depth is 3. (We count folders below the skill folder; SKILL.md is at depth 0.)”
Microsoft 365 Copilot: Support matrix
M365-FILE-TYPESFailEvery file has a supported file type
“A skill can include the following file types: .json, .xml, .yaml, .yml, .ini, .config, .utf8, .docx, .doc, .docm, .pdf, .txt, .rtf, .md, .ppt, .pptx, .ppsm, .xlsx, .xls, .xlsm, .csv, .tsv, .html, .htm, .png, .jpg, .jpeg, .gif, .bmp, .log, .py, .js, .mjs, .cjs, .ts, .mts, .sh, .bash”
Microsoft 365 Copilot: Supported file and script types
M365-FILE-SIZEFailNo file is larger than 25 MB
“Maximum file size: 25 MB per file (Agent Builder)”
Microsoft 365 Copilot: Support matrix
M365-PACKAGE-SIZEWarningSkill stays within the package limits (50 MB zip in Agent Builder, 10 MB app package in Agents Toolkit)
“Skill package: Compressed .zip, maximum 50 MB … the complete app package is limited to 10 MB”
Microsoft 365 Copilot: Support matrix
M365-SANDBOXWarningNo sign of network access, package installs or authenticated calls
“The sandbox has no network access at runtime. A skill can't install packages at runtime. Authenticated network calls from scripts: Not supported.”
Microsoft 365 Copilot: Script execution sandbox

The sandbox rule is a text heuristic: it looks for things like import requests, fetch(, curl, pip install, npm install and credential headers in scripts and in SKILL.md, and for dependency files such as requirements.txt. A match is a warning to review, not proof of a problem.

Agent Skills specification notes

Shown as warnings for portability; Microsoft doesn't list these as load failures.

RuleEffectWhat we check (and the doc wording)Source
SPEC-NAMEWarningName is at most 64 characters with no consecutive hyphens
“Max 64 characters … Must not contain consecutive hyphens (--)”
Agent Skills specification
SPEC-NAME-DIRWarningName matches the skill's folder name
“Must match the parent directory name”
Agent Skills specification
SPEC-COMPATWarningcompatibility is at most 500 characters
“compatibility: Max 500 characters”
Agent Skills specification
SPEC-ALLOWED-TOOLSWarningNo experimental allowed-tools field
“allowed-tools: Experimental. Support for this field may vary between agent implementations.”
Agent Skills specification

Results

Copilot Studio: 2,172 pass, 85 need changes, 0 can't check. Microsoft 365 Copilot: 1,879 pass, 378 need changes, 0 can't check.

Sources

Public GitHub repos: official vendor repos and well-known collections, plus install counts from the public skills.sh search where available. The license is read from the repo's root license file. Repos without a permissive repo-wide license are listed as metadata only.

RepoLicenseSkillsCommit
github/awesome-copilotMIT445d85f762d6e
anthropics/knowledge-work-pluginsApache-2.022533d3dea41a
microsoft/skillsMIT200a779d00cf3
wshobson/agentsMIT1850874a27b17
aws/agent-toolkit-for-awsApache-2.01509ab50636d1
claude-office-skills/skillsMIT1379c4c7d5cd2
microsoft/cat-agent-skillsMIT102a9bc9b236b
trailofbits/skillsCC (metadata only)971e0cb77d07
googleworkspace/cliApache-2.095a3768d0e82
microsoft/github-copilot-for-azureother (metadata only)56b274aa6d03
coreyhaines31/marketingskillsMIT52e85f3cbc2e
samber/cc-skills-golangMIT46246b6c4c1a
microsoft/azure-skillsMIT453e15ebee59
openai/skillsnone (metadata only)4449f948faa9
mattpocock/skillsMIT385beb35b040
convex/agent-skillsApache-2.033191a5c33a7
microsoft/skills-for-copilot-studioMIT31fd9653d0ec
getsentry/skillsApache-2.029f57ada2d0b
huggingface/skillsApache-2.026c3ff942be3
expo/skillsMIT250d035556e3
addyosmani/agent-skillsMIT25aeac41d4d0
pbakaus/impeccableApache-2.0235cb95eea9c
anthropics/skillsnone (metadata only)20dbd4588f9e
hashicorp/agent-skillsMPL-2.0 (metadata only)20f706481af9
cloudflare/skillsApache-2.01986505e44f8
obra/superpowersMIT152ce8aa15d0
firebase/agent-skillsApache-2.01392eed24c09
remotion-dev/skillsnone (metadata only)126c67adcd9c
prisma/skillsMIT10ba3f9d7320
neondatabase/agent-skillsApache-2.010d814689cbb
stripe/aiMIT108a8818e856
vercel-labs/agent-skillsnone (metadata only)9063bee94c3
google/agents-cliApache-2.08bea5875e38
supabase/agent-skillsMIT2c9be0e931b

Check any repo

The checker runs the same rules on a public GitHub repo you paste. It only fetches files from github.com (via raw.githubusercontent.com and the jsDelivr file listing). It checks up to 20 skills, skips SKILL.md files over 256 KB, never runs code, and caches results per commit for a day.

Corrections or takedown requests: hello@mcp4copilot.dev.

Rule-based checks of public files against Microsoft's documented load rules, not tested in Copilot Studio or Microsoft 365 Copilot. Independent project, not affiliated with Microsoft.