SKILL.md file: a short YAML header (frontmatter) that names the skill and says when to use it, followed by Markdown instructions. This page covers the rules a file must pass to load and the writing patterns that make agents follow it.
Minimal valid skill
Copy this, change the name, description, and rules, and it will load:Frontmatter fields
Other fields, such as
license or allowed-tools from SKILL.md files written for other tools, don’t block an upload, and CloudThinker doesn’t use them. A skill ported from another tool loads as long as it has name and description.
Name examples:
When you create a skill with Write skill instructions, CloudThinker builds the frontmatter from the Skill name and Description fields for you. You only write the frontmatter yourself when you upload a
.zip or edit SKILL.md by hand.Zip package layout
Use a.zip when a skill needs supporting files, or to move a skill between workspaces. Upload it from More → Workspace settings → Skills → + (next to Search skills) → Upload zip file.
-
Put
SKILL.mdat the root of the zip or inside one top-level folder. The skill takes its name fromnamein the frontmatter, so the folder name doesn’t need to match. -
Name the zip file exactly after the frontmatter
name, including case (for examplesecurity-review-checklist.zip). CloudThinker uses the zip’s file name to spot an existing skill and offer Replace. If the two differ, Replace can delete the skill the zip name matches and upload a skill under another name. With no match, an upload whose frontmatternameis taken fails with This skill name is already in use. -
Only
scripts/,schemas/, andreferences/are kept. Other files and folders are ignored. -
Refer to supporting files from
SKILL.mdby relative path. Agents don’t read them automatically: they open a file when the instructions point to it, for example: -
For a script, name it and say when to run it, for example “Run
scripts/check_tags.shwith the account ID.” Scripts can be Bash or TypeScript (run withbun). The agent runs a script with the same command tool it uses for any other command, so any write it makes goes through Approvals like any other command. -
The script gets your workspace Credentials as environment variables, named by each credential’s Key. A credential with the key
DATADOG_API_KEYis$DATADOG_API_KEYin the script.
Credentials aren’t specific to skill scripts: every command an agent runs gets every workspace credential, whether or not the skill or prompt uses it. You can’t scope a credential to one skill or agent. Store only the keys your skills need and prefer read-only vendor keys. See how agents use credentials.
Limits
Check before you upload
SKILL.mdis named in uppercase and sits at the zip root or one folder down.- The file starts with
---on the first line, and the frontmatter closes with---. namestarts with a letter or digit and uses only letters, digits,_, and-.nameisn’t a built-in skill name, such aspdfordeep-research.descriptionis filled in, and quoted if it contains a colon.- The zip file name matches
nameexactly. - Supporting files sit in
references/,scripts/, orschemas/.
Write instructions agents follow
Write only what the agent doesn’t already know. Agents already understand SQL injection. They don’t know your rules about it.
Show, don’t describe. A pair of examples beats a paragraph:
references/ and point to them. That’s advice for keeping agents on track, well below the 50,000-character hard limit.
Complete example
A pull request standards skill you can adapt:argument-hint; it only helps someone who runs the skill from the / menu in chat. See custom skills.
Troubleshooting
Failed to upload skill to executor
Failed to upload skill to executor
- Frontmatter. It’s missing, it has a YAML error, or
nameordescriptionis empty. Check thatSKILL.mdstarts with---, that the header closes with---, and that both fields have values. Put a description that contains a colon in quotes. Also check thatnamefollows the naming rules above. - No
SKILL.mdwhere CloudThinker looks. It must be at the zip root or one folder down, and the file name is case-sensitive. Renameskill.mdtoSKILL.mdand zip again.
SKILL.md name must match the selected skill
SKILL.md name must match the selected skill
When you edit an existing skill by hand, the
name in the frontmatter must stay exactly the same. To rename a skill, download it, change the name, and upload it as a new skill. Then delete the old skill, and re-tick Available in on the new one, since it starts on Chat only.My scripts or docs are missing after upload
My scripts or docs are missing after upload
Only files inside
scripts/, schemas/, and references/ next to SKILL.md are kept. Move other files into one of those folders.The skill loads but agents rarely use it
The skill loads but agents rarely use it
Rewrite the
description to say when to use the skill, with the words people actually type (“Use when reviewing a pull request”). Then make the rules concrete and add examples.Related
Custom skills
Create, upload, and choose where a skill applies.
Skills overview
How agents pick and apply skills.