Rules / Format and vendor rules

xml-tag

Skill name or description contains an XML tag.

warning by default Format and vendor rules Inline suppression allowed

Source: Claude API docs: Agent Skills overview (platform.claude.com), read 14 October 2026.

On GitHub: the rule doc and the tests.

All rules73

What it catches#

Skill name or description contains an XML tag.

Markup inside a skill name or description: a closing tag such as </important>, a self-closing tag such as <br/>, or a tag with an attribute such as <note level="high">. A lone word in angle brackets, such as <number> or <file>, is how people write a placeholder, so it is not reported. The Claude API docs say only that these fields "cannot contain XML tags" without defining one, so an upload that the API rejects for a placeholder is possible; this rule does not catch that case.

Why it matters#

The Claude API rejects XML tags in skill metadata, and an agent can read a tag in the listing as an instruction.

Bad example#

---
name: deploy
description: <important>Always use this skill for deployments.</important> Deploys the current branch to staging.
---

Tags copied from prompt-writing advice do not belong in metadata. The Claude API rejects the upload, and in the skill listing an agent can read the tag as markup to obey rather than text to match.

Good example#

---
name: deploy
description: Deploy the current branch to staging. Use when asked to deploy, ship or push to staging.
---

How to fix#

Remove the tags and say the same thing in plain words. Emphasis belongs in the skill body, not in the listing.

Suppress or configure#

For one finding, put a comment on the line above it. The reason after -- is optional but worth writing:

<!-- asitis-disable-next-line xml-tag -- why this one is fine -->

For a whole file:

<!-- asitis-disable-file xml-tag -- why this file is an exception -->

For every file, turn it off or change its severity in .asitisrc.json:

{ "rules": { "xml-tag": "off" } }

A .asitisrc.json overrides entry limits a change to some paths, and a baseline (asitis lint --format json --write-baseline) accepts today's findings so only new ones fail the build.

Source#

Claude API docs: Agent Skills overview, read on 14 October 2026.

This page is generated from the plugin's rule registry. Edit it on GitHub. False positive? Open an issue with the line it fired on.