The Problem

AI coding agents each use their own skill-loading format. Claude Code uses SKILL.md files with an <availableskills> XML block in the system prompt; Cursor, Windsurf, and Codex use different mechanisms. Teams that standardize on one agent get locked into that ecosystem, and skills written for one agent don't port to another. OpenSkills solves this by acting as a universal loader: it installs skills once and exposes them to any agent that can read an AGENTS.md file.

What This Does

OpenSkills is a TypeScript CLI (src/cli.ts) that installs, lists, reads, syncs, and removes skills. It generates the same <availableskills> XML block Claude Code uses, but writes it into your project's AGENTS.md instead of relying on Claude Code's internal prompt. Skills are stored in .claude/skills/ by default, or .agent/skills/ with --universal, or ~/.claude/skills with --global.

The command surface is split across src/commands/ — install.ts, list.ts, read.ts, remove.ts, sync.ts, update.ts, and manage.ts. Utility modules handle skill metadata parsing (src/utils/skill-metadata.ts), marketplace resolution (src/utils/marketplace-skills.ts), and YAML parsing (src/utils/yaml.ts). The repo includes 10 test files covering commands, utilities, and an end-to-end integration test, plus GitHub Actions CI (.github/workflows/ci.yml).

How To Use It

Setup: Install globally with npm i -g openskills, or run ad-hoc with npx openskills.

Configuration: No environment variables required. Skills install from GitHub repos, local paths, or private git repos.

Running it:

Install skills from Anthropic's marketplace

npx openskills install anthropics/skills

Install from any GitHub repo

npx openskills install your-org/your-skills

Load a skill into the agent's context

npx openskills read <skill-name>

Sync installed skills to AGENTS.md

npx openskills sync

The sync command regenerates the <availableskills> block in AGENTS.md. Any agent that reads that file can then invoke skills via npx openskills read <name>.

Real-World Use

A team using Cursor for day-to-day work but Claude Code for complex refactors can maintain one skill library. They install skills once, commit them to the repo, and both agents load the same SKILL.md files. The <availableskills> block in AGENTS.md gives both agents a consistent discovery mechanism, and openskills read loads the skill content on demand — preserving context window for both.

Code Health & Issues

Low — Unclear error handling in CLI: src/cli.ts and command files show no explicit error-boundary or exit-code handling. Failed installs or unreadable skill files may produce unhelpful stack traces. Low — No input validation on skill names: src/utils/skill-names.ts exists, but there's no evidence of sanitization against path traversal or invalid characters when resolving skill paths. Low — .github/maintainer/ is noise: 40+ files of internal notes, issue summaries, and PR records are committed to the repo. This is operational metadata, not documentation, and adds clutter. Med — No test coverage for manage.ts or list.ts: Tests cover install, sync, update, and utilities, but not the manage or list commands. These are likely thin wrappers, but untested paths are a risk. Good — CI, license, and lockfile are present: Tests run in GitHub Actions, Apache 2.0 license is included, and package-lock.json is committed. No obvious secrets or config files are in the repo.

The Bottom Line

OpenSkills is a focused, well-scoped tool that solves a real portability problem for teams using multiple AI coding agents. The codebase is small, tested, and CI-enabled, though the maintainer notes add noise. It's best suited to teams already using SKILL.md-style skills or those standardizing on Claude Code's format but needing multi-agent support. Single-agent teams on Claude Code don't need it.