oasr 0.5.1__tar.gz → 0.5.2__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 (152) hide show
  1. {oasr-0.5.1 → oasr-0.5.2}/CHANGELOG.md +48 -0
  2. {oasr-0.5.1 → oasr-0.5.2}/PKG-INFO +21 -1
  3. {oasr-0.5.1 → oasr-0.5.2}/README.md +20 -0
  4. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/.INDEX.md +1 -0
  5. oasr-0.5.2/docs/commands/COMPLETION.md +324 -0
  6. {oasr-0.5.1 → oasr-0.5.2}/pyproject.toml +1 -1
  7. {oasr-0.5.1 → oasr-0.5.2}/src/cli.py +6 -1
  8. oasr-0.5.2/src/commands/completion.py +345 -0
  9. oasr-0.5.2/src/completions/__init__.py +1 -0
  10. oasr-0.5.2/src/completions/bash.sh +197 -0
  11. oasr-0.5.2/src/completions/fish.fish +120 -0
  12. oasr-0.5.2/src/completions/powershell.ps1 +115 -0
  13. oasr-0.5.2/src/completions/zsh.sh +259 -0
  14. oasr-0.5.2/tests/test_completion.py +253 -0
  15. oasr-0.5.2/tests/test_e2e_commands.py +144 -0
  16. {oasr-0.5.1 → oasr-0.5.2}/uv.lock +1 -1
  17. {oasr-0.5.1 → oasr-0.5.2}/.gitignore +0 -0
  18. {oasr-0.5.1 → oasr-0.5.2}/CONTRIBUTING.md +0 -0
  19. {oasr-0.5.1 → oasr-0.5.2}/LICENSE +0 -0
  20. {oasr-0.5.1 → oasr-0.5.2}/NOTICE +0 -0
  21. {oasr-0.5.1 → oasr-0.5.2}/docs/.INDEX.md +0 -0
  22. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/adapter.png +0 -0
  23. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/add-glob.png +0 -0
  24. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/add-remote.png +0 -0
  25. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/add.png +0 -0
  26. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/find-add.png +0 -0
  27. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/find.png +0 -0
  28. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/help.png +0 -0
  29. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/info.png +0 -0
  30. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/list.png +0 -0
  31. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/rm-glob.png +0 -0
  32. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/rm.png +0 -0
  33. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/status.png +0 -0
  34. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/sync-update.png +0 -0
  35. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/sync.png +0 -0
  36. {oasr-0.5.1 → oasr-0.5.2}/docs/.images/use.png +0 -0
  37. {oasr-0.5.1 → oasr-0.5.2}/docs/QUICKSTART.md +0 -0
  38. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/ADAPTER.md +0 -0
  39. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/ADD.md +0 -0
  40. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/CLEAN.md +0 -0
  41. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/CLONE.md +0 -0
  42. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/CONFIG.md +0 -0
  43. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/DIFF.md +0 -0
  44. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/EXEC.md +0 -0
  45. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/FIND.md +0 -0
  46. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/HELP.md +0 -0
  47. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/INFO.md +0 -0
  48. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/LIST.md +0 -0
  49. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/REGISTRY.md +0 -0
  50. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/RM.md +0 -0
  51. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/ROOT.md +0 -0
  52. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/STATUS.md +0 -0
  53. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/SYNC.md +0 -0
  54. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/UPDATE.md +0 -0
  55. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/USE.md +0 -0
  56. {oasr-0.5.1 → oasr-0.5.2}/docs/commands/VALIDATE.md +0 -0
  57. {oasr-0.5.1 → oasr-0.5.2}/docs/config.example.toml +0 -0
  58. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/.INDEX +0 -0
  59. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/README.md +0 -0
  60. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/adapter.md +0 -0
  61. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/agent.md +0 -0
  62. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/environment-variables.md +0 -0
  63. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/examples/ci-cd.toml +0 -0
  64. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/examples/development.toml +0 -0
  65. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/examples/minimal.toml +0 -0
  66. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/examples/production.toml +0 -0
  67. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/precedence.md +0 -0
  68. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/profiles.md +0 -0
  69. {oasr-0.5.1 → oasr-0.5.2}/docs/configuration/validation.md +0 -0
  70. {oasr-0.5.1 → oasr-0.5.2}/docs/validation/.INDEX.md +0 -0
  71. {oasr-0.5.1 → oasr-0.5.2}/docs/validation/ERRORS.md +0 -0
  72. {oasr-0.5.1 → oasr-0.5.2}/docs/validation/INFO.md +0 -0
  73. {oasr-0.5.1 → oasr-0.5.2}/docs/validation/RULES.md +0 -0
  74. {oasr-0.5.1 → oasr-0.5.2}/docs/validation/WARNINGS.md +0 -0
  75. {oasr-0.5.1 → oasr-0.5.2}/install.ps1 +0 -0
  76. {oasr-0.5.1 → oasr-0.5.2}/install.sh +0 -0
  77. {oasr-0.5.1 → oasr-0.5.2}/llms.txt +0 -0
  78. {oasr-0.5.1 → oasr-0.5.2}/scripts/README.md +0 -0
  79. {oasr-0.5.1 → oasr-0.5.2}/scripts/fix.sh +0 -0
  80. {oasr-0.5.1 → oasr-0.5.2}/scripts/lint.sh +0 -0
  81. {oasr-0.5.1 → oasr-0.5.2}/scripts/test.sh +0 -0
  82. {oasr-0.5.1 → oasr-0.5.2}/src/__init__.py +0 -0
  83. {oasr-0.5.1 → oasr-0.5.2}/src/__main__.py +0 -0
  84. {oasr-0.5.1 → oasr-0.5.2}/src/adapter.py +0 -0
  85. {oasr-0.5.1 → oasr-0.5.2}/src/adapters/__init__.py +0 -0
  86. {oasr-0.5.1 → oasr-0.5.2}/src/adapters/base.py +0 -0
  87. {oasr-0.5.1 → oasr-0.5.2}/src/adapters/claude.py +0 -0
  88. {oasr-0.5.1 → oasr-0.5.2}/src/adapters/codex.py +0 -0
  89. {oasr-0.5.1 → oasr-0.5.2}/src/adapters/copilot.py +0 -0
  90. {oasr-0.5.1 → oasr-0.5.2}/src/adapters/cursor.py +0 -0
  91. {oasr-0.5.1 → oasr-0.5.2}/src/adapters/windsurf.py +0 -0
  92. {oasr-0.5.1 → oasr-0.5.2}/src/agents/__init__.py +0 -0
  93. {oasr-0.5.1 → oasr-0.5.2}/src/agents/base.py +0 -0
  94. {oasr-0.5.1 → oasr-0.5.2}/src/agents/claude.py +0 -0
  95. {oasr-0.5.1 → oasr-0.5.2}/src/agents/codex.py +0 -0
  96. {oasr-0.5.1 → oasr-0.5.2}/src/agents/copilot.py +0 -0
  97. {oasr-0.5.1 → oasr-0.5.2}/src/agents/opencode.py +0 -0
  98. {oasr-0.5.1 → oasr-0.5.2}/src/agents/registry.py +0 -0
  99. {oasr-0.5.1 → oasr-0.5.2}/src/commands/__init__.py +0 -0
  100. {oasr-0.5.1 → oasr-0.5.2}/src/commands/adapter.py +0 -0
  101. {oasr-0.5.1 → oasr-0.5.2}/src/commands/add.py +0 -0
  102. {oasr-0.5.1 → oasr-0.5.2}/src/commands/clean.py +0 -0
  103. {oasr-0.5.1 → oasr-0.5.2}/src/commands/clone.py +0 -0
  104. {oasr-0.5.1 → oasr-0.5.2}/src/commands/config.py +0 -0
  105. {oasr-0.5.1 → oasr-0.5.2}/src/commands/diff.py +0 -0
  106. {oasr-0.5.1 → oasr-0.5.2}/src/commands/exec.py +0 -0
  107. {oasr-0.5.1 → oasr-0.5.2}/src/commands/find.py +0 -0
  108. {oasr-0.5.1 → oasr-0.5.2}/src/commands/help.py +0 -0
  109. {oasr-0.5.1 → oasr-0.5.2}/src/commands/info.py +0 -0
  110. {oasr-0.5.1 → oasr-0.5.2}/src/commands/list.py +0 -0
  111. {oasr-0.5.1 → oasr-0.5.2}/src/commands/registry.py +0 -0
  112. {oasr-0.5.1 → oasr-0.5.2}/src/commands/rm.py +0 -0
  113. {oasr-0.5.1 → oasr-0.5.2}/src/commands/status.py +0 -0
  114. {oasr-0.5.1 → oasr-0.5.2}/src/commands/sync.py +0 -0
  115. {oasr-0.5.1 → oasr-0.5.2}/src/commands/update.py +0 -0
  116. {oasr-0.5.1 → oasr-0.5.2}/src/commands/use.py +0 -0
  117. {oasr-0.5.1 → oasr-0.5.2}/src/commands/validate.py +0 -0
  118. {oasr-0.5.1 → oasr-0.5.2}/src/config/__init__.py +0 -0
  119. {oasr-0.5.1 → oasr-0.5.2}/src/config/defaults.py +0 -0
  120. {oasr-0.5.1 → oasr-0.5.2}/src/config/env.py +0 -0
  121. {oasr-0.5.1 → oasr-0.5.2}/src/config/schema.py +0 -0
  122. {oasr-0.5.1 → oasr-0.5.2}/src/discovery.py +0 -0
  123. {oasr-0.5.1 → oasr-0.5.2}/src/manifest.py +0 -0
  124. {oasr-0.5.1 → oasr-0.5.2}/src/policy/__init__.py +0 -0
  125. {oasr-0.5.1 → oasr-0.5.2}/src/policy/defaults.py +0 -0
  126. {oasr-0.5.1 → oasr-0.5.2}/src/policy/enforcement.py +0 -0
  127. {oasr-0.5.1 → oasr-0.5.2}/src/policy/profile.py +0 -0
  128. {oasr-0.5.1 → oasr-0.5.2}/src/registry.py +0 -0
  129. {oasr-0.5.1 → oasr-0.5.2}/src/remote.py +0 -0
  130. {oasr-0.5.1 → oasr-0.5.2}/src/skillcopy/__init__.py +0 -0
  131. {oasr-0.5.1 → oasr-0.5.2}/src/skillcopy/local.py +0 -0
  132. {oasr-0.5.1 → oasr-0.5.2}/src/skillcopy/remote.py +0 -0
  133. {oasr-0.5.1 → oasr-0.5.2}/src/tracking.py +0 -0
  134. {oasr-0.5.1 → oasr-0.5.2}/src/validate.py +0 -0
  135. {oasr-0.5.1 → oasr-0.5.2}/tests/conftest.py +0 -0
  136. {oasr-0.5.1 → oasr-0.5.2}/tests/test_adapters.py +0 -0
  137. {oasr-0.5.1 → oasr-0.5.2}/tests/test_agents.py +0 -0
  138. {oasr-0.5.1 → oasr-0.5.2}/tests/test_clone.py +0 -0
  139. {oasr-0.5.1 → oasr-0.5.2}/tests/test_config.py +0 -0
  140. {oasr-0.5.1 → oasr-0.5.2}/tests/test_config_command.py +0 -0
  141. {oasr-0.5.1 → oasr-0.5.2}/tests/test_config_env.py +0 -0
  142. {oasr-0.5.1 → oasr-0.5.2}/tests/test_config_integration.py +0 -0
  143. {oasr-0.5.1 → oasr-0.5.2}/tests/test_copy.py +0 -0
  144. {oasr-0.5.1 → oasr-0.5.2}/tests/test_exec.py +0 -0
  145. {oasr-0.5.1 → oasr-0.5.2}/tests/test_help.py +0 -0
  146. {oasr-0.5.1 → oasr-0.5.2}/tests/test_list.py +0 -0
  147. {oasr-0.5.1 → oasr-0.5.2}/tests/test_multi_skill.py +0 -0
  148. {oasr-0.5.1 → oasr-0.5.2}/tests/test_policy_enforcement.py +0 -0
  149. {oasr-0.5.1 → oasr-0.5.2}/tests/test_policy_profile.py +0 -0
  150. {oasr-0.5.1 → oasr-0.5.2}/tests/test_remote.py +0 -0
  151. {oasr-0.5.1 → oasr-0.5.2}/tests/test_tracking.py +0 -0
  152. {oasr-0.5.1 → oasr-0.5.2}/tests/test_use_glob.py +0 -0
