Recipes · Chapter 39 of 63
Write a Skill
Write a Kiro skill as a SKILL.md file in .kiro/skills/, give it a description that triggers reliably, and invoke it as a slash command.
All levels 2 min read last reviewed 2026-09-04
◎ Learning objective
Package a repeated team procedure as a skill that activates on matching requests or on demand.
A skill is a written procedure the agent can load when it needs it. Put a SKILL.md in .kiro/skills/ and Kiro reads its description at session start, then pulls in the full instructions when a request matches.
When to use this
Write a skill the second time you explain the same procedure. Release notes, adding a new pipeline source, the deployment checklist, how your team writes migrations. Steering is for facts that always apply. Skills are for procedures that apply sometimes, which is why they load on demand instead of on every turn.
Steps
-
Pick one procedure with a clear start and end. “How we add a new API endpoint” is a skill. “How we write good code” is not.
-
Create the folder and file. Workspace:
.kiro/skills/release-notes/SKILL.md. Personal:~/.kiro/skills/release-notes/SKILL.md. -
Write the front matter. The
nameidentifies the skill and thedescriptionis what Kiro matches against, so describe the situation that should trigger it..kiro/skills/release-notes/SKILL.md--- name: release-notes description: Use when preparing release notes or a changelog entry for a tagged version of this repository. --- # Release notes 1. Collect merged pull requests since the previous tag. 2. Group them under Added, Changed, Fixed, Removed. 3. One line each, written for a user, not a committer. 4. Link the pull request number at the end of each line. 5. Put the result in CHANGELOG.md above the previous entry. -
Keep the body actionable. Numbered steps, concrete file names, real commands. Push long reference material into other files in the same folder and mention them from
SKILL.md. -
Add scripts or templates alongside
SKILL.mdwhen a step is mechanical. The skill folder can carry them. -
Commit workspace skills so the team shares them. Skills merge across the global and workspace scopes, so a personal skill and a team skill can both be available.
-
Reference a skill from a custom agent with a
skill://URI in the agent’s resources when a particular persona should always have it.
Check it worked
Start a new session and phrase a request the way your description says, without naming the skill. If it activates, the description works. Then invoke it explicitly as /release-notes and confirm the steps run in order. Kiro loads skill instructions through its disclose_context tool, so seeing that call is a sign the skill body reached the model.
Common problems
- The skill never activates. The description describes the skill instead of the situation. “Release note formatting rules” matches nothing. “Use when preparing release notes for a tagged version” matches.
- Two skills fight. Their descriptions overlap. Make each one narrower, or merge them.
- The skill is enormous. Only the name and description load at session start, but the body loads when it activates. Keep the body to the steps, and move the reference material to a companion file.
- It works for you and not the team. You wrote it in
~/.kiro/skills/. Move it to.kiro/skills/and commit it. - You wanted vendor knowledge. Third-party technology belongs in a Power, which bundles MCP configuration too.
Related
- Skills explains the standard and discovery.
- Add a Power covers the vendor-knowledge equivalent.
- Advanced Tutorial shows skills inside a team workflow.
Frequently asked questions
What is a Kiro skill?
A skill is a portable instruction package that follows the open Agent Skills standard. It is a SKILL.md file with YAML front matter carrying a name and a description, plus optional scripts and templates in the same folder.
Where does SKILL.md go in Kiro?
Workspace skills live in .kiro/skills/, one folder per skill with a SKILL.md inside. Personal skills live in ~/.kiro/skills/. Skills merge across both scopes, so you get your own plus the team's.
How do I trigger a skill on purpose?
Invoke it as a slash command using its name, for example /release-notes. Otherwise Kiro activates it automatically when your request matches the skill's description.
☰ Chapter summary
- A skill is a folder with a SKILL.md file that has YAML front matter carrying a name and a description.
- Workspace skills live in .kiro/skills/; personal skills live in ~/.kiro/skills/, and the two merge.
- Kiro discovers skills at session start by name and description, then loads the body when it is needed.
- A skill activates when a request matches its description, or explicitly as /skill-name.
- The description is the trigger, so write it about the situation, not about the skill.
All chapter summaries are collected on the revision page.
Related chapters
- ConceptsSkillsA Kiro skill is a reusable SKILL.md instruction pack the agent loads when relevant. Format, folders, activation by description, and skills vs steering.
- RecipesAdd a PowerWhat a Kiro Power bundles, where Powers live, how to install one from the marketplace, a folder, or GitHub, and why cloud Powers appear read-only.
- RecipesCreate Your First Steering FileCreate product.md, tech.md, and structure.md in .kiro/steering/, set inclusion modes in front matter, and check that the agent obeys them.
- Hands-onAdvanced TutorialA production-shaped workflow that combines specs, steering, hooks, MCP, custom agents, and skills, written for engineers who already know the basics.