DEV Community

Rick
Rick

Posted on

SkillCast: Write AI Agent Skills Once, Deliver Everywhere

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
Enter fullscreen mode Exit fullscreen mode

Output:

πŸ“„ java-interview.claude.md
πŸ“„ java-interview.hermes.md
πŸ“„ java-interview.cursor.cursorrules
πŸ“„ java-interview.codex.json
Enter fullscreen mode Exit fullscreen mode

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 --help works without pip install
  • Library + CLI in one package β€” pip install skillcast gives you both skillcast convert and from 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
Enter fullscreen mode Exit fullscreen mode

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     β”€β”˜
Enter fullscreen mode Exit fullscreen mode

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, uvx works. 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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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)