Skip to content

Prompt agent skill installation during CLI install/upgrade#841

Merged
jiaenren merged 1 commit intomainfrom
jiaenr/agent-skill-install
Apr 10, 2026
Merged

Prompt agent skill installation during CLI install/upgrade#841
jiaenren merged 1 commit intomainfrom
jiaenr/agent-skill-install

Conversation

@jiaenren
Copy link
Copy Markdown
Collaborator

@jiaenren jiaenren commented Apr 9, 2026

Description

Add an interactive prompt to the CLI install/upgrade scripts that offers
to install the OSMO agent skill via npx skills add nvidia/osmo.

When a user installs or upgrades the OSMO CLI, the post-install script
asks if they'd like to install the agent skill for their AI coding agents
(Claude Code, Codex, etc.). The npx skills CLI handles agent selection,
scope (global/project), and install method (symlink/copy) interactively.

Behavior:

  • Only prompts in interactive terminals (skipped for MDM, CI)
  • Skips if the skill is already installed globally (~/.claude, ~/.codex, or ~/.agents)
  • If npx is available: prompts to install (defaults to yes on enter)
  • If npx is not available: shows Node.js install instructions (brew install node if brew available, plus nodejs.org link)
  • On decline or failure: prints install command for later use
  • Non-fatal: skill install failure does not abort CLI installation
  • Ctrl+C exits cleanly

Caveat: Project-scope skill installations (installed into a specific project directory rather than globally) are not detected by the install script, since the script runs from a temporary location with no knowledge of the user's project directories. Users with only project-scope installations will be prompted again on CLI upgrade.

Files:

  • postinstall (macOS) — added agent skill prompt block
  • installer.sh (Linux) — added identical agent skill prompt block

Issue - None

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

Test

Manually verified on Macbook locally

❯ sudo bash src/cli/packaging/macos/postinstall
Adding zsh autocomplete script for OSMO.
Zsh autocomplete installed

######################################################################
Note: /usr/local/share/zsh/site-functions is not in your fpath.
Run this command to enable autocomplete:
######################################################################

echo 'fpath=(/usr/local/share/zsh/site-functions $fpath)' >> ~/.zshrc && echo 'autoload -Uz compinit && compinit' >> ~/.zshrc

Then restart your terminal or run: source ~/.zshrc
######################################################################


######################################################################
OSMO Agent Skill

Install the OSMO agent skill for AI coding agents
(Claude Code, Codex, etc.) to enable natural language
commands for managing compute resources and workflows.
######################################################################

Install the OSMO agent skill? [Y/n]: n
To install later:
  npx skills add nvidia/osmo

❯ sudo bash src/cli/packaging/macos/postinstall
Adding zsh autocomplete script for OSMO.
Zsh autocomplete installed

######################################################################
Note: /usr/local/share/zsh/site-functions is not in your fpath.
Run this command to enable autocomplete:
######################################################################

echo 'fpath=(/usr/local/share/zsh/site-functions $fpath)' >> ~/.zshrc && echo 'autoload -Uz compinit && compinit' >> ~/.zshrc

Then restart your terminal or run: source ~/.zshrc
######################################################################


######################################################################
OSMO Agent Skill

Install the OSMO agent skill for AI coding agents
(Claude Code, Codex, etc.) to enable natural language
commands for managing compute resources and workflows.
######################################################################

Install the OSMO agent skill? [Y/n]: 

███████╗██╗  ██╗██╗██╗     ██╗     ███████╗
██╔════╝██║ ██╔╝██║██║     ██║     ██╔════╝
███████╗█████╔╝ ██║██║     ██║     ███████╗
╚════██║██╔═██╗ ██║██║     ██║     ╚════██║
███████║██║  ██╗██║███████╗███████╗███████║
╚══════╝╚═╝  ╚═╝╚═╝╚══════╝╚══════╝╚══════╝

┌   skills 
│
◇  Source: https://github.com/nvidia/osmo.git
│
◇  Repository cloned
│
◇  Found 1 skill
│
●  Skill: osmo-agent
│
│  How to use the OSMO CLI to manage cloud compute resources for robotics development. Use this skill whenever the user asks about available resources, nodes, pools, GPUs, or compute capacity on OSMO — even if they don't say "OSMO" explicitly. Also use it when they ask what they can run, whether they have quota, want to check their profile or pool access, want to submit a workflow (SDG, RL training, or custom), want to check the status or logs of a running/completed workflow, list or browse recent workflow submissions, want to understand what a specific workflow does or is configured to do, or want to create an OSMO app from a workflow.
│  
│
◇  45 agents
◆  Which agents do you want to install to?
│
│  ── Universal (.agents/skills) ── always included ────────────
│    • Amp
│    • Antigravity
│    • Cline
│    • Codex
│    • Cursor
│    • Deep Agents
│    • Firebender
│    • Gemini CLI
│    • GitHub Copilot
│    • Kimi Code CLI
│    • OpenCode
│    • Warp
■  Which agents do you want to install to?
│  Cancelled
│
■  targetAgents.some is not a function
│
│  Tip: use the --yes (-y) and --global (-g) flags to install without prompts.
│
└  Installation failed


Installation failed. To retry:
  npx skills add nvidia/osmo

❯ sudo bash src/cli/packaging/macos/postinstall
Adding zsh autocomplete script for OSMO.
Zsh autocomplete installed

######################################################################
Note: /usr/local/share/zsh/site-functions is not in your fpath.
Run this command to enable autocomplete:
######################################################################

