oasr 0.3.4__tar.gz → 0.4.1__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 (141) hide show
  1. {oasr-0.3.4 → oasr-0.4.1}/CHANGELOG.md +49 -1
  2. {oasr-0.3.4 → oasr-0.4.1}/PKG-INFO +1 -1
  3. oasr-0.4.1/docs/QUICKSTART.md +140 -0
  4. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/.INDEX.md +11 -6
  5. oasr-0.4.1/docs/commands/CLONE.md +109 -0
  6. oasr-0.4.1/docs/commands/CONFIG.md +264 -0
  7. oasr-0.4.1/docs/commands/EXEC.md +453 -0
  8. oasr-0.4.1/docs/commands/USE.md +52 -0
  9. oasr-0.4.1/doctor/SKILL.md +35 -0
  10. oasr-0.4.1/doctor/assets/schemas/session.schema.yaml +87 -0
  11. oasr-0.4.1/doctor/assets/schemas/treatment.schema.yaml +70 -0
  12. oasr-0.4.1/doctor/references/00_ROUTER.md +104 -0
  13. oasr-0.4.1/doctor/references/01_SUMMARY.md +44 -0
  14. oasr-0.4.1/doctor/references/02_TRIGGERS.md +40 -0
  15. oasr-0.4.1/doctor/references/03_ALWAYS.md +43 -0
  16. oasr-0.4.1/doctor/references/04_NEVER.md +45 -0
  17. oasr-0.4.1/doctor/references/05_PROCEDURE.md +99 -0
  18. oasr-0.4.1/doctor/references/06_FAILURES.md +77 -0
  19. oasr-0.4.1/doctor/scripts/include/.doctor/session.yaml +11 -0
  20. oasr-0.4.1/doctor/scripts/include/doctor_cli.py +357 -0
  21. oasr-0.4.1/doctor/scripts/include/doctor_parse.py +348 -0
  22. oasr-0.4.1/doctor/scripts/include/pyproject.toml +12 -0
  23. oasr-0.4.1/doctor/scripts/include/uv.lock +78 -0
  24. oasr-0.4.1/doctor/scripts/router_checks.sh +87 -0
  25. oasr-0.4.1/doctor/scripts/skill.ps1 +65 -0
  26. oasr-0.4.1/doctor/scripts/skill.sh +57 -0
  27. {oasr-0.3.4 → oasr-0.4.1}/pyproject.toml +1 -1
  28. {oasr-0.3.4 → oasr-0.4.1}/src/adapters/base.py +4 -4
  29. oasr-0.4.1/src/agents/__init__.py +25 -0
  30. oasr-0.4.1/src/agents/base.py +96 -0
  31. oasr-0.4.1/src/agents/claude.py +25 -0
  32. oasr-0.4.1/src/agents/codex.py +25 -0
  33. oasr-0.4.1/src/agents/copilot.py +25 -0
  34. oasr-0.4.1/src/agents/opencode.py +25 -0
  35. oasr-0.4.1/src/agents/registry.py +57 -0
  36. {oasr-0.3.4 → oasr-0.4.1}/src/cli.py +8 -5
  37. {oasr-0.3.4 → oasr-0.4.1}/src/commands/add.py +137 -4
  38. oasr-0.3.4/src/commands/use.py → oasr-0.4.1/src/commands/clone.py +13 -7
  39. oasr-0.4.1/src/commands/config.py +163 -0
  40. oasr-0.4.1/src/commands/exec.py +199 -0
  41. oasr-0.4.1/src/commands/use.py +45 -0
  42. oasr-0.3.4/src/config.py → oasr-0.4.1/src/config/__init__.py +40 -17
  43. oasr-0.4.1/src/config/defaults.py +16 -0
  44. oasr-0.4.1/src/config/schema.py +36 -0
  45. oasr-0.4.1/tests/test_agents.py +265 -0
  46. oasr-0.4.1/tests/test_clone.py +95 -0
  47. oasr-0.4.1/tests/test_config.py +203 -0
  48. oasr-0.4.1/tests/test_config_command.py +206 -0
  49. oasr-0.4.1/tests/test_exec.py +374 -0
  50. oasr-0.4.1/tests/test_multi_skill.py +159 -0
  51. {oasr-0.3.4 → oasr-0.4.1}/tests/test_tracking.py +0 -3
  52. {oasr-0.3.4 → oasr-0.4.1}/uv.lock +26 -26
  53. oasr-0.3.4/docs/QUICKSTART.md +0 -64
  54. oasr-0.3.4/docs/commands/USE.md +0 -19
  55. {oasr-0.3.4 → oasr-0.4.1}/.gitignore +0 -0
  56. {oasr-0.3.4 → oasr-0.4.1}/CONTRIBUTING.md +0 -0
  57. {oasr-0.3.4 → oasr-0.4.1}/LICENSE +0 -0
  58. {oasr-0.3.4 → oasr-0.4.1}/NOTICE +0 -0
  59. {oasr-0.3.4 → oasr-0.4.1}/README.md +0 -0
  60. {oasr-0.3.4 → oasr-0.4.1}/docs/.INDEX.md +0 -0
  61. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/adapter.png +0 -0
  62. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/add-glob.png +0 -0
  63. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/add-remote.png +0 -0
  64. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/add.png +0 -0
  65. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/find-add.png +0 -0
  66. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/find.png +0 -0
  67. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/help.png +0 -0
  68. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/info.png +0 -0
  69. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/list.png +0 -0
  70. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/rm-glob.png +0 -0
  71. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/rm.png +0 -0
  72. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/status.png +0 -0
  73. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/sync-update.png +0 -0
  74. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/sync.png +0 -0
  75. {oasr-0.3.4 → oasr-0.4.1}/docs/.images/use.png +0 -0
  76. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/ADAPTER.md +0 -0
  77. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/ADD.md +0 -0
  78. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/CLEAN.md +0 -0
  79. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/DIFF.md +0 -0
  80. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/FIND.md +0 -0
  81. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/HELP.md +0 -0
  82. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/INFO.md +0 -0
  83. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/LIST.md +0 -0
  84. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/REGISTRY.md +0 -0
  85. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/RM.md +0 -0
  86. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/ROOT.md +0 -0
  87. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/STATUS.md +0 -0
  88. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/SYNC.md +0 -0
  89. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/UPDATE.md +0 -0
  90. {oasr-0.3.4 → oasr-0.4.1}/docs/commands/VALIDATE.md +0 -0
  91. {oasr-0.3.4 → oasr-0.4.1}/docs/validation/.INDEX.md +0 -0
  92. {oasr-0.3.4 → oasr-0.4.1}/docs/validation/ERRORS.md +0 -0
  93. {oasr-0.3.4 → oasr-0.4.1}/docs/validation/INFO.md +0 -0
  94. {oasr-0.3.4 → oasr-0.4.1}/docs/validation/RULES.md +0 -0
  95. {oasr-0.3.4 → oasr-0.4.1}/docs/validation/WARNINGS.md +0 -0
  96. {oasr-0.3.4 → oasr-0.4.1}/install.ps1 +0 -0
  97. {oasr-0.3.4 → oasr-0.4.1}/install.sh +0 -0
  98. {oasr-0.3.4 → oasr-0.4.1}/llms.txt +0 -0
  99. {oasr-0.3.4 → oasr-0.4.1}/scripts/README.md +0 -0
  100. {oasr-0.3.4 → oasr-0.4.1}/scripts/fix.sh +0 -0
  101. {oasr-0.3.4 → oasr-0.4.1}/scripts/lint.sh +0 -0
  102. {oasr-0.3.4 → oasr-0.4.1}/scripts/test.sh +0 -0
  103. {oasr-0.3.4 → oasr-0.4.1}/src/__init__.py +0 -0
  104. {oasr-0.3.4 → oasr-0.4.1}/src/__main__.py +0 -0
  105. {oasr-0.3.4 → oasr-0.4.1}/src/adapter.py +0 -0
  106. {oasr-0.3.4 → oasr-0.4.1}/src/adapters/__init__.py +0 -0
  107. {oasr-0.3.4 → oasr-0.4.1}/src/adapters/claude.py +0 -0
  108. {oasr-0.3.4 → oasr-0.4.1}/src/adapters/codex.py +0 -0
  109. {oasr-0.3.4 → oasr-0.4.1}/src/adapters/copilot.py +0 -0
  110. {oasr-0.3.4 → oasr-0.4.1}/src/adapters/cursor.py +0 -0
  111. {oasr-0.3.4 → oasr-0.4.1}/src/adapters/windsurf.py +0 -0
  112. {oasr-0.3.4 → oasr-0.4.1}/src/commands/__init__.py +0 -0
  113. {oasr-0.3.4 → oasr-0.4.1}/src/commands/adapter.py +0 -0
  114. {oasr-0.3.4 → oasr-0.4.1}/src/commands/clean.py +0 -0
  115. {oasr-0.3.4 → oasr-0.4.1}/src/commands/diff.py +0 -0
  116. {oasr-0.3.4 → oasr-0.4.1}/src/commands/find.py +0 -0
  117. {oasr-0.3.4 → oasr-0.4.1}/src/commands/help.py +0 -0
  118. {oasr-0.3.4 → oasr-0.4.1}/src/commands/info.py +0 -0
  119. {oasr-0.3.4 → oasr-0.4.1}/src/commands/list.py +0 -0
  120. {oasr-0.3.4 → oasr-0.4.1}/src/commands/registry.py +0 -0
  121. {oasr-0.3.4 → oasr-0.4.1}/src/commands/rm.py +0 -0
  122. {oasr-0.3.4 → oasr-0.4.1}/src/commands/status.py +0 -0
  123. {oasr-0.3.4 → oasr-0.4.1}/src/commands/sync.py +0 -0
  124. {oasr-0.3.4 → oasr-0.4.1}/src/commands/update.py +0 -0
  125. {oasr-0.3.4 → oasr-0.4.1}/src/commands/validate.py +0 -0
  126. {oasr-0.3.4 → oasr-0.4.1}/src/discovery.py +0 -0
  127. {oasr-0.3.4 → oasr-0.4.1}/src/manifest.py +0 -0
  128. {oasr-0.3.4 → oasr-0.4.1}/src/registry.py +0 -0
  129. {oasr-0.3.4 → oasr-0.4.1}/src/remote.py +0 -0
  130. {oasr-0.3.4 → oasr-0.4.1}/src/skillcopy/__init__.py +0 -0
  131. {oasr-0.3.4 → oasr-0.4.1}/src/skillcopy/local.py +0 -0
  132. {oasr-0.3.4 → oasr-0.4.1}/src/skillcopy/remote.py +0 -0
  133. {oasr-0.3.4 → oasr-0.4.1}/src/tracking.py +0 -0
  134. {oasr-0.3.4 → oasr-0.4.1}/src/validate.py +0 -0
  135. {oasr-0.3.4 → oasr-0.4.1}/tests/conftest.py +0 -0
  136. {oasr-0.3.4 → oasr-0.4.1}/tests/test_adapters.py +0 -0
  137. {oasr-0.3.4 → oasr-0.4.1}/tests/test_copy.py +0 -0
  138. {oasr-0.3.4 → oasr-0.4.1}/tests/test_help.py +0 -0
  139. {oasr-0.3.4 → oasr-0.4.1}/tests/test_list.py +0 -0
  140. {oasr-0.3.4 → oasr-0.4.1}/tests/test_remote.py +0 -0
  141. {oasr-0.3.4 → oasr-0.4.1}/tests/test_use_glob.py +0 -0
