Claude-skill-registry-data macos-setup
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/macos-setup" ~/.claude/skills/majiayu000-claude-skill-registry-data-macos-setup && rm -rf "$T"
manifest:
data/macos-setup/SKILL.mdsource content
macOS Starter - Setup Skill
From Zero to Hero - AI-powered macOS development environment configuration
Quick Reference
| Command | Description |
|---|---|
| Full interactive setup wizard |
| Quick setup with defaults |
| Use fullstack preset |
| Preview without installing |
Skill Capabilities
0. Network Proxy Check (前置步骤)
在开始安装前,必须确保网络可以访问 Google 和 GitHub:
check_network() { echo "=== Network Connectivity Check ===" echo "" # Test GitHub echo "Testing GitHub..." if curl -s --connect-timeout 5 https://github.com > /dev/null 2>&1; then echo "✅ GitHub: accessible" else echo "❌ GitHub: not accessible" NEED_PROXY=true fi # Test Google (for some Homebrew dependencies) echo "Testing Google..." if curl -s --connect-timeout 5 https://www.google.com > /dev/null 2>&1; then echo "✅ Google: accessible" else echo "❌ Google: not accessible" NEED_PROXY=true fi # Test Homebrew echo "Testing Homebrew..." if curl -s --connect-timeout 5 https://raw.githubusercontent.com > /dev/null 2>&1; then echo "✅ Homebrew sources: accessible" else echo "❌ Homebrew sources: not accessible" NEED_PROXY=true fi if [ "$NEED_PROXY" = true ]; then echo "" echo "⚠️ Network issues detected. Proxy configuration required." return 1 fi echo "" echo "✅ Network OK - Ready to proceed" return 0 }
代理配置流程:
- 询问用户代理信息:
questions: - id: proxy_needed question: "Do you need to configure a network proxy to access GitHub/Google?" options: - label: "Yes, I have a proxy" description: "Configure HTTP/HTTPS proxy" - label: "No, direct connection works" description: "Skip proxy configuration" - id: proxy_config question: "Please provide your proxy configuration:" condition: "proxy_needed == 'Yes'" inputs: - label: "Proxy URL" placeholder: "http://127.0.0.1:7890" example: "http://127.0.0.1:7890 or socks5://127.0.0.1:1080"
- 设置临时环境变量:
setup_proxy() { local proxy_url="$1" if [ -n "$proxy_url" ]; then echo "Setting proxy: $proxy_url" export http_proxy="$proxy_url" export https_proxy="$proxy_url" export HTTP_PROXY="$proxy_url" export HTTPS_PROXY="$proxy_url" export ALL_PROXY="$proxy_url" # For Git git config --global http.proxy "$proxy_url" git config --global https.proxy "$proxy_url" echo "✅ Proxy configured for this session" echo "" echo "To make permanent, add to ~/.zshrc:" echo " export http_proxy=\"$proxy_url\"" echo " export https_proxy=\"$proxy_url\"" fi }
- 验证代理是否工作:
verify_proxy() { echo "Verifying proxy configuration..." if curl -s --connect-timeout 5 https://github.com > /dev/null 2>&1; then echo "✅ GitHub accessible via proxy" else echo "❌ GitHub still not accessible" return 1 fi if curl -s --connect-timeout 5 https://www.google.com > /dev/null 2>&1; then echo "✅ Google accessible via proxy" else echo "❌ Google still not accessible" return 1 fi echo "✅ Proxy verification passed" return 0 }
1. System Detection
Detect installed software and versions:
# Core tools detection script detect_installed() { echo "=== System Detection ===" # Homebrew if command -v brew &>/dev/null; then echo "✅ Homebrew: $(brew --version | head -1)" else echo "❌ Homebrew: not installed" fi # Shell echo "✅ Shell: $SHELL" [ -d "$HOME/.oh-my-zsh" ] && echo "✅ Oh-My-Zsh: installed" command -v starship &>/dev/null && echo "✅ Starship: installed" # Git command -v git &>/dev/null && echo "✅ Git: $(git --version)" command -v gh &>/dev/null && echo "✅ GitHub CLI: installed" command -v delta &>/dev/null && echo "✅ Delta: installed" # Modern CLI command -v eza &>/dev/null && echo "✅ eza: installed" command -v bat &>/dev/null && echo "✅ bat: installed" command -v fd &>/dev/null && echo "✅ fd: installed" command -v rg &>/dev/null && echo "✅ ripgrep: installed" # Languages command -v fnm &>/dev/null && echo "✅ fnm: installed" command -v node &>/dev/null && echo "✅ Node.js: $(node --version)" command -v pnpm &>/dev/null && echo "✅ pnpm: installed" command -v uv &>/dev/null && echo "✅ uv: installed" command -v python3 &>/dev/null && echo "✅ Python: $(python3 --version)" command -v goenv &>/dev/null && echo "✅ goenv: installed" command -v go &>/dev/null && echo "✅ Go: $(go version)" # Container command -v docker &>/dev/null && echo "✅ Docker: installed" command -v kubectl &>/dev/null && echo "✅ kubectl: installed" command -v helm &>/dev/null && echo "✅ Helm: installed" command -v k9s &>/dev/null && echo "✅ k9s: installed" # Applications [ -d "/Applications/Raycast.app" ] && echo "✅ Raycast: installed" [ -d "/Applications/Warp.app" ] && echo "✅ Warp: installed" [ -d "/Applications/Visual Studio Code.app" ] && echo "✅ VS Code: installed" [ -d "/Applications/OrbStack.app" ] && echo "✅ OrbStack: installed" # Vibe Coding Tools echo "" echo "--- Vibe Coding Tools ---" command -v claude &>/dev/null && echo "✅ Claude Code: $(claude --version 2>/dev/null | head -1 || echo 'installed')" || echo "❌ Claude Code" command -v ccline &>/dev/null && echo "✅ CCometixLine: installed" || echo "❌ CCometixLine" [ -d "/Applications/Cursor.app" ] && echo "✅ Cursor: installed" || echo "❌ Cursor" command -v opencode &>/dev/null && echo "✅ OpenCode: installed" || echo "❌ OpenCode" [ -d "/Applications/Cherry Studio.app" ] && echo "✅ Cherry Studio: installed" || echo "❌ Cherry Studio" [ -d "/Applications/LM Studio.app" ] && echo "✅ LM Studio: installed" || echo "❌ LM Studio" }
2. Interactive Q&A Flow
Use
AskUserQuestion tool with structured questions:
questions: - id: role question: "What best describes your primary development role?" options: - label: "Fullstack Developer" description: "React/Vue + Node.js + Database" - label: "Frontend Developer" description: "React/Vue/Svelte + UI/Design tools" - label: "Backend Developer" description: "Go/Python/Java + APIs + Infrastructure" - label: "Data/ML Engineer" description: "Python + Jupyter + ML frameworks" - label: "DevOps/Platform" description: "K8s + Terraform + CI/CD" - id: languages question: "Which programming languages do you need?" multiSelect: true options: - label: "JavaScript/TypeScript" description: "fnm + Node.js LTS + pnpm" - label: "Python" description: "uv + Python 3.12" - label: "Go" description: "goenv + latest Go" - label: "Rust" description: "rustup + stable" - id: containers question: "Do you need container and Kubernetes tools?" options: - label: "Full K8s setup" description: "OrbStack + kubectl + helm + k9s + stern" - label: "Docker only" description: "OrbStack for containers" - label: "Skip" description: "No container tools" - id: vibe_coding question: "Which additional Vibe Coding tools do you need?" multiSelect: true note: "We assume you already have at least one AI coding tool installed to use this project." detection: | command -v claude &>/dev/null && echo "✅ Claude Code installed" command -v ccline &>/dev/null && echo "✅ CCometixLine installed" [ -d "/Applications/Cursor.app" ] && echo "✅ Cursor installed" command -v opencode &>/dev/null && echo "✅ OpenCode installed" [ -d "/Applications/Cherry Studio.app" ] && echo "✅ Cherry Studio installed" options: - label: "Claude Code" description: "Anthropic's official agentic CLI" skip_if: "command -v claude &>/dev/null" - label: "CCometixLine" description: "Claude Code statusline enhancer (Git, model, context)" skip_if: "command -v ccline &>/dev/null" requires: "Node.js" - label: "Cursor" description: "AI-first code editor" skip_if: "[ -d '/Applications/Cursor.app' ]" - label: "OpenCode" description: "Open-source terminal AI assistant" skip_if: "command -v opencode &>/dev/null" - label: "Cherry Studio" description: "AI desktop client with multi-model support" skip_if: "[ -d '/Applications/Cherry Studio.app' ]" - id: apps question: "Which collaboration apps?" multiSelect: true options: - label: "Work (CN)" description: "Lark + DingTalk + WeCom" - label: "International" description: "Slack + Discord + WhatsApp" - label: "Meetings" description: "Tencent Meeting + Zoom" - id: macos question: "macOS optimizations?" multiSelect: true options: - label: "Dock" description: "Hide recent apps, faster animations" - label: "Keyboard" description: "Faster repeat, disable auto-correct" - label: "Finder" description: "Show hidden files, path bar" - label: "Screenshots" description: "Save to ~/Pictures/Screenshots"
3. Plan Generation
Generate structured installation plan based on answers:
## Generated Plan for: [User Name] ### Phase 1: Prerequisites - [ ] Xcode Command Line Tools - [ ] Homebrew ### Phase 2: CLI Tools | Package | Purpose | Command | |---------|---------|---------| | git | Version control | `brew install git` | | gh | GitHub CLI | `brew install gh` | | delta | Better diffs | `brew install delta` | | starship | Modern prompt | `brew install starship` | | eza | ls replacement | `brew install eza` | | bat | cat replacement | `brew install bat` | | fd | find replacement | `brew install fd` | | ripgrep | grep replacement | `brew install ripgrep` | ### Phase 3: Language Environments | Language | Manager | Setup Command | |----------|---------|---------------| | Node.js | fnm | `fnm install --lts && fnm default lts-latest` | | Python | uv | `uv python install 3.12` | | Go | goenv | `goenv install latest && goenv global latest` | ### Phase 4: Applications | App | Purpose | Command | |-----|---------|---------| | Raycast | Launcher + window mgmt | `brew install --cask raycast` | | Warp | Modern terminal | `brew install --cask warp` | | OrbStack | Docker/K8s | `brew install --cask orbstack` | ### Phase 5: Vibe Coding Tools > Note: Skip already installed tools | Tool | Purpose | Command | Skip If | |------|---------|---------|---------| | Claude Code | Anthropic agentic CLI | `brew install --cask claude-code` | `command -v claude` | | CCometixLine | Claude Code statusline | `npm install -g @cometix/ccline` | `command -v ccline` | | Cursor | AI-first code editor | `brew install --cask cursor` | App exists | | OpenCode | Open-source terminal AI | `brew install opencode` | `command -v opencode` | | Cherry Studio | Multi-model AI client | `brew install --cask cherry-studio` | App exists | ### Phase 6: Fonts | Font | Purpose | |------|---------| | JetBrains Mono Nerd Font | Terminal icons | | Fira Code | Ligatures | | Inter | UI font | ### Phase 7: Shell Configuration - [ ] Zsh plugins (autosuggestions, syntax-highlighting) - [ ] Starship prompt - [ ] Modern CLI aliases ### Phase 8: macOS Defaults - [ ] Dock optimization - [ ] Keyboard settings - [ ] Finder preferences
4. Execution Engine
Execute plan with progress tracking:
# Example execution with progress execute_phase() { local phase=$1 echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "📦 Phase $phase" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━" } # Phase 1: CLI Tools execute_phase "1: CLI Tools" brew install git gh delta starship brew install eza bat fd ripgrep sd dust procs bottom brew install tree wget curl jq yq # Phase 2: Languages execute_phase "2: Language Environments" brew install fnm uv goenv go fnm install --lts fnm default lts-latest npm install -g pnpm # Phase 3: Apps execute_phase "3: Applications" brew install --cask raycast warp orbstack # Phase 4: Vibe Coding (with skip detection) execute_phase "4: Vibe Coding Tools" # Claude Code if ! command -v claude &>/dev/null; then echo "📦 Installing Claude Code..." brew install --cask claude-code else echo "⏭️ Claude Code already installed, skipping" fi # CCometixLine (requires Node.js) if ! command -v ccline &>/dev/null; then if command -v npm &>/dev/null; then echo "📦 Installing CCometixLine..." npm install -g @cometix/ccline echo "💡 Configure: Add to ~/.claude/settings.json:" echo ' {"statusLine": {"type": "command", "command": "ccline"}}' else echo "⚠️ CCometixLine requires Node.js, install fnm/node first" fi else echo "⏭️ CCometixLine already installed, skipping" fi # Cursor if [ ! -d "/Applications/Cursor.app" ]; then echo "📦 Installing Cursor..." brew install --cask cursor else echo "⏭️ Cursor already installed, skipping" fi # OpenCode if ! command -v opencode &>/dev/null; then echo "📦 Installing OpenCode..." brew install opencode else echo "⏭️ OpenCode already installed, skipping" fi # Cherry Studio if [ ! -d "/Applications/Cherry Studio.app" ]; then echo "📦 Installing Cherry Studio..." brew install --cask cherry-studio else echo "⏭️ Cherry Studio already installed, skipping" fi # Phase 5: Fonts execute_phase "5: Fonts" brew install --cask font-jetbrains-mono-nerd-font brew install --cask font-fira-code font-inter # Phase 6: Shell execute_phase "6: Shell Configuration" # Install zsh plugins... # Configure starship... # Phase 7: macOS execute_phase "7: macOS Optimization" defaults write com.apple.dock show-recents -bool false defaults write NSGlobalDomain KeyRepeat -int 2 # ... echo "✅ Setup complete!"
Presets
fullstack
name: Fullstack Developer languages: [javascript, python] containers: full apps: [raycast, warp, cursor, orbstack, notion] macos: [dock, keyboard]
frontend
name: Frontend Developer languages: [javascript] containers: docker apps: [raycast, cursor, figma] macos: [dock, keyboard]
backend
name: Backend Developer languages: [go, python] containers: full cloud: [aws] apps: [raycast, warp, cursor, orbstack] macos: [dock, keyboard, finder]
data
name: Data/ML Engineer languages: [python] containers: docker apps: [cursor, jupyter] macos: [keyboard]
devops
name: DevOps Engineer languages: [go, python] containers: full cloud: [aws, gcp] apps: [raycast, warp, orbstack] macos: [dock, keyboard, finder]
Configuration Files
This skill references:
- Detailed preset configurationspresets.md
- Complete package registrypackages.md
- Homebrew bundle../../scripts/Brewfile
- Configuration templates../../configs/
Best Practices
- Always detect first - Never reinstall what exists
- Ask, don't assume - User preferences matter
- Show before doing - Display plan before execution
- Progress tracking - Use TodoWrite for visibility
- Verify after - Confirm installations succeeded
- Non-destructive - Never remove existing tools
Error Handling
# Retry failed installations retry_install() { local cmd=$1 local max_attempts=3 local attempt=1 while [ $attempt -le $max_attempts ]; do if eval "$cmd"; then return 0 fi echo "⚠️ Attempt $attempt failed, retrying..." ((attempt++)) sleep 2 done echo "❌ Failed after $max_attempts attempts" return 1 }
Trigger Keywords
This skill activates on:
/new-macos-setup- "setup macos"
- "configure mac"
- "new mac setup"
- "dev environment"
- "install development tools"