echo 'fpath=(/usr/local/share/zsh/site-functions $fpath)' >> ~/.zshrc && echo 'autoload -Uz compinit && compinit' >> ~/.zshrc

Then restart your terminal or run: source ~/.zshrc
######################################################################


######################################################################
OSMO Agent Skill

Install the OSMO agent skill for AI coding agents
(Claude Code, Codex, etc.) to enable natural language
commands for managing compute resources and workflows.
######################################################################

Install the OSMO agent skill? [Y/n]: Y

███████╗██╗  ██╗██╗██╗     ██╗     ███████╗
██╔════╝██║ ██╔╝██║██║     ██║     ██╔════╝
███████╗█████╔╝ ██║██║     ██║     ███████╗
╚════██║██╔═██╗ ██║██║     ██║     ╚════██║
███████║██║  ██╗██║███████╗███████╗███████║
╚══════╝╚═╝  ╚═╝╚═╝╚══════╝╚══════╝╚══════╝

┌   skills 
│
◇  Source: https://github.com/nvidia/osmo.git
│
◇  Repository cloned
│
◇  Found 1 skill
│
●  Skill: osmo-agent
│
│  How to use the OSMO CLI to manage cloud compute resources for robotics development. Use this skill whenever the user asks about available resources, nodes, pools, GPUs, or compute capacity on OSMO — even if they don't say "OSMO" explicitly. Also use it when they ask what they can run, whether they have quota, want to check their profile or pool access, want to submit a workflow (SDG, RL training, or custom), want to check the status or logs of a running/completed workflow, list or browse recent workflow submissions, want to understand what a specific workflow does or is configured to do, or want to create an OSMO app from a workflow.
│  
│
◇  45 agents
◆  Which agents do you want to install to?
│
│  ── Universal (.agents/skills) ── always included ────────────
│    • Amp
│    • Antigravity
│    • Cline
│    • Codex
│    • Cursor
│    • Deep Agents
│    • Firebender
│    • Gemini CLI
│    • GitHub Copilot
│    • Kimi Code CLI
│    • OpenCode
│    • Warp
◇  Which agents do you want to install to?
│  Amp, Antigravity, Cline, Codex, Cursor, Deep Agents, Firebender, Gemini CLI, GitHub Copilot, Kimi Code CLI, OpenCode, Warp, Claude Code
│
◇  Installation scope
│  Global
│
◇  Installation method
│  Symlink (Recommended)

│
◇  Installation Summary ────────────────────────────────────────╮
│                                                               │
│  ~/.agents/skills/osmo-agent                                  │
│    universal: Amp, Antigravity, Cline, Codex, Cursor +7 more  │
│    symlink → Claude Code                                      │
│                                                               │
├───────────────────────────────────────────────────────────────╯
│
◇  Security Risk Assessments ────────────────────────────────╮
│                                                            │
│              Gen               Socket            Snyk      │
│  osmo-agent  Safe              0 alerts          Med Risk  │
│                                                            │
│  Details: https://skills.sh/nvidia/osmo                    │
│                                                            │
├────────────────────────────────────────────────────────────╯
│
◇  Proceed with installation?
│  Yes
│
◇  Installation complete

│
◇  Installed 1 skill ───────────────────────────────────────────╮
│                                                               │
│  ✓ ~/.agents/skills/osmo-agent                                │
│    universal: Amp, Antigravity, Cline, Codex, Cursor +7 more  │
│    symlinked: Claude Code                                     │
│                                                               │
├───────────────────────────────────────────────────────────────╯

│
└  Done!  Review skills before use; they run with full agent permissions.


To remove:
  npx skills remove osmo-agent

@jiaenren jiaenren requested a review from a team as a code owner April 9, 2026 20:40
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 9, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds interactive, TTY-gated post-install prompts to Linux and macOS installer scripts that detect existing OSMO agent skill installs, offer to run npx skills add nvidia/osmo (default yes on empty input), and print Node.js installation guidance when npx is unavailable.

Changes

Cohort / File(s) Summary
Post-install prompt — Linux
src/cli/packaging/linux/installer.sh
Adds a TTY-gated post-install prompt that scans $HOME/.claude, $HOME/.codex, and $HOME/.agents for skills/osmo-agent/SKILL.md. If not found and npx exists, prompts (empty → yes) and runs npx skills add nvidia/osmo; otherwise prints Node.js install guidance (suggests brew install node when brew exists) and follow-up command.
Post-install prompt — macOS
src/cli/packaging/macos/postinstall
Adds a TTY-gated postinstall flow that checks ~/.claude/skills/osmo-agent/, ~/.codex/skills/osmo-agent/, and ~/.agents/skills/osmo-agent/. When skill absent and running in a TTY, prompts to install; on confirmation and if npx is present runs npx skills add nvidia/osmo, otherwise prints Node.js installation guidance (suggesting brew install node if available) plus the follow-up npx command.

Sequence Diagram

sequenceDiagram
    participant User
    participant Installer as Installer Script
    participant FS as File System
    participant NPX as npx/Node
    participant Skills as Skills Registry

    User->>Installer: Run postinstall
    Installer->>FS: Check for SKILL.md in candidate dirs
    alt Skill found
        Installer->>User: Skip prompt
    else Skill not found and TTY
        Installer->>User: Prompt "Install OSMO skill? (Y/n)"
        User->>Installer: Respond (yes/no or empty)
        alt User confirms
            Installer->>NPX: Check `npx` availability
            alt npx available
                Installer->>NPX: `npx skills add nvidia/osmo`
                NPX->>Skills: Request install
                Skills-->>NPX: Install success/failure
                NPX-->>Installer: Result
                Installer->>User: Show success (and removal cmd) or retry guidance
            else npx missing
                Installer->>User: Show Node.js install instructions + follow-up `npx skills add nvidia/osmo`
            end
        else User declines
            Installer->>User: Exit without installing
        end
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐇 I nosed through folders, sniffed the night,
No osmo-skill in sight—what a plight!
"Shall I npx it?" I twitch and pry,
A tap, a spin — the skill hops by.
Cheers from a rabbit, soft and spry.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding interactive prompts to installation scripts for agent skill installation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jiaenr/agent-skill-install

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/cli/packaging/linux/installer.sh (1)

