Create and Add Skills
This page is the complete guide for creating a skill and attaching it to an agent.
Before you begin
You can register a skill from Studio or from a Python notebook. Both paths produce the same GenaiCore.Skill entity.
For either path:
- Confirm the target agent type supports skills through
GenaiCore.Agent.WithSkills.
For the Python notebook path only:
- Confirm you can run Python method calls in your C3 environment (for example, IPython notebook or service shell).
- Ensure you have the
py-llm_312kernel installed in your Jupyter environment and set that as the runtime.
Author a skill
Create a folder that includes SKILL.md at the root.
Minimum structure:
my-skill/
SKILL.mdYour SKILL.md must include YAML frontmatter with name and description.
---
name: my-skill
description: Summarize support tickets and produce a weekly digest.
---
# Skill Instructions
When asked to summarize support tickets, read reference files first, then run scripts if needed.Validation rules enforced by the platform during skill registration:
nameis required, must be kebab case (for example,this-is-kebab-case), and must be unique. Names cannot start or end with a hyphen and cannot contain consecutive hyphens.descriptionis required and must be non-empty.SKILL.mdmust be at the root of the skill folder inside the ZIP, and the folder name must match the ZIP filename.
Package the skill as a ZIP archive
From the parent directory of the skill folder:
zip -r my-skill.zip my-skillThe resulting archive must contain the SKILL.md root file for that skill folder.
The previous zip commands don't have to run in your notebook environment. You can create the ZIP archive separately and then import it into your notebook environment to register the skill.
Register the skill
You can register the ZIP from Studio (recommended for 8.11 and later) or from a Python notebook. Both paths run the same validation and produce a GenaiCore.Skill entity.
Register from Studio
- Open Studio and navigate to Agents > Gallery.
- Select the Skills tab.
- Select + Upload Skill.
- In the modal, choose the
.zipfile you packaged. - On the Review step, confirm that the parsed Name and Description match the frontmatter in
SKILL.md. Validation errors appear in the modal. - Select Confirm.
After upload, the Skill Workbench opens for the new skill. For a complete walkthrough of the Studio surface, see Manage Agent Skills in Studio.
Register from a Python notebook
Register the ZIP by calling GenaiCore.Skill.createFromZip().
From within your Python notebook environment, make sure you are using the py-llm_312 runtime and then run the following code.
The variable zip_file_name is the name you give your ZIP archive.
skill = c3.GenaiCore.Skill.createFromZip(zip_file_name)What this method call does:
- Validates the ZIP format and
SKILL.mdfrontmatter. - Unpacks and stores skill files in the platform file system.
- Creates a
GenaiCore.Skillentity you can attach to agents.
Add the skill to an agent
After you create a GenaiCore.Skill entity, attach it to an agent in the UI:
- Go to the Agent Workbench and select the agent. You can only add skills to a draft agent.
- In the agent configuration, in the Skills section, select the + icon.
- The skill is available in the list of skills to select. Select the skill and add it to the agent configuration.
To create or edit an agent, see Create Agents from Scratch.
Troubleshoot
Expected a .zip file: Ensure the path ends in.zip.SKILL.md file not found: EnsureSKILL.mdis present in the skill folder's root directory before zipping.Invalid name: Update frontmatternameto kebab case (for example,this-is-kebab-case). Names cannot start or end with a hyphen and cannot contain consecutive hyphens.already exists: Use a unique skill name or remove the previous skill.ZIP filename does not match frontmatter name: Rename the.zipso the filename without extension matches thenamefield inSKILL.md. For example, a skill namedmy-skillmust be packaged asmy-skill.zip.Skill not used by agent: Confirm the agent prompt and query are relevant to the skill's instructions, then run again.