oasr 0.5.1__tar.gz → 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. {oasr-0.5.1 → oasr-0.6.0}/CHANGELOG.md +69 -0
  2. {oasr-0.5.1 → oasr-0.6.0}/PKG-INFO +51 -21
  3. {oasr-0.5.1 → oasr-0.6.0}/README.md +49 -20
  4. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/.INDEX.md +2 -0
  5. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/CLONE.md +4 -0
  6. oasr-0.6.0/docs/commands/COMPLETION.md +324 -0
  7. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/CONFIG.md +117 -33
  8. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/EXEC.md +36 -1
  9. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/HELP.md +1 -0
  10. oasr-0.6.0/docs/commands/PROFILE.md +25 -0
  11. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/UPDATE.md +3 -2
  12. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/README.md +17 -3
  13. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/environment-variables.md +1 -1
  14. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/profiles.md +34 -2
  15. {oasr-0.5.1 → oasr-0.6.0}/pyproject.toml +2 -1
  16. {oasr-0.5.1 → oasr-0.6.0}/src/agents/base.py +17 -3
  17. {oasr-0.5.1 → oasr-0.6.0}/src/agents/claude.py +12 -2
  18. {oasr-0.5.1 → oasr-0.6.0}/src/agents/codex.py +12 -2
  19. {oasr-0.5.1 → oasr-0.6.0}/src/agents/copilot.py +12 -2
  20. {oasr-0.5.1 → oasr-0.6.0}/src/agents/opencode.py +12 -2
  21. {oasr-0.5.1 → oasr-0.6.0}/src/cli.py +8 -2
  22. oasr-0.6.0/src/commands/completion.py +345 -0
  23. oasr-0.6.0/src/commands/config.py +462 -0
  24. {oasr-0.5.1 → oasr-0.6.0}/src/commands/exec.py +21 -1
  25. oasr-0.6.0/src/commands/profile.py +84 -0
  26. {oasr-0.5.1 → oasr-0.6.0}/src/commands/update.py +89 -7
  27. oasr-0.6.0/src/completions/__init__.py +1 -0
  28. oasr-0.6.0/src/completions/bash.sh +210 -0
  29. oasr-0.6.0/src/completions/fish.fish +134 -0
  30. oasr-0.6.0/src/completions/powershell.ps1 +184 -0
  31. oasr-0.6.0/src/completions/zsh.sh +285 -0
  32. {oasr-0.5.1 → oasr-0.6.0}/src/config/__init__.py +11 -0
  33. oasr-0.6.0/src/config/defaults.py +23 -0
  34. {oasr-0.5.1 → oasr-0.6.0}/src/config/schema.py +3 -29
  35. oasr-0.6.0/src/policy/defaults.py +11 -0
  36. {oasr-0.5.1 → oasr-0.6.0}/src/policy/profile.py +5 -7
  37. oasr-0.6.0/src/profiles/__init__.py +23 -0
  38. oasr-0.6.0/src/profiles/builtins.py +63 -0
  39. oasr-0.6.0/src/profiles/loader.py +74 -0
  40. oasr-0.6.0/src/profiles/paths.py +22 -0
  41. oasr-0.6.0/src/profiles/registry.py +19 -0
  42. oasr-0.6.0/src/profiles/summary.py +23 -0
  43. oasr-0.6.0/src/profiles/validation.py +34 -0
  44. oasr-0.6.0/tests/test_completion.py +253 -0
  45. {oasr-0.5.1 → oasr-0.6.0}/tests/test_config.py +31 -0
  46. {oasr-0.5.1 → oasr-0.6.0}/tests/test_config_command.py +35 -3
  47. oasr-0.6.0/tests/test_e2e_commands.py +144 -0
  48. {oasr-0.5.1 → oasr-0.6.0}/tests/test_exec.py +178 -3
  49. {oasr-0.5.1 → oasr-0.6.0}/tests/test_policy_profile.py +1 -1
  50. oasr-0.6.0/tests/test_profile_command.py +78 -0
  51. {oasr-0.5.1 → oasr-0.6.0}/uv.lock +1 -1
  52. oasr-0.5.1/src/commands/config.py +0 -215
  53. oasr-0.5.1/src/config/defaults.py +0 -40
  54. oasr-0.5.1/src/policy/defaults.py +0 -27
  55. {oasr-0.5.1 → oasr-0.6.0}/.gitignore +0 -0
  56. {oasr-0.5.1 → oasr-0.6.0}/CONTRIBUTING.md +0 -0
  57. {oasr-0.5.1 → oasr-0.6.0}/LICENSE +0 -0
  58. {oasr-0.5.1 → oasr-0.6.0}/NOTICE +0 -0
  59. {oasr-0.5.1 → oasr-0.6.0}/docs/.INDEX.md +0 -0
  60. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/adapter.png +0 -0
  61. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/add-glob.png +0 -0
  62. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/add-remote.png +0 -0
  63. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/add.png +0 -0
  64. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/find-add.png +0 -0
  65. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/find.png +0 -0
  66. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/help.png +0 -0
  67. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/info.png +0 -0
  68. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/list.png +0 -0
  69. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/rm-glob.png +0 -0
  70. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/rm.png +0 -0
  71. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/status.png +0 -0
  72. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/sync-update.png +0 -0
  73. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/sync.png +0 -0
  74. {oasr-0.5.1 → oasr-0.6.0}/docs/.images/use.png +0 -0
  75. {oasr-0.5.1 → oasr-0.6.0}/docs/QUICKSTART.md +0 -0
  76. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/ADAPTER.md +0 -0
  77. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/ADD.md +0 -0
  78. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/CLEAN.md +0 -0
  79. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/DIFF.md +0 -0
  80. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/FIND.md +0 -0
  81. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/INFO.md +0 -0
  82. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/LIST.md +0 -0
  83. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/REGISTRY.md +0 -0
  84. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/RM.md +0 -0
  85. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/ROOT.md +0 -0
  86. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/STATUS.md +0 -0
  87. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/SYNC.md +0 -0
  88. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/USE.md +0 -0
  89. {oasr-0.5.1 → oasr-0.6.0}/docs/commands/VALIDATE.md +0 -0
  90. {oasr-0.5.1 → oasr-0.6.0}/docs/config.example.toml +0 -0
  91. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/.INDEX +0 -0
  92. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/adapter.md +0 -0
  93. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/agent.md +0 -0
  94. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/examples/ci-cd.toml +0 -0
  95. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/examples/development.toml +0 -0
  96. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/examples/minimal.toml +0 -0
  97. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/examples/production.toml +0 -0
  98. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/precedence.md +0 -0
  99. {oasr-0.5.1 → oasr-0.6.0}/docs/configuration/validation.md +0 -0
  100. {oasr-0.5.1 → oasr-0.6.0}/docs/validation/.INDEX.md +0 -0
  101. {oasr-0.5.1 → oasr-0.6.0}/docs/validation/ERRORS.md +0 -0
  102. {oasr-0.5.1 → oasr-0.6.0}/docs/validation/INFO.md +0 -0
  103. {oasr-0.5.1 → oasr-0.6.0}/docs/validation/RULES.md +0 -0
  104. {oasr-0.5.1 → oasr-0.6.0}/docs/validation/WARNINGS.md +0 -0
  105. {oasr-0.5.1 → oasr-0.6.0}/install.ps1 +0 -0
  106. {oasr-0.5.1 → oasr-0.6.0}/install.sh +0 -0
  107. {oasr-0.5.1 → oasr-0.6.0}/llms.txt +0 -0
  108. {oasr-0.5.1 → oasr-0.6.0}/scripts/README.md +0 -0
  109. {oasr-0.5.1 → oasr-0.6.0}/scripts/fix.sh +0 -0
  110. {oasr-0.5.1 → oasr-0.6.0}/scripts/lint.sh +0 -0
  111. {oasr-0.5.1 → oasr-0.6.0}/scripts/test.sh +0 -0
  112. {oasr-0.5.1 → oasr-0.6.0}/src/__init__.py +0 -0
  113. {oasr-0.5.1 → oasr-0.6.0}/src/__main__.py +0 -0
  114. {oasr-0.5.1 → oasr-0.6.0}/src/adapter.py +0 -0
  115. {oasr-0.5.1 → oasr-0.6.0}/src/adapters/__init__.py +0 -0
  116. {oasr-0.5.1 → oasr-0.6.0}/src/adapters/base.py +0 -0
  117. {oasr-0.5.1 → oasr-0.6.0}/src/adapters/claude.py +0 -0
  118. {oasr-0.5.1 → oasr-0.6.0}/src/adapters/codex.py +0 -0
  119. {oasr-0.5.1 → oasr-0.6.0}/src/adapters/copilot.py +0 -0
  120. {oasr-0.5.1 → oasr-0.6.0}/src/adapters/cursor.py +0 -0
  121. {oasr-0.5.1 → oasr-0.6.0}/src/adapters/windsurf.py +0 -0
  122. {oasr-0.5.1 → oasr-0.6.0}/src/agents/__init__.py +0 -0
  123. {oasr-0.5.1 → oasr-0.6.0}/src/agents/registry.py +0 -0
  124. {oasr-0.5.1 → oasr-0.6.0}/src/commands/__init__.py +0 -0
  125. {oasr-0.5.1 → oasr-0.6.0}/src/commands/adapter.py +0 -0
  126. {oasr-0.5.1 → oasr-0.6.0}/src/commands/add.py +0 -0
  127. {oasr-0.5.1 → oasr-0.6.0}/src/commands/clean.py +0 -0
  128. {oasr-0.5.1 → oasr-0.6.0}/src/commands/clone.py +0 -0
  129. {oasr-0.5.1 → oasr-0.6.0}/src/commands/diff.py +0 -0
  130. {oasr-0.5.1 → oasr-0.6.0}/src/commands/find.py +0 -0
  131. {oasr-0.5.1 → oasr-0.6.0}/src/commands/help.py +0 -0
  132. {oasr-0.5.1 → oasr-0.6.0}/src/commands/info.py +0 -0
  133. {oasr-0.5.1 → oasr-0.6.0}/src/commands/list.py +0 -0
  134. {oasr-0.5.1 → oasr-0.6.0}/src/commands/registry.py +0 -0
  135. {oasr-0.5.1 → oasr-0.6.0}/src/commands/rm.py +0 -0
  136. {oasr-0.5.1 → oasr-0.6.0}/src/commands/status.py +0 -0
  137. {oasr-0.5.1 → oasr-0.6.0}/src/commands/sync.py +0 -0
  138. {oasr-0.5.1 → oasr-0.6.0}/src/commands/use.py +0 -0
  139. {oasr-0.5.1 → oasr-0.6.0}/src/commands/validate.py +0 -0
  140. {oasr-0.5.1 → oasr-0.6.0}/src/config/env.py +0 -0
  141. {oasr-0.5.1 → oasr-0.6.0}/src/discovery.py +0 -0
  142. {oasr-0.5.1 → oasr-0.6.0}/src/manifest.py +0 -0
  143. {oasr-0.5.1 → oasr-0.6.0}/src/policy/__init__.py +0 -0
  144. {oasr-0.5.1 → oasr-0.6.0}/src/policy/enforcement.py +0 -0
  145. {oasr-0.5.1 → oasr-0.6.0}/src/registry.py +0 -0
  146. {oasr-0.5.1 → oasr-0.6.0}/src/remote.py +0 -0
  147. {oasr-0.5.1 → oasr-0.6.0}/src/skillcopy/__init__.py +0 -0
  148. {oasr-0.5.1 → oasr-0.6.0}/src/skillcopy/local.py +0 -0
  149. {oasr-0.5.1 → oasr-0.6.0}/src/skillcopy/remote.py +0 -0
  150. {oasr-0.5.1 → oasr-0.6.0}/src/tracking.py +0 -0
  151. {oasr-0.5.1 → oasr-0.6.0}/src/validate.py +0 -0
  152. {oasr-0.5.1 → oasr-0.6.0}/tests/conftest.py +0 -0
  153. {oasr-0.5.1 → oasr-0.6.0}/tests/test_adapters.py +0 -0
  154. {oasr-0.5.1 → oasr-0.6.0}/tests/test_agents.py +0 -0
  155. {oasr-0.5.1 → oasr-0.6.0}/tests/test_clone.py +0 -0
  156. {oasr-0.5.1 → oasr-0.6.0}/tests/test_config_env.py +0 -0
  157. {oasr-0.5.1 → oasr-0.6.0}/tests/test_config_integration.py +0 -0
  158. {oasr-0.5.1 → oasr-0.6.0}/tests/test_copy.py +0 -0
  159. {oasr-0.5.1 → oasr-0.6.0}/tests/test_help.py +0 -0
  160. {oasr-0.5.1 → oasr-0.6.0}/tests/test_list.py +0 -0
  161. {oasr-0.5.1 → oasr-0.6.0}/tests/test_multi_skill.py +0 -0
  162. {oasr-0.5.1 → oasr-0.6.0}/tests/test_policy_enforcement.py +0 -0
  163. {oasr-0.5.1 → oasr-0.6.0}/tests/test_remote.py +0 -0
  164. {oasr-0.5.1 → oasr-0.6.0}/tests/test_tracking.py +0 -0
  165. {oasr-0.5.1 → oasr-0.6.0}/tests/test_use_glob.py +0 -0