18-18: ⚠️ Potential issue | 🟠 Major

Guard read under set -e so EOF does not fail install.

With set -e, an EOF/Ctrl-D on the unguarded read -p command can cause the script to exit early, making the optional agent skill installation prompt cause a hard failure instead of gracefully handling user cancellation.

Also applies to: src/cli/packaging/macos/postinstall:74

Proposed fix
-    read -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL
-    INSTALL_SKILL="${INSTALL_SKILL:-y}"
+    if ! read -r -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL; then
+        INSTALL_SKILL="n"
+    fi
+    INSTALL_SKILL="${INSTALL_SKILL:-y}"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/linux/installer.sh` at line 18, The script has set -e so an
EOF/Ctrl-D on the interactive prompt (the unguarded read -p used to ask about
optional agent skill installation) will cause the whole installer to exit; wrap
that read so it cannot trigger an exit by temporarily disabling the errexit
behavior or by appending a safe fallback. Specifically, around the read -p
invocation in installer.sh (and the similar read in macos/postinstall), disable
errexit (e.g., save/set +e), perform read -r -p ... and handle the case where
read returns non-zero (treat as a canceled/no response), then restore set -e (or
restore the saved errexit state); ensure subsequent logic interprets a
non-successful read as “do not install” rather than letting the script
terminate.
src/cli/packaging/macos/postinstall (1)

18-18: ⚠️ Potential issue | 🟠 Major

Guard the read prompt against EOF to prevent unexpected script abort under set -e.

With set -e at line 18, an unhandled EOF (Ctrl-D) at the prompt returns non-zero and terminates the script. Apply the proposed fix to default to n on EOF:

Proposed fix
-    read -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL
-    INSTALL_SKILL="${INSTALL_SKILL:-y}"
+    if ! read -r -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL; then
+        INSTALL_SKILL="n"
+    fi
+    INSTALL_SKILL="${INSTALL_SKILL:-y}"

Also applies to: lines 74–75

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/macos/postinstall` at line 18, The script uses set -e which
causes an unhandled EOF (Ctrl-D) at interactive prompts to abort; update each
interactive read invocation (the read prompts near the top under set -e and the
two reads around lines 74–75) to guard against EOF by defaulting the reply to
"n" when read fails—for example replace plain read (or IFS= read -r reply) with
a guarded form like: IFS= read -r reply || reply="n" (then use "${reply}" in the
subsequent checks), ensuring all prompt reads are similarly protected.
🧹 Nitpick comments (1)
src/cli/packaging/linux/installer.sh (1)

123-163: Consider centralizing this prompt flow to avoid Linux/macOS drift.

This block is effectively duplicated across both installer scripts; extracting a shared helper/template will reduce future divergence risk.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/linux/installer.sh` around lines 123 - 163, Extract the
duplicated OSMO skill prompt flow into a shared helper (e.g., a function named
prompt_install_osmo_skill or a sourced script like
packaging/shared/osmo_prompt.sh) and call it from both installer scripts instead
of repeating the loop and interactive logic; move the OSMO_SKILL_INSTALLED
detection (the for agent_dir loop checking
"$agent_dir/skills/osmo-agent/SKILL.md"), the interactive prompt (INSTALL_SKILL
read and default), and the npx invoke (npx skills add nvidia/osmo and its
success/failure messages) into that helper, ensure the helper respects
non-interactive tty checks and command -v npx, and update both linux and mac
installers to source/call the new helper to prevent drift.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@src/cli/packaging/linux/installer.sh`:
- Line 18: The script has set -e so an EOF/Ctrl-D on the interactive prompt (the
unguarded read -p used to ask about optional agent skill installation) will
cause the whole installer to exit; wrap that read so it cannot trigger an exit
by temporarily disabling the errexit behavior or by appending a safe fallback.
Specifically, around the read -p invocation in installer.sh (and the similar
read in macos/postinstall), disable errexit (e.g., save/set +e), perform read -r
-p ... and handle the case where read returns non-zero (treat as a canceled/no
response), then restore set -e (or restore the saved errexit state); ensure
subsequent logic interprets a non-successful read as “do not install” rather
than letting the script terminate.

In `@src/cli/packaging/macos/postinstall`:
- Line 18: The script uses set -e which causes an unhandled EOF (Ctrl-D) at
interactive prompts to abort; update each interactive read invocation (the read
prompts near the top under set -e and the two reads around lines 74–75) to guard
against EOF by defaulting the reply to "n" when read fails—for example replace
plain read (or IFS= read -r reply) with a guarded form like: IFS= read -r reply
|| reply="n" (then use "${reply}" in the subsequent checks), ensuring all prompt
reads are similarly protected.

---

