Remove XML tags from skill descriptions for Claude compatibility - #1259
YuliiaKovalova wants to merge 2 commits into
Conversation
Claude (claude.ai and Claude Code marketplace sync) rejects skill descriptions that contain XML tags and strips the angle brackets. Reword the four affected descriptions in plain language: - dotnet-advanced/vectorization - dotnet-blazor/configure-auth - dotnet-msbuild/msbuild-modernization - dotnet11/system-text-json-net11 Add a skill-validator check that errors on XML-like tags in a skill description so this cannot regress, with tests, and document the rule in the create-skill authoring guide. Fixes dotnet#1251 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: bcd44b69-8a83-470f-a43b-41606d2b67de
|
Note This PR is from a fork and modifies infrastructure files ( Changes to infrastructure typically need to be submitted from a branch in Please consider recreating this PR from an upstream branch. If you don't have push access to |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The validator rejects some plain comparisons and misses valid underscore-prefixed XML tags.
Review effort: Balanced
Findings: 2
Open (2)
What changed in this PR
Addresses Claude marketplace compatibility by removing XML-like text from skill descriptions and adding validation against recurrence.
Changes:
- Rewords four descriptions while preserving routing intent.
- Adds XML-like tag detection and seven test cases.
- Documents the restriction in the authoring guide.
| File | Description |
|---|---|
| plugins/dotnet11/skills/system-text-json-net11/SKILL.md | Rewords generic API references. |
| plugins/dotnet-msbuild/skills/msbuild-modernization/SKILL.md | Replaces XML examples with plain language. |
| plugins/dotnet-blazor/skills/configure-auth/SKILL.md | Removes NotAuthorized tag brackets. |
| plugins/dotnet-advanced/skills/vectorization/SKILL.md | Rewords the generic Vector reference. |
| eng/skill-validator/tests/Check/SkillProfileTests.cs | Tests tag rejection and comparison acceptance. |
| eng/skill-validator/src/Check/SkillProfiler.cs | Adds description tag validation. |
| .agents/skills/create-skill/SKILL.md | Documents the rule and checklist item. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…arisons Address review feedback: - Accept '_' as an XML name start so tags like <_Root /> are flagged. - Match a tag name followed only by bare words or name=value attributes (plus comments, PIs and CDATA) instead of arbitrary text between brackets, so unspaced comparisons such as i<length && count>0 no longer fail the check. Add regression cases for both. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: bcd44b69-8a83-470f-a43b-41606d2b67de
| @"|</?[A-Za-z_][\w.:-]*(?:\[\]|\?)*" + | ||
| @"(?:[\s,]+[A-Za-z_][\w.:-]*(?:\[\]|\?)*(?:\s*=\s*(?:""[^""]*""|'[^']*'|[^\s""'<>=,]+))?)*" + |
|
Superseded by #1260, which is opened from a branch in dotnet/skills (this PR came from a fork and touches eng/ files). Review feedback from this PR is already included. |

Summary
Claude (claude.ai and Claude Code marketplace sync) rejects skill descriptions that contain XML tags and stores them with the angle brackets stripped. Four skills were reported after a marketplace sync.
dotnet-advanced/vectorization:Vector<T>-> "the generic Vector type"dotnet-blazor/configure-auth:<NotAuthorized>-> "NotAuthorized"dotnet-msbuild/msbuild-modernization:<Compile Include>/<Import Project=...>reworded;> 50 lines-> "over 50 lines"dotnet11/system-text-json-net11:GetTypeInfo<T>()/TryGetTypeInfo<T>(out ...)-> genericGetTypeInfo/TryGetTypeInfooverloadsskill-validator checkrule that errors on XML-like tags in a skill description, so this cannot regress. Plain comparisons such as>5sor>20 levelsare not flagged.create-skillauthoring guide (description rules + checklist).Descriptions that use
>/<only as comparison operators (build-perf-diagnostics,eval-performance) are intentionally unchanged; they are not tags and were not reported.Related issue
Fixes #1251
Validation
dotnet testineng/skill-validator: 871 passed, 0 failed (includes 7 new tests for the XML-tag rule).skill-validator check --plugin plugins/*with the repo's allow-lists: all checks passed (100 skills, 16 agents, 17 plugins).SKILL.mddescription (parsed YAML) for tag-like text: 0 remaining; all descriptions are still under 1,024 characters.Checklist
eng/known-domains.txtfor any new external domains referenced by skill content. (N/A: no new domains)