@@ -4,6 +4,75 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.6.0] - 2026-02-03
8
+
9
+ ### Added
10
+ - **🧭 Profile selection command** — New `oasr profile` command with interactive selector or explicit profile selection.
11
+ - **📄 Profile file support** — Auto-load `~/.oasr/profile/*.toml` profiles with inline config overrides.
12
+ - **🔧 Config subcommands** — `oasr config agent|validation|adapter|oasr|profiles` for focused views.
13
+ - **✅ Config validation and reference** — `oasr config validate` and `oasr config man` helpers.
14
+ - **Default profiles** — New built-ins: `strict`, `dev`, `unsafe`.
15
+
16
+ ### Changed
17
+ - **Profiles subsystem** — New `profiles` subpackage with loaders, validation, and summary helpers.
18
+ - **Config listing** — Lists profiles with compact capability summaries and completions setting.
19
+
20
+ ### Documentation
21
+ - **Config + profile docs** — Updated configuration guides and new `docs/commands/PROFILE.md`.
22
+
23
+ ## [0.5.2] - 2026-02-02
24
+
25
+ ### Added
26
+ - **⌨️ Shell Completion Support** — Intelligent tab completion for all major shells
27
+ - Cross-platform support: Bash, Zsh, Fish, PowerShell
28
+ - `oasr completion install` — Auto-detect shell and install completions
29
+ - `oasr completion <shell>` — Output completion script for specific shell
30
+ - Dynamic completions: skill names, agents, profiles fetched live from registry
31
+ - Command, subcommand, and flag completion for all OASR commands
32
+ - Smart shell detection (platform + $SHELL environment variable)
33
+ - Installation paths: `~/.bash_completion.d/`, `~/.zsh/completion/`, `~/.config/fish/completions/`, `~/.config/powershell/`
34
+ - Backup mechanism: existing completions backed up before overwrite
35
+ - `--force` and `--dry-run` flags for installation control
36
+ - `oasr completion uninstall` — Remove installed completions
37
+ - Configuration support: `oasr.completions` config option
38
+ - **🧪 Comprehensive E2E Tests** — 16 new end-to-end tests covering all commands
39
+ - Registry subcommands (list, sync, prune)
40
+ - Diff, sync, info, validate, clean commands
41
+ - Adapter, find, help commands
42
+ - Total test count: 282 tests (all passing)
43
+ - Ensures no regressions in existing functionality
44
+ - **⚠️ Exec Unsafe Pass-through** — Optional unsafe mode forwarding for agent CLIs
45
+ - `oasr exec --unsafe` forwards `--skip-git-repo-check` to Codex
46
+ - `oasr exec --unsafe` forwards `--dangerously-skip-permissions` to Claude
47
+ - Unsupported agents (Copilot/OpenCode) emit a warning with guidance
48
+
49
+ ### Documentation
50
+ - **[docs/commands/COMPLETION.md](docs/commands/COMPLETION.md)**: Complete completion command reference
51
+ - Installation instructions for all shells
52
+ - Shell-specific configuration notes
53
+ - Troubleshooting guide
54
+ - Examples and usage patterns
55
+ - **[README.md](README.md)**: Added Shell Completions section with quickstart
56
+ - **[docs/commands/.INDEX.md](docs/commands/.INDEX.md)**: Added completion to command index
57
+ - **[docs/commands/EXEC.md](docs/commands/EXEC.md)**: Documented `--unsafe` and trusted directory guidance
58
+
59
+ ### Technical
60
+ - **New module**: `src/commands/completion.py` (259 lines) with shell detection and installation
61
+ - **Completion scripts**: 4 shell-specific scripts (~691 lines total)
62
+ - `src/completions/bash.sh` (197 lines)
63
+ - `src/completions/zsh.sh` (259 lines) with descriptions
64
+ - `src/completions/fish.fish` (120 lines) with native Fish syntax
65
+ - `src/completions/powershell.ps1` (115 lines) with ArgumentCompleter
66
+ - **45 new tests**: 29 completion tests + 16 E2E tests
67
+ - **Dynamic completion**: Scripts invoke `oasr` commands for live data (registry list, config keys)
68
+ - **Cross-platform**: Handles Windows, macOS, Linux path conventions
69
+
70
+ ### Quality of Life
71
+ - Tab completion reduces typing and prevents typos
72
+ - Discovery: see available skills, agents, and profiles at your fingertips
73
+ - Professional UX: OASR now feels like a polished CLI tool
74
+ - Backward compatible: no changes to existing commands
75
+
7
76
  ## [0.5.1] - 2026-02-02
