Skip to content
Learn Kiro.

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

  1. 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.

  2. Create the folder and file. Workspace: .kiro/skills/release-notes/SKILL.md. Personal: ~/.kiro/skills/release-notes/SKILL.md.

  3. Write the front matter. The name identifies the skill and the description is 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.
  4. 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.

  5. Add scripts or templates alongside SKILL.md when a step is mechanical. The skill folder can carry them.

  6. 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.

  7. 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.

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.

Was this chapter helpful?