A repository for storing my dotfiles and AI config.
概览
Personal dotfiles and AI tooling for macOS, with a handful of Linux paths. Every install is a symlink back into this repo, so editing a file here changes the live configuration immediately and nothing gets copied into $HOME. A shared skill library in ai-stuff/skills/ installs into Claude Code, Codex, Cursor, and anything else that reads the cross-tool ~/.agents/skills directory. See ai-stuff/README.md. Then install the AI layers you actually use: lazygit, yamllint, yq, k9s, tmux. Each installs the package where needed and links its config from other/. Skills are authored once in ai-stuff/skills/ and symlinked verbatim into each tool's skills directory. Adding a tool takes two lines in makefiles/ai.mk, and adding a skill needs no Makefile change at all. checks.yml runs on every pull request, on pushes to main, and on a weekly schedule. - Linux: make lint, make test, then an isolated make install-ci and make verify-install.
README
⚙️ dotfiles
Personal dotfiles and AI tooling for macOS, with a handful of Linux paths. Every
install is a symlink back into this repo, so editing a file here changes the live
configuration immediately and nothing gets copied into $HOME.
A shared skill library in ai-stuff/skills/ installs into
Claude Code, Codex, Cursor, and anything else that reads the cross-tool
~/.agents/skills directory. See ai-stuff/README.md.
📁 Layout
.
├── Makefile entry point; includes makefiles/*.mk, defines shared macros
├── makefiles/ one .mk per concern, plus helper scripts in scripts/
├── ai-stuff/ skills, agents, personas, and per-tool AI settings
├── nvim/ Neovim config (LazyVim + lazy.nvim, Lua)
├── other/ app configs: lazygit, k9s, tmux, yamllint, vscode, winterm
├── Brewfile Homebrew taps, formulae, casks, and fonts
├── .github/workflows/ checks.yml, release-please.yml
└── dotfiles at the root .zshrc, .aliases, .functions, .path, .extra,
.bash_profile, base.gitconfig, work.gitconfig,
.inputrc, .osx
🚀 Quick start
git clone https://github.com/dgokcin/dotfiles.git ~/codes/dotfiles
cd ~/codes/dotfiles
make brew-bundle # Homebrew packages, casks, and fonts
make personal # shell, editors, git, and tool configs
Then install the AI layers you actually use:
make claude # agents, hooks, settings, keybindings, skills
make cursor # agents, hooks, settings, keybindings, skills
make codex # hooks, AGENTS.md, managed config block, skills
make ai # skills only, into every registered tool
Run make help for the full target list.
🎯 Targets
🖥️ Environment
| Target | Does |
|---|---|
personal |
nvim bash zsh setup-git yamllint k9s |
work |
Identical to personal today. The split is kept for backward compatibility, and work.gitconfig is linked either way. |
brew-bundle |
Install everything in the Brewfile |
brew-bundle-check |
Report what is missing, install nothing |
clean |
Remove the symlinks and state this repo installs |
🛠️ Editors, shell, and git
| Target | Does |
|---|---|
nvim |
Symlink the Neovim config into $XDG_CONFIG_HOME/nvim |
zsh |
Link .zshrc, clone or update oh-my-zsh and zsh-autosuggestions |
bash |
Link .aliases, .functions, .path, .extra, .bash_profile |
setup-git |
Link base.gitconfig, work.gitconfig, and .inputrc |
terminator |
Linux only |
🧰 Tools
lazygit, yamllint, yq, k9s, tmux. Each installs the package where
needed and links its config from other/.
🤖 AI
| Target | Does |
|---|---|
ai |
Run ai-check, link shared content, install skills into every registered tool |
ai-check |
Lint SKILL.md against agents/openai.yaml on invocation policy, legacy keys, and stale files |
ai-shared |
Link ai-stuff/_shared to ~/.config/ai-shared |
ai-list |
Print the skill inventory and tool registry |
ai-skill-meta |
Scaffold a missing agents/openai.yaml |
ai-clean |
Remove installed skills everywhere |
claude |
claude-agents, claude-scripts, claude-settings, claude-keybindings, claude-output-styles, plus ai-claude |
cursor |
Cursor agents, hook scripts, hooks.json, CLI config, editor settings, plus ai-agents |
codex |
Codex hooks, hook scripts, AGENTS.md, managed config.toml block, plus ai-agents |
Skills are authored once in ai-stuff/skills/ and symlinked verbatim into each
tool’s skills directory. Adding a tool takes two lines in
makefiles/ai.mk, and adding a skill needs no Makefile change
at all.
✅ Checks
| Target | Does |
|---|---|
lint |
actionlint, shellcheck, yamllint, JSON parse check |
test |
Skill metadata lint plus statusline fixture tests |
install-ci |
Symlink install into an isolated $HOME, no brew |
verify-install |
Assert those symlinks point back at this repo |
brew-health |
Fail if Brewfile entries no longer resolve |
🔄 Continuous integration
checks.yml runs on every pull request, on
pushes to main, and on a weekly schedule.
- Linux:
make lint,make test, then an isolatedmake install-ciandmake verify-install. - macOS:
make cursor-user-config(the~/Librarypath Linux cannot cover) andmake brew-health. The weekly run fails on stale Brewfile entries.
release-please.yml maintains the
version and CHANGELOG.md from conventional commit messages.
🔒 Private files
Some files are gitignored because they carry personal or work-specific detail. The tracked file is the template, and the private variant sits beside it with a leading underscore or a dot prefix.
ai-stuff/_shared/personas/_*.mdandai-stuff/_shared/config/_*.mdai-stuff/_shared/config/.clusters.json(cluster and account names)ai-stuff/_shared/config/traefik-epic.md
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add dgokcin/dotfiles