Nitpick comments:
In `@src/cli/packaging/linux/installer.sh`:
- Around line 123-163: Extract the duplicated OSMO skill prompt flow into a
shared helper (e.g., a function named prompt_install_osmo_skill or a sourced
script like packaging/shared/osmo_prompt.sh) and call it from both installer
scripts instead of repeating the loop and interactive logic; move the
OSMO_SKILL_INSTALLED detection (the for agent_dir loop checking
"$agent_dir/skills/osmo-agent/SKILL.md"), the interactive prompt (INSTALL_SKILL
read and default), and the npx invoke (npx skills add nvidia/osmo and its
success/failure messages) into that helper, ensure the helper respects
non-interactive tty checks and command -v npx, and update both linux and mac
installers to source/call the new helper to prevent drift.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 61cb5790-e58c-49d5-a122-de6e7f6f51a6

📥 Commits

Reviewing files that changed from the base of the PR and between f6535b9 and 0e69b4d.

📒 Files selected for processing (2)
  • src/cli/packaging/linux/installer.sh
  • src/cli/packaging/macos/postinstall

@jiaenren jiaenren force-pushed the jiaenr/agent-skill-install branch from 0e69b4d to 0735ec7 Compare April 9, 2026 20:47
@jiaenren jiaenren force-pushed the jiaenr/agent-skill-install branch from 0735ec7 to ed5821f Compare April 9, 2026 20:50
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/cli/packaging/linux/installer.sh`:
- Line 146: Replace the unsafe read invocation with the raw-read form: change
the prompt call from read -p "Install the OSMO agent skill? [Y/n]: "
INSTALL_SKILL to read -r -p "Install the OSMO agent skill? [Y/n]: "
INSTALL_SKILL (and apply the same change to the equivalent prompt in the macOS
postinstall script), so backslashes in user input are not treated as escape
sequences.
- Around line 127-132: The installer currently uses $HOME and runs npx as the
effective user, causing detection/installation under /root when invoked with
sudo; update the agent_dir detection loop (where OSMO_SKILL_INSTALLED is set)
and any npx invocations to resolve the invoking user's home and run commands as
that user by using SUDO_USER (e.g., derive target_home via getent passwd
"$SUDO_USER" or eval echo "~$SUDO_USER" when SUDO_USER is set) and use sudo -u
"$SUDO_USER" for npx; also change any read -p usages to read -r -p to avoid
backslash interpretation (affecting the prompt handling). Ensure these changes
are applied to the OSMO_SKILL_INSTALLED detection loop, the npx install/run
sites, and the interactive read prompts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1683fe0b-feaa-4cd2-8420-dd77a106bbb7

📥 Commits

Reviewing files that changed from the base of the PR and between 0e69b4d and 0735ec7.

📒 Files selected for processing (2)
  • src/cli/packaging/linux/installer.sh
  • src/cli/packaging/macos/postinstall
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/cli/packaging/macos/postinstall

Comment thread src/cli/packaging/linux/installer.sh
Comment thread src/cli/packaging/linux/installer.sh Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (4)
src/cli/packaging/linux/installer.sh (2)

146-146: ⚠️ Potential issue | 🟡 Minor

Switch to read -r for prompt parsing safety.

Line 146 should be read -r -p ... to avoid backslash mangling.

Verification script
#!/bin/bash
# Expect no output after replacing all prompt reads with `read -r -p`.
rg -n --type=sh 'read\s+-p\s+"Install the OSMO agent skill\? \[Y/n\]:"' \
  src/cli/packaging/linux/installer.sh \
  src/cli/packaging/macos/postinstall
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/linux/installer.sh` at line 146, The prompt read uses
unsafe parsing; change the read invocation that assigns INSTALL_SKILL (the line
using read -p "Install the OSMO agent skill? [Y/n]: ") to use read -r -p so
backslashes aren't interpreted; update the read call that sets INSTALL_SKILL to
use the -r flag and keep the same prompt and variable name.

127-129: ⚠️ Potential issue | 🟠 Major

Handle sudo/root installs using the invoking user’s home and user context.

Line 127 and Line 149 still bind detection/install to the effective user; with sudo/root invocation this can detect/install in /root instead of the caller’s account.

Suggested fix
+TARGET_USER="${SUDO_USER:-$(id -un)}"
+if [ "$TARGET_USER" = "root" ]; then
+    TARGET_HOME="$HOME"
+else
+    TARGET_HOME="$(getent passwd "$TARGET_USER" | cut -d: -f6)"
+fi
+
 OSMO_SKILL_INSTALLED=false
-for agent_dir in "$HOME/.claude" "$HOME/.codex" "$HOME/.agents"; do
+for agent_dir in "$TARGET_HOME/.claude" "$TARGET_HOME/.codex" "$TARGET_HOME/.agents"; do
     if [ -f "$agent_dir/skills/osmo-agent/SKILL.md" ]; then
         OSMO_SKILL_INSTALLED=true
         break
@@
-            if npx skills add nvidia/osmo; then
+            if [ "$(id -u)" -eq 0 ] && [ -n "${SUDO_USER:-}" ] && [ "$SUDO_USER" != "root" ]; then
+                INSTALL_CMD=(sudo -u "$SUDO_USER" -H npx skills add nvidia/osmo)
+            else
+                INSTALL_CMD=(npx skills add nvidia/osmo)
+            fi
+            if "${INSTALL_CMD[@]}"; then

