Guide
How to Share Skills Across Claude Code, Codex and Other Agents in a Team
Claude Code, Codex, Cursor and most coding agents read the same SKILL.md format, but from different folders on each machine. This guide shows where each agent reads skills. It also shows how to share one set of skills in a team with a git repository or a registry, and how to keep every machine current.
· Erik Jonsson Thorén, Founder, Gatana
Short answer: A skill is a folder with a SKILL.md file. Claude Code reads it from ~/.claude/skills. Codex, Cursor and other agents read ~/.agents/skills. For a team, keep the skills in one place and install them into those folders on every machine. A git repository works for a small team. A registry adds access rules, a sync hook and an audit trail.
What a skill is
A skill tells an agent how a job is done in your organization. Examples: how to cut a release, what a pull request review must cover, where to look first when an error appears. A skill is one Markdown document in a folder of its own name.
---
name: release-checklist
description: Use when asked to release a backend service or cut a new version
---
1. Start from a clean checkout of `main` with a green test run.
2. Bump the version in `package.json` and tag the commit `backend/vX.Y.Z`.
3. Push the tag. The pipeline builds the image and deploys to staging.
4. Watch the staging dashboard for ten minutes before you promote.
The frontmatter contains the name and the description. The body contains the instructions. Write the description for an agent that decides whether the skill applies. Say when to use it, not what it contains. The format is open and documented at agentskills.io.
Where each agent reads skills
| Agent | Folder |
|---|---|
| Claude Code | ~/.claude/skills |
| Codex, Cursor, Gemini CLI, OpenCode, GitHub Copilot, Amp | ~/.agents/skills |
| Hermes | ~/.hermes/skills |
A skill that is in the correct folder is available to the agent. Nothing else is necessary. The sharing problem is thus a file distribution problem: one set of folders, current on every machine, readable by the correct people.
Option 1: a git repository
- Create a repository with one folder for each skill.
- Each person clones it.
- Each person links or copies the folders into
~/.claude/skillsand~/.agents/skills. - Each person pulls when a skill changes.
This works for a small team with one set of skills. Four limits appear as the team grows:
- Everyone with the repository sees every skill. There is no access rule for each team.
- An update reaches a machine only when the person pulls.
- A copy that one person edits locally drifts from the repository.
- Git records who changed a file. It does not record which agents read the skill.
Option 2: a skills registry in the gateway
Gatana stores skills under the same access rules as the rest of the gateway and installs them where the agents read.
Create the skills
Create skills in the dashboard under Skills, with a Write tab and a Preview tab. Or push folders that you already have:
npm install -g gatana
gatana config login your-organization
gatana skills push ~/.claude/skills/release-checklist # one skill
gatana skills push ./team-skills -c release-engineering # a folder of skills, into a collection
Install them on each machine
gatana skills install # every skill the person can read, plus the hook
gatana skills install release-engineering # one collection
Install writes each skill into ~/.claude/skills and ~/.agents/skills. Pass hermes as a target for Hermes, or any other path. The CLI tracks the folders that it writes. It does not touch skills that you keep there yourself. It does not overwrite a local edit that has not been pushed. When a skill is deleted in Gatana, the next install removes it from the machine. Keep it with --no-prune.
Keep them current
Install adds a hook on the SessionStart event of Claude Code and Codex. The hook runs gatana skills sync --quiet before the first prompt. Every session starts with the current skills. The hook prints nothing, because Claude Code and Codex add hook output to the context of the model.
gatana skills hook claude # prints the hook block to merge by hand
gatana skills install --no-hooks # install without the hook
gatana skills remove-hooks # take the hook out again
Push changes back
Edit an installed SKILL.md, or write a new folder, and push:
gatana skills push # everything that changed on this machine
The next session on every other machine gets the change. If someone else changed the same skill in the meantime, push reports a conflict and leaves the server copy alone. Install first to see their version, or push with --force.
Group and share
A collection is a named group of skills, for example release-engineering or support-runbooks. A machine that installs a collection follows it. New skills in the collection arrive on the next session. A collection is shared as one unit.
A skill is Organization-wide by default. Set it to Private and share it with people or teams. Each share is Can read or Can maintain. Install writes only the skills that the signed-in person can read. The instructions are stored encrypted at rest with the key of the organization. Every create, edit, share and delete is in the audit log.
Option 3: skills over MCP
Some agents have no skills folder. They reach the same skills through the built-in Skills MCP server:
| Tool | What it does |
|---|---|
skills_list_skills |
Lists readable skills, grouped by collection. Takes a query or a collection |
skills_get_skill |
Returns one skill as a SKILL.md document |
skills_create_skill |
Saves a new skill, optionally private to teams or in a collection |
skills_update_skill |
Changes description or instructions, or renames |
Add one line to the CLAUDE.md of the project or equivalent: “At the start of a task, call skills_list_skills and follow any skill that applies.”
Write skills that agents pick
- Put the trigger in the description: “Use when asked to release a backend service.”
- Keep the body to numbered steps. Name the files, commands and dashboards.
- Keep one job for each skill. Split a long procedure into two skills.
- Test the skill in Claude Code and in Codex before you share it. The agents read the same file, but they phrase their decisions differently.
The skills page in the documentation has the full reference.
FAQ
Questions, answered.
Do Claude Code and Codex use the same skill format?
- Yes. Both read a folder that contains a SKILL.md file. The frontmatter contains the name and a one-line description of when the skill applies. The body contains the instructions. The format is open and documented at agentskills.io. The difference between the agents is the folder that they read, not the file.
Where does Codex read skills from?
- Codex reads skills from the ~/.agents/skills folder in the home directory. Cursor, Gemini CLI, OpenCode, GitHub Copilot and Amp read the same folder. Claude Code reads ~/.claude/skills. Hermes reads ~/.hermes/skills. Each skill is a folder of its own name with a SKILL.md file inside.
How do I keep skills current on every machine?
- Install a hook that runs at the start of each session. In Gatana, gatana skills install adds a SessionStart hook for Claude Code and Codex. The hook runs gatana skills sync --quiet before the first prompt. Every session starts with the current skills. Nobody runs an update command. Remove the hook with gatana skills remove-hooks.
Can I limit a skill to one team?
- Yes. Set the access of the skill to Private and share it with people or teams. A share is Can read or Can maintain. A skill in a collection inherits the shares of the collection. The install command writes only the skills that the signed-in person can read. Thus a team runbook lands on the machines of that team and nowhere else.
What happens when two people edit the same skill?
- The second push reports a conflict and leaves the server copy without change. Run gatana skills install to get the version of the other person, merge by hand, and push again. Use push with --force to overwrite on purpose. A local edit that has not been pushed is never overwritten by install.
Can an agent without a skills folder use the skills?
- Yes, over MCP. The built-in Skills server exposes four tools: list skills, get one skill as a SKILL.md document, create a skill and update a skill. Add one line to the CLAUDE.md of the project so the agent lists skills at the start of a task and follows the one that applies.