feat: add aidevops skill CLI command with telemetry disabled#154
feat: add aidevops skill CLI command with telemetry disabled#154marcusquinn merged 5 commits intomainfrom
Conversation
- Add -y flag to auto-confirm package installation - Use full path to npx for reliability - Add per-agent tool enabling example - Document token optimization strategy
Combined commits: - 🤖 AUTO-FIX: Apply code quality improvements - docs(playwriter): update OpenCode config with correct npx format (#153)
Adds cmd_skill() to aidevops.sh providing a unified interface for managing Agent Skills (agentskills.io) with telemetry disabled by default. Delegates to existing add-skill-helper.sh and skill-update-helper.sh for implementation. - Exports DISABLE_TELEMETRY, DO_NOT_TRACK, SKILLS_NO_TELEMETRY env vars - Supports add/list/remove/check/update/status subcommands - Updates help text with skill command and examples section - Updates README with new CLI syntax and reference links
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughAdds an Changes
Sequence Diagram(s)sequenceDiagram
participant User as User
participant CLI as aidevops.sh
participant Helper as add-skill-helper.sh
participant FS as Repo/.agent
participant Tracker as skill-sources.json
User->>CLI: aidevops skill add owner/repo
CLI->>Helper: invoke helper with params
Helper->>FS: fetch & convert skill, write temp files
Helper->>FS: check_conflicts -> return NATIVE/IMPORTED/INFO
alt Conflicts
Helper->>User: prompt Replace / Separate / Skip
User-->>Helper: choice
end
Helper->>FS: write `<category>/<name>-skill.md`
Helper->>Tracker: update `skill-sources.json` with upstream metadata
CLI->>User: success / status output
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary of ChangesHello @marcusquinn, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
🔍 Code Quality Report�[0;35m[MONITOR]�[0m Code Review Monitoring Report �[0;34m[INFO]�[0m Latest Quality Status: �[0;34m[INFO]�[0m Recent monitoring activity: 📈 Current Quality Metrics
Generated on: Thu Jan 22 23:44:49 UTC 2026 Generated by AI DevOps Framework Code Review Monitoring |
There was a problem hiding this comment.
Code Review
This pull request introduces a new aidevops skill command, providing a unified interface for managing Agent Skills while disabling telemetry by default. The implementation in aidevops.sh is well-structured, adding a cmd_skill function that dispatches to existing helper scripts. The documentation updates in README.md and other files are clear and comprehensive, effectively explaining the new functionality. I have a couple of suggestions to improve the changes. One addresses a hardcoded path in a documentation example which impacts portability, and the other points out an opportunity to improve code consistency and reduce duplication in the new cmd_skill function. Overall, this is a valuable addition to the aidevops CLI.
| "playwriter": { | ||
| "type": "local", | ||
| "command": ["npx", "playwriter@latest"], | ||
| "command": ["/opt/homebrew/bin/npx", "-y", "playwriter@latest"], |
There was a problem hiding this comment.
Hardcoding the full path to npx (/opt/homebrew/bin/npx) makes this configuration example specific to a single environment (macOS with Homebrew on Apple Silicon) and not portable. It's better to rely on npx being in the system's PATH, which is the standard expectation. The accompanying note is sufficient to guide users who might need to use a full path for reliability in their specific setup.
| "command": ["/opt/homebrew/bin/npx", "-y", "playwriter@latest"], | |
| "command": ["npx", "-y", "playwriter@latest", |
| ;; | ||
| list|ls|l) | ||
| if [[ ! -f "$add_skill_script" ]]; then | ||
| print_error "add-skill-helper.sh not found" |
There was a problem hiding this comment.
The error handling for a missing add-skill-helper.sh is inconsistent. Here, it only prints an error. However, in the add subcommand (lines 1668-1672), it also prints a helpful print_info message suggesting how to fix the issue (Run 'aidevops update' to get the latest scripts). This hint should be included in all cases where a helper script is missing to provide a consistent user experience. This applies to check, update, remove, and status subcommands as well.
To improve maintainability, consider refactoring to a helper function or a check at the top of cmd_skill to avoid this duplicated and inconsistent logic.
| print_error "add-skill-helper.sh not found" | |
| print_error "add-skill-helper.sh not found" | |
| print_info "Run 'aidevops update' to get the latest scripts" |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
CHANGELOG.md (1)
8-15: Missing CHANGELOG entry for the newaidevops skillcommand.This PR introduces a significant new feature (
aidevops skill add/list/check/update/remove/status) with telemetry disabled by default. The[Unreleased]section should document this addition.📝 Suggested CHANGELOG entry
## [Unreleased] +### Added + +- add `aidevops skill` CLI command for managing agent skills with telemetry disabled (`#154`) + ## [2.72.0] - 2026-01-22
🤖 Fix all issues with AI agents
In `@README.md`:
- Around line 456-464: Update the CLI Commands documentation to include the
missing subcommand "aidevops skill status" by adding it to the commands list and
the help output: mention the exact command "aidevops skill status" and a short
description like "Show status of imported skills (installed, up-to-date, updates
available)"; ensure the README's CLI Commands block and any help text sections
mirror the implemented command in aidevops.sh (aidevops skill status) so docs
and implementation stay consistent.
🧹 Nitpick comments (2)
aidevops.sh (1)
1716-1748: Consider distinguishing unknown subcommands from explicit help requests.The
help|--help|-h|*pattern treats unknown subcommands the same as explicit help. This meansaidevops skill typoshows help and exits 0 (success) rather than indicating an error.♻️ Optional: Exit non-zero for unknown subcommands
- help|--help|-h|*) + help|--help|-h) print_header "Agent Skills Management" # ... help text ... ;; + *) + print_error "Unknown skill command: $action" + echo "" + cmd_skill help + return 1 + ;; esac.agent/tools/browser/playwriter.md (1)
62-69: Hardcoded Homebrew ARM path may not work on other platforms.The path
/opt/homebrew/bin/npxis specific to macOS ARM (Apple Silicon) with Homebrew. This won't work on:
- macOS Intel:
/usr/local/bin/npx- Linux (nvm/fnm):
~/.nvm/versions/node/.../bin/npx- System Node:
/usr/bin/npxThe note mentions this, but users may copy-paste without reading.
📝 Suggested clarification
"command": ["/opt/homebrew/bin/npx", "-y", "playwriter@latest"], "enabled": true } } }-> Note: Use full path to
npx(e.g.,/opt/homebrew/bin/npxon macOS with Homebrew) for reliability. The-yflag auto-confirms package installation.
+> Note: Use the full path tonpxfor reliability. Find your path withwhich npx:
+> - macOS Homebrew (ARM):/opt/homebrew/bin/npx
+> - macOS Homebrew (Intel):/usr/local/bin/npx
+> - Linux/nvm:$(which npx)in your shell
+>
+> The-yflag auto-confirms package installation.</details> As per coding guidelines, using placeholders like `<path-to-npx>` with discovery instructions would be more portable. </blockquote></details> </blockquote></details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
| **CLI Commands:** | ||
|
|
||
| ```bash | ||
| /add-skill <owner/repo> # Import a skill from GitHub | ||
| /add-skill list # List imported skills | ||
| /add-skill check-updates # Check for upstream updates | ||
| /add-skill <owner/repo> --force # Update an existing skill | ||
| aidevops skill add <owner/repo> # Import a skill from GitHub | ||
| aidevops skill list # List imported skills | ||
| aidevops skill check # Check for upstream updates | ||
| aidevops skill update [name] # Update specific or all skills | ||
| aidevops skill remove <name> # Remove an imported skill | ||
| ``` |
There was a problem hiding this comment.
Missing status subcommand in CLI documentation.
The implementation includes aidevops skill status (lines 1709-1714 in aidevops.sh), but it's not listed here. The help output at lines 1789-1794 also omits it.
📝 Add status command to documentation
aidevops skill check # Check for upstream updates
aidevops skill update [name] # Update specific or all skills
aidevops skill remove <name> # Remove an imported skill
+aidevops skill status # Show detailed skill status📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| **CLI Commands:** | |
| ```bash | |
| /add-skill <owner/repo> # Import a skill from GitHub | |
| /add-skill list # List imported skills | |
| /add-skill check-updates # Check for upstream updates | |
| /add-skill <owner/repo> --force # Update an existing skill | |
| aidevops skill add <owner/repo> # Import a skill from GitHub | |
| aidevops skill list # List imported skills | |
| aidevops skill check # Check for upstream updates | |
| aidevops skill update [name] # Update specific or all skills | |
| aidevops skill remove <name> # Remove an imported skill | |
| ``` | |
| **CLI Commands:** | |
🤖 Prompt for AI Agents
In `@README.md` around lines 456 - 464, Update the CLI Commands documentation to
include the missing subcommand "aidevops skill status" by adding it to the
commands list and the help output: mention the exact command "aidevops skill
status" and a short description like "Show status of imported skills (installed,
up-to-date, updates available)"; ensure the README's CLI Commands block and any
help text sections mirror the implemented command in aidevops.sh (aidevops skill
status) so docs and implementation stay consistent.
🤖 Augment PR SummarySummary: Adds a new Changes:
Technical Notes: Skill imports and update detection are tracked via 🤖 Was this summary useful? React with 👍 or 👎 |
| ``` | ||
|
|
||
| Skills are registered in `~/.aidevops/agents/configs/skill-sources.json` and checked for updates during `./setup.sh`. | ||
| Skills are registered in `~/.aidevops/agents/configs/skill-sources.json` with upstream commit tracking for update detection. Telemetry is disabled - no data is sent to third parties. |
There was a problem hiding this comment.
The sentence "Telemetry is disabled - no data is sent to third parties" reads a bit stronger than what the command can guarantee (it will still contact GitHub to clone/check updates). Consider clarifying this as “no telemetry/analytics is sent” to avoid implying zero third-party network calls.
Other Locations
README.md:960aidevops.sh:1721
🤖 Was this useful? React with 👍 or 👎
| echo " init [features] Initialize aidevops in current project" | ||
| echo " upgrade-planning Upgrade TODO.md/PLANS.md to latest templates" | ||
| echo " features List available features for init" | ||
| echo " skill <cmd> Manage agent skills (add/list/check/update/remove)" |
| "playwriter": { | ||
| "type": "local", | ||
| "command": ["npx", "playwriter@latest"], | ||
| "command": ["/opt/homebrew/bin/npx", "-y", "playwriter@latest"], |
|
|
||
| ### Added | ||
|
|
||
| - add MiniSim iOS/Android emulator launcher support (#151) |
There was a problem hiding this comment.
…TS.md docs - Imported skills now saved as *-skill.md to distinguish from native subagents - Conflict detection differentiates NATIVE vs IMPORTED conflicts - Removed merge option (was unimplemented), simplified to replace/separate/skip - Added generate/clean subcommands delegating to generate-skills.sh - Updated AGENTS.md with Imported Skills section, CLI table, key scripts - Updated commands/add-skill.md with naming convention docs and examples
🔍 Code Quality Report�[0;35m[MONITOR]�[0m Code Review Monitoring Report �[0;34m[INFO]�[0m Latest Quality Status: �[0;34m[INFO]�[0m Recent monitoring activity: 📈 Current Quality Metrics
Generated on: Fri Jan 23 00:11:59 UTC 2026 Generated by AI DevOps Framework Code Review Monitoring |
There was a problem hiding this comment.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.agent/scripts/add-skill-helper.sh (1)
786-793: Add timeout to curl for reliability.The
curl -s "$api_url"call at line 788 could hang indefinitely if GitHub is slow or unreachable, which impacts script reliability in automation scenarios.🛠️ Suggested fix with timeout
# Get latest commit from GitHub API local api_url="https://api.github.com/repos/$owner/$repo/commits?per_page=1" local latest_commit - latest_commit=$(curl -s "$api_url" | jq -r '.[0].sha // empty' 2>/dev/null) + latest_commit=$(curl -s --connect-timeout 10 --max-time 30 "$api_url" | jq -r '.[0].sha // empty' 2>/dev/null)
- Add CHANGELOG entry for skill command under [Unreleased] - Separate unknown subcommand from help (exit 1 with error message) - Add curl --connect-timeout 10 --max-time 30 to GitHub API call
|
🔍 Code Quality Report�[0;35m[MONITOR]�[0m Code Review Monitoring Report �[0;34m[INFO]�[0m Latest Quality Status: �[0;34m[INFO]�[0m Recent monitoring activity: 📈 Current Quality Metrics
Generated on: Fri Jan 23 00:27:36 UTC 2026 Generated by AI DevOps Framework Code Review Monitoring |
All review feedback addressed: added CHANGELOG entry, fixed unknown subcommand error handling, added curl timeout.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In @.agent/scripts/add-skill-helper.sh:
- Around line 632-635: The call to determine_target_path is using the generic
source_dir which can be the repo root and miss nested SKILL.md files; update the
"Separate" branch so after reading new_name and computing skill_name it calls
determine_target_path with skill_source_dir (not source_dir) so the resolved
skill directory is used when categorizing/importing the skill (ensure variables
referenced are skill_name, new_name, determine_target_path, and
skill_source_dir).
♻️ Duplicate comments (2)
aidevops.sh (2)
1676-1714: Keep helper-missing guidance consistent across subcommands.
Onlyadd/generatesuggest runningaidevops update;list/check/update/remove/status/cleando not. Consider adding the same hint for a consistent UX.
1790-1824: Expose all supported skill subcommands in top-level help.
cmd_skillsupportsstatus/generate/clean, but the help text only lists add/list/check/update/remove. This makes the extra commands hard to discover.📝 Suggested update
- echo " skill <cmd> Manage agent skills (add/list/check/update/remove)" + echo " skill <cmd> Manage agent skills (add/list/check/update/remove/status/generate/clean)" ... - echo " aidevops skill remove <name> # Remove an imported skill" + echo " aidevops skill remove <name> # Remove an imported skill" + echo " aidevops skill status # Show detailed skill status" + echo " aidevops skill generate # Generate SKILL.md stubs" + echo " aidevops skill clean # Remove generated SKILL.md stubs"
🧹 Nitpick comments (1)
aidevops.sh (1)
1772-1778: Add an explicit return for cmd_skill.
Currently the function exits with an implicit status. An explicitreturn $?keeps the subcommand status while satisfying the script convention. As per coding guidelines, use explicit returns.♻️ Proposed fix
case "$action" in add|a) ... ;; *) print_error "Unknown skill command: $action" echo "Run 'aidevops skill help' for usage information." return 1 ;; esac + return $? }
| read -rp "Enter new name: " new_name | ||
| skill_name=$(to_kebab_case "$new_name") | ||
| target_path=$(determine_target_path "$skill_name" "$description" "$source_dir") | ||
| ;; |
There was a problem hiding this comment.
Recompute target_path using the resolved skill directory.
When the user chooses “Separate”, you pass $source_dir into determine_target_path, which can point at the repo root and miss SKILL.md for nested skills. That can miscategorize the import. Use $skill_source_dir instead.
🐛 Proposed fix
- target_path=$(determine_target_path "$skill_name" "$description" "$source_dir")
+ target_path=$(determine_target_path "$skill_name" "$description" "$skill_source_dir")📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| read -rp "Enter new name: " new_name | |
| skill_name=$(to_kebab_case "$new_name") | |
| target_path=$(determine_target_path "$skill_name" "$description" "$source_dir") | |
| ;; | |
| read -rp "Enter new name: " new_name | |
| skill_name=$(to_kebab_case "$new_name") | |
| target_path=$(determine_target_path "$skill_name" "$description" "$skill_source_dir") | |
| ;; |
🤖 Prompt for AI Agents
In @.agent/scripts/add-skill-helper.sh around lines 632 - 635, The call to
determine_target_path is using the generic source_dir which can be the repo root
and miss nested SKILL.md files; update the "Separate" branch so after reading
new_name and computing skill_name it calls determine_target_path with
skill_source_dir (not source_dir) so the resolved skill directory is used when
categorizing/importing the skill (ensure variables referenced are skill_name,
new_name, determine_target_path, and skill_source_dir).



Summary
aidevops skillCLI command as a unified interface for managing Agent Skills (the open standard for AI agent instructions)DISABLE_TELEMETRY=1,DO_NOT_TRACK=1,SKILLS_NO_TELEMETRY=1) to prevent usage data being sent to skills.sh leaderboardadd-skill-helper.sh(add/list/remove) andskill-update-helper.sh(check/update/status)Changes
aidevops.shcmd_skill()function (~100 lines) with subcommands:add,list,remove,check,update,statusskill|skillscase to main dispatchcmd_help()with skill command documentation and examples sectionREADME.mdaidevops skill addsyntaxnpx add-skillWhy
The
npx add-skill/npx skillspackages from Vercel send anonymous telemetry to power the skills.sh leaderboard. By wrapping throughaidevops skill, we:aidevops skill addvs rememberingnpx add-skill)References
Summary by CodeRabbit
New Features
Documentation
Refactor
✏️ Tip: You can customize this high-level summary in your review settings.