Also applies to: 149-149

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/linux/installer.sh` around lines 127 - 129, The current
detection loop using "$HOME" (for example the for loop that checks
"$agent_dir/skills/osmo-agent/SKILL.md" and sets OSMO_SKILL_INSTALLED) will use
the effective user (root under sudo); change it to detect and use the invoking
user's home and UID by resolving an INVOKING_USER/INVOKING_HOME (e.g. from
SUDO_USER or fall back to USER/getent passwd) and then iterate those paths (e.g.
"$INVOKING_HOME/.claude" "$INVOKING_HOME/.codex" "$INVOKING_HOME/.agents");
apply the same INVOKING_HOME usage wherever "$HOME" is used later (including the
install/detect at the other occurrence around line 149) so detection and
installation operate in the caller’s account context rather than root.
src/cli/packaging/macos/postinstall (2)

75-75: ⚠️ Potential issue | 🟡 Minor

Use raw read for prompt input.

Line 75 should use read -r -p ... so backslashes are not interpreted.

Verification script
#!/bin/bash
# Expect no output after fixing both packaging scripts.
rg -n --type=sh 'read\s+-p\s+"Install the OSMO agent skill\? \[Y/n\]:"' \
  src/cli/packaging/macos/postinstall \
  src/cli/packaging/linux/installer.sh
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/macos/postinstall` at line 75, Replace the raw read
invocation with a raw-safe read by changing the prompt call `read -p "Install
the OSMO agent skill? [Y/n]: " INSTALL_SKILL` to use the -r flag (`read -r -p
...`) so backslashes are not interpreted; update this exact invocation in both
places where it appears (the `read -p "Install the OSMO agent skill? [Y/n]: "
INSTALL_SKILL` line and the duplicate occurrence in the other installer script)
so both scripts use `read -r -p`.

56-58: ⚠️ Potential issue | 🟠 Major

Install/detect the skill in the real user account, not root.

Line 56 and Line 78 use the effective account ($HOME, direct npx) in postinstall; this commonly resolves to root on macOS package installs and can install/detect under the wrong home directory.

Suggested fix
+TARGET_USER="${SUDO_USER:-$(stat -f '%Su' /dev/console 2>/dev/null || true)}"
+if [ -z "$TARGET_USER" ] || [ "$TARGET_USER" = "root" ]; then
+    TARGET_USER="$(id -un)"
+fi
+TARGET_HOME="$(dscl . -read "/Users/$TARGET_USER" NFSHomeDirectory 2>/dev/null | awk '{print $2}')"
+[ -z "$TARGET_HOME" ] && TARGET_HOME="$HOME"
+
 OSMO_SKILL_INSTALLED=false
-for agent_dir in "$HOME/.claude" "$HOME/.codex" "$HOME/.agents"; do
+for agent_dir in "$TARGET_HOME/.claude" "$TARGET_HOME/.codex" "$TARGET_HOME/.agents"; do
     if [ -f "$agent_dir/skills/osmo-agent/SKILL.md" ]; then
         OSMO_SKILL_INSTALLED=true
         break
@@
-            if npx skills add nvidia/osmo; then
+            if [ "$(id -u)" -eq 0 ] && [ "$TARGET_USER" != "root" ]; then
+                INSTALL_CMD=(sudo -u "$TARGET_USER" -H npx skills add nvidia/osmo)
+            else
+                INSTALL_CMD=(npx skills add nvidia/osmo)
+            fi
+            if "${INSTALL_CMD[@]}"; then