@@ -4,7 +4,55 @@ 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
- ## [Unreleased]
7
+ ## [0.4.1] - 2026-02-01
8
+
9
+ ### Fixed
10
+ - **exec command**: Fixed `CompletedProcess` attribute error where code incorrectly referenced `.success`, `.output`, and `.error` attributes that don't exist. Now correctly uses `.returncode`
11
+ - **clone documentation**: Removed non-existent `-r, --recursive` flag from CLONE.md documentation
12
+
13
+ ## [0.4.0] - 2026-01-31
14
+
15
+ ### Added
16
+ - **🚀 `oasr exec` command** — Execute skills as CLI tools from anywhere
17
+ - Run skills with agent-driven execution: `oasr exec <skill> -p "prompt"`
18
+ - Multiple prompt input methods: inline (`-p`), file (`-i`), or stdin (pipe)
19
+ - Agent selection via flag (`--agent`) or config default
20
+ - Graceful error handling with helpful guidance
21
+ - **`oasr config` command** — Manage OASR configuration
22
+ - `config set <key> <value>` — Set config values (e.g., default agent)
23
+ - `config get <key>` — Retrieve config values
24
+ - `config list` — Display all configuration with agent availability
25
+ - `config path` — Show config file location
26
+ - **`oasr clone` command** — Renamed from `oasr use` for clarity
27
+ - Clones skills from registry to current directory
28
+ - Same functionality as deprecated `oasr use`
29
+ - **Agent driver system** — Support for multiple AI agent CLIs
30
+ - Codex: `codex exec "<prompt>"`
31
+ - GitHub Copilot: `copilot -p "<prompt>"`
32
+ - Claude CLI: `claude <prompt> -p`
33
+ - OpenCode: `opencode run "<prompt>"`
34
+ - Auto-detection of available agent binaries
35
+ - Extensible driver architecture for adding new agents
36
+ - **Multi-skill repository support** — Detect and add multiple skills from one repo
37
+ - `oasr registry add <repo-url>` automatically finds all SKILL.md files
38
+ - Interactive prompt for bulk addition: "Found 3 skills. Add all? [Y/n]"
39
+ - Each skill registered with proper subdirectory URL
40
+
41
+ ### Changed
42
+ - **Config system refactored** — Moved to subpackage architecture
43
+ - `src/config/` subpackage with schema validation
44
+ - New `agent.default` field in config for default agent selection
45
+ - TOML serialization improved (strips None values)
46
+ - Backward compatible with existing configs
47
+
48
+ ### Deprecated
49
+ - **`oasr use` command** — Use `oasr clone` instead
50
+ - Shows deprecation warning (suppressible with `--quiet` or `--json`)
51
+ - Warning: "This command will be removed in v0.5.0"
52
+ - Fully functional shim delegates to `oasr clone`
53
+
54
+ ### Fixed
55
+ - Config validation now properly handles None values in TOML serialization
8
56
 
