mcpbeat

Creating Skills

microsoft/creating-skills

Use when you need to create a new custom skill for a profile - guides through gathering requirements, creating directory structure, writing SKILL.md, and optionally adding bundled scripts

796 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
4940
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/microsoft/FluidFramework --skill creating-skills

What it tells the agent to use

found in the instruction text
Bash runs shell commands — read the instruction before connecting

The instruction itself

4 sections, as written by the author

<required>

*CRITICAL* Add the following steps to your Todo list using TodoWrite:

  • Gather skill requirements from me
  • Select target profile
  • Create skill directory structure
  • Write SKILL.md with proper frontmatter
  • (Optional) Write and bundle scripts
  • Instruct the user to run /nori-switch-profile to switch profiles.

</required>

Overview

This skill guides you through creating custom skills that persist across sessions. Skills are stored in profile directories and can include markdown instructions, checklists, and optional bundled scripts.

Writing Skills

Every skill must start with a required checklist block:

<required>
*CRITICAL* Add the following steps to your Todo list using TodoWrite:
1. <step 1>
2. <step 2>
...
</required>

This is the *most important* part of a skill.

Each step may have guidelines underneath. For example:

1. Create a directory.

Use `mkdir foo/bar`

2. Make a file.

...

Writing scripts

Skills may be bundled with scripts. Scripts are simple code cli tools that do various things deterministically.

Any scripts you write should be entirely self contained. Ask the user which

language they prefer.

The scripts should be callable from the Bash tool.

The script should be stored in the same place as the skill. Add a section to the

SKILL.md on how to use the script. If the script is required to be called, add

that instruction to the <required> block.

Tools and Code

Document which tools are necessary for the skill.

The SKILL should explicitly encourage writing code. The agent should be told to write code to call a tool any time the agent needs to call any tools more than once. The agent should write code instead of calling tools itself.

Steps that reference tools and APIs should inline them in the step by step process.

<good-example>

  • Write a python script that uses the slack api to pull my unread messages. The script should write my messages to a folder, /home/foobar/daily-analysis/<DD-MM-YYYY>/slack
  • Write a python script that uses the gmail api to pull my inbox. The script should write my emails to a folder, /home/foobar/daily-analysis/<DD-MM-YYYY>/email
  • Write a python script to identify the most urgent messages that I need to respond to.

<system-reminder> Auth credentials can be found at /home/foobar/authentication/auth.txt

</good-example>

<bad-example>

Tools: Slack, Gmail API

  • Summarize my messages by looking through common surfaces that I may use for messages.

</bad-example>

<good-example>

Read https://raw.githubusercontent.com/tilework-tech/nori-skillsets/96012bcfcd9482b248debed7b9a7fc7c345f76e1/src/cli/features/claude-code/profiles/config/amol/skills/finishing-a-development-branch/SKILL.md

</good-example>

<good-example>

Read https://raw.githubusercontent.com/tilework-tech/nori-skillsets/96012bcfcd9482b248debed7b9a7fc7c345f76e1/src/cli/features/claude-code/profiles/config/amol/skills/webapp-testing/SKILL.md

</good-example>

How to use it

Copy the folder

Take microsoft/creating-skills from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.