8
77
 
9
78
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oasr
3
- Version: 0.5.1
3
+ Version: 0.6.0
4
4
  Summary: CLI for managing agent skills across IDE integrations
5
5
  Project-URL: Homepage, https://github.com/jgodau/asr
6
6
  Project-URL: Repository, https://github.com/jgodau/asr
@@ -210,6 +210,7 @@ Classifier: Topic :: Software Development :: Build Tools
210
210
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
211
211
  Requires-Python: >=3.10
212
212
  Requires-Dist: pyyaml>=6.0
213
+ Requires-Dist: questionary>=2.0.1
213
214
  Requires-Dist: tomli-w>=1.0.0
214
215
  Requires-Dist: tomli>=2.0.0; python_version < '3.11'
215
216
  Provides-Extra: dev
@@ -219,7 +220,7 @@ Description-Content-Type: text/markdown
219
220
 
220
221
  # OASR
221
222
 
222
- **Open Agent Skill Registry** — Manage reusable AI agent skills across IDEs without drift.
223
+ **Open Agent Skill Registry** — Register, sync, and reuse AI agent skills across IDEs with a single source of truth.
223
224
 
224
225
  ---
225
226
 
@@ -229,16 +230,22 @@ You've built useful skills for your AI coding assistant. They work great in Curs
229
230
 