9
57
  ## [0.3.4] - 2026-02-01
10
58
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oasr
3
- Version: 0.3.4
3
+ Version: 0.4.1
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
@@ -0,0 +1,140 @@
1
+ # Quickstart
2
+
3
+ ---
4
+
5
+ ## Option A: Global Installation
6
+
7
+ To make `oasr` available system-wide:
8
+
9
+ ```bash
10
+ # macOS/Linux
11
+ ./install.sh
12
+
13
+ # Windows (PowerShell)
14
+ .\install.ps1
15
+ ```
16
+
17
+ This installs into an isolated environment and adds shims to your PATH (`~/.local/bin` on Unix, `%LOCALAPPDATA%\oasr\bin` on Windows).
18
+
19
+ ## Option B: Install from PyPI with `pip`
20
+
21
+ ```bash
22
+ pip install oasr
23
+ ```
24
+
25
+ ## Option C: Install from PyPI with `uv`
26
+
27
+ ```bash
28
+ uv pip install oasr
29
+ ```
30
+
31
+ ## Option D: Install from source
32
+
33
+ ```bash
34
+ git clone https://github.com/JordanGunn/oasr.git
35
+ cd oasr
36
+ uv pip install -e .
37
+ ```
38
+
39
+ ---
40
+
41
+ ## Verify Installation
42
+
43
+ ```bash
44
+ oasr --version
45
+ ```
46
+
47
+ ---
48
+
49
+ ## First Steps
50
+
51
+ ### Basic Workflow
52
+
53
+ ```bash
54
+ # Register a skill
55
+ oasr registry add /path/to/your/skill
56
+
57
+ # Or add from a remote repository
58
+ oasr registry add https://github.com/user/skill-repo
59
+
60
+ # List registered skills
61
+ oasr registry list
62
+
63
+ # Clone a skill to your workspace (with tracking)
64
+ oasr clone my-skill
65
+
66
+ # Check status of tracked skills
67
+ oasr diff
68
+ ```
69
+
70
+ ### Execute Skills (v0.4.0)
71
+
72
+ ```bash
73
+ # Configure your preferred agent
74
+ oasr config set agent codex
75
+
76
+ # Execute a skill from anywhere
77
+ oasr exec my-skill -p "Your prompt here"
78
+
79
+ # Use with pipes for powerful workflows
80
+ git diff | oasr exec code-reviewer -p "Review these changes"
81
+ ```
82
+
83
+ ### IDE Integration
84
+
85
+ ```bash
86
+ # Generate adapters for your IDE
87
+ oasr adapter cursor
88
+ oasr adapter windsurf
89
+ ```
90
+
91
+ ## Common Workflows
92
+
93
+ ### Workflow 1: Clone and Use in IDE
94
+ Best for repeated manual use with IDE integration.
95
+
96
+ ```bash
97
+ # Add skills to registry
98
+ oasr registry add https://github.com/user/skills
99
+
100
+ # Clone to your project
101
+ cd ~/my-project
102
+ oasr clone csv-analyzer
103
+
104
+ # Adapt for your IDE
105
+ oasr adapter cursor
106
+ ```
107
+
108
+ ### Workflow 2: Direct Execution
109
+ Best for automation, scripts, and one-off tasks.
110
+
111
+ ```bash
112
+ # Configure default agent once
113
+ oasr config set agent codex
114
+
115
+ # Execute skills directly (no cloning needed)
116
+ oasr exec data-analyzer -p "Summarize report.csv"
117
+ oasr exec test-generator -p "Generate tests for api.py"
118
+
119
+ # Use in shell scripts
120
+ #!/bin/bash
121
+ git log -10 | oasr exec commit-summarizer > summary.txt
122
+ ```
123
+
124
+ ### Workflow 3: Multi-skill Repository
125
+ Work with repositories containing multiple skills.
126
+
127
+ ```bash
128
+ # Add repository (auto-detects all skills)
129
+ oasr registry add https://github.com/org/skill-collection
130
+ # Found 5 skills. Add all? [Y/n]: y
131
+
132
+ # List added skills
133
+ oasr registry list
134
+
135
+ # Use any skill from the collection
136
+ oasr exec python-formatter -p "Format all Python files"
137
+ oasr exec doc-generator -p "Generate API docs"
138
+ ```
139
+
140
+ See [Command Documentation](commands/.INDEX.md) for the full command reference.
@@ -1,12 +1,14 @@
1
1
  # Commands
2
2
 
3
- ## Core Commands (v0.3.0)
3
+ ## Core Commands (v0.4.0)
4
4
 
5
5
  - [oasr](ROOT.md) - Global flags and options
6
6
  - [oasr registry](REGISTRY.md) - Manage skill registry (validate, add, remove, list, sync)
7
- - [oasr diff](DIFF.md) - Show status of tracked skills (NEW in v0.3.0)
8
- - [oasr sync](SYNC.md) - Refresh outdated tracked skills (CHANGED in v0.3.0)
9
- - [oasr use](USE.md) - Copy skill(s) to target directory (with tracking)
7
+ - [oasr diff](DIFF.md) - Show status of tracked skills
8
+ - [oasr sync](SYNC.md) - Refresh outdated tracked skills
9
+ - [oasr config](CONFIG.md) - Manage configuration (NEW in v0.4.0)
10
+ - [oasr clone](CLONE.md) - Clone skill(s) to target directory (NEW in v0.4.0)
11
+ - [oasr exec](EXEC.md) - Execute skills as CLI tools (NEW in v0.4.0)
10
12
  - [oasr find](FIND.md) - Find/discover skills in your file system
11
13
  - [oasr validate](VALIDATE.md) - Validate a skill
12
14
  - [oasr clean](CLEAN.md) - Clean up the registry
