feat(onboarding): local-ai-setup one-liner loader + Claude desktop cask - #53
Conversation
Adds the Retail Success AI bootstrap one-liner target: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/abarrows/dotfiles/production/onboarding_bin/local-ai-setup.sh)" Installs Claude desktop, Claude Code (CLI + VS Code extension), Docker Desktop (MCP Toolkit), Warp, VS Code, gh; installs the rs-agents plugin from Retail-Success/Wayroo.tools; hands off to the plugin's setup.sh for MCP wiring. Idempotent throughout. Brewfile note: brew casks are community-maintained; Anthropic's docs list a direct download for Desktop. Brew is chosen deliberately for idempotent fleet consistency — one 'brew bundle' converges every machine. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01479AjdrpHH8hsrnf7CbyeW
Reviewer's GuideIntroduces a curl-able, idempotent macOS onboarding script that installs and wires the local AI toolchain (Claude desktop/CLI, Docker MCP Toolkit, Warp, VS Code, GitHub auth, rs-agents plugin) and updates the base Brew bundle to include the Claude desktop cask. Sequence diagram for the local-ai-setup onboarding one-linersequenceDiagram
actor User
participant Bash
participant local_ai_setup_sh
participant Homebrew
participant GitHub
participant DockerDesktop
participant ClaudeCLI
participant RsAgentsPluginSetup
User->>Bash: /bin/bash -c "$(curl .../local-ai-setup.sh)"
Bash->>local_ai_setup_sh: execute script
local_ai_setup_sh->>local_ai_setup_sh: step "Checking this machine"
local_ai_setup_sh->>local_ai_setup_sh: uname, id, groups, sw_vers, curl
local_ai_setup_sh->>local_ai_setup_sh: step "Xcode Command Line Tools"
local_ai_setup_sh->>local_ai_setup_sh: xcode-select -p
local_ai_setup_sh->>local_ai_setup_sh: step "Homebrew"
alt brew missing
local_ai_setup_sh->>Homebrew: /bin/bash -c "$(curl .../install.sh)"
end
local_ai_setup_sh->>Homebrew: brew shellenv
local_ai_setup_sh->>local_ai_setup_sh: step "Apps (only what's missing)"
local_ai_setup_sh->>Homebrew: brew_formula gh
local_ai_setup_sh->>Homebrew: brew_cask claude
local_ai_setup_sh->>Homebrew: brew_cask claude-code
local_ai_setup_sh->>Homebrew: brew_cask docker-desktop
local_ai_setup_sh->>Homebrew: brew_cask warp
local_ai_setup_sh->>Homebrew: brew_cask visual-studio-code
local_ai_setup_sh->>local_ai_setup_sh: step "GitHub auth"
alt gh not authenticated
local_ai_setup_sh->>GitHub: gh auth login
end
local_ai_setup_sh->>local_ai_setup_sh: step "Docker Desktop + MCP Toolkit"
alt docker daemon not running
local_ai_setup_sh->>DockerDesktop: open -a Docker
local_ai_setup_sh->>DockerDesktop: docker info (wait loop)
end
local_ai_setup_sh->>DockerDesktop: docker mcp --help
local_ai_setup_sh->>local_ai_setup_sh: step "Retail Success Claude plugin"
local_ai_setup_sh->>ClaudeCLI: claude plugin marketplace add Retail-Success/Wayroo.tools
alt primary marketplace name
local_ai_setup_sh->>ClaudeCLI: claude plugin install rs-agents@retailsuccess
else fallback marketplace name
local_ai_setup_sh->>ClaudeCLI: claude plugin install rs-agents@wayroo
end
local_ai_setup_sh->>local_ai_setup_sh: step "Handing off to the plugin's setup.sh"
local_ai_setup_sh->>local_ai_setup_sh: ls ~/.claude/plugins/.../local-ai-setup/setup.sh
local_ai_setup_sh->>RsAgentsPluginSetup: bash setup.sh
local_ai_setup_sh->>local_ai_setup_sh: step "Final check"
local_ai_setup_sh->>ClaudeCLI: claude doctor
local_ai_setup_sh-->>User: summary of installed tools and next steps
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've found 1 issue, and left some high level feedback:
- The admin check using
groups | grep -qw adminis brittle on systems where the admin group has a different name or wheregroupsoutput is localized; consider usingid -Gnordsmemberutil checkmembershipfor a more robust privilege check. - The plugin
setup.shdiscovery relies on a specific~/.claude/plugins/*/*/skills/local-ai-setup/setup.shlayout; if the CLI changes its cache structure this will silently fail, so it may be worth centralizing this lookup into a helper that can be updated independently or using aclaudeCLI command if one exists to locate plugin assets.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The admin check using `groups | grep -qw admin` is brittle on systems where the admin group has a different name or where `groups` output is localized; consider using `id -Gn` or `dsmemberutil checkmembership` for a more robust privilege check.
- The plugin `setup.sh` discovery relies on a specific `~/.claude/plugins/*/*/skills/local-ai-setup/setup.sh` layout; if the CLI changes its cache structure this will silently fail, so it may be worth centralizing this lookup into a helper that can be updated independently or using a `claude` CLI command if one exists to locate plugin assets.
## Individual Comments
### Comment 1
<location path="onboarding_bin/local-ai-setup.sh" line_range="63-64" />
<code_context>
+[ "$MACOS_MAJOR" -ge "$MIN_MACOS" ] || die "macOS $MACOS_MAJOR too old (need ≥ $MIN_MACOS). Update via System Settings → General → Software Update, then re-run."
+ok "macOS $(sw_vers -productVersion)"
+
+curl -fsSL --max-time 10 -o /dev/null https://raw.githubusercontent.com \
+ || die "Can't reach github. Check network/VPN and re-run."
+ok "network reachable"
+
</code_context>
<issue_to_address>
**nitpick:** The 10-second curl timeout may be too strict on slow or high-latency networks.
On some corporate or high-latency networks, connecting to GitHub can legitimately take longer than 10 seconds, causing this check to fail even when the network/VPN is fine. Consider increasing `--max-time` (e.g., 30–60 seconds) or using `--connect-timeout` instead so only slow connections—not slow transfers—are treated as failures.
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| curl -fsSL --max-time 10 -o /dev/null https://raw.githubusercontent.com \ | ||
| || die "Can't reach github. Check network/VPN and re-run." |
There was a problem hiding this comment.
nitpick: The 10-second curl timeout may be too strict on slow or high-latency networks.
On some corporate or high-latency networks, connecting to GitHub can legitimately take longer than 10 seconds, causing this check to fail even when the network/VPN is fine. Consider increasing --max-time (e.g., 30–60 seconds) or using --connect-timeout instead so only slow connections—not slow transfers—are treated as failures.
Summary
onboarding_bin/local-ai-setup.sh— the Retail Success AI bootstrap loader behind the company one-liner:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/abarrows/dotfiles/production/onboarding_bin/local-ai-setup.sh)"cask 'claude'(desktop app) toBrewfile.base—claude-codecovered only the CLI.The loader installs Claude desktop, Claude Code (CLI + VS Code extension), Docker Desktop (MCP Toolkit), Warp, VS Code, and gh; authenticates GitHub; installs the
rs-agentsplugin from Retail-Success/Wayroo.tools; then hands off to the plugin's ownsetup.shfor MCP wiring. Idempotent — safe to re-run on fresh, partial, or healthy machines.Brewfile note: brew casks are community-maintained; Anthropic's docs list a direct download for Desktop. Brew is chosen deliberately for idempotent fleet consistency — one
brew bundleconverges every machine.Test plan
bash -nsyntax check passesshellcheck -S warningclean🤖 Generated with Claude Code
https://claude.ai/code/session_01479AjdrpHH8hsrnf7CbyeW
Summary by Sourcery
Introduce a macOS one-liner onboarding script to bootstrap the local Retail Success AI environment and add Claude desktop to the base Homebrew bundle.
New Features:
Enhancements: