TL;DR: A Python CLI that converts AI agent Skill definitions between Claude Code, Cursor, Hermes, and Codex CLI β so you write once and deploy everywhere. pip install skillcast. MIT, open source.
The Problem Nobody Talks About
Every AI coding agent has its own Skill format:
| Tool | Format |
|---|---|
| Claude Code |
SKILL.md with YAML frontmatter |
| Cursor |
.cursorrules (plain text) |
| Hermes |
SKILL.md with metadata.hermes block |
| Codex CLI | JSON config |
If you maintain Skills across multiple tools, you are doing the same work four times. The instructions are identical. The tags are identical. But the format? Different every single time.
This is the Babel problem, but for AI agent Skills.
Enter SkillCast
pip install skillcast
# Write once
skillcast init java-interview
vim java-interview.yaml
# Deliver everywhere
skillcast convert java-interview.yaml --all
Output:
π java-interview.claude.md
π java-interview.hermes.md
π java-interview.cursor.cursorrules
π java-interview.codex.json
One YAML file. Four platforms. Done.
Why Python?
The other tools in this space are TypeScript. They come with package.json, tsconfig.json, jest.config.ts, 15 dependencies, a compile step, and 200MB of node_modules.
SkillCast has:
-
1 dependency β
pyyaml - Zero compile step β Python runs directly
-
Zero-install experience β
uvx skillcast --helpworks withoutpip install -
Library + CLI in one package β
pip install skillcastgives you bothskillcast convertandfrom skillcast import parse_skill, generate - ~400 lines of business logic β the rest is tests
from skillcast import parse_skill, generate
ir = parse_skill("my-skill.yaml")
print(generate(ir, "claude")) # β SKILL.md with frontmatter
print(generate(ir, "cursor")) # β .cursorrules
Supported Platforms
| Platform | Input | Output |
|---|---|---|
| Claude Code |
SKILL.md (YAML frontmatter) |
SKILL.md |
| Hermes |
SKILL.md (hermes metadata) |
SKILL.md |
| Cursor |
.cursorrules (plain text) |
.cursorrules |
| Codex CLI | β (via generic YAML) | JSON config |
| Generic | YAML / JSON | β |
Architecture: Parser β IR β Generator
Claude SKILL.md ββ
Hermes SKILL.md ββ€
Cursor .cursorrules ββ€βββ SkillIR (normalized) βββ Claude / Hermes / Cursor / Codex
Generic YAML ββ
Each platform has an isolated Parser and Generator. A format change in one platform never breaks another. Adding a new platform takes ~50 lines of Python.
What People Are Saying
"Finally. I maintain the same coding rules across Claude Code and Cursor and have been manually copying between them for months." β r/CursorAI user
"One dep, zero config,
uvxworks. This is how Python tools should be built." β Hacker News
Roadmap
v0.1 β
CLI + Library (now)
βββ 4 input formats Γ 4 output formats, 30 tests, PyPI published
v0.2 π¨ Web Converter + More Platforms
βββ skillcast.dev: Paste YAML β download all formats
βββ Windsurf, Aider, Cline support
v0.3 π Community Skill Index
βββ Searchable catalog of community-contributed Skills
v1.0 π MCP Skill Registry
βββ Native integration with the MCP ecosystem
Get Started
# Install
pip install skillcast
# Or zero-install
uvx skillcast --help
# Quick demo
bash <(curl -s https://raw.githubusercontent.com/super-rick/skillcast/main/demo/demo.sh)
- GitHub: github.com/super-rick/skillcast
- PyPI: pypi.org/project/skillcast
- License: MIT
If you've ever copy-pasted the same instructions between Claude and Cursor, this tool is for you. Star the repo, try it out, and tell me what platform to add next.
Top comments (0)