@@ -15,10 +17,13 @@
15
17
  - [oasr info](INFO.md) - Show detailed information about a skill
16
18
  - [oasr help](HELP.md) - Show the help menu
17
19
 
18
- ## Deprecated Commands (v0.2.0)
20
+ ## Deprecated Commands
19
21
 
20
- These commands have been reorganized in v0.3.0:
22
+ ### v0.4.0 Deprecations
23
+ - [oasr use](USE.md) - **Deprecated**, use `oasr clone` instead (will be removed in v0.5.0)
21
24
 
25
+ ### v0.3.0 Reorganization
26
+ These commands were reorganized in v0.3.0:
22
27
  - [oasr add](ADD.md) - **Moved to** `oasr registry add`
23
28
  - [oasr list](LIST.md) - **Moved to** `oasr registry list`
24
29
  - [oasr rm](RM.md) - **Moved to** `oasr registry rm`
@@ -0,0 +1,109 @@
1
+ # `oasr clone`
2
+
3
+ Clone skills from the registry to a target directory. Supports glob patterns and works with both local and remote skills.
4
+
5
+ > **note**
6
+ > `oasr clone` provides an open-closed extension mechanism for using skills with any agentic provider.
7
+
8
+ ## Usage
9
+
10
+ ```bash
11
+ oasr clone skill-name
12
+ oasr clone skill-name -d /path/to/project
13
+ oasr clone "git-*" # Glob pattern
14
+ oasr clone skill-one skill-two # Multiple skills
15
+ ```
16
+
17
+ ## Options
18
+
19
+ - `-d, --dest DIR` — Destination directory (default: current directory)
20
+ - `--quiet` — Suppress informational output
21
+ - `--json` — Output results in JSON format
22
+
23
+ ## Features
24
+
25
+ ### Glob Pattern Support
26
+
27
+ Clone multiple skills matching a pattern:
28
+ ```bash
29
+ oasr clone "python-*" # All Python-related skills
30
+ oasr clone "*-api" # All API-related skills
31
+ ```
32
+
33
+ ### Remote Skill Fetching
34
+
35
+ Remote skills are automatically fetched during clone:
36
+ ```bash
37
+ oasr registry add https://github.com/user/skill-repo
38
+ oasr clone my-remote-skill
39
+ ```
40
+
41
+ ### Tracking Metadata
42
+
43
+ Cloned skills include tracking metadata in their frontmatter:
44
+ ```yaml
45
+ ---
46
+ metadata:
47
+ oasr:
48
+ hash: "abc123..."
49
+ source: "~/.oasr/registry/my-skill"
50
+ synced_at: "2026-02-01T12:00:00Z"
51
+ ---
52
+ ```
53
+
54
+ This enables:
55
+ - `oasr diff` — Check if cloned skills are up-to-date
56
+ - `oasr sync` — Update outdated skills from registry
57
+
58
+ ## Examples
59
+
60
+ ### Basic Clone
61
+ ```bash
62
+ # Clone to current directory
63
+ oasr clone csv-analyzer
64
+
65
+ # Clone to specific project
66
+ oasr clone csv-analyzer -d ~/projects/data-pipeline
67
+ ```
68
+
69
+ ### Bulk Clone
70
+ ```bash
71
+ # Clone multiple skills
72
+ oasr clone python-test-generator python-docstring-writer
73
+
74
+ # Clone with glob patterns
75
+ oasr clone "test-*" -d ~/projects/testing-tools
76
+ ```
77
+
78
+ ### Integration with Adapters
79
+
80
+ After cloning, use with IDE adapters:
81
+ ```bash
82
+ # Clone skills first
83
+ oasr clone my-skill
84
+
85
+ # Then adapt for your IDE
86
+ oasr adapter cursor
87
+ ```
88
+
89
+ ## Related Commands
90
+
91
+ - [`oasr exec`](EXEC.md) — Execute skills as CLI tools (no cloning needed)
92
+ - [`oasr registry add`](REGISTRY.md) — Add skills to registry before cloning
93
+ - [`oasr diff`](DIFF.md) — Check status of cloned skills
94
+ - [`oasr sync`](SYNC.md) — Update cloned skills from registry
95
+
96
+ ## Migration from `oasr use`
97
+
98
+ `oasr clone` replaces the deprecated `oasr use` command. The functionality is identical—only the name has changed for clarity:
99
+
100
+ ```bash
101
+ # Old (deprecated)
102
+ oasr use my-skill
103
+
104
+ # New
105
+ oasr clone my-skill
106
+ ```
107
+
108
+ > **warning**
109
+ > `oasr use` will be removed in v0.5.0. Update your scripts and workflows to use `oasr clone`.
@@ -0,0 +1,264 @@
1
+ # `oasr config`
2
+
3
+ Manage OASR configuration settings. Configure default agent, validation rules, and adapter preferences.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ oasr config set <key> <value> # Set a config value
9
+ oasr config get <key> # Get a config value
10
+ oasr config list # Show all configuration
11
+ oasr config path # Show config file location
12
+ ```
13
+
14
+ ## Subcommands
15
+
16
+ ### `config set`
17
+
18
+ Set configuration values:
19
+
20
+ ```bash
21
+ oasr config set agent codex # Set default agent
22
+ oasr config set agent copilot
23
+ oasr config set agent claude
24
+ oasr config set agent opencode
25
+ ```
26
+
27
+ **Agent Validation**: Only supported agents can be set. The command validates against available agent drivers.
28
+
29
+ ### `config get`
30
+
31
+ Retrieve configuration values:
32
+
33
+ ```bash
34
+ oasr config get agent # Get default agent
35
+ oasr config get validation.strict # Get validation strictness
36
+ ```
37
+
38
+ Returns the value or indicates if not set:
39
+ ```
40
+ codex
41
+ ```
42
+
43
+ ### `config list`
44
+
45
+ Display all configuration with formatted output:
46
+
47
+ ```bash
48
+ oasr config list
49
+ ```
50
+
51
+ **Example output:**
52
+ ```
53
+ ╭─────────────────────────────────────────╮
54
+ │ OASR Configuration │
55
+ ├─────────────────────────────────────────┤
56
+ │ │
57
+ │ 📍 Config: ~/.oasr/config.toml │
58
+ │ │
59
+ │ Agent Configuration │
60
+ │ Default: codex │
61
+ │ │
62
+ │ Available Agents │
63
+ │ ✓ codex │
64
+ │ ✓ copilot │
65
+ │ ✗ claude │
66
+ │ ✗ opencode │
67
+ │ │
68
+ │ Validation Settings │
69
+ │ Reference max lines: 500 │
70
+ │ Strict mode: false │
71
+ │ │
72
+ │ Adapter Settings │
73
+ │ Default targets: cursor, windsurf │
74
+ │ │
75
+ ╰─────────────────────────────────────────╯
76
+ ```
77
+
78
+ **Agent Availability Indicators:**
79
+ - ✓ — Agent CLI binary found in PATH
80
+ - ✗ — Agent CLI binary not installed
81
+
82
+ ### `config path`
83
+
84
+ Show the location of the configuration file:
85
+
86
+ ```bash
87
+ oasr config path
88
+ ```
89
+
90
+ Returns:
91
+ ```
92
+ /home/user/.oasr/config.toml
93
+ ```
94
+
95
+ ## Configuration Structure
96
+
97
+ The config file uses TOML format:
98
+
99
+ ```toml
100
+ [agent]
101
+ default = "codex"
102
+
103
+ [validation]
104
+ reference_max_lines = 500
105
+ strict = false
106
+
107
+ [adapter]
108
+ default_targets = ["cursor", "windsurf"]
109
+ ```
110
+
111
+ ## Agent Configuration
112
+
113
+ ### Setting a Default Agent
114
+
115
+ Configure which agent `oasr exec` uses by default:
116
+
117
+ ```bash
118
+ oasr config set agent codex
119
+ ```
120
+
121
+ This allows you to run skills without specifying `--agent` each time:
122
+
123
+ ```bash
124
+ # Uses configured default agent
125
+ oasr exec my-skill -p "Do something"
126
+ ```
127
+
128
+ ### Supported Agents
129
+
130
+ | Agent | CLI Binary | Command Format |
131
+ |-------|-----------|----------------|
132
+ | **Codex** | `codex` | `codex exec "<prompt>"` |
133
+ | **Copilot** | `copilot` | `copilot -p "<prompt>"` |
134
+ | **Claude** | `claude` | `claude <prompt> -p` |
135
+ | **OpenCode** | `opencode` | `opencode run "<prompt>"` |
136
+
137
+ ### Checking Agent Availability
138
+
139
+ Use `oasr config list` to see which agents are installed and available:
140
+
141
+ ```bash
142
+ oasr config list
143
+ ```
144
+
145
+ Look for the **Available Agents** section with ✓/✗ indicators.
146
+
147
+ ## Examples
148
+
149
+ ### Initial Setup
150
+
151
+ Configure your preferred agent after installation:
152
+
153
+ ```bash
154
+ # Set default agent
155
+ oasr config set agent codex
156
+
157
+ # Verify configuration
158
+ oasr config get agent
159
+ # Output: codex
160
+
161
+ # See full config
162
+ oasr config list
163
+ ```
164
+
165
+ ### Switching Agents
166
+
167
+ Change your default agent at any time:
168
+
169
+ ```bash
170
+ # Switch to Copilot
171
+ oasr config set agent copilot
172
+
173
+ # Verify change
174
+ oasr config get agent
175
+ # Output: copilot
176
+ ```
177
+
178
+ ### Troubleshooting
179
+
180
+ Find your config file location:
181
+
182
+ ```bash
183
+ oasr config path
184
+ ```
185
+
186
+ Check which agents are available:
187
+
188
+ ```bash
189
+ oasr config list | grep -A 5 "Available Agents"
190
+ ```
191
+
192
+ ## Related Commands
193
+
194
+ - [`oasr exec`](EXEC.md) — Execute skills using configured agent
195
+ - [`oasr registry`](REGISTRY.md) — Manage skill registry
196
+
197
+ ## Configuration File Location
198
+
199
+ Default: `~/.oasr/config.toml`
200
+
201
+ Override with `--config` flag:
202
+ ```bash
203
+ oasr --config /custom/path/config.toml config list
204
+ ```
205
+
206
+ ## Error Handling
207
+
208
+ ### Agent Not Available
209
+
210
+ If you try to set an unavailable agent:
211
+
212
+ ```bash
213
+ oasr config set agent unknown-agent
214
+ ```
215
+
216
+ Output:
217
+ ```
218
+ Error: 'unknown-agent' is not a valid agent
219
+ Valid agents: codex, copilot, claude, opencode
220
+ ```
221
+
222
+ ### Agent Binary Not Found
223
+
224
+ If the configured agent binary is not in your PATH:
225
+
226
+ ```bash
227
+ oasr exec my-skill -p "test"
228
+ ```
229
+
230
+ Output:
231
+ ```
232
+ Error: Agent 'codex' is not available
233
+
234
+ Available agents:
235
+ ✗ codex
236
+ ✓ copilot
237
+ ✗ claude
238
+ ✗ opencode
239
+
240
+ Configure a different agent:
241
+ oasr config set agent copilot
242
+ ```
243
+
244
+ ## Advanced Usage
245
+
246
+ ### Direct Config File Editing
247
+
248
+ The config file is plain TOML and can be edited directly:
249
+
250
+ ```bash
251
+ # Open in editor
252
+ $EDITOR ~/.oasr/config.toml
253
+ ```
254
+
255
+ **Warning**: Manual edits bypass validation. Use `oasr config set` when possible.
256
+
257
+ ### Config Validation
258
+
259
+ OASR validates configuration on load:
260
+ - Agent names must be in supported list
261
+ - Numeric values must be positive integers
262
+ - Boolean values must be true/false
263
+
264
+ Invalid configs are rejected with helpful error messages.