Skip to main content
Every skill is a 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.md at the root of the zip or inside one top-level folder. The skill takes its name from name in the frontmatter, so the folder name doesn’t need to match.
  • Name the zip file exactly after the frontmatter name, including case (for example security-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 frontmatter name is taken fails with This skill name is already in use.
  • Only scripts/, schemas/, and references/ are kept. Other files and folders are ignored.
  • Refer to supporting files from SKILL.md by 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.sh with the account ID.” Scripts can be Bash or TypeScript (run with bun). 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_KEY is $DATADOG_API_KEY in 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.md is 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 ---.
  • name starts with a letter or digit and uses only letters, digits, _, and -.
  • name isn’t a built-in skill name, such as pdf or deep-research.
  • description is filled in, and quoted if it contains a colon.
  • The zip file name matches name exactly.
  • Supporting files sit in references/, scripts/, or schemas/.

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.
Match the rule style to how much freedom you want: Show, don’t describe. A pair of examples beats a paragraph:
Keep one topic per skill. Separate security rules from performance rules so you can make each available in different places. If a skill runs past about 300 lines, split it, or move long reference tables into 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:
After you save it, tick Review under Available in so it applies to pull request reviews. Reviews never use argument-hint; it only helps someone who runs the skill from the / menu in chat. See custom skills.

Troubleshooting

  • Frontmatter. It’s missing, it has a YAML error, or name or description is empty. Check that SKILL.md starts with ---, that the header closes with ---, and that both fields have values. Put a description that contains a colon in quotes. Also check that name follows the naming rules above.
  • No SKILL.md where CloudThinker looks. It must be at the zip root or one folder down, and the file name is case-sensitive. Rename skill.md to SKILL.md and zip again.
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.
Only files inside scripts/, schemas/, and references/ next to SKILL.md are kept. Move other files into one of those folders.
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.

Custom skills

Create, upload, and choose where a skill applies.

Skills overview

How agents pick and apply skills.