@@ -4,6 +4,54 @@ 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.5.2] - 2026-02-02
8
+
9
+ ### Added
10
+ - **⌨️ Shell Completion Support** — Intelligent tab completion for all major shells
11
+ - Cross-platform support: Bash, Zsh, Fish, PowerShell
12
+ - `oasr completion install` — Auto-detect shell and install completions
13
+ - `oasr completion <shell>` — Output completion script for specific shell
14
+ - Dynamic completions: skill names, agents, profiles fetched live from registry
15
+ - Command, subcommand, and flag completion for all OASR commands
16
+ - Smart shell detection (platform + $SHELL environment variable)
17
+ - Installation paths: `~/.bash_completion.d/`, `~/.zsh/completion/`, `~/.config/fish/completions/`, `~/.config/powershell/`
18
+ - Backup mechanism: existing completions backed up before overwrite
19
+ - `--force` and `--dry-run` flags for installation control
20
+ - `oasr completion uninstall` — Remove installed completions
21
+ - Configuration support: `oasr.completions` config option
22
+ - **🧪 Comprehensive E2E Tests** — 16 new end-to-end tests covering all commands
23
+ - Registry subcommands (list, sync, prune)
24
+ - Diff, sync, info, validate, clean commands
25
+ - Adapter, find, help commands
26
+ - Total test count: 282 tests (all passing)
27
+ - Ensures no regressions in existing functionality
28
+
29
+ ### Documentation
30
+ - **[docs/commands/COMPLETION.md](docs/commands/COMPLETION.md)**: Complete completion command reference
31
+ - Installation instructions for all shells
32
+ - Shell-specific configuration notes
33
+ - Troubleshooting guide
34
+ - Examples and usage patterns
35
+ - **[README.md](README.md)**: Added Shell Completions section with quickstart
36
+ - **[docs/commands/.INDEX.md](docs/commands/.INDEX.md)**: Added completion to command index
37
+
38
+ ### Technical
39
+ - **New module**: `src/commands/completion.py` (259 lines) with shell detection and installation
40
+ - **Completion scripts**: 4 shell-specific scripts (~691 lines total)
41
+ - `src/completions/bash.sh` (197 lines)
42
+ - `src/completions/zsh.sh` (259 lines) with descriptions
43
+ - `src/completions/fish.fish` (120 lines) with native Fish syntax
44
+ - `src/completions/powershell.ps1` (115 lines) with ArgumentCompleter
45
+ - **45 new tests**: 29 completion tests + 16 E2E tests
46
+ - **Dynamic completion**: Scripts invoke `oasr` commands for live data (registry list, config keys)
47
+ - **Cross-platform**: Handles Windows, macOS, Linux path conventions
48
+
49
+ ### Quality of Life
50
+ - Tab completion reduces typing and prevents typos
51
+ - Discovery: see available skills, agents, and profiles at your fingertips
52
+ - Professional UX: OASR now feels like a polished CLI tool
53
+ - Backward compatible: no changes to existing commands
54
+
7
55
  ## [0.5.1] - 2026-02-02
