begin
Start working on a new task with a clean, up-to-date workspace.
SKILL.md
| Name | begin |
| Description | Start working on a new task with a clean, up-to-date workspace. |
Kevin Wolf's Workspace

A complete macOS development environment configuration using GNU Stow for symlink management.
Prerequisites
- macOS (tested on Darwin 25.x)
- Internet connection (for Homebrew packages)
- Admin access (for changing default shell and installing packages)
Quick Start
bash <(curl -fsSL https://kvnwolf.com/setup-workspace)
The setup script is interactive—each step can be skipped by pressing ESC.
What Gets Installed
macOS System Defaults
The setup configures these system preferences:
| Setting | Value | Description |
|---|---|---|
| Dock auto-hide | Enabled | Dock hides automatically |
| Recent apps in Dock | Disabled | Removes recent apps section from Dock |
| File extensions | Visible | Shows all file extensions in Finder |
| Finder view | Column | Sets column view as default |
| Initial key repeat | 15 | Faster initial key repeat |
| Key repeat rate | 2 | Faster key repeat speed |
CLI Tools
Command-line tools installed via Homebrew. Some are modern replacements for traditional Unix commands.
| Tool | Replaces | Description |
|---|---|---|
| bat | cat | Syntax highlighting, line numbers, Git integration |
| btop | top | Beautiful TUI, mouse support, resource graphs |
| bun | JavaScript runtime and toolkit | |
| curlie | curl | Colored output, httpie-like formatting |
| difftastic | Structural diff tool | |
| eza | ls | Icons, colors, Git status integration |
| fd | find | Simpler syntax, respects .gitignore, faster |
| fish | User-friendly shell | |
| fisher | Fish plugin manager | |
| vite+ | Unified web toolchain with Node.js version management | |
| freeze | Code screenshot generator | |
| fzf | Fuzzy finder | |
| gh | GitHub CLI | |
| git-delta | Syntax-highlighting pager for git | |
| jq | JSON processor | |
| lazygit | Git TUI | |
| mole | macOS system cleanup and optimization tool | |
| neovim | Hyperextensible Vim-based text editor | |
| procs | ps | Colored output, tree view, searchable |
| ripgrep | grep | Much faster, respects .gitignore, better defaults |
| sd | Intuitive find & replace | |
| starship | Cross-shell prompt | |
| stow | Symlink farm manager | |
| tldr | man | Practical examples instead of verbose manuals |
| tmux | Terminal multiplexer | |
| tokei | Code statistics | |
| yazi | Blazing fast terminal file manager | |
| zoxide | Smarter directory jumping |
GUI Applications
| Application | Description |
|---|---|
| 1Password | Password manager |
| Caffeine | Prevent Mac from going to sleep |
| Claude | AI assistant app |
| CleanShot | Screenshot and recording tool |
| cmux | AI-powered terminal multiplexer |
| Discord | Communication platform |
| Ghostty | GPU-accelerated terminal |
| Google Chrome | Web browser |
| LocalXpose | Reverse proxy for localhost |
| Monologue | Voice dictation |
| OrbStack | Docker & Linux on macOS |
| Raycast | Productivity launcher |
| Slack | Team communication |
| Vanilla | Menu bar organizer |
| Messaging app |
Bun Global Packages
Installed via bun install -g during setup, separate from Homebrew.
| Package | Description |
|---|---|
| Claude Code | AI coding assistant CLI |
Shell Configuration
Fish shell becomes the default shell. Below are all shortcuts and configurations organized by tool.
Bun
| Abbr | Command |
|---|---|
b | bun |
ba | bun add |
bad | bun add --dev |
bag | bun add --global |
bi | bun init |
bin | bun install |
br | bun run |
brd | bun run dev |
brl | bun run lint |
brm | bun remove |
brs | bun run setup |
bru | bun run update |
brun | bun run unused |
brv | bun run validate |
bx | bunx |
sk | bunx skills@latest |
vc | bunx vercel@latest |
Claude Code
Abbreviations:
All Claude commands follow the pattern cl[c|r][s][d] where:
c= continue most recent conversationr= resume by session IDs= skip permissionsd= enable debug mode
| Abbr | Command |
|---|---|
cl | claude |
clc | claude --continue |
clr | claude --resume |
cls | claude --dangerously-skip-permissions |
cld | claude --debug |
clcs | claude --continue --dangerously-skip-permissions |
clrs | claude --resume --dangerously-skip-permissions |
clsd | claude --dangerously-skip-permissions --debug |
clcd | claude --continue --debug |
clrd | claude --resume --debug |
clcsd | claude --continue --dangerously-skip-permissions --debug |
clrsd | claude --resume --dangerously-skip-permissions --debug |
Configuration:
- Co-authored-by: Disabled
- Status line: Custom script showing directory, git branch, model, and context usage
Directory Listing & Navigation
Abbreviations (using eza):
All listing commands follow the pattern l[t][a][f][N] where:
t= tree viewa= include hidden files (all)f= full details (permissions, size, etc.)N= tree depth (only witht, default: 1)
| Abbr | Description |
|---|---|
l | Compact list with icons |
la | Compact list including hidden files |
lf | Full details |
laf | Full details including hidden files |
lt | Tree view (depth 1) |
lt3 | Tree view (depth 3) |
lta | Tree view including hidden files |
ltf | Tree view with full details |
ltaf | Tree view with hidden files and full details |
ltaf2 | Same as above with depth 2 |
Navigation:
| Command | Description |
|---|---|
.. | cd ../ |
... | cd ../../ |
.... | cd ../../../ |
z <query> | Jump to frequently visited directory (zoxide) |
mdcd <dir> | Create directory and cd into it |
cpwd | Copy current directory path to clipboard |
Git
Abbreviations:
| Abbr | Command | Abbr | Command |
|---|---|---|---|
g | git | gp | git push |
ga | git add | gpb | git checkout - |
gaa | git add --all | gpf | git push --force-with-lease |
gau | git add --update | gpr | git pull --rebase |
gb | git branch | grb | git rebase |
gba | git branch --all | grba | git rebase --abort |
gbd | git branch --delete | grbc | git rebase --continue |
gbD | git branch --delete --force | grbi | git rebase --interactive |
gc | git commit --verbose | grh | git reset |
gca | git commit --verbose --all | grhh | git reset --hard |
gcam | git commit --all --message | gss | git status --short |
gcb | git checkout -b | gst | git status |
gcmsg | git commit --message | gsta | git stash push |
gco | git checkout | gstl | git stash list |
gd | git diff | gstp | git stash pop |
gds | git diff --staged | gsw | git switch |
gdt | git difftool --tool=difftastic | gswc | git switch --create |
gf | git fetch | gl | git pull |
gfa | git fetch --all --tags --prune | glog | git log --oneline --decorate --graph |
lg | lazygit | gloga | git log --oneline --decorate --graph --all |
Configuration:
- Default branch:
main - Pull strategy: Rebase
- Auto-setup remote: Enabled (push without
-u) - Merge conflict style: diff3
- Pager: delta with line numbers and hyperlinks
- Credential helper: GitHub CLI
GitHub
| Function | Description |
|---|---|
fork <owner/repo> | Fork a repo, clone to ~/Developer/github.com/<owner>/<repo>, set up remotes (origin = fork, upstream = original), and configure gh default repo |
Also accepts full GitHub URLs: fork https://github.com/owner/repo
Neovim
Abbreviations:
| Abbr | Command |
|---|---|
n | nvim |
nv | nvim |
v | nvim |
vim | nvim |
vi | nvim |
EDITOR is set to nvim.
Workspace
Run Claude in the workspace directory from anywhere. Useful for configuring your workspace remotely.
| Function | Description |
|---|---|
ws <prompt> | Non-interactive mode with streaming output |
wsi [args] | Interactive mode |
Examples:
# Install a package and add to Brewfile
ws "install ripgrep via brew and add it to the Brewfile"
# Add a new fish abbreviation
ws "add abbreviation 'gc' for 'git commit'"
# Adopt a local config file into the repo
ws "adopt ~/.config/tool/config into shared dotfiles"
# Start interactive session in workspace
wsi
Yazi
| Abbr | Command |
|---|---|
y | yazi |
Other Shortcuts
| Abbr | Command |
|---|---|
md | mkdir -p |
pbc | pbcopy |
pbp | pbpaste |
reload | Reload fish configuration |
Prompt (Starship)
Custom prompt showing:
- Directory (with
~/Developer/github.com/shortened to) - Git branch with status indicator
- Right side: package version, runtime versions (Node/Bun), command duration, time
Terminal (Ghostty)
- Theme: Catppuccin Mocha
- Font: GeistMono Nerd Font Mono (14pt)
- Shell integration: Fish
- Auto-quit: When last window closes
- Option key: Right Option as Alt
- Window padding: 16px
- Background opacity: 90% with blur (radius 50)
- Unfocused split opacity: 75%
- Window title: Shows
owner/repofor GitHub dirs,~/pathelsewhere; defers to programs that set their own title - Scroll sensitivity: Reduced (0.5x)
Split keybindings (prefix: Ctrl+;):
| Shortcut | Action |
|---|---|
prefix + \ | Split right |
prefix + - | Split down |
prefix + h/j/k/l | Navigate splits |
prefix + H/J/K/L | Resize splits |
prefix + z | Toggle split zoom |
prefix + = | Equalize splits |
prefix + x | Close split |
Terminal Multiplexer (tmux)
Split keybindings (prefix: Ctrl+;):
| Shortcut | Action |
|---|---|
prefix + \ | Split vertical |
prefix + - | Split horizontal |
prefix + h/j/k/l | Navigate panes |
prefix + H/J/K/L | Resize panes (repeatable) |
prefix + z | Toggle pane zoom |
prefix + x | Close pane |
Configuration:
- Vi mode for copy
- Mouse support enabled
- Windows numbered from 1
- Status bar at the top
How Stow Works
Files in shared/home/ and macos/home/ mirror your home directory structure. Running stow creates symlinks:
shared/home/.config/fish/config.fish → ~/.config/fish/config.fish
macos/home/.config/fish/conf.d/brew.fish → ~/.config/fish/conf.d/brew.fish
This means:
- Edits to dotfiles in the repo automatically apply (no re-stowing needed)
- Changes are version-controlled and shareable
- Easy to see what's customized vs default
Customization
- macOS-only configs: Add to
macos/home/ - Cross-platform configs: Add to
shared/home/ - New Homebrew packages: Add to
macos/Brewfile