OASR
Open Agent Skill Registry — Register, sync, and reuse AI agent skills across IDEs with a single source of truth.
For a non-exhaustive list of highlighted features, see FEATURES.md.
The Problem
You've built useful skills for your AI coding assistant. They work great in Cursor. Now you want them in Windsurf. And Claude. And Copilot.
Each tool expects skills in different locations with different formats:
- Cursor:
.cursor/commands/ - Windsurf:
.windsurf/workflows/ - Claude:
.claude/commands/ - Copilot:
.github/prompts/
So you copy your skills everywhere. Then you improve one. Now the copies are stale. You forget which version is current. Some break silently. This is skill drift.
The Solution
ASR keeps your skills in a registry, syncs local and remote sources, and generates thin adapters for each IDE. It also lets you execute skills safely with policy profiles.
Key capabilities:
- Register skills once (local folders or GitHub/GitLab URLs)
- Sync and track drift across sources
- Generate IDE adapters and run skills via
oasr exec
┌─────────────────────────────────────────────────────────┐
│ Your Skills (canonical source) │
│ ~/skills/git-commit/SKILL.md │
│ ~/skills/code-review/SKILL.md │
└───────────────────────┬─────────────────────────────────┘
│
▼
oasr adapter
│
┌───────────────┼──────────────┐...───────────────┐
▼ ▼ ▼ ▼
.cursor/ .windsurf/ .claude/ <vendor>/
commands/ workflows/ commands/ skills/
No copying. No drift. One source of truth.
Quick Example
List all registered skills with metadata
# Register local skills
oasr registry add ~/skills/git-commit
oasr registry add ~/skills/code-review
# List registered skills
oasr registry list
# Register remote skills from GitHub/GitLab
oasr registry add https://github.com/user/skills-repo/tree/main/my-skill
oasr registry add https://gitlab.com/org/project/tree/main/cool-skill
# Generate adapters for a project
oasr adapter --output-dir ~/projects/my-app
# Result:
# ~/projects/my-app/.cursor/commands/git-commit.md
# ~/projects/my-app/.windsurf/workflows/git-commit.md
# ~/projects/my-app/.claude/commands/git-commit.md
Remote Skills
Register skills directly from GitHub or GitLab
ASR supports registering skills directly from GitHub and GitLab repositories:
# Add a skill from GitHub
oasr registry add https://github.com/user/repo/tree/main/skills/my-skill
# Add a skill from GitLab
oasr registry add https://gitlab.com/org/project/tree/dev/cool-skill
# Sync remote skills (check for updates)
oasr registry sync
# Use remote skills
oasr clone my-skill -d ./output
Authentication (optional, for private repos and higher rate limits):
export GITHUB_TOKEN=ghp_your_token_here
export GITLAB_TOKEN=glpat_your_token_here
Remote skills are fetched on-demand during adapter and clone operations. The registry stores the URL, and oasr registry sync checks if the remote source has changed.
Shell Completions
OASR supports intelligent tab completion for Bash, Zsh, Fish, and PowerShell:
# Install for your current shell
oasr completion install
# Install for a specific shell (shortcut)
oasr completion zsh --install
# Now try it:
oasr <TAB> # Complete commands
oasr info <TAB> # Complete skill names
oasr exec --<TAB> # Complete flags
Completions are dynamic — skill names, agents, and profiles are fetched live from your registry.
See oasr completion --help for details.
JSON Output
Use --json for legacy JSON output. Use --json v2 for the structured envelope
with version, success, command, and error fields.
Accessibility
- Disable ANSI colors:
NO_COLOR=1 oasr ...orOASR_NO_COLOR=1 oasr ... - Use ASCII symbols:
OASR_NO_UNICODE=1 oasr ...
Documentation
- Quickstart — Installation and first steps
- Commands — Full command reference
- Validation — Validation rules and error codes
Supported oasr adapter IDEs
| IDE | Adapter | Output |
|---|---|---|
| Cursor | cursor |
.cursor/commands/*.md |
| Windsurf | windsurf |
.windsurf/workflows/*.md |
| Codex | codex |
.codex/skills/*.md |
| GitHub Copilot | copilot |
.github/prompts/*.prompt.md |
| Claude Code | claude |
.claude/commands/*.md |
License
See LICENSE.
Screenshots
Command Examples
| Command | Screenshot |
|---|---|
| oasr registry list | |
| oasr registry add (local) | |
| oasr registry add (remote) | |
| oasr registry sync | |
| oasr registry prune | |
| oasr registry (validate) | |
| oasr find | |
| oasr adapter | |
| oasr clone | |
| oasr diff | |
| oasr sync | |
| oasr exec | |
| oasr profile | |
| oasr completion | |
| oasr config | |
| oasr validate |
See docs/.images/ for all screenshots.
Metadata
Release files for oasr 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| oasr-1.1.1.tar.gz | 1.7 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oasr-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / oasr-1.1.1.tar.gz
| Download URL | oasr-1.1.1.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d09f4e8df8030863eba1ded804b4f097ad2adbd1881b4809cc5c23b8479002dc
|
|
BLAKE2b-256 checksum How to use checksums |
c8d330713165221ca6c1658b68007d1babff1236b5d9e98afffc4cfc926e0968
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 6, 2026.
Transparency logRelease files / oasr-1.1.1-py3-none-any.whl
| Download URL | oasr-1.1.1-py3-none-any.whl |
|---|---|
| Size | 114.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5fa34017c5675eeb0c331264b1fc05636e4f7e9ea194c189d1b0c9fe2c79744d
|
|
BLAKE2b-256 checksum How to use checksums |
34ed1cdca6cbd8cc1d24a2eef302da1cebaf2f50bf5303c7fc423cea0b329a51
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 6, 2026.
Transparency logSecurity for oasr 1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for oasr-1.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 6, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.