230
231
  Each tool expects skills in different locations with different formats:
231
232
 
232
- - Cursor: `.cursor/skills/`
233
- - Windsurf: `.windsurf/skills/`
233
+ - Cursor: `.cursor/commands/`
234
+ - Windsurf: `.windsurf/workflows/`
234
235
  - Claude: `.claude/commands/`
235
- - Copilot: `.github/.md`
236
+ - Copilot: `.github/prompts/`
236
237
 
237
238
  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**.
238
239
 
239
240
  ## The Solution
240
241
 
241
- ASR keeps your skills in one place and generates thin adapters for each IDE.
242
+ ASR keeps your skills in a registry, syncs local and remote sources, and generates thin adapters for each IDE.
243
+ It also lets you execute skills safely with policy profiles.
244
+
245
+ Key capabilities:
246
+ - Register skills once (local folders or GitHub/GitLab URLs)
247
+ - Sync and track drift across sources
248
+ - Generate IDE adapters and run skills via `oasr exec`
242
249
 
243
250
  ```text
244
251
  ┌─────────────────────────────────────────────────────────┐
@@ -267,12 +274,15 @@ No copying. No drift. One source of truth.
267
274
 
268
275
  ```bash
269
276
  # Register local skills
270
- oasr add ~/skills/git-commit
271
- oasr add ~/skills/code-review
277
+ oasr registry add ~/skills/git-commit
278
+ oasr registry add ~/skills/code-review
279
+
280
+ # List registered skills
281
+ oasr registry list
272
282
 
