skill.md name format valid
The name field in your skill.md must contain only lowercase letters, numbers, and hyphens.
What is the format rule?
Skill names follow the same convention as npm package names, Docker image tags, and Kubernetes resource names: lowercase letters, digits, and hyphens. No spaces, no uppercase, no underscores, no special characters.
The regular expression is simple: ^[a-z0-9-]+$. A valid name is something like acme-crm, openai-mcp, or sales-pipeline-2. An invalid name is Acme CRM, acme_crm, or Acme!.
Why does the format matter?
Machine identifiers appear in URLs, filesystem paths, command-line tools, and registries. Every one of those contexts has edge cases with spaces, uppercase, or punctuation. Sticking to the lowercase-and-hyphens rule means your name works everywhere an agent might want to reference it.
It also keeps the identifier distinct from the display name of your brand. Acme CRM (the brand) and acme-crm (the identifier) can coexist — the first goes on your website, the second goes in skill.md.
How to fix a bad name
Take your brand name, lowercase it, and replace any spaces or punctuation with hyphens. Drop anything that is not a letter, a digit, or a hyphen.
Brand name Valid identifier Acme CRM → acme-crm OpenAI Plugin → openai-plugin Sales Pipeline 2 → sales-pipeline-2 My_Product! → my-product