Loading...
Loading...
Configures a complete terminal-based AI coding environment centered on Ghostty terminal with Fish shell, yazi, lazygit, Neovim (LazyVim), fzf, zoxide, atuin, and supporting tools. Includes CJK font optimization for Chinese/Japanese/Korean users on macOS with Apple Silicon. This skill should be used when setting up or modifying a Ghostty-based development environment, configuring terminal tools for vibe coding workflows, or troubleshooting Ghostty/Fish/yazi/lazygit issues.
npx skill4agent add psylch/ghostty-vibe-coding-stack configuring-ghostty-vibe-stackSetup Progress:
- [ ] Step 1: Pre-flight checks
- [ ] Step 2: Install Ghostty
- [ ] Step 3: Install CLI tools
- [ ] Step 4: Install fonts
- [ ] Step 5: Configure Ghostty
- [ ] Step 6: Configure Fish shell
- [ ] Step 7: Install Fish plugins
- [ ] Step 8: Configure lazygit
- [ ] Step 9: Configure yazi
- [ ] Step 10: Install Neovim + LazyVim
- [ ] Step 11: Set Ghostty as default terminal
- [ ] Step 12: Validate and verify# Check macOS and architecture
uname -m # expect: arm64
sw_vers --productVersion # expect: 13.0+
# Check Homebrew
brew --version || echo "Homebrew not installed — install from https://brew.sh"/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"for cmd in ghostty fish yazi lazygit nvim fzf zoxide atuin fd rg bat delta; do
printf "%-10s: " "$cmd"
which $cmd 2>/dev/null || echo "not installed"
donels /Applications/Ghostty.app 2>/dev/null && echo "Ghostty installed" || echo "Not installed"brew install --cask ghosttybrew install fish yazi lazygit neovim fzf zoxide atuin fd ripgrep bat git-deltabrew install --cask font-maple-mono-nf-cn font-sarasa-gothic font-jetbrains-mono-nerd-fontbrew install --cask font-jetbrains-mono-nerd-fontghostty +list-themes~/.config/ghostty/configmkdir -p ~/.config/ghosttyghostty +validate-configghostty +list-themes | grep -i <name>grep -q "$(which fish)" /etc/shells || echo "$(which fish)" | sudo tee -a /etc/shells~/.config/fish/config.fishmkdir -p ~/.config/fish/{completions,conf.d,functions}fish -c "atuin import auto"fish -c "type fisher" 2>/dev/null || fish -c "curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher"fish -c "fisher install IlanCosman/tide@v6"~/.config/lazygit/config.ymlmkdir -p ~/.config/lazygit~/.config/yazi/yazi.tomlmkdir -p ~/.config/yazils ~/.config/nvim/init.lua 2>/dev/null && echo "Nvim config exists — skip or backup first" || echo "No config"git clone https://github.com/LazyVim/starter ~/.config/nvim && rm -rf ~/.config/nvim/.gitnvimcat << 'SWIFT' > /tmp/set_default_terminal.swift
import CoreServices
let result = LSSetDefaultRoleHandlerForContentType(
"public.unix-executable" as CFString, .shell,
"com.mitchellh.ghostty" as CFString)
print(result == 0 ? "Success: Ghostty set as default terminal" : "Failed: \(result)")
SWIFT
swiftc /tmp/set_default_terminal.swift -o /tmp/set_default_terminal && /tmp/set_default_terminal
rm -f /tmp/set_default_terminal.swift /tmp/set_default_terminalecho "=== Tool Versions ==="
for cmd in fish yazi lazygit nvim fzf zoxide atuin fd rg bat delta; do
printf "%-10s: " "$cmd"
$cmd --version 2>&1 | head -1
done
echo ""
echo "=== Ghostty Config ==="
ghostty +validate-config 2>&1 || echo "Config OK (no output = no errors)"
echo ""
echo "=== Fish Shell ==="
fish -c "echo Fish is working"| Alias | Command |
|---|---|
| yazi (file manager) |
| yazi with cd-on-exit |
| lazygit |
| nvim |
| claude |
| zoxide smart cd |
| Ghostty Shortcut | Action |
|---|---|
| Vertical split |
| Horizontal split |
| Navigate splits |
| Quick Terminal (global) |
| Fish Key | Action |
|---|---|
| Accept autosuggestion |
| Accept one word |
| Completion menu |
| History search (atuin) |
rose-pinetokyo-nightRose PineTokyoNight Stormghostty +list-themesghostty +validate-configCtrl+Vbind -k right complete-kbind right completebind \e\[C completefont-familyadjust-cell-height = 20%ghostty +list-fontsghostty +list-themes