8
56
 
9
57
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oasr
3
- Version: 0.5.1
3
+ Version: 0.5.2
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
@@ -317,6 +317,26 @@ Remote skills are fetched on-demand during `adapter` and `use` operations. The r
317
317
 
318
318
  ---
319
319
 
320
+ ## Shell Completions
321
+
322
+ OASR supports intelligent tab completion for Bash, Zsh, Fish, and PowerShell:
323
+
324
+ ```bash
325
+ # Install for your current shell
326
+ oasr completion install
327
+
328
+ # Now try it:
329
+ oasr <TAB> # Complete commands
330
+ oasr info <TAB> # Complete skill names
331
+ oasr exec --<TAB> # Complete flags
332
+ ```
333
+
334
+ Completions are **dynamic** — skill names, agents, and profiles are fetched live from your registry.
335
+
336
+ See [`oasr completion --help`](docs/commands/COMPLETION.md) for details.
337
+
338
+ ---
339
+
320
340
  ## Documentation
321
341
 
322
342
  - **[Quickstart](docs/QUICKSTART.md)** — Installation and first steps
@@ -98,6 +98,26 @@ Remote skills are fetched on-demand during `adapter` and `use` operations. The r
98
98
 
99
99
  ---
100
100
 
101
+ ## Shell Completions
102
+
103
+ OASR supports intelligent tab completion for Bash, Zsh, Fish, and PowerShell:
104
+
105
+ ```bash
106
+ # Install for your current shell
107
+ oasr completion install
108
+
109
+ # Now try it:
110
+ oasr <TAB> # Complete commands
111
+ oasr info <TAB> # Complete skill names
112
+ oasr exec --<TAB> # Complete flags
113
+ ```
114
+
115
+ Completions are **dynamic** — skill names, agents, and profiles are fetched live from your registry.
116
+
117
+ See [`oasr completion --help`](docs/commands/COMPLETION.md) for details.
118
+
119
+ ---
120
+
101
121
  ## Documentation