273
283
  # Register remote skills from GitHub/GitLab
274
- oasr add https://github.com/user/skills-repo/tree/main/my-skill
275
- oasr add https://gitlab.com/org/project/tree/main/cool-skill
284
+ oasr registry add https://github.com/user/skills-repo/tree/main/my-skill
285
+ oasr registry add https://gitlab.com/org/project/tree/main/cool-skill
276
286
 
277
287
  # Generate adapters for a project
278
288
  oasr adapter --output-dir ~/projects/my-app
@@ -294,16 +304,16 @@ ASR supports registering skills directly from GitHub and GitLab repositories:
294
304
 
295
305
  ```bash
296
306
  # Add a skill from GitHub
297
- oasr add https://github.com/user/repo/tree/main/skills/my-skill
307
+ oasr registry add https://github.com/user/repo/tree/main/skills/my-skill
298
308
 
299
309
  # Add a skill from GitLab
300
- oasr add https://gitlab.com/org/project/tree/dev/cool-skill
310
+ oasr registry add https://gitlab.com/org/project/tree/dev/cool-skill
301
311
 
302
312
  # Sync remote skills (check for updates)
303
- oasr sync
313
+ oasr registry sync
304
314
 
305
315
  # Use remote skills
306
- oasr use my-skill -d ./output
316
+ oasr clone my-skill -d ./output
307
317
  ```
