What is a skill?
A skill is a small, reusable package that teaches an AI agent how to perform a specific task consistently. It usually combines focused instructions with optional scripts, templates, and reference material. Think of it as an operational playbook that the agent can discover and apply when the task matches.
How does an agent use a skill?
- The agent identifies that a user’s request matches the skill’s purpose.
- It reads the skill’s
SKILL.mdinstructions before acting. - It follows the prescribed workflow and uses any bundled resources or scripts.
The skill should be narrow enough that its trigger is unambiguous. For example, “create an Obsidian Canvas” is a better skill scope than “help with notes.”
What does a skill look like?
At minimum, a skill is a directory containing a SKILL.md file:
my-skill/
├── SKILL.md (required - overview and navigation)
├── reference.md (detailed API docs - loaded when needed)
├── examples.md (usage examples - loaded when needed)
└── scripts/
└── helper.py (utility script - executed, not loaded)
SKILL.md should include:
- A clear name and one-sentence description.
- When the agent should and should not use it.
- The required workflow, in order.
- Any safety rules, inputs, outputs, and validation steps.
- Pointers to scripts or references, rather than copying large content into the main file.
Example:
---
name: skill-name
description: Explain exactly when this skill should and should not trigger.
---
Skill instructions for Agent to follow.
## Additional resources
- For complete API details, see [reference.md](reference.md)
- For usage examples, see [examples.md](examples.md)
Where should a skill live?
Choose the location based on who should use the skill: keep personal workflows in your home directory, commit team workflows to the repository, and use a plugin when you need broader distribution.
- Codex: use
.agents/skills/<name>/SKILL.mdin a repository, or~/.agents/skills/<name>/SKILL.mdfor personal skills. - Claude Code: use
.claude/skills/<name>/SKILL.mdin a repository, or~/.claude/skills/<name>/SKILL.mdfor personal skills. - OpenCode: use
.opencode/skills/<name>/SKILL.mdor its compatible.claude/skillsand.agents/skillslocations; global skills can also live in~/.config/opencode/skills.
There is no single local path shared by all three tools: .agents/skills works with Codex and OpenCode, while .claude/skills works with Claude Code and OpenCode. Use a self-contained folder per skill and keep it close to the code, tools, and documentation it depends on.
Read more:
What should become a skill?
A skill is a good fit when the work is repeated, has a recognizable trigger, and benefits from the same process, knowledge, or output format each time. Typical examples include release-note drafting, document generation that follows a template, a domain-specific review checklist, or a workflow that reliably uses the same tools.
Do not create a skill for a one-off task, a vague request with no stable workflow, or instructions that should apply to every task. Put always-on project rules in AGENTS.md, CLAUDE.md, or the equivalent platform instruction file instead. Use a script or hook when the task must run deterministically on an event.
How do I create one?
1. Initialize the skill
Start with one repeated task, a clear outcome, and a precise trigger. You can create the first draft in either way:
- Use a coding agent: ask it to create the skill from your description. In Codex, invoke the built-in
$skill-creator; it will gather the scope, trigger, and resource needs. - Create it manually: make the skill folder and write a minimal
SKILL.mdwith a name, description, instructions, and expected output.
Keep the first version small. Add a script, template, or reference only when it removes real repetition.
2. Iterate with the agent
Treat a skill as a tested workflow, not a one-time prompt. Repeat this loop until the outcome meets expectations:
- Ask an agent to use the skill on a representative task.
- Inspect the result and compare it with the expected outcome.
- Give the agent specific feedback on what was missing, incorrect, or unnecessary.
- Update the skill and run the test again.
Keep skills focused, explicit, and easy to inspect. A short skill that reliably handles one workflow is more useful than a broad skill with vague guidance.
Read more:
How to share
- Test it on your local machine
- Create your skill repo in our group github: Multiscale Structural Mechanics
Useful resources
Highly recommend to read this: Agent Skills Overview - Agent Skills
Guides
- A complete guide to building skills for Claude | Claude by Anthropic
- Introduction to Claude Skills | Claude Cookbook
- Skills explained: How Skills compares to prompts, Projects, MCP, and subagents | Claude by Anthropic
Reference docs
- Agent Skills Overview - Agent Skills
- Extend Claude with skills - Claude Code Docs
- Build skills | ChatGPT Learn
- Agent Skills | OpenCode
Examples
- VoltAgent/awesome-agent-skills: A curated collection of 1000+ agent skills from official dev teams and the community, compatible with Claude Code, Codex, Gemini CLI, Cursor, and more.
- awesome-opencode/awesome-opencode: A curated list of awesome plugins, themes, agents, projects, and resources for https://opencode.ai
- K-Dense-AI/scientific-agent-skills: Turn any AI agent into an AI Scientist.