dotfiles

Manages machine setup and global agent context through a symlinked dotfiles repository and idempotent install script.

Updated Oct 16, 2025
One-click install
npx skills add https://github.com/jlui17/dotfiles --skill dotfiles-jlui17
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: dotfiles
Source: https://github.com/jlui17/dotfiles/tree/main/agents/skills/dotfiles
Command: npx skills add https://github.com/jlui17/dotfiles --skill dotfiles-jlui17

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Machine configuration and AI agent context (skills, rules, settings) drift across machines and get lost when edited directly on deployed files. This Skill routes every change through a single dotfiles repository so edits to shell, terminal, editor, runtimes, and agent context are made in the source repo and deployed consistently to macOS, Arch, and Ubuntu machines via an idempotent install.sh. ## Core Features & Use Cases - Source-of-truth configuration: All config lives in the repo and is symlinked, generated, or merged into deployed paths like ~/.zshrc, ~/.config/nvim, ~/CLAUDE.md, and ~/.codex/config.toml. - Module routing table: Maps each change request (zsh aliases, tmux, Ghostty themes, Neovim plugins, mise runtimes, Claude Code plugins, Codex MCP servers, Omarchy/Hyprland, herdr) to the owning module and its reference doc. - Per-machine opt-out profile: .dotfiles-local controls skipped modules, skills, rules, packages, and work-computer behavior without forking shared config. - Use Case: You want to add a global Claude Code skill and a new zsh alias. The Skill directs you to edit agents/skills/ and zshrc in the repo, run ./install.sh, verify with the module's check, and commit so other machines pick it up on their next pull. ## Quick Start Ask the assistant to add a new global skill or change a shell alias in the dotfiles repo and run ./install.sh to deploy it.

Frequently Asked Questions about dotfiles

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I change my global CLAUDE.md or AGENTS.md in this dotfiles setup?▼

Edit a fragment in agents/rules.d/ (shared) or claude-code/rules.d/ (Claude-only), never the deployed file. Run ./install.sh, which regenerates ~/CLAUDE.md and ~/.codex/AGENTS.md from the sorted NN-slug.md fragments, overwriting any direct edits.

How do I add or remove a global skill for Claude Code and Codex?▼

Add or delete a directory under agents/skills/ and run ./install.sh. The setup_agents module links it into both ~/.agents/skills and ~/.claude/skills, and prune_stale_links removes dead links when a skill is deleted.

Why did my edit to ~/.claude/settings.json or ~/.codex/config.toml get reverted?▼

Those files are managed: settings.json has repo-declared keys re-merged every run, and config.toml has a managed block rewritten between markers. Edit the repo source (claude-code/settings.json or codex/config.toml) and re-run install.sh instead.

Can I skip a module or skill on just one machine?▼

Yes. The gitignored .dotfiles-local file in the repo root holds per-machine knobs like SKIP_MODULES, SKIP_SKILLS, SKIP_RULES, and KEEP_PLUGINS. The profile only subtracts from the shared defaults; unknown names warn at the start of the run.

Why is my zsh startup slow and how do I measure it?▼

Measure with /usr/bin/time zsh -i -c exit and read ~/.cache/zsh-startup-log.tsv, which logs rc, first-prompt, and turbo-done milliseconds per shell. Slow plugins belong in the zinit turbo block after the first prompt, never as synchronous loads.

What are the limitations of running install.sh from a worktree?▼

install.sh must run from the main checkout at ~/src/personal/dotfiles because symlinks point into the script's own directory. Running from a worktree would point live config at the worktree, and the relocation check stops the run with an error.