308
318
 
309
319
  **Authentication** (optional, for private repos and higher rate limits):
@@ -313,7 +323,27 @@ export GITHUB_TOKEN=ghp_your_token_here
313
323
  export GITLAB_TOKEN=glpat_your_token_here
314
324
  ```
315
325
 
316
- Remote skills are fetched on-demand during `adapter` and `use` operations. The registry stores the URL, and `sync` checks if the remote source has changed.
326
+ 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.
327
+
328
+ ---
329
+
330
+ ## Shell Completions
331
+
332
+ OASR supports intelligent tab completion for Bash, Zsh, Fish, and PowerShell:
333
+
334
+ ```bash
335
+ # Install for your current shell
336
+ oasr completion install
337
+
338
+ # Now try it:
339
+ oasr <TAB> # Complete commands
340
+ oasr info <TAB> # Complete skill names
341
+ oasr exec --<TAB> # Complete flags
342
+ ```
343
+
344
+ Completions are **dynamic** — skill names, agents, and profiles are fetched live from your registry.
345
+
346
+ See [`oasr completion --help`](docs/commands/COMPLETION.md) for details.
317
347
 
318
348
  ---
319
349
 
@@ -325,7 +355,7 @@ Remote skills are fetched on-demand during `adapter` and `use` operations. The r
325
355
 
326
356
  ---
327
357
 
328
- ## Supported `asr adapter` IDEs
358
+ ## Supported `oasr adapter` IDEs
329
359
 
330
360
  | IDE | Adapter | Output |
331
361
  |----------------|------------|-------------------------------|
@@ -347,11 +377,11 @@ See [LICENSE](LICENSE).
347
377
 
348
378
  | Command | Screenshot |
349
379
  |---------|-----------|
350
- | **oasr list** | ![list](docs/.images/list.png) |
351
- | **oasr add** (local) | ![add](docs/.images/add.png) |
352
- | **oasr add** (remote) | ![add-remote](docs/.images/add-remote.png) |
353
- | **oasr sync** | ![sync](docs/.images/sync.png) |
354
- | **oasr status** | ![status](docs/.images/status.png) |
380
+ | **oasr registry list** | ![list](docs/.images/list.png) |
381
+ | **oasr registry add** (local) | ![add](docs/.images/add.png) |
382
+ | **oasr registry add** (remote) | ![add-remote](docs/.images/add-remote.png) |
383
+ | **oasr registry sync** | ![sync](docs/.images/sync.png) |
384
+ | **oasr registry -v** | ![status](docs/.images/status.png) |
355
385
  | **oasr find** | ![find](docs/.images/find.png) |
356
386
  | **oasr adapter** | ![adapter](docs/.images/adapter.png) |
357
387
 
@@ -1,6 +1,6 @@
1
1
  # OASR
2
2
 
3
- **Open Agent Skill Registry** — Manage reusable AI agent skills across IDEs without drift.
3
+ **Open Agent Skill Registry** — Register, sync, and reuse AI agent skills across IDEs with a single source of truth.
4
4
 
5
5
  ---
6
6
 
@@ -10,16 +10,22 @@ You've built useful skills for your AI coding assistant. They work great in Curs
10
10
 
11
11
  Each tool expects skills in different locations with different formats:
12
12
 
13
- - Cursor: `.cursor/skills/`
14
- - Windsurf: `.windsurf/skills/`
13
+ - Cursor: `.cursor/commands/`
14
+ - Windsurf: `.windsurf/workflows/`
15
15
  - Claude: `.claude/commands/`
16
- - Copilot: `.github/.md`
16
+ - Copilot: `.github/prompts/`
17
17
 
18
18
  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**.
19
19
 
20
20
  ## The Solution
21
21
 
22
- ASR keeps your skills in one place and generates thin adapters for each IDE.
22
+ ASR keeps your skills in a registry, syncs local and remote sources, and generates thin adapters for each IDE.
23
+ It also lets you execute skills safely with policy profiles.
24
+
25
+ Key capabilities:
26
+ - Register skills once (local folders or GitHub/GitLab URLs)
27
+ - Sync and track drift across sources
28
+ - Generate IDE adapters and run skills via `oasr exec`
23
29
 
24
30
  ```text
