Skills
Skills are multi-step procedures that teach Copilot how to accomplish a specific task. Unlike instructions (passive coding standards) or agents (interactive personas), skills are invoked on demand and guide Copilot through a sequence of concrete actions.
How Skills Differโ
| Aspect | Instruction | Agent | Skill |
|---|---|---|---|
| Activation | Auto by glob | User invokes @agent | User invokes or agent delegates |
| Content | Rules and standards | Personality + tools | Step-by-step procedure |
| Structure | Single .md file | Single .agent.md file | Folder with SKILL.md |
| Purpose | "How to write code" | "Who answers" | "How to accomplish a task" |
| Assets | None | None | Optional templates, scripts, examples |
Folder Structureโ
Every skill lives in its own folder under skills/. The folder name must match the name field in the SKILL.md frontmatter:
skills/
fai-deploy-container-app/
SKILL.md # Required โ the skill procedure
templates/ # Optional โ scaffolding templates
container-app.bicep
scripts/ # Optional โ automation scripts
deploy.sh
examples/ # Optional โ example outputs
successful-deployment.md
:::warning Name Must Match Folder
The name field in SKILL.md frontmatter must exactly equal the parent folder name. Validation will reject mismatches.
:::
Frontmatter Schemaโ
---
name: "fai-deploy-container-app"
description: "Deploys a FrootAI solution play to Azure Container Apps with managed identity, Key Vault integration, and health probes."
---
| Field | Required | Validation |
|---|---|---|
name | โ | Must be kebab-case, must match parent folder name |
description | โ | 10โ1024 characters |
Writing a Complete Skillโ
A production skill has numbered steps, runnable code blocks, verification checks, and a troubleshooting table. Skills should be 150+ lines with detailed guidance:
---
name: "fai-deploy-container-app"
description: "Deploys a FrootAI solution play to Azure Container Apps with managed identity, Key Vault integration, and health probes."
---
# Deploy to Azure Container Apps
## Purpose
Deploy any FrootAI solution play as a containerized service on Azure Container Apps.
## Prerequisites
- Azure CLI installed and logged in (`az login`)
- Docker installed (for building the container image)
- Azure subscription with Contributor access
## Step 1: Set Environment Variables
โ```bash
PLAY_NUM="01"
PLAY_NAME="enterprise-rag"
RG="rg-frootai-${PLAY_NAME}"
LOCATION="eastus2"
โ```
## Step 2: Create Resources
โ```bash
az group create --name $RG --location $LOCATION
az acr create --name $ACR_NAME --resource-group $RG --sku Basic
โ```
## Verification
1. Health endpoint returns 200
2. Container app has 1+ running replicas
## Troubleshooting
| Problem | Cause | Fix |
|---------|-------|-----|
| Image pull fails | ACR auth not configured | Enable managed identity |
| Health probe fails | Wrong port or path | Check Bicep targetPort |
Naming Conventionsโ
| Pattern | Example | Use Case |
|---|---|---|
fai-build-* | fai-build-rag-pipeline | Create something from scratch |
fai-deploy-* | fai-deploy-container-app | Deploy to Azure |
fai-evaluate-* | fai-evaluate-rag-quality | Run quality evaluation |
fai-tune-* | fai-tune-model-params | Optimize configurations |
fai-scaffold-* | fai-scaffold-play | Generate boilerplate |
fai-debug-* | fai-debug-context-wiring | Diagnostic procedures |
All folder and file names must be lowercase-hyphen.
Bundled Assetsโ
Skills can optionally include templates, scripts, and examples:
fai-deploy-container-app/
SKILL.md # Required
templates/ # Bicep, JSON, YAML templates
scripts/ # Executable scripts (bash, PowerShell)
examples/ # Example outputs for reference
:::info Size Limit Bundled assets should total under 5MB per skill folder. :::
Wiring into Plays and Pluginsโ
Reference skills in a play's fai-manifest.json:
{
"primitives": {
"skills": [
"../../skills/fai-deploy-container-app/",
"./.github/skills/run-semantic-review/"
]
}
}
Or in a plugin's plugin.json:
{
"skills": ["../../skills/fai-deploy-container-app/"]
}
Validationโ
npm run validate:primitives
Checks that every skill has:
namematching parent folder name (kebab-case)descriptionbetween 10โ1024 charactersSKILL.mdfile exists in the folder
See Alsoโ
- Create a Skill Guide โ step-by-step tutorial
- Plugins โ bundle skills into distributable packages
- Primitives Overview โ all 6 primitive types