Create a skill
You create a skill by writing a SKILL.md file in any text editor and uploading it in Agent Builder. After you upload the skill, you can add it to any agent. This page walks you through each step, from writing the file to confirming that your agent uses it.
If you’re new to skills, read About agent skills first.
Before you begin
Make sure you have:
- Access to FlowAI and Agent Projects.
- The Owner or Editor role on the agent project that contains the agent.
- A text editor for writing the
SKILL.mdfile. - Write access to the existing skill, if you’re replacing a skill that already has the same name. To upload a new version of a skill, see Upload a new version.
Write a SKILL.md file
A SKILL.md file has two parts: YAML front matter with the skill’s name and description, followed by the body in Markdown.
This example is shortened from the dns-record-management skill in Infrastructure Agent Skills:
The description says both what the skill covers and when to use it, and it names what the skill doesn’t cover, so the agent doesn’t load it for the wrong task. The body is short because it sends the agent to the right supporting file for each platform.
Fields
Platform ignores any other front matter keys.
For naming rules and recommended limits, see the Agent Skills specification. If your skill goes past the specification’s recommended limits, you’ll see a warning when you upload it, and other agent tools may not load it.
Write a description the agent can act on
The model reads only the name and description of each skill before it decides which skills to load. A vague description means the skill loads when it isn’t needed, or doesn’t load when it is.
- Say when to use the skill: Start with the situations that call for it, such as “Use when the user asks to…”. Don’t just summarize what the skill contains.
- Put the trigger first: Put the most important text at the start of the description. Long descriptions may be shortened before the agent sees them.
- Keep skills distinct: If two skills have overlapping descriptions, the model may choose the wrong one. Make each description describe a different situation.
Write the body
The body is what the agent reads after it loads the skill. Write it as instructions for the agent:
- Include the domain knowledge the agent needs, such as how to interpret a response or which order to run tools in.
- Name the tools the agent should use. Make sure those tools are also added to the agent, because Platform doesn’t check this for you.
- If you include supporting files, you don’t need to list them in the body. The agent sees the path of every supporting file when it loads the skill. You can still mention a file when it helps to say when the agent should use it.
Add supporting files
If your skill needs more than the body, such as an API reference, a sample payload, or a template, put those files in folders next to SKILL.md:
references/: Documents the agent reads for more detail.assets/: Templates, sample data, and other files the agent uses in its output.
The Agent Skills specification recommends these folders, but they aren’t required. You can put supporting files anywhere in the skill’s folder, including next to SKILL.md.
When the agent loads a skill, it sees the body and the path of every supporting file. It reads a file only when it needs more context for the task.
Agents can read only text files. You can upload other file types, such as images, but the agent can’t read them. Trying to read one doesn’t stop the session.
You can include a scripts/ folder, and Platform stores those files with the skill. Agents can’t run scripts, so you’ll see a warning when you upload a skill that contains one.
Package the skill
How you package a skill depends on whether it has supporting files:
- No supporting files: Upload the
SKILL.mdfile on its own. The file name must end in.md. - Supporting files: Create a
.zipor.tararchive. PutSKILL.mdat the root of the archive, or directly inside a single top-level folder.
For example, to create an archive of the dns-record-management folder:
Platform ignores macOS metadata in archives, such as __MACOSX/, .DS_Store, and files that start with ._.
Size limits
Upload a skill
You upload skills from the Skills section of an agent. The skill is added to your library and to the agent you’re editing.
Drag your .md, .zip, or .tar file into the upload area, or select browse to choose it.
The dialog shows a preview with the file name and size, the skill’s description, and any references/ or assets/ folders. Review any warnings before you continue.
Under Permission, choose who gets each level of access. For each level, you can select users or groups.
- Read: View and export the skill, and add it to agents.
- Write: Replace the skill with a new version, plus everything that read allows.
You’re added to both by default. A skill must always have at least one user or group with write access.
Platform adds the skill to your library and to the agent, using the version you uploaded. The skill isn’t attached to the agent until you save it. If you don’t want it on this agent, remove it before you save. The skill stays in the library either way.
Upload errors and warnings
Upload a skill through the API
To upload a skill without the UI, send a POST request to /agent-project-service/skills/import. You need the agent-skills:write permission.
The request body takes three fields:
Unlike the upload dialog, the API doesn’t add you to the permissions automatically. Include your own user ID in writeUserIds if you want to keep write access to the skill.
The response includes the skill’s id, name, and version, whether the upload created a new skill or added a version, and any warnings about the name or description.
If a skill with the same name already exists and you have write access to it, the upload adds a new version and replaces the skill’s permissions with the ones you send. To check a file without saving it, send the same filename and content to /agent-project-service/skills/preview.
Uploading through the API adds the skill to your library, but doesn’t add it to an agent. To add it in the UI, see Add a skill to an agent. To add it through the API, send a PATCH request to /agent-project-service/agents/<agent-id> with an addSkills list. Each item takes the skillId and a version, which is either a version number or "latest".
Add a skill to an agent
You can add any skill that you have read access to, including skills that other people uploaded.
Choose how the agent uses the skill’s versions:
- Pin to a specific version: Select that version in the Version list.
- Always use the latest version: Select the version marked (latest) in the Version list, and then turn on Use latest and update automatically. The agent uses the most recent version each time a session starts.
Pin agents that need predictable results, such as agents that change device configuration, to a specific version. Use the latest version when you want an agent to pick up fixes without editing it.
You can also add a skill without opening its details. Select Add on the skill’s card, or select the checkbox next to the skill in the list view, and then select Save Agent. Skills added this way use the latest version, with Use latest and update automatically turned on. To pin the agent to a version instead, open the skill’s details and change the Version.
Verify that the agent uses the skill
The entry shows the skill name, the version ID, and whether the skill loaded. If you don’t see a Loading Skill entry, the model didn’t consider the skill relevant to the task. Check that the skill’s description clearly covers the task you ran.
If the entry shows a failure, see View skill loads in Agent Sessions.