25
31
  ┌─────────────────────────────────────────────────────────┐
@@ -48,12 +54,15 @@ No copying. No drift. One source of truth.
48
54
 
49
55
  ```bash
50
56
  # Register local skills
51
- oasr add ~/skills/git-commit
52
- oasr add ~/skills/code-review
57
+ oasr registry add ~/skills/git-commit
58
+ oasr registry add ~/skills/code-review
59
+
60
+ # List registered skills
61
+ oasr registry list
53
62
 
54
63
  # Register remote skills from GitHub/GitLab
55
- oasr add https://github.com/user/skills-repo/tree/main/my-skill
56
- oasr add https://gitlab.com/org/project/tree/main/cool-skill
64
+ oasr registry add https://github.com/user/skills-repo/tree/main/my-skill
65
+ oasr registry add https://gitlab.com/org/project/tree/main/cool-skill
57
66
 
58
67
  # Generate adapters for a project
59
68
  oasr adapter --output-dir ~/projects/my-app
@@ -75,16 +84,16 @@ ASR supports registering skills directly from GitHub and GitLab repositories:
75
84
 
76
85
  ```bash
77
86
  # Add a skill from GitHub
78
- oasr add https://github.com/user/repo/tree/main/skills/my-skill
87
+ oasr registry add https://github.com/user/repo/tree/main/skills/my-skill
79
88
 
80
89
  # Add a skill from GitLab
81
- oasr add https://gitlab.com/org/project/tree/dev/cool-skill
90
+ oasr registry add https://gitlab.com/org/project/tree/dev/cool-skill
82
91
 
83
92
  # Sync remote skills (check for updates)
84
- oasr sync
93
+ oasr registry sync
85
94
 
86
95
  # Use remote skills
87
- oasr use my-skill -d ./output
96
+ oasr clone my-skill -d ./output
88
97
  ```
89
98
 
90
99
  **Authentication** (optional, for private repos and higher rate limits):
@@ -94,7 +103,27 @@ export GITHUB_TOKEN=ghp_your_token_here
94
103
  export GITLAB_TOKEN=glpat_your_token_here
95
104
  ```
96
105
 
