In agentic tools, a skill is a reusable instruction pack: a playbook, checklist, or workflow that the tool can load when needed.
Skills matter because they let you stop repeating the same long instructions in every session. Instead of pasting the same review checklist or writing guide over and over, you can turn it into a skill.
This page uses Claude Code as the main concrete example because its skill system is well documented. OpenCode also supports skills, but the exact discovery locations, frontmatter, and invocation flow differ.
After working through this page, students should be better able to:
AGENTS.md and skills appropriately as reusable instruction layers in a
project workflowCreate a skill when you keep repeating the same procedure, for example:
A useful rule in Claude Code is:
CLAUDE.mdAGENTS.mdIf something should be loaded in every Claude Code session, it probably belongs
in CLAUDE.md. If it is a reusable playbook you only need sometimes, it
probably belongs in a skill.
AGENTS.md and memoryKeep one repository and one task fixed:
Explain code in a beginner-friendly way, and run
pytest -qbefore finishing if code changed.
If the repository should always prefer beginner-friendly explanations and always
run pytest -q after code changes, that belongs in AGENTS.md.
If you want a reusable procedure for one kind of task, such as explain code to
beginners with an analogy, a flow walkthrough, and one likely misconception,
that belongs in a skill.
If the instruction is tool-specific, such as use plan mode in Claude Code, it
belongs in a tool-specific always-loaded file rather than in a skill or
AGENTS.md.
If the information is temporary, such as the current student already
understands loops but not decorators, that is session context or memory, not a
skill.
In Claude Code, the main locations are:
~/.claude/skills/<skill-name>/SKILL.md.claude/skills/<skill-name>/SKILL.mdPersonal skills follow you across projects. Project skills travel with the repository and help your teammates too.
OpenCode also supports skills, but it documents more locations, including
.opencode/skills/<skill-name>/SKILL.md,
~/.config/opencode/skills/<skill-name>/SKILL.md, and compatible
.claude/skills/... or .agents/skills/... directories.
A skill is a directory containing SKILL.md. For example:
~/.claude/skills/explain-code/SKILL.md
---
name: explain-code
description: Explain code with an analogy and a small ASCII diagram. Use when the user asks how code works.
---
When explaining code:
1. Start with a short analogy.
2. Draw a small ASCII diagram.
3. Walk through the flow step by step.
4. Mention one likely mistake or misconception.
In Claude Code, the name becomes the slash command, so you can invoke this
skill with /explain-code.
In Claude Code, a skill can be used in two ways:
/skill-nameIn OpenCode, agents discover available skills through the skill system and load them when relevant, but the documented mechanics are not the same slash-command flow as Claude Code.
That means a good description matters. It tells the tool when the skill should be loaded.
For example, deployment or commit skills are often better as manual-only commands, while explanation or review skills often benefit from automatic invocation.
Public skill directories can be useful, but read skills before you install them.
A skill is not just metadata. It is a package of instructions that can influence what an agent does, which tools it uses, and what files it touches. Treat third-party skills with the same caution you would use for shell scripts or other workflow automation.
Skills are one of the easiest ways to go from “chatting with a tool” to building a repeatable workflow.
Once you notice that you keep giving the same instructions again and again, that is often the signal that you should create a skill instead.