2 releases
Uses new Rust 2024
| 0.0.2 | Dec 21, 2025 |
|---|---|
| 0.0.1 | Dec 18, 2025 |
#47 in #codex
185KB
4.5K
SLoC
A CLI for managing AI coding assistant skills from a single source.
Both Claude Code and Codex support skills—reusable instructions that extend what the assistant can do. This tool keeps them in sync across tools, so you can maintain skills in one place (your dotfiles, a team repo) and push them everywhere.
- One source — No more copying files between
~/.claude/skills/and~/.codex/skills/ - Sync everywhere — Push to both tools with a single command
- Pull edits back — Edit a skill in Claude Code, pull it to your repo, push to Codex
- Team sharing — Point everyone at a shared repo; they all get the same skills
- Version control — Skills live in git, so you get history and can roll back
Install
cargo install skills
Quick Start
skills init # Set up ~/.skills.toml
skills list # See what you have
skills push # Push skills to your tools
How It Works
Point the CLI at your source directories in ~/.skills.toml:
sources = [
"~/dotfiles/skills",
"~/work/team-skills",
]
Each skill is a folder with a SKILL.md file:
code-review/
SKILL.md
---
name: code-review
description: Use when reviewing pull requests or code changes
---
# Code Review
When reviewing code, focus on:
- Correctness and edge cases
- Readability and maintainability
- Performance implications
- Security considerations
Provide specific, actionable feedback with line references.
Commands
Core Commands
| Command | What it does |
|---|---|
skills list |
Show all skills and their sync status (aliases: ls, status) |
skills push [SKILLS...] |
Push skills from source to tools |
skills pull [SKILL] |
Pull edits from tools back to source |
skills sync [SKILLS...] |
Two-way sync based on timestamps |
skills diff [SKILL] |
Show differences between source and installed |
Skill Management
| Command | What it does |
|---|---|
skills new <path> |
Create a new skill skeleton |
skills edit <skill> |
Open a skill in your editor ($EDITOR) |
skills mv <old> <new> |
Rename a skill across source and tools |
skills validate [SKILL] |
Check skill structure and template syntax |
skills render <skill> --tool <tool> |
Preview rendered output for a tool |
Sharing & Import
| Command | What it does |
|---|---|
skills pack [SKILLS...] |
Package skills into ZIP files for sharing |
skills import <source> |
Import from ZIP file, URL, or GitHub |
skills unload <skill> |
Remove a skill from tool directories |
skills promote <skill> |
Move a local skill to global directory (alias: uplift) |
Setup
| Command | What it does |
|---|---|
skills init |
Set up your configuration |
Common Flags
--tool <tool>— Target specific tool:claude,codex, orall(default)--project— Work with project-local skills (.claude/skills/,.codex/skills/)-n, --dry-run— Preview changes without writing-f, --force— Skip confirmation prompts (shows diff for overwrites)-y, --yes— Skip all prompts (use with--forcefor fully silent operation)
Typical Workflow
Create or edit a skill in Claude Code (it has a built-in skill editor), then sync:
skills pull # Pull the new skill to your repo
skills push # Push it to Codex
Or use two-way sync:
skills sync # Sync based on timestamps
Handle conflicts:
skills sync --prefer-source # Source wins on conflict
skills sync --prefer-tool # Newest tool version wins
Templating
Skills can include tool-specific sections using MiniJinja:
{% if tool == "claude" %}
Use the Task tool for background operations.
{% elif tool == "codex" %}
Use /background for async tasks.
{% endif %}
Validate templates before pushing:
skills validate my-skill
skills render my-skill --tool claude
Supported Tools
| Tool | Skills Directory | Documentation |
|---|---|---|
| Claude Code | ~/.claude/skills/ |
docs |
| Codex | ~/.codex/skills/ |
docs |
Community
Want to contribute? Have ideas or feature requests? Come tell me about it on Discord.
License
MIT
Dependencies
~16–34MB
~483K SLoC