feat: Add license, metadata, and version fields to all skills#1071
feat: Add license, metadata, and version fields to all skills#1071
Conversation
There was a problem hiding this comment.
Pull request overview
Adds required frontmatter fields (license, metadata.author, metadata.version) across skill definitions and introduces automation + CI checks to keep skill version metadata consistent with the agentskills.io spec.
Changes:
- Added
license: MITandmetadata: { author: Microsoft, version: "1.0.0" }to the updated SKILL.md files. - Added a new
skill-versioningGitHub Actions workflow to bumpmetadata.versionon releases. - Extended PR workflow validation and updated skill authoring/scoring documentation to reflect the new frontmatter expectations.
Reviewed changes
Copilot reviewed 27 out of 27 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| plugin/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/microsoft-foundry/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/entra-app-registration/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-validate/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-storage/SKILL.md | Adds license + metadata and rewrites description into folded scalar with triggers |
| plugin/skills/azure-resource-visualizer/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-resource-lookup/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-rbac/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-prepare/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-postgres/SKILL.md | Adds license + metadata and rewrites description into folded scalar with triggers |
| plugin/skills/azure-observability/SKILL.md | Adds license + metadata and rewrites description into folded scalar with triggers |
| plugin/skills/azure-messaging/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-kusto/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-diagnostics/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-deploy/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-cost-optimization/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-compliance/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-aigateway/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/azure-ai/SKILL.md | Adds license + metadata fields to skill frontmatter |
| plugin/skills/appinsights-instrumentation/SKILL.md | Adds license + metadata fields to skill frontmatter |
| .github/workflows/skill-versioning.yml | New workflow to bump metadata.version on release creation |
| .github/workflows/pr.yml | Adds warnings for missing license/version and errors for non-X.Y.Z versions |
| .github/skills/sensei/references/SCORING.md | Documents YAML description safety + adds suggestion logic |
| .github/instructions/skill-files.instructions.md | Updates authoring guidance with new required frontmatter fields |
- Add license: MIT and metadata (author, version) to all 28 SKILL.md files - Create skill-versioning.yml workflow (auto-bumps versions on release) - Excludes prior bump commits to avoid cascading version bumps - Handles nested skill directories (e.g. microsoft-foundry/models/...) - Uses full commit message (%B) for BREAKING CHANGE detection - Add license and metadata.version validation to frontmatter CLI - Fix SCORING.md examples to use semver X.Y.Z format - Fix azure-aigateway version to semver (3.0 → 3.0.0) - Update skill authoring instructions with new required fields - Add 10 new unit tests for validateLicense and validateMetadataVersion Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
7ffa3a6 to
b466e2c
Compare
🔍 Token Analysis Report
📊 Token Change ReportComparing Summary
Changed Files
📊 Token Limit Check ReportChecked: 444 files
|
| File | Tokens | Limit | Over By |
|---|---|---|---|
.github/skills/file-test-bug/SKILL.md |
628 | 500 | +128 |
.github/skills/sensei/README.md |
3530 | 1000 | +2530 |
.github/skills/sensei/SKILL.md |
2382 | 500 | +1882 |
.github/skills/sensei/references/EXAMPLES.md |
3707 | 1000 | +2707 |
.github/skills/sensei/references/LOOP.md |
4181 | 1000 | +3181 |
.github/skills/sensei/references/SCORING.md |
3927 | 1000 | +2927 |
.github/skills/sensei/references/TOKEN-INTEGRATION.md |
1094 | 1000 | +94 |
.github/skills/skill-authoring/SKILL.md |
817 | 500 | +317 |
plugin/skills/appinsights-instrumentation/SKILL.md |
965 | 500 | +465 |
plugin/skills/azure-ai/SKILL.md |
846 | 500 | +346 |
plugin/skills/azure-ai/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-aigateway/SKILL.md |
1294 | 500 | +794 |
plugin/skills/azure-aigateway/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-aigateway/references/patterns.md |
1696 | 1000 | +696 |
plugin/skills/azure-aigateway/references/policies.md |
2342 | 1000 | +1342 |
plugin/skills/azure-aigateway/references/troubleshooting.md |
1971 | 1000 | +971 |
plugin/skills/azure-cloud-migrate/references/services/functions/assessment.md |
1601 | 1000 | +601 |
plugin/skills/azure-cloud-migrate/references/services/functions/code-migration.md |
1515 | 1000 | +515 |
plugin/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md |
2600 | 1000 | +1600 |
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md |
1403 | 1000 | +403 |
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md |
1638 | 1000 | +638 |
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md |
2181 | 1000 | +1181 |
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md |
1261 | 1000 | +261 |
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md |
1632 | 1000 | +632 |
plugin/skills/azure-compliance/SKILL.md |
1250 | 500 | +750 |
plugin/skills/azure-compliance/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-compliance/references/azqr-recommendations.md |
1447 | 1000 | +447 |
plugin/skills/azure-compliance/references/azqr-remediation-patterns.md |
1987 | 1000 | +987 |
plugin/skills/azure-compliance/references/azure-keyvault-expiration-audit.md |
1286 | 1000 | +286 |
plugin/skills/azure-compliance/references/azure-quick-review.md |
1268 | 1000 | +268 |
plugin/skills/azure-compute/SKILL.md |
2631 | 500 | +2131 |
plugin/skills/azure-compute/references/retail-prices-api.md |
1609 | 1000 | +609 |
plugin/skills/azure-compute/references/vm-families.md |
1234 | 1000 | +234 |
plugin/skills/azure-compute/references/vmss-guide.md |
1621 | 1000 | +621 |
plugin/skills/azure-cost-optimization/SKILL.md |
3468 | 500 | +2968 |
plugin/skills/azure-cost-optimization/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-deploy/SKILL.md |
1068 | 500 | +568 |
plugin/skills/azure-deploy/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-deploy/references/pre-deploy-checklist.md |
1195 | 1000 | +195 |
plugin/skills/azure-deploy/references/recipes/azd/errors.md |
1212 | 1000 | +212 |
plugin/skills/azure-deploy/references/troubleshooting.md |
1527 | 1000 | +527 |
plugin/skills/azure-diagnostics/SKILL.md |
1077 | 500 | +577 |
plugin/skills/azure-hosted-copilot-sdk/SKILL.md |
671 | 500 | +171 |
plugin/skills/azure-hosted-copilot-sdk/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-hosted-copilot-sdk/references/azure-model-config.md |
1151 | 1000 | +151 |
plugin/skills/azure-kusto/SKILL.md |
2175 | 500 | +1675 |
plugin/skills/azure-messaging/SKILL.md |
867 | 500 | +367 |
plugin/skills/azure-messaging/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-messaging/references/service-troubleshooting.md |
1044 | 1000 | +44 |
plugin/skills/azure-observability/SKILL.md |
1048 | 500 | +548 |
plugin/skills/azure-observability/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-prepare/SKILL.md |
1897 | 500 | +1397 |
plugin/skills/azure-prepare/references/analyze.md |
1038 | 1000 | +38 |
plugin/skills/azure-prepare/references/apim.md |
1453 | 1000 | +453 |
plugin/skills/azure-prepare/references/aspire.md |
2735 | 1000 | +1735 |
plugin/skills/azure-prepare/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-prepare/references/azure-context.md |
1019 | 1000 | +19 |
plugin/skills/azure-prepare/references/plan-template.md |
1063 | 1000 | +63 |
plugin/skills/azure-prepare/references/recipes/azd/aspire.md |
1584 | 1000 | +584 |
plugin/skills/azure-prepare/references/recipes/azd/azure-yaml.md |
1803 | 1000 | +803 |
plugin/skills/azure-prepare/references/recipes/azd/terraform.md |
2924 | 1000 | +1924 |
plugin/skills/azure-prepare/references/research.md |
1784 | 1000 | +784 |
plugin/skills/azure-prepare/references/runtimes/nodejs.md |
1508 | 1000 | +508 |
plugin/skills/azure-prepare/references/security.md |
2092 | 1000 | +1092 |
plugin/skills/azure-prepare/references/services/functions/bicep.md |
2132 | 1000 | +1132 |
plugin/skills/azure-prepare/references/services/functions/templates/SPEC-composable-templates.md |
6187 | 1000 | +5187 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/README.md |
1354 | 1000 | +354 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md |
1034 | 1000 | +34 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/uami-bindings.md |
1223 | 1000 | +223 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md |
4564 | 1000 | +3564 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md |
1467 | 1000 | +467 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md |
1149 | 1000 | +149 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md |
1403 | 1000 | +403 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/java.md |
1312 | 1000 | +312 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/python.md |
1207 | 1000 | +207 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/source/typescript.md |
1138 | 1000 | +138 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md |
1171 | 1000 | +171 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/source/dotnet.md |
1280 | 1000 | +280 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/source/java.md |
1016 | 1000 | +16 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/source/java.md |
1009 | 1000 | +9 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/source/python.md |
1080 | 1000 | +80 |
plugin/skills/azure-prepare/references/services/functions/terraform.md |
2545 | 1000 | +1545 |
plugin/skills/azure-prepare/references/services/service-bus/patterns.md |
1122 | 1000 | +122 |
plugin/skills/azure-resource-lookup/SKILL.md |
1389 | 500 | +889 |
plugin/skills/azure-resource-lookup/references/azure-resource-graph.md |
1307 | 1000 | +307 |
plugin/skills/azure-resource-visualizer/SKILL.md |
2105 | 500 | +1605 |
plugin/skills/azure-storage/SKILL.md |
1180 | 500 | +680 |
plugin/skills/azure-storage/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/azure-storage/references/sdk-usage.md |
1135 | 1000 | +135 |
plugin/skills/azure-validate/SKILL.md |
761 | 500 | +261 |
plugin/skills/azure-validate/references/recipes/azd/README.md |
1191 | 1000 | +191 |
plugin/skills/entra-app-registration/SKILL.md |
2068 | 500 | +1568 |
plugin/skills/entra-app-registration/references/api-permissions.md |
2545 | 1000 | +1545 |
plugin/skills/entra-app-registration/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/entra-app-registration/references/cli-commands.md |
2211 | 1000 | +1211 |
plugin/skills/entra-app-registration/references/console-app-example.md |
2752 | 1000 | +1752 |
plugin/skills/entra-app-registration/references/first-app-registration.md |
1846 | 1000 | +846 |
plugin/skills/entra-app-registration/references/oauth-flows.md |
2375 | 1000 | +1375 |
plugin/skills/entra-app-registration/references/troubleshooting.md |
1896 | 1000 | +896 |
plugin/skills/microsoft-foundry/SKILL.md |
1948 | 500 | +1448 |
plugin/skills/microsoft-foundry/foundry-agent/create/create.md |
3016 | 1000 | +2016 |
plugin/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md |
1300 | 1000 | +300 |
plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md |
1204 | 1000 | +204 |
plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md |
4005 | 1000 | +3005 |
plugin/skills/microsoft-foundry/foundry-agent/invoke/invoke.md |
1273 | 1000 | +273 |
plugin/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md |
1913 | 1000 | +913 |
plugin/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md |
1366 | 1000 | +366 |
plugin/skills/microsoft-foundry/foundry-agent/trace/trace.md |
1265 | 1000 | +265 |
plugin/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md |
1299 | 1000 | +299 |
plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md |
1640 | 500 | +1140 |
plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md |
1739 | 500 | +1239 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md |
1091 | 1000 | +91 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md |
2235 | 500 | +1735 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md |
3335 | 1000 | +2335 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md |
1226 | 500 | +726 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md |
5534 | 1000 | +4534 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md |
1315 | 1000 | +315 |
plugin/skills/microsoft-foundry/project/create/create-foundry-project.md |
1346 | 1000 | +346 |
plugin/skills/microsoft-foundry/quota/quota.md |
2129 | 1000 | +1129 |
plugin/skills/microsoft-foundry/quota/references/capacity-planning.md |
1968 | 1000 | +968 |
plugin/skills/microsoft-foundry/quota/references/error-resolution.md |
1141 | 1000 | +141 |
plugin/skills/microsoft-foundry/quota/references/optimization.md |
1846 | 1000 | +846 |
plugin/skills/microsoft-foundry/quota/references/ptu-guide.md |
1473 | 1000 | +473 |
plugin/skills/microsoft-foundry/quota/references/troubleshooting.md |
1807 | 1000 | +807 |
plugin/skills/microsoft-foundry/quota/references/workflows.md |
1614 | 1000 | +614 |
plugin/skills/microsoft-foundry/rbac/rbac.md |
1752 | 1000 | +752 |
plugin/skills/microsoft-foundry/references/auth-best-practices.md |
1543 | 1000 | +543 |
plugin/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md |
2060 | 1000 | +1060 |
plugin/skills/microsoft-foundry/resource/create/create-foundry-resource.md |
1489 | 1000 | +489 |
plugin/skills/microsoft-foundry/resource/create/references/workflows.md |
1637 | 1000 | +637 |
.github/agents/SkillCreator.agent.md |
1044 | 1000 | +44 |
Consider moving content to
references/subdirectories.
Automated token analysis. See skill authoring guidelines for best practices.
The IFS=\$'\n' set for the file loop persisted and prevented \ from being word-split on spaces when passed to npm run frontmatter. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Nested skills (e.g. microsoft-foundry/models/deploy-model) were extracted as just 'deploy-model' by basename, which doesn't exist as a top-level skill. Pass the full file paths instead, which the CLI already supports. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 34 out of 34 changed files in this pull request and generated 8 comments.
Comments suppressed due to low confidence (2)
scripts/src/frontmatter/cli.ts:270
- PR description says PR validation should warn when
license/metadata.versionare missing, but the frontmatter CLI treats any issue as a failure (process.exitCode = 1). As implemented, missinglicenseormetadata.versionwill fail the PR check rather than warn. Align either the implementation (severity levels / non-fatal checks) or the PR description.
scripts/src/frontmatter/cli.ts:231 validateMetadataVersionenforcesmetadata.version, but the authoring instructions also requiremetadata.author: Microsoft. There’s currently no corresponding validation formetadata.author, so CI may pass even when the documented requirement is violated. Either add ametadata.authorvalidation (and tests) or soften the requirement language in the instructions.
- Use git diff-tree --stdin for multi-commit change detection - Break after finding nearest SKILL.md (don't bump parent skills) - Handle quoted/unquoted versions in sed replacement - Restore missing '## Rule-Based Checks' heading in SCORING.md - Tighten validateLicense to check string type - Tighten semver regex to reject leading zeros (01.0.0) - Align instructions with actual validation behavior - Add tests for non-string license and leading-zero semver Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Per Jason's feedback, replace the skill-versioning.yml workflow (which auto-bumped versions on release) with a PR check that enforces version bumps at PR time. Every PR that modifies files under plugin/skills/ must include a metadata.version bump in the same diff. Changes: - Delete .github/workflows/skill-versioning.yml (release-triggered auto-bump) - Add 'Check skill version bumps' step to pr.yml skill-validation job - Add 'Check all changed plugin skill files' detection step - Add fetch-depth: 0 to skill-validation checkout for base branch diff - Update skill-files.instructions.md to reflect PR-time version enforcement The new check: - Detects all files changed under plugin/skills/ in the PR - Walks up from each changed file to find the nearest SKILL.md - Compares metadata.version between base branch and PR head - Fails if a skill was modified but version was not bumped - Skips new skills (no base version to compare against) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep PR's full-path frontmatter validation fix (from #1078). Keep main's azure-prepare description with cloud-migrate exclusion, add license/metadata fields from this branch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 33 out of 33 changed files in this pull request and generated 3 comments.
Comments suppressed due to low confidence (1)
.github/workflows/pr.yml:305
- PR description mentions a new workflow
.github/workflows/skill-versioning.yml, but that file doesn’t exist in the current changeset/repo (onlypr.ymlwas updated under.github/workflows/). Either add the workflow file as described, or update the PR description to reflect what’s actually included.
- name: Check skill version bumps
if: steps.changed-plugin-skills.outputs.any_changed == 'true'
run: |
echo "## Skill Version Check" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
FAILED=false
1. Fix sed regex: replace \s with [[:space:]] for portable whitespace matching in version extraction (review comment on line 333) 2. Expand version-bump check scope to include .github/skills/** in addition to plugin/skills/** (review comment on line 205) 3. Make license and metadata.version checks produce warnings instead of errors in frontmatter CLI. Missing fields are reported as warnings (⚠️ ) that don't fail the workflow; invalid formats (e.g. bad semver) remain errors (❌) that do fail. Updated tests to verify warning severity. (review comment on cli.ts:236) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Summary
Closes #1021
Adds
license,metadata.author, andmetadata.versionfields to all 23 SKILL.md files per the agentskills.io specification.Changes
All 23 SKILL.md files — added frontmatter fields:
New workflow:
.github/workflows/skill-versioning.ymlmetadata.versionin each changed skill's SKILL.md using Conventional Commits:fix:→ PATCH (1.0.0 → 1.0.1)feat:→ MINOR (1.0.0 → 1.1.0)BREAKING CHANGE:/feat!:→ MAJOR (1.0.0 → 2.0.0)PR validation (
pr.yml) — extended to:licensefield is missingmetadata.versionis missingmetadata.versionis not valid semver (X.Y.Z)Skill authoring instructions — updated to document new required fields