97
- Remote skills are fetched on-demand during `adapter` and `use` operations. The registry stores the URL, and `sync` checks if the remote source has changed.
106
+ 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.
107
+
108
+ ---
109
+
110
+ ## Shell Completions
111
+
112
+ OASR supports intelligent tab completion for Bash, Zsh, Fish, and PowerShell:
113
+
114
+ ```bash
115
+ # Install for your current shell
116
+ oasr completion install
117
+
118
+ # Now try it:
119
+ oasr <TAB> # Complete commands
120
+ oasr info <TAB> # Complete skill names
121
+ oasr exec --<TAB> # Complete flags
122
+ ```
123
+
124
+ Completions are **dynamic** — skill names, agents, and profiles are fetched live from your registry.
125
+
126
+ See [`oasr completion --help`](docs/commands/COMPLETION.md) for details.
98
127
 
99
128
  ---
100
129
 
@@ -106,7 +135,7 @@ Remote skills are fetched on-demand during `adapter` and `use` operations. The r
106
135
 
107
136
  ---
108
137
 
109
- ## Supported `asr adapter` IDEs
138
+ ## Supported `oasr adapter` IDEs
110
139
 
111
140
  | IDE | Adapter | Output |
112
141
  |----------------|------------|-------------------------------|
@@ -128,11 +157,11 @@ See [LICENSE](LICENSE).
128
157
 
129
158
  | Command | Screenshot |
130
159
  |---------|-----------|
131
- | **oasr list** | ![list](docs/.images/list.png) |
132
- | **oasr add** (local) | ![add](docs/.images/add.png) |
133
- | **oasr add** (remote) | ![add-remote](docs/.images/add-remote.png) |
134
- | **oasr sync** | ![sync](docs/.images/sync.png) |
135
- | **oasr status** | ![status](docs/.images/status.png) |
160
+ | **oasr registry list** | ![list](docs/.images/list.png) |
161
+ | **oasr registry add** (local) | ![add](docs/.images/add.png) |
162
+ | **oasr registry add** (remote) | ![add-remote](docs/.images/add-remote.png) |
163
+ | **oasr registry sync** | ![sync](docs/.images/sync.png) |
164
+ | **oasr registry -v** | ![status](docs/.images/status.png) |
136
165
  | **oasr find** | ![find](docs/.images/find.png) |
137
166
  | **oasr adapter** | ![adapter](docs/.images/adapter.png) |
138
167
 
@@ -7,8 +7,10 @@
7
7
  - [oasr diff](DIFF.md) - Show status of tracked skills
8
8
  - [oasr sync](SYNC.md) - Refresh outdated tracked skills
9
9
  - [oasr config](CONFIG.md) - Manage configuration (NEW in v0.4.0)
10
+ - [oasr profile](PROFILE.md) - Select execution profile (NEW in v0.6.0)
10
11
  - [oasr clone](CLONE.md) - Clone skill(s) to target directory (NEW in v0.4.0)
11
12
  - [oasr exec](EXEC.md) - Execute skills as CLI tools (NEW in v0.4.0)
13
+ - [oasr completion](COMPLETION.md) - Shell tab completion (NEW in v0.6.0)
12
14
  - [oasr find](FIND.md) - Find/discover skills in your file system
13
15
  - [oasr validate](VALIDATE.md) - Validate a skill
14
16
  - [oasr adapter](ADAPTER.md) - Generate IDE/Tooling adapters
@@ -11,6 +11,7 @@ Clone skills from the registry to a target directory. Supports glob patterns and
11
11
  oasr clone skill-name
12
12
  oasr clone skill-name -d /path/to/project
13
13
  oasr clone "git-*" # Glob pattern
14
+ oasr clone "*" # Clone all skills (quote to avoid shell expansion)
14
15
  oasr clone skill-one skill-two # Multiple skills
15
16
  ```
16
17
 
@@ -28,8 +29,11 @@ Clone multiple skills matching a pattern:
28
29
  ```bash
29
30
  oasr clone "python-*" # All Python-related skills
30
31
  oasr clone "*-api" # All API-related skills
32
+ oasr clone "*" # All skills in registry
31
33
  ```
32
34
 
35
+ > **Note:** Always quote `*` or glob patterns to prevent your shell from expanding them before OASR receives the pattern.
36
+
33
37
  ### Remote Skill Fetching
34
38
 
35
39
  Remote skills are automatically fetched during clone: