trentshaines/dotfiles
Overview
This skill helps configure and extend the Fish shell for everyday development workflows. It focuses on where to place aliases, functions, keybindings, and integrations so your shell is reproducible and easy to maintain. Use these conventions to keep Fish as the primary shell configuration instead of zsh.
How this skill works
I inspect the standard Fish config layout and recommend where to add settings: the main config, function files, local overrides, completions, and secret files. The skill provides ready patterns for adding aliases, creating functions, setting vi mode, and binding keys, plus examples for integrating tools like starship, fzf, zoxide, and tmux. It also explains how to use fisher to manage plugins and common commands to reload or edit your config.
When to use it
- When you want to add or update aliases in Fish
- When creating reusable functions or fzf-based utilities
- When configuring vi mode, cursor shapes, or custom keybindings
- When integrating tools (starship, zoxide, fzf, nvm, tmux) with Fish
- When migrating configuration practices from bash/zsh to Fish
Best practices
- Keep core settings in ~/.config/fish/config.fish and put one function per file in ~/.config/fish/functions/
- Group aliases in the Aliases section of config.fish so they’re easy to find and edit
- Use ~/.config/fish/conf.d/local.fish for machine-specific overrides and secrets in secrets.fish (don’t track secrets)
- Prefer fish functions for reusable logic; use 'function name; ...; end' and descriptive --description
- Manage plugins with fisher and list/update via fisher list / fisher update
Example use cases
- Add a Git alias: alias gst='git status' in the Aliases section
- Create a fuzzy file opener: vf.fish that calls fzf and opens selection in nvim
- Configure vi mode with cursor shapes and bind a key to open the command buffer in nvim
- Auto-start or attach to a tmux session using a t.fish smart attach function
- Install nvm.fish with fisher and initialize it from config.fish
FAQ
Create a file named ~/.config/fish/functions/yourfunc.fish and define the function there; Fish autoloads functions from that directory.
How do I add an alias?
Add alias name='command' to the Aliases section in ~/.config/fish/config.fish and reload with source ~/.config/fish/config.fish.
Can I use bash scripts in Fish?
Yes—install the bass plugin and use it to run bash-based scripts or commands that expect bash semantics.
13 skills
This skill helps you manage fish shell configuration, aliases, and functions, enabling quick setup and efficient workflow in your terminal.
This skill helps manage dotfiles with chezmoi, sync configurations, and automate ansible playbooks to your dotfiles repository.
This skill helps you configure AeroSpace tiling, workspaces, and keybindings with clear examples and safety checks.
This skill deploys a local production-configured server split across panes for backend and frontend, enabling prod testing locally.
This skill helps you manage your Obsidian Zettelkasten vault by searching, creating, and organizing notes using MCP tools.
This skill helps you customize LazyVim by guiding configuration, plugin setup, and keybindings for Neovim.
This skill helps you deploy and test a local voice development server with ngrok, coordinating backend, frontend, and voice services.
This skill closes all tmux panes in the current window, keeping your active pane intact and restoring a clean layout.
This skill deploys a local development server by launching backend and frontend in separate tmux panes for quick, parallel dev workflows.
This skill helps you manage tmux sessions, tmuxinator templates, and sesh switches with streamlined commands and sensible defaults.
This skill helps you configure AeroSpace tiling, keybindings, and workspaces on macOS with clear, tested TOML examples.
This skill closes all tmux panes in the current window except the one you are in, streamlining your workspace.
This skill helps you manage fish shell configuration, aliases, and functions to streamline workflow and shell customization.