102
122
 
103
123
  - **[Quickstart](docs/QUICKSTART.md)** — Installation and first steps
@@ -9,6 +9,7 @@
9
9
  - [oasr config](CONFIG.md) - Manage configuration (NEW in v0.4.0)
10
10
  - [oasr clone](CLONE.md) - Clone skill(s) to target directory (NEW in v0.4.0)
11
11
  - [oasr exec](EXEC.md) - Execute skills as CLI tools (NEW in v0.4.0)
12
+ - [oasr completion](COMPLETION.md) - Shell tab completion (NEW in v0.5.2)
12
13
  - [oasr find](FIND.md) - Find/discover skills in your file system
13
14
  - [oasr validate](VALIDATE.md) - Validate a skill
14
15
  - [oasr adapter](ADAPTER.md) - Generate IDE/Tooling adapters
@@ -0,0 +1,324 @@
1
+ # `oasr completion`
2
+
3
+ Enable shell tab completion for OASR commands, subcommands, and dynamic resources (skills, agents, profiles).
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ The `oasr completion` command provides intelligent tab completion across all major shells:
10
+
11
+ - **Bash** — Traditional completion with dynamic skill/agent/profile suggestions
12
+ - **Zsh** — Rich completions with descriptions and type hints
13
+ - **Fish** — Native Fish completions with helper functions
14
+ - **PowerShell** — ArgumentCompleter with tooltips
15
+
16
+ Completions are **dynamic**: skill names, agents, and profiles are fetched live from your registry.
17
+
18
+ ---
19
+
20
+ ## Usage
21
+
22
+ ```bash
23
+ # Output completion script for current shell (auto-detected)
24
+ oasr completion
25
+
26
+ # Output for specific shell
27
+ oasr completion bash
28
+ oasr completion zsh
29
+ oasr completion fish
30
+ oasr completion powershell
31
+
32
+ # Install to standard location for current shell
33
+ oasr completion install
34
+
35
+ # Install for specific shell
36
+ oasr completion install bash
37
+ oasr completion install --force # Overwrite existing
38
+
39
+ # Uninstall
40
+ oasr completion uninstall
41
+
42
+ # Dry run (show what would be done)
43
+ oasr completion install --dry-run
44
+ ```
45
+
46
+ ---
47
+
48
+ ## Installation
49
+
50
+ ### Automatic (Recommended)
51
+
52
+ ```bash
53
+ # Auto-detect shell and install
54
+ oasr completion install
55
+
56
+ # Restart your shell or source the completion file
57
+ # Bash:
58
+ source ~/.bash_completion.d/oasr
59
+
60
+ # Zsh:
61
+ source ~/.zsh/completion/_oasr
62
+
63
+ # Fish: (automatically loaded)
64
+
65
+ # PowerShell: (add to profile if not present)
66
+ . ~/.config/powershell/oasr_completion.ps1
67
+ ```
68
+
69
+ ### Manual Installation
70
+
71
+ If you prefer manual control, output the script and place it yourself:
72
+
73
+ ```bash
74
+ # Bash
75
+ oasr completion bash > ~/.bash_completion.d/oasr
76
+ source ~/.bash_completion.d/oasr
77
+
78
+ # Zsh
79
+ oasr completion zsh > ~/.zsh/completion/_oasr
80
+ # Add to ~/.zshrc:
81
+ # fpath=(~/.zsh/completion $fpath)
82
+ # autoload -Uz compinit && compinit
83
+
84
+ # Fish
85
+ oasr completion fish > ~/.config/fish/completions/oasr.fish
86
+
87
+ # PowerShell
88
+ oasr completion powershell > ~/.config/powershell/oasr_completion.ps1
89
+ # Add to $PROFILE:
90
+ # . ~/.config/powershell/oasr_completion.ps1
91
+ ```
92
+
93
+ ---
94
+
95
+ ## What Gets Completed
96
+
97
+ ### Commands & Subcommands
98
+
99
+ ```bash
100
+ oasr <TAB>
101
+ # Shows: add, adapter, clean, clone, completion, config, diff, exec, find, help, info, list, registry, rm, status, sync, update, use, validate
102
+
103
+ oasr registry <TAB>
104
+ # Shows: add, list, prune, rm, sync, validate
105
+
106
+ oasr config <TAB>
107
+ # Shows: get, list, set, unset, validate
108
+ ```
109
+
110
+ ### Dynamic Resources
111
+
112
+ ```bash
113
+ # Skill names (from your registry)
114
+ oasr info <TAB>
115
+ # Shows: git-commit, code-review, doc-generator, ...
116
+
117
+ oasr exec <TAB>
118
+ # Shows: git-commit, code-review, doc-generator, ...
119
+
120
+ # Agent types
121
+ oasr config set agent <TAB>
122
+ # Shows: codex, copilot, claude, openai, gemini
123
+
124
+ # Profiles
125
+ oasr exec --profile <TAB>
126
+ # Shows: safe, default, permissive, ...
127
+
128
+ # Config keys
129
+ oasr config get <TAB>
130
+ # Shows: agent, profile, validation.strict, adapter.default, ...
131
+ ```
132
+
133
+ ### Flags & Options
134
+
135
+ All commands provide flag completion:
136
+
137
+ ```bash
138
+ oasr add --<TAB>
139
+ # Shows: --source, --no-track, --help
140
+
141
+ oasr exec --<TAB>
142
+ # Shows: --profile, --yes, --confirm, --help
143
+
144
+ oasr adapter --<TAB>
145
+ # Shows: --output-dir, --adapter, --force, --help
146
+ ```
147
+
148
+ ---
149
+
150
+ ## Configuration
151
+
152
+ ### Enable/Disable via Config
153
+
154
+ ```toml
155
+ # ~/.config/oasr/config.toml
156
+ [oasr]
157
+ completions = true # Enable (default)
158
+ # completions = false # Disable
159
+ ```
160
+
161
+ Or via environment variable:
162
+
163
+ ```bash
164
+ export OASR_OASR_COMPLETIONS=true
165
+ ```
166
+
167
+ When disabled, `oasr completion install` will skip installation.
168
+
169
+ ### Installation Paths
170
+
171
+ Completions are installed to standard shell-specific locations:
172
+
173
+ | Shell | Path |
174
+ |-------------|-------------------------------------------|
175
+ | Bash | `~/.bash_completion.d/oasr` |
176
+ | Zsh | `~/.zsh/completion/_oasr` |
177
+ | Fish | `~/.config/fish/completions/oasr.fish` |
178
+ | PowerShell | `~/.config/powershell/oasr_completion.ps1` |
179
+
180
+ ### Backup on Overwrite
181
+
182
+ If you run `oasr completion install` and a completion file already exists, it will:
183
+
184
+ 1. **Without `--force`**: Prompt for confirmation
185
+ 2. **With `--force`**: Create a backup at `<path>.backup` before overwriting
186
+
187
+ ---
188
+
189
+ ## Shell-Specific Notes
190
+
191
+ ### Bash
192
+
193
+ - Requires `bash-completion` package on most systems
194
+ - Sources files from `~/.bash_completion.d/` automatically (if configured)
195
+ - Add to `~/.bashrc` if not auto-loaded:
196
+ ```bash
197
+ [ -f ~/.bash_completion.d/oasr ] && source ~/.bash_completion.d/oasr
198
+ ```
199
+
200
+ ### Zsh
201
+
202
+ - Uses `#compdef` directive for native Zsh completion system
203
+ - Provides rich descriptions for subcommands
204
+ - Add to `~/.zshrc` if not auto-loaded:
205
+ ```zsh
206
+ fpath=(~/.zsh/completion $fpath)
207
+ autoload -Uz compinit && compinit
208
+ ```
209
+
210
+ ### Fish
211
+
212
+ - Uses native `complete -c` syntax
213
+ - Automatically loaded from `~/.config/fish/completions/`
214
+ - No additional configuration needed
215
+
216
+ ### PowerShell
217
+
218
+ - Uses `Register-ArgumentCompleter` API
219
+ - Provides tooltips for commands
220
+ - Add to PowerShell profile:
221
+ ```powershell
222
+ . ~/.config/powershell/oasr_completion.ps1
223
+ ```
224
+ - Find profile location: `echo $PROFILE`
225
+
226
+ ---
227
+
228
+ ## Troubleshooting
229
+
230
+ ### Completions Not Working
231
+
232
+ 1. **Verify installation**:
233
+ ```bash
234
+ oasr completion install
235
+ ```
236
+
237
+ 2. **Check shell detection**:
238
+ ```bash
239
+ oasr completion # Should output script for current shell
240
+ ```
241
+
242
+ 3. **Restart shell** or source the completion file manually
243
+
244
+ 4. **Check shell configuration**:
245
+ - Bash: `~/.bashrc` should source `~/.bash_completion.d/oasr`
246
+ - Zsh: `~/.zshrc` should have `fpath` and `compinit`
247
+ - Fish: Automatically loaded
248
+ - PowerShell: `$PROFILE` should source the completion script
249
+
250
+ ### Dynamic Completions Slow
251
+
252
+ If skill/agent/profile completions are slow:
253
+
254
+ - Dynamic completions call `oasr` commands (e.g., `oasr registry list --quiet`)
255
+ - Large registries may cause slight delays
256
+ - Completions are generated on-demand (not cached)
257
+
258
+ ### Wrong Shell Detected
259
+
260
+ Specify the shell explicitly:
261
+
262
+ ```bash
263
+ oasr completion install zsh
264
+ ```
265
+
266
+ Or set `$SHELL` environment variable:
267
+
268
+ ```bash
269
+ export SHELL=/bin/zsh
270
+ oasr completion install
271
+ ```
272
+
273
+ ---
274
+
275
+ ## Examples
276
+
277
+ ### Install for Current Shell
278
+
279
+ ```bash
280
+ $ oasr completion install
281
+ Installing completion for zsh...
282
+ Completion installed to: /home/user/.zsh/completion/_oasr
283
+
284
+ To activate:
285
+ source ~/.zsh/completion/_oasr
286
+ # Or restart your shell
287
+ ```
288
+
289
+ ### Generate Script for Manual Review
290
+
291
+ ```bash
292
+ $ oasr completion bash > /tmp/oasr_completion.bash
293
+ $ less /tmp/oasr_completion.bash
294
+ # Review script before installing
295
+ $ cp /tmp/oasr_completion.bash ~/.bash_completion.d/oasr
296
+ ```
297
+
298
+ ### Install with Dry Run
299
+
300
+ ```bash
301
+ $ oasr completion install --dry-run
302
+ [DRY RUN] Would install completion for zsh
303
+ [DRY RUN] Target path: /home/user/.zsh/completion/_oasr
304
+ [DRY RUN] File exists: False
305
+ [DRY RUN] Would create directory: /home/user/.zsh/completion
306
+ [DRY RUN] Would write 259 bytes
307
+ ```
308
+
309
+ ### Force Overwrite
310
+
311
+ ```bash
312
+ $ oasr completion install --force
313
+ Backing up existing completion to: /home/user/.zsh/completion/_oasr.backup
314
+ Installing completion for zsh...
315
+ Completion installed to: /home/user/.zsh/completion/_oasr
316
+ ```
317
+
318
+ ---
319
+
320
+ ## See Also
321
+
322
+ - [`oasr config`](CONFIG.md) — Configure completion behavior
323
+ - [`oasr help`](HELP.md) — Get help on commands
324
+ - [Commands Index](.INDEX.md) — All available commands
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "oasr"
7
- version = "0.5.1"
7
+ version = "0.5.2"
8
8
  description = "CLI for managing agent skills across IDE integrations"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -13,7 +13,7 @@ from pathlib import Path
13
13
  from commands import adapter, clean, clone, config, diff, exec, find, registry, sync, update, use, validate
14
14
  from commands import help as help_cmd
15
15
 
16
- __version__ = "0.5.1"
16
+ __version__ = "0.5.2"
17
17
 
18
18
 
19
19
  def main(argv: list[str] | None = None) -> int:
@@ -88,6 +88,11 @@ def create_parser() -> argparse.ArgumentParser:
88
88
 
89
89
  info_cmd.register(subparsers)
90
90
 
91
+ # Import and register completion command
92
+ from commands import completion as completion_cmd
93
+
94
+ completion_cmd.register_parser(subparsers)
95
+
91
96
  help_cmd.register(subparsers, parser)
92
97
 
93
98
  return parser