Also applies to: 78-78

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/macos/postinstall` around lines 56 - 58, The postinstall
currently uses $HOME and direct npx (see the agent_dir loop checking
"$HOME/.claude" etc and the npx invocation) which runs as root during macOS pkg
installs; change it to detect the real target user via SUDO_USER (fall back to
logname/USER) and compute a USER_HOME variable (e.g. derive NFSHomeDirectory for
SUDO_USER on macOS or use eval "~$SUDO_USER"), then replace occurrences of
"$HOME" in the agent_dir loop and SKILL.md checks with "$USER_HOME" and invoke
npx under that user (e.g. sudo -u "$SUDO_USER" HOME="$USER_HOME" npx ... or at
least set HOME="$USER_HOME" when running npx) so install/detection operate on
the real user account; update OSMO_SKILL_INSTALLED checks to use the new
USER_HOME variable accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@src/cli/packaging/linux/installer.sh`:
- Line 146: The prompt read uses unsafe parsing; change the read invocation that
assigns INSTALL_SKILL (the line using read -p "Install the OSMO agent skill?
[Y/n]: ") to use read -r -p so backslashes aren't interpreted; update the read
call that sets INSTALL_SKILL to use the -r flag and keep the same prompt and
variable name.
- Around line 127-129: The current detection loop using "$HOME" (for example the
for loop that checks "$agent_dir/skills/osmo-agent/SKILL.md" and sets
OSMO_SKILL_INSTALLED) will use the effective user (root under sudo); change it
to detect and use the invoking user's home and UID by resolving an
INVOKING_USER/INVOKING_HOME (e.g. from SUDO_USER or fall back to USER/getent
passwd) and then iterate those paths (e.g. "$INVOKING_HOME/.claude"
"$INVOKING_HOME/.codex" "$INVOKING_HOME/.agents"); apply the same INVOKING_HOME
usage wherever "$HOME" is used later (including the install/detect at the other
occurrence around line 149) so detection and installation operate in the
caller’s account context rather than root.

In `@src/cli/packaging/macos/postinstall`:
- Line 75: Replace the raw read invocation with a raw-safe read by changing the
prompt call `read -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL` to
use the -r flag (`read -r -p ...`) so backslashes are not interpreted; update
this exact invocation in both places where it appears (the `read -p "Install the
OSMO agent skill? [Y/n]: " INSTALL_SKILL` line and the duplicate occurrence in
the other installer script) so both scripts use `read -r -p`.
- Around line 56-58: The postinstall currently uses $HOME and direct npx (see
the agent_dir loop checking "$HOME/.claude" etc and the npx invocation) which
runs as root during macOS pkg installs; change it to detect the real target user
via SUDO_USER (fall back to logname/USER) and compute a USER_HOME variable (e.g.
derive NFSHomeDirectory for SUDO_USER on macOS or use eval "~$SUDO_USER"), then
replace occurrences of "$HOME" in the agent_dir loop and SKILL.md checks with
"$USER_HOME" and invoke npx under that user (e.g. sudo -u "$SUDO_USER"
HOME="$USER_HOME" npx ... or at least set HOME="$USER_HOME" when running npx) so
install/detection operate on the real user account; update OSMO_SKILL_INSTALLED
checks to use the new USER_HOME variable accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4e0348f4-3f90-4e9f-83a8-84a848c18aef

📥 Commits

Reviewing files that changed from the base of the PR and between 0735ec7 and ed5821f.

📒 Files selected for processing (2)
  • src/cli/packaging/linux/installer.sh
  • src/cli/packaging/macos/postinstall

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
src/cli/packaging/linux/installer.sh (1)

127-149: ⚠️ Potential issue | 🟠 Major

Install/check the skill in the invoking user context, not root.

Lines 127-149 still use $HOME and direct npx, so sudo ./installer.sh checks/installs under /root instead of the caller’s home. Also, Line 146 should use read -r -p to avoid backslash mangling.

Suggested patch
+TARGET_USER="${SUDO_USER:-$(id -un)}"
+if [ "$TARGET_USER" = "root" ]; then
+    TARGET_HOME="$HOME"
+else
+    TARGET_HOME="$(getent passwd "$TARGET_USER" | cut -d: -f6)"
+fi
+
 OSMO_SKILL_INSTALLED=false
-for agent_dir in "$HOME/.claude" "$HOME/.codex" "$HOME/.agents"; do
+for agent_dir in "$TARGET_HOME/.claude" "$TARGET_HOME/.codex" "$TARGET_HOME/.agents"; do
     if [ -f "$agent_dir/skills/osmo-agent/SKILL.md" ]; then
         OSMO_SKILL_INSTALLED=true
         break
@@
-        read -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL
+        read -r -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL
         INSTALL_SKILL="${INSTALL_SKILL:-y}"
         if [ "$INSTALL_SKILL" = "y" ] || [ "$INSTALL_SKILL" = "Y" ]; then
-            if npx skills add nvidia/osmo; then
+            if [ "$(id -u)" -eq 0 ] && [ -n "${SUDO_USER:-}" ] && [ "$SUDO_USER" != "root" ]; then
+                INSTALL_CMD=(sudo -u "$SUDO_USER" -H npx skills add nvidia/osmo)
+            else
+                INSTALL_CMD=(npx skills add nvidia/osmo)
+            fi
+            if "${INSTALL_CMD[@]}"; then
                 echo ""
                 echo "To remove: npx skills remove osmo-agent"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/linux/installer.sh` around lines 127 - 149, The script
currently inspects and installs the OSMO skill using $HOME and runs npx as the
current effective user (root when invoked via sudo), so change checks and
installs to operate in the invoking user's context: compute the caller home
(e.g., OWNER_HOME=$(eval echo "~${SUDO_USER:-$USER}") or use getent if
available) and use that variable instead of $HOME when checking
OSMO_SKILL_INSTALLED and any file paths (refer to OSMO_SKILL_INSTALLED and the
SKILL.md check); run the installer command as the invoking user (e.g., sudo -u
"$SUDO_USER" npx skills add nvidia/osmo or use su -c) so npx executes in the
caller environment (refer to the npx skills add nvidia/osmo invocation), and
change the prompt to use read -r -p when reading INSTALL_SKILL to avoid
backslash mangling.
src/cli/packaging/macos/postinstall (1)

56-78: ⚠️ Potential issue | 🟠 Major

Use the logged-in user context for skill detection/install in postinstall.

Lines 56-78 currently use root’s $HOME and run npx as root in postinstall. That installs/detects the skill in the wrong user profile. Line 75 should also use read -r -p.

Suggested patch
+TARGET_USER="${SUDO_USER:-$(stat -f%Su /dev/console 2>/dev/null)}"
+[ -z "$TARGET_USER" ] && TARGET_USER="$USER"
+TARGET_HOME="$(eval echo "~$TARGET_USER")"
+
 OSMO_SKILL_INSTALLED=false
-for agent_dir in "$HOME/.claude" "$HOME/.codex" "$HOME/.agents"; do
+for agent_dir in "$TARGET_HOME/.claude" "$TARGET_HOME/.codex" "$TARGET_HOME/.agents"; do
     if [ -f "$agent_dir/skills/osmo-agent/SKILL.md" ]; then
         OSMO_SKILL_INSTALLED=true
         break
@@
-        read -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL
+        read -r -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL
         INSTALL_SKILL="${INSTALL_SKILL:-y}"
         if [ "$INSTALL_SKILL" = "y" ] || [ "$INSTALL_SKILL" = "Y" ]; then
-            if npx skills add nvidia/osmo; then
+            if [ "$(id -u)" -eq 0 ] && [ "$TARGET_USER" != "root" ]; then
+                INSTALL_CMD=(sudo -u "$TARGET_USER" -H npx skills add nvidia/osmo)
+            else
+                INSTALL_CMD=(npx skills add nvidia/osmo)
+            fi
+            if "${INSTALL_CMD[@]}"; then
                 echo ""
                 echo "To remove: npx skills remove osmo-agent"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/macos/postinstall` around lines 56 - 78, The postinstall
uses root's $HOME and runs npx as root causing detection/installation in the
wrong profile; change the agent discovery and installation to use the actual
logged-in user's home (derive AGENT_HOME from SUDO_USER or fallback to
$USER/logname) and replace occurrences of "$HOME" in the agent_dir loop (symbol:
agent_dir and OSMO_SKILL_INSTALLED) with that AGENT_HOME, and run npx as that
user (use sudo -u or equivalent while preserving HOME/env) so installs land in
the correct user profile; also change the prompt read call to use read -r -p
when setting INSTALL_SKILL (symbol: INSTALL_SKILL) to avoid backslash
interpretation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/cli/packaging/macos/postinstall`:
- Line 63: The interactive installation guard in the postinstall
script—specifically the condition if [ -t 0 ] && [ "$OSMO_SKILL_INSTALLED" =
false ]; then and its corresponding interactive prompt block—will never run in
real macOS installs because postinstall runs without a TTY; remove the entire
interactive prompt block (the code guarded by that condition) from the
postinstall script, or alternatively move the interactive install logic into a
first-run/setup script that runs in an interactive context and checks
OSMO_SKILL_INSTALLED there before prompting.

---

Duplicate comments:
In `@src/cli/packaging/linux/installer.sh`:
- Around line 127-149: The script currently inspects and installs the OSMO skill
using $HOME and runs npx as the current effective user (root when invoked via
sudo), so change checks and installs to operate in the invoking user's context:
compute the caller home (e.g., OWNER_HOME=$(eval echo "~${SUDO_USER:-$USER}") or
use getent if available) and use that variable instead of $HOME when checking
OSMO_SKILL_INSTALLED and any file paths (refer to OSMO_SKILL_INSTALLED and the
SKILL.md check); run the installer command as the invoking user (e.g., sudo -u
"$SUDO_USER" npx skills add nvidia/osmo or use su -c) so npx executes in the
caller environment (refer to the npx skills add nvidia/osmo invocation), and
change the prompt to use read -r -p when reading INSTALL_SKILL to avoid
backslash mangling.

In `@src/cli/packaging/macos/postinstall`:
- Around line 56-78: The postinstall uses root's $HOME and runs npx as root
causing detection/installation in the wrong profile; change the agent discovery
and installation to use the actual logged-in user's home (derive AGENT_HOME from
SUDO_USER or fallback to $USER/logname) and replace occurrences of "$HOME" in
the agent_dir loop (symbol: agent_dir and OSMO_SKILL_INSTALLED) with that
AGENT_HOME, and run npx as that user (use sudo -u or equivalent while preserving
HOME/env) so installs land in the correct user profile; also change the prompt
read call to use read -r -p when setting INSTALL_SKILL (symbol: INSTALL_SKILL)
to avoid backslash interpretation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 0179f452-8359-4b9d-b70b-9979d2da7c3a

📥 Commits

Reviewing files that changed from the base of the PR and between ed5821f and fdae1b1.

📒 Files selected for processing (2)
  • src/cli/packaging/linux/installer.sh
  • src/cli/packaging/macos/postinstall

Comment thread src/cli/packaging/macos/postinstall
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (3)
src/cli/packaging/linux/installer.sh (3)

146-146: ⚠️ Potential issue | 🟡 Minor

Add -r flag to read command for safe input handling.

Without the -r flag, backslashes in user input are interpreted as escape sequences, which can lead to unexpected behavior.

🛡️ Proposed fix
-        read -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL
+        read -r -p "Install the OSMO agent skill? [Y/n]: " INSTALL_SKILL

As per static analysis hints, ShellCheck SC2162: read without -r will mangle backslashes.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/linux/installer.sh` at line 146, The read invocation
prompting "Install the OSMO agent skill? [Y/n]: " (the command that sets
INSTALL_SKILL) needs the -r flag to prevent backslashes in user input being
treated as escape sequences; update that read command to include -r (e.g., use
read with -r and preserve the existing prompt and variable name INSTALL_SKILL)
so input is handled safely and ShellCheck SC2162 is satisfied.

