Skip to content
Back to skills

Setup Macos

CSecurity

Full macOS development environment bootstrap — orchestrates Homebrew, ZSH, Vim/Neovim, tmux, Git+gh, Ghostty, Hysteria2, and macOS preferences. Supports interactive multi-select. Use this skill when the user wants to set up a new Mac, configure a new machine, bootstrap a development environment, or run a full macOS setup.

  • 10 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 6, 2026
developmentpythonrustgoshellbashnodegitapi

Works with

  • terminal
  • cli
  • api

Security analysis

C67/100
  • criticalModifies startup scripts or system services for persistence
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned September 6, 2026

npx -y skills add yanmxa/cc-plugins --skill setup-macos --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Setup Macos?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Setup Macos
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/yanmxa-setup-macos/badge)](https://www.skillsdirectory.com/skills/yanmxa-setup-macos)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: setup-macos
description: Full macOS development environment bootstrap — orchestrates Homebrew, ZSH, Vim/Neovim, tmux, Git+gh, Ghostty, Hysteria2, and macOS preferences. Supports interactive multi-select. Use this skill when the user wants to set up a new Mac, configure a new machine, bootstrap a development environment, or run a full macOS setup.
allowed-tools: [Bash, Read, Write, Edit, AskUserQuestion]
---

# Setup macOS

Bootstrap a macOS development environment with a multi-select component picker. Each component is also independently runnable from its own skill.

## Components

| ID | What it installs |
|----|------------------|
| `brew` | Homebrew (required by everything else) |
| `zsh` | Oh My Zsh + plugins + powerlevel10k + uv + fnm + Go + self-contained `.zshrc` + `~/.env` template |
| `vim` | Neovim with full Lua config |
| `tmux` | tmux + TPM + Dracula theme + optimized keybindings |
| `git` | Git global config + GitHub CLI (`gh` auth) + SSH key + global gitignore |
| `ghostty` | Ghostty terminal + MesloLGL Nerd Font + optimized config |
| `hysteria2` | Hysteria 2 proxy client + launchd service + `hy2start`/`hy2stop`/`hy2log` shortcuts |
| `shadowsocks` | Shadowsocks client (shadowsocks-rust `sslocal`) + `ssstart`/`ssstop`/`sslog` |
| `sing-box` | sing-box client — one client for **both** Hysteria2 + Shadowsocks + `sbstart`/`sbnode` |
| `prefs` | macOS system preferences (4 dev-friendly defaults — see below) |

## How to invoke this skill

### When invoked through Claude (recommended)

**Always use `AskUserQuestion` to let the user multi-select components first.** Then call the script with `--components <ids>`.

Suggested AskUserQuestion call:
- **question**: "Which components do you want to install?"
- **multiSelect**: true
- **options**: one per component above, with the label as `id — short description` and `value` as the bare id

Defaults to recommend pre-checked: `brew`, `zsh`, `git`. Other components depend on user preference (proxy is regional, ghostty is a terminal choice, etc.).

After the user picks, run:
```bash
bash ${CLAUDE_SKILL_DIR}/scripts/setup-macos.sh --components <comma-separated-ids>
```

### Direct CLI invocation (no Claude)

```bash
# Interactive Y/n picker for each component
bash ${CLAUDE_SKILL_DIR}/scripts/setup-macos.sh

# Explicit selection
bash ${CLAUDE_SKILL_DIR}/scripts/setup-macos.sh --components zsh,git,hysteria2

# Run everything
bash ${CLAUDE_SKILL_DIR}/scripts/setup-macos.sh --all

# Show available components
bash ${CLAUDE_SKILL_DIR}/scripts/setup-macos.sh --list
```

## Language runtimes installed by `zsh` component

| Language | Tool | Isolation |
|----------|------|-----------|
| Python | uv | `UV_PYTHON_PREFERENCE=only-managed`; `pip install` blocked globally |
| Node.js | fnm | auto-switches version via `.node-version` / `.nvmrc` |
| Go | Homebrew | `go.mod` per-project isolation; binaries → `$GOPATH/bin` |

## Three-tier shell config layout (set up by `zsh` component)

| File | Purpose | Tracked? |
|------|---------|----------|
| `~/.zshrc` | Generic config — plugins, PATH, runtimes, aliases | ✅ tracked |
| `~/.env` | Environment variables / API keys (auto-exported) | ❌ chmod 600 |
| `~/.zshrc.local` | Machine-specific aliases / functions | ❌ |

## What `prefs` actually changes (only 4 settings)

Intentionally minimal — only universally useful for developers, no personal-preference items:

| Setting | Why it's universal |
|---------|---------------------|
| `Finder.AppleShowAllExtensions = true` | See full filenames; avoid ambiguous names |
| `Dock.show-recents = false` | The "recent apps" section is rarely useful, just clutter |
| `screencapture.location = ~/Desktop/screenshots/` | Stop screenshots from cluttering the Desktop |
| `DSDontWriteNetworkStores = true` | Don't pollute shared SMB / network drives with `.DS_Store` |

Things like Dock auto-hide, tap-to-click, fast key repeat, hidden files in Finder are personal preferences and are **not** changed.

## Re-run individual components

Each component is also a standalone skill:

```bash
bash ~/.claude/plugins/setup/skills/setup-zsh/scripts/setup-zsh.sh
bash ~/.claude/plugins/setup/skills/setup-vim/scripts/setup-vim.sh
bash ~/.claude/plugins/setup/skills/setup-tmux/scripts/setup-tmux.sh
bash ~/.claude/plugins/setup/skills/setup-git/scripts/setup-git.sh
bash ~/.claude/plugins/setup/skills/setup-ghostty/scripts/setup-ghostty.sh
bash ~/.claude/plugins/setup/skills/setup-hysteria2/scripts/setup-hysteria2.sh
bash ~/.claude/plugins/setup/skills/setup-shadowsocks/scripts/setup-shadowsocks.sh
bash ~/.claude/plugins/setup/skills/setup-sing-box/scripts/setup-sing-box.sh
```

> The proxy skills (`hysteria2`, `shadowsocks`) also have a **`--server`** mode that
> SSH-deploys the server side to a Linux VPS — not part of this macOS picker.
> See each skill's `skill.md`.

## After setup

1. Restart terminal (or `source ~/.zshrc`)
2. Run `p10k configure` for the prompt
3. In tmux: `prefix + I` to install TPM plugins
4. Edit `~/.env` to add API keys / secrets
5. If hysteria2 was installed: edit `~/.config/hysteria/config.yaml`, then `hy2start`

Files in this skill

  • scripts/setup-macos.sh15.2 KB
  • skill.md5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.