127-132: ⚠️ Potential issue | 🔴 Critical

Fix user context detection when installer runs with sudo.

When the installer is invoked with sudo, $HOME resolves to /root instead of the invoking user's home directory. This causes the skill detection to check root's directories rather than the actual user's, leading to incorrect detection results.

🔧 Proposed fix to resolve target user and home directory

Add this before line 127:

+# Determine the actual user and their home directory
+TARGET_USER="${SUDO_USER:-$(id -un)}"
+if [ "$TARGET_USER" = "root" ]; then
+    TARGET_HOME="$HOME"
+else
+    TARGET_HOME="$(getent passwd "$TARGET_USER" | cut -d: -f6)"
+fi
+
 OSMO_SKILL_INSTALLED=false
-for agent_dir in "$HOME/.claude" "$HOME/.codex" "$HOME/.agents"; do
+for agent_dir in "$TARGET_HOME/.claude" "$TARGET_HOME/.codex" "$TARGET_HOME/.agents"; do
     if [ -f "$agent_dir/skills/osmo-agent/SKILL.md" ]; then

Note: This was previously flagged and also affects line 149 where npx is executed.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/linux/installer.sh` around lines 127 - 132, The installer
currently uses $HOME which becomes /root under sudo; detect the actual invoking
user and their home and use that instead: set TARGET_USER to SUDO_USER when
present (fall back to current user), derive TARGET_HOME from the passwd entry
(or fallback to $HOME), then update the agent_dir loop (the for ... if [ -f
"$agent_dir/skills/osmo-agent/SKILL.md" ]; then ... OSMO_SKILL_INSTALLED=true
...) to iterate "$TARGET_HOME/.claude" "$TARGET_HOME/.codex"
"$TARGET_HOME/.agents" and change the later npx invocation to run as the target
user / with HOME set to TARGET_HOME (e.g., sudo -u "$TARGET_USER" or
HOME="$TARGET_HOME" before npx) so detection and installation run in the
invoking user's context.

149-149: ⚠️ Potential issue | 🔴 Critical

Execute npx as the invoking user, not root.

When the installer is run with sudo, line 149 executes npx as root, installing the skill to root's home directory instead of the invoking user's. The user's AI coding agents won't be able to access the skill.

🔧 Proposed fix to run npx in correct user context

This fix depends on the TARGET_USER variable introduced in the previous comment:

         if [ "$INSTALL_SKILL" = "y" ] || [ "$INSTALL_SKILL" = "Y" ]; then
-            if npx skills add nvidia/osmo; then
+            # Run npx as the actual user if invoked via sudo
+            if [ "$(id -u)" -eq 0 ] && [ -n "${SUDO_USER:-}" ] && [ "$SUDO_USER" != "root" ]; then
+                INSTALL_CMD=(sudo -u "$SUDO_USER" -H npx skills add nvidia/osmo)
+            else
+                INSTALL_CMD=(npx skills add nvidia/osmo)
+            fi
+            if "${INSTALL_CMD[@]}"; then
                 echo ""
                 echo "To remove:"

Note: This issue was previously flagged and requires the TARGET_USER/TARGET_HOME resolution from the first fix to be fully addressed.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/cli/packaging/linux/installer.sh` at line 149, The npx call is being
executed as root when the installer runs under sudo; change the invocation so
npx runs as the invoking user by executing it with that user's context (use the
previously-introduced TARGET_USER/TARGET_HOME), e.g. run npx under the invoking
user via sudo -u "$TARGET_USER" -H (or runuser -l "$TARGET_USER" --) so the
skill is installed into the invoking user's home; update the conditional that
runs 'npx skills add nvidia/osmo' to use this user-context execution and ensure
TARGET_USER is validated before use.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@src/cli/packaging/linux/installer.sh`:
- Line 146: The read invocation prompting "Install the OSMO agent skill? [Y/n]:
" (the command that sets INSTALL_SKILL) needs the -r flag to prevent backslashes
in user input being treated as escape sequences; update that read command to
include -r (e.g., use read with -r and preserve the existing prompt and variable
name INSTALL_SKILL) so input is handled safely and ShellCheck SC2162 is
satisfied.
- Around line 127-132: The installer currently uses $HOME which becomes /root
under sudo; detect the actual invoking user and their home and use that instead:
set TARGET_USER to SUDO_USER when present (fall back to current user), derive
TARGET_HOME from the passwd entry (or fallback to $HOME), then update the
agent_dir loop (the for ... if [ -f "$agent_dir/skills/osmo-agent/SKILL.md" ];
then ... OSMO_SKILL_INSTALLED=true ...) to iterate "$TARGET_HOME/.claude"
"$TARGET_HOME/.codex" "$TARGET_HOME/.agents" and change the later npx invocation
to run as the target user / with HOME set to TARGET_HOME (e.g., sudo -u
"$TARGET_USER" or HOME="$TARGET_HOME" before npx) so detection and installation
run in the invoking user's context.
- Line 149: The npx call is being executed as root when the installer runs under
sudo; change the invocation so npx runs as the invoking user by executing it
with that user's context (use the previously-introduced
TARGET_USER/TARGET_HOME), e.g. run npx under the invoking user via sudo -u
"$TARGET_USER" -H (or runuser -l "$TARGET_USER" --) so the skill is installed
into the invoking user's home; update the conditional that runs 'npx skills add
nvidia/osmo' to use this user-context execution and ensure TARGET_USER is
validated before use.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 866b5ff8-0a5b-43cd-ae89-0ff663681ba0

📥 Commits

Reviewing files that changed from the base of the PR and between fdae1b1 and e993369.

📒 Files selected for processing (2)
  • src/cli/packaging/linux/installer.sh
  • src/cli/packaging/macos/postinstall
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/cli/packaging/macos/postinstall

Add an interactive prompt to the macOS postinstall and Linux installer
scripts that offers to install the OSMO agent skill for AI coding agents
via `npx skills add nvidia/osmo`.

The prompt:
- Only appears in interactive terminals (skipped for MDM, CI)
- Only appears when npx is available (prints manual instructions otherwise)
- Defaults to yes on enter
- Lets npx handle agent selection, scope, and install method interactively
- Non-fatal: installation failure does not abort the CLI install

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jiaenren jiaenren force-pushed the jiaenr/agent-skill-install branch from e993369 to ec06b89 Compare April 9, 2026 21:04
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 9, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 42.64%. Comparing base (f6535b9) to head (ec06b89).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #841      +/-   ##
==========================================
- Coverage   42.82%   42.64%   -0.19%     
==========================================
  Files         203      203              
  Lines       27123    27123              
  Branches     7759     7759              
==========================================
- Hits        11616    11566      -50     
- Misses      15398    15443      +45     
- Partials      109      114       +5     
Flag Coverage Δ
backend 44.69% <ø> (-0.21%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 17 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@jiaenren jiaenren merged commit c8e26e9 into main Apr 10, 2026
14 checks passed
@jiaenren jiaenren deleted the jiaenr/agent-skill-